OwlCyberSecurity - MANAGER
Edit File: wsgi.cpython-38.pyc
U ������\�����������������������@���s����d�dl�Z�d�dlmZmZ�d�dlmZmZ�d�dlmZm Z �d�dl mZ�erTddd �Zn dd d �Zdd��Zd d��ZG�dd��de�Zdd��Zdd��Zdd��Zdd��ZG�dd��de�Zdd��ZdS�)�����N)�Hub�_should_send_default_pii)�capture_internal_exceptions�event_from_exception)�PY2�reraise)�_filter_headers�utf-8�replacec�����������������C���s���|���||�S��N)�decode��s�charset�errors��r����M/opt/alt/python38/lib/python3.8/site-packages/sentry_sdk/integrations/wsgi.py�wsgi_decoding_dance���s����r���c�����������������C���s���|���d��||�S�)N�latin1)�encoder���r ���r���r���r���r������s����c�����������������C���s����|���d�rZ|�d�}|�d�dkr6|�d�r6|dd��}q�|�d�dkr�|�d�r�|dd ��}n<|���d �r�|�d �}|�d�|�d�fdkr�|d |�d��7�}nd}|S�)zEReturn the host for the given WSGI environment. Yanked from Werkzeug.Z HTTP_HOST�wsgi.url_scheme�httpz:80N����httpsz:443����SERVER_NAME�SERVER_PORT))r���Z443)r���Z80�:�unknown)�get�endswith)�environ�rvr���r���r����get_host"���s���� r#���c�����������������C���s,���d|���d�t|��t|���d�pd��d�f�S�)zPReturn the absolute URL without query string for the given WSGI environment.z %s://%s/%sr���Z PATH_INFO���/)r���r#���r����lstrip�r!���r���r���r����get_request_url9���s �����r(���c�������������������@���s ���e�Zd�ZdZdd��Zdd��ZdS�)�SentryWsgiMiddleware��appc�����������������C���s ���||�_�d�S�r���r*���)�selfr+���r���r���r����__init__G���s����zSentryWsgiMiddleware.__init__c�����������������C���s����t�t�j�}|�z�t���6�|����"}|����d|_|�t|���W�5�Q�R�X�W�5�Q�R�X�z|��||�}W�n �t k r����t t|����Y�nX�W�5�Q�R�X�t||�S�)N�wsgi) r����currentr���Zconfigure_scopeZclear_breadcrumbs�_nameZadd_event_processor�_make_wsgi_event_processorr+���� Exceptionr����_capture_exception�_ScopedResponse)r,���r!���Zstart_response�hubZscoper"���r���r���r����__call__K���s���� "zSentryWsgiMiddleware.__call__N)�__name__� __module__�__qualname__� __slots__r-���r6���r���r���r���r���r)���D���s���r)���c�����������������c���s6���d}t���r|d7�}|D�]}||�kr||�|�fV��qdS�)z8 Returns our whitelisted environment variables. )r���r���)�REMOTE_ADDRN)r���)r!����keys�keyr���r���r����_get_environ^���s����r>���c�����������������c���sn���|�����D�]`\}}t|�}|�d�rJ|dkrJ|dd���dd����|fV��q|dkr|�dd����|fV��qdS�)z, Returns only proper HTTP headers. ZHTTP_)ZHTTP_CONTENT_TYPEZHTTP_CONTENT_LENGTH����N�_�-)ZCONTENT_TYPEZCONTENT_LENGTH)�items�str� startswithr ����title)r!���r=����valuer���r���r����_get_headersp���s���� rG���c�������������� ���C���s@���z|�d���d�d����W�S��ttfk r:���|��d��Y�S�X�dS�)z� Naively yank the first IP address in an X-Forwarded-For header and assume this is correct. Note: Don't use this in security sensitive situations since this value may be forged from a client. ZHTTP_X_FORWARDED_FOR�,r���r;���N)�split�strip�KeyError� IndexErrorr���r'���r���r���r���� get_client_ip����s���� rM���c�����������������C���s@���|�j�d�k r<t���}t||�j�jddd�d�\}}|�j||d��|S�)Nr.���F)�typeZhandled)Zclient_optionsZ mechanism)�hint)Zclient�sys�exc_infor����optionsZ capture_event)r5���rQ����eventrO���r���r���r���r3�������s���� � r3���c�������������������@���s(���e�Zd�ZdZdd��Zdd��Zdd��ZdS�) r4���)� _response�_hubc�����������������C���s���||�_�||�_d�S�r���)rU���rT���)r,���r5����responser���r���r���r-�������s����z_ScopedResponse.__init__c�������������� ���c���sx���t�|�j�}|�j�V�zt|�}W�nB�tk r@���Y�W�5�Q�R���qtY�n"�tk r`���tt|�j����Y�nX�W�5�Q�R�X�|V��q d�S�r���)�iterrT���rU����next� StopIterationr2���r���r3���)r,����iterator�chunkr���r���r����__iter__����s���� z_ScopedResponse.__iter__c�������������� ���C���sZ���|�j��J�z|�j����W�n4�tk r*���Y�n"�tk rJ���tt|�j�����Y�nX�W�5�Q�R�X�d�S�r���)rU���rT����close�AttributeErrorr2���r���r3���)r,���r���r���r���r]�������s����z_ScopedResponse.closeN)r7���r8���r9���r:���r-���r\���r]���r���r���r���r���r4�������s���r4���c��������������������sZ���t�|����t|���|��d��|��d��tt|����ttt|������������fdd�}|S�)NZQUERY_STRINGZREQUEST_METHODc�������������� ������sd���t����T�|��di��}t��r.|��di��}��|d<��|d<��|d<��|d<��|d<��|d<�W�5�Q�R�X�|�S�) N�request�userZ ip_address�url�query_string�method�env�headers)r���� setdefaultr���)rS���rO���Zrequest_infoZ user_info�Z client_iprd���re���rc���rb���Zrequest_urlr���r����event_processor����s����z3_make_wsgi_event_processor.<locals>.event_processor)rM���r(���r����dictr>���r���rG���)r!���rh���r���rg���r���r1�������s���� r1���)r ���r ���)r ���r ���)rP���Zsentry_sdk.hubr���r���Zsentry_sdk.utilsr���r���Zsentry_sdk._compatr���r���Z$sentry_sdk.integrations._wsgi_commonr����Callable�DictZList�IteratorZAnyZTuple�OptionalZExcInfor���r#���r(����objectr)���r>���rG���rM���r3���r4���r1���r���r���r���r����<module>���s ��� !