HEX
Server: nginx/1.24.0
System: Linux webserver 6.8.0-85-generic #85-Ubuntu SMP PREEMPT_DYNAMIC Thu Sep 18 15:26:59 UTC 2025 x86_64
User: wpuser (1002)
PHP: 8.3.6
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/botocore/__pycache__/httpsession.cpython-312.pyc
�

P��e�H��0�ddlZddlZddlZddlZddlZddlZddlmZddlm	Z	m
Z
mZddlm
ZddlmZmZmZmZddlmZddlmZddlmZdd	lmZmZmZmZmZmZdd
l m!Z!	ddlm"Z"m#Z#	ejJ�5ejLde'�
�ddl(m)Z*ddd�	ddlm+Z+ddl,Z-ddl.m/Z/m0Z0m1Z1m2Z2m3Z3ddl4m5Z5m
Z
m6Z6m7Z7m8Z8m9Z9mZmZe1�ejte;�Z<dZ=dZ>ej~j�ej~j�eB�d�ZC	ddlDmEZEd�ZF	d!d�ZGd�ZHd�ZId�ZJGd�d�ZKGd�d �ZLy#e$$rddlm"Z"m#Z#Y��wxYw#1swY��xYw#e$$r	ddlm*Z*Y��wxYw#e$$rdZ+Y��wxYw#e$$rd�ZEY�mwxYw)"�N)�	b64encode)�PoolManager�Timeout�proxy_from_url)�ConnectTimeoutError)�LocationParseError�NewConnectionError�
ProtocolError�
ProxyError)�ReadTimeoutError)�SSLError)�Retry)�OP_NO_COMPRESSION�PROTOCOL_TLS�OP_NO_SSLv2�OP_NO_SSLv3�is_ipaddress�ssl)�	parse_url)�OP_NO_TICKET�PROTOCOL_TLS_CLIENT�ignore)�category)�orig_util_SSLContext)�
SSLContext)�DEFAULT_CIPHERS)�
IPV6_ADDRZ_RE�ensure_bytes�filter_ssl_warnings�unquote�urlparse)�ConnectionClosedErrorr�EndpointConnectionError�HTTPClientError�InvalidProxiesConfigError�ProxyConnectionErrorrr
�<�
z
cacert.pem)�wherec��tS�N)�DEFAULT_CA_BUNDLE���6/usr/lib/python3/dist-packages/botocore/httpsession.pyr)r)Xs�� � r.c�V�|dur|St�}tjd|���|S)NTzCertificate path: )r)�logger�debug)�verify�	cert_paths  r/�
get_cert_pathr5\s0��
�T���
���I�
�L�L�%�i�[�1�2��r.c���|r	|tk(rt}t|��|r�j|�ntr�jt�|�t
jn|}|�&d}|tz}|tz}|tz}|tz}�xj|zc_|t
jk(stjdk\rt�dd��d�_�fd�}|t
jk(r|�_|�n|�|�_t#�d�rBt$j&j)d�}|r!tj*j,s|�_�S)	z�This function is a vendored version of the same function in urllib3

    We vendor this function to ensure that the SSL contexts we construct
    always use the std lib SSLContext instead of pyopenssl.
    Nr)����post_handshake_authTc�0��t�dd��d�_yy)N�check_hostnameF)�getattrr<)�contexts�r/�disable_check_hostnamez6create_urllib3_context.<locals>.disable_check_hostname�s#����G�-�t�4�@�&+�G�"�	
Ar.�keylog_filename�
SSLKEYLOGFILE)rrr�set_ciphersrr�
CERT_REQUIREDrrrr�options�sys�version_infor=r:�verify_mode�hasattr�os�environ�get�flags�ignore_environmentr@)�ssl_version�	cert_reqsrD�ciphersr?�
sslkeylogfiler>s      @r/�create_urllib3_contextrRfs:����+��5�)����%�G�����G�$�	����O�,�&/�%6��!�!�I�I������;����;���	�$�$��
	�<����O�O�w��O�	�S�&�&�&�#�*:�*:�i�*G�
�'�0�$�
7�
C�&*��#�+��C�%�%�%�'���� �� �'����w�)�*��
�
����7�
�����!=�!=�&3�G�#��Nr.c�L�t|t�r|S|j�dk(S)z~Ensures a boolean value if a string or boolean is provided

    For strings, the value for True/False is case insensitive
    �true)�
isinstance�bool�lower)�vals r/�ensure_booleanrY�s$��
�#�t���
��y�y�{�f�$�$r.c���d}t|�}|jr|j|j|d�}|jr|j|j|d�}|S)z�
    Mask proxy url credentials.

    :type proxy_url: str
    :param proxy_url: The proxy url, i.e. https://username:password@proxy.com

    :return: Masked proxy url, i.e. https://***:***@proxy.com
    z***�)r!�username�replace�password)�	proxy_url�mask�
parsed_urls   r/�mask_proxy_urlrb�s_���D��)�$�J�����%�%�j�&9�&9�4��C�	�����%�%�j�&9�&9�4��C�	��r.c�X�t|�xsttj|��S)z@Wrap urllib3's is_ipaddress to support bracketed IPv6 addresses.)rrVr�match)�hosts r/�
_is_ipaddressrf�s"�����@��m�&9�&9�$�&?�!@�@r.c�F�eZdZdZd
d�Zd�Zd�Zed��Zd�Z	d�Z
d	�Zy)�ProxyConfigurationaRepresents a proxy configuration dictionary and additional settings.

    This class represents a proxy configuration dictionary and provides utility
    functions to retrieve well structured proxy urls and proxy headers from the
    proxy configuration dictionary.
    Nc�0�|�i}|�i}||_||_yr+)�_proxies�_proxies_settings)�self�proxies�proxies_settingss   r/�__init__zProxyConfiguration.__init__�s'���?��G��#�!����
�!1��r.c��t|�}|jj|j�}|r|j	|�}|S)z6Retrieves the corresponding proxy url for a given url.)r!rjrK�scheme�_fix_proxy_url)rl�urlra�proxys    r/�
proxy_url_forz ProxyConfiguration.proxy_url_for�s=���c�]�
��
�
�!�!�*�"3�"3�4����'�'��.�E��r.c�h�i}|j|�\}}|r|r|j||�}||d<|S)z@Retrieves the corresponding proxy headers for a given proxy url.zProxy-Authorization)�_get_auth_from_url�_construct_basic_auth)rlr_�headersr\r^�
basic_auths      r/�proxy_headers_forz$ProxyConfiguration.proxy_headers_for�sC����!�4�4�Y�?���(����3�3�H�h�G�J�-7�G�)�*��r.c��|jSr+)rk�rls r/�settingszProxyConfiguration.settings�s���%�%�%r.c��|jd�s|jd�r|S|jd�rd|zSd|zS)N�http:zhttps:z//zhttp://)�
startswith)rlr_s  r/rrz!ProxyConfiguration._fix_proxy_url�sG������(�I�,@�,@��,J���
�
!�
!�$�
'��Y�&�&��y�(�(r.c��|�d|��}t|jd��j�j�}d|��S)N�:�asciizBasic )r�encode�strip�decode)rlr\r^�auth_str�encoded_strs     r/rxz(ProxyConfiguration._construct_basic_authsD���Z�q��
�+������� 8�9�?�?�A�H�H�J����}�%�%r.c��t|�}	t|j�t|j�fS#tt
f$rYywxYw)N�NN)r!r r\r^�AttributeError�	TypeError)rlrsras   r/rwz%ProxyConfiguration._get_auth_from_urlsH���c�]�
�	��:�.�.�/���9L�9L�1M�M�M���	�*�	��	�s�)7�A	�A	r�)�__name__�
__module__�__qualname__�__doc__rorur{�propertyr~rrrxrwr-r.r/rhrh�s9���2����&��&�)�&�
r.rhc�p�eZdZdZdddedddfd�Zd�Zd�Zd�Zd�Z	d	�Z
d
�Zd�Zdd�Z
d
�Zd�Zd�Zd�Zy)�URLLib3Sessiona_A basic HTTP client that supports connection pooling and proxies.

    This class is inspired by requests.adapters.HTTPAdapter, but has been
    boiled down to meet the use cases needed by botocore. For the most part
    this classes matches the functionality of HTTPAdapter in requests v2.7.0
    (the same as our vendored version). The only major difference of note is
    that we currently do not support sending chunked requests. While requests
    v2.7.0 implemented this themselves, later version urllib3 support this
    directly via a flag to urlopen so enabling it if needed should be trivial.
    TNc�R�||_t||��|_tjj
tjjd�|_|�t}t|ttf�st|d|d��}d|_
d|_t|t�r||_
nt|t �r|\|_
|_||_||_||_|�g|_i|_t+di|j-���|_|j|j._y)N)rmrn)�http�httpsrr[)�connect�readr-)�_verifyrh�
_proxy_config�botocore�
awsrequest�AWSHTTPConnectionPool�AWSHTTPSConnectionPool�_pool_classes_by_scheme�DEFAULT_TIMEOUTrU�int�floatr�
_cert_file�	_key_file�str�tuple�_timeout�_max_pool_connections�_socket_options�_proxy_managersr�_get_pool_manager_kwargs�_manager�pool_classes_by_scheme)rlr3rm�timeout�max_pool_connections�socket_options�client_cert�proxies_configs        r/rozURLLib3Session.__init__s�����/��n�
����'�'�=�=��(�(�?�?�(
��$��?�%�G��'�C��<�0��g�a�j�w�q�z�B�G��������k�3�'�)�D�O�
��U�
+�.9�+�D�O�T�^���
�%9��"�-����!�#%�D� �!���#�F�d�&C�&C�&E�F��
�/3�/K�/K��
�
�,r.c��|jj}d|jd�i|�}|j�D��cic]\}}|��	||��
c}}Scc}}w)N�use_forwarding_for_https�proxy_use_forwarding_for_https)r�r~rK�items)rl�kwargsrn�proxies_kwargs�k�vs      r/�_proxies_kwargszURLLib3Session._proxies_kwargsFsd���-�-�6�6��&�(8�(<�(<�0�)�
��	
��"0�!5�!5�!7�I���A�1�=��1��I�I��Is�
A�
Ac��|j|j|j�|j|j|j
d�}|jdi|��|S)N)r��maxsize�ssl_contextr��	cert_file�key_filer-)r�r��_get_ssl_contextr�r�r��update)rl�extra_kwargs�pool_manager_kwargss   r/r�z'URLLib3Session._get_pool_manager_kwargsPsY���}�}��1�1��0�0�2�"�2�2�������

��	#��"�"�2�\�2�"�"r.c��t�Sr+)rRr}s r/r�zURLLib3Session._get_ssl_context\s��%�'�'r.c�R�||jvr�|jj|�}|j|�}|j	|��}|j|j
|���t|fi|��}|j|_	||j|<|j|S)N)�
proxy_headers)�proxy_ssl_context)
r�r�r{�_setup_proxy_ssl_contextr�r�r�rr�r�)rlr_r�r��proxy_manager_kwargs�
proxy_managers      r/�_get_proxy_managerz!URLLib3Session._get_proxy_manager_s����D�0�0�0� �.�.�@�@��K�M� $� =� =�i� H��#'�#@�#@�+�$A�$� �
!�'�'��$�$�7H�$�I�
�+�9�M�8L�M�M�37�3O�3O�M�0�.;�D� � ��+��#�#�I�.�.r.c�x�t|�}|j}|sd}|jr|dz|jz}|S)N�/�?)r!�path�query)rlrsrar�s    r/�	_path_urlzURLLib3Session._path_urlos>���c�]�
�������D�����#�:�
� 0� 0�0�D��r.c��|j�jd�r|rd|_t|�|_yd|_d|_y)Nr�rC�	CERT_NONE)rWr�rOr5�ca_certs)rl�connrsr3s    r/�_setup_ssl_certzURLLib3Session._setup_ssl_certxs9���9�9�;�!�!�'�*�v�,�D�N�)�&�1�D�M�(�D�N� �D�Mr.c��|jj}|jd�}|jd�}|�|�y|j�}	t	|�}t|j�sd|_|�|j|��t|t�r|j|d|d��|St|t�r|j|�|S#tttf$r}t!|���d}~wwxYw)	N�proxy_ca_bundle�proxy_client_certT)�cafilerr[)�keyfile��error)r�r~rKr�rrfrer<�load_verify_locationsrUr��load_cert_chainr��OSError�URLLib3SSLErrorrr%)rlr_rnr��
proxy_certr>rs�es        r/r�z'URLLib3Session._setup_proxy_ssl_context�s����-�-�6�6��*�.�.�/@�A��%�)�)�*=�>�
��"�z�'9���'�'�)��	5��I�&�C�!����*�)-��&��*��-�-�_�-�E��*�e�,��'�'�
�1�
�z�!�}�'�M��N��J��,��'�'�
�3��N����*<�=�	5�+�!�4�4��	5�s�A%C�5"C�C=�,C8�8C=c�H�|r|j|�}|S|j}|Sr+)r�r�)rlrsr_�managers    r/�_get_connection_managerz&URLLib3Session._get_connection_manager�s,����-�-�i�8�G����m�m�G��r.c���|du}|s|j|�St|�j}|dk(xr |j�j	dd�}|s|jd�r|S|j|�S)Nr�r�Fr�)r�r!rqr�rKr�)rlrsr_�	has_proxy�proxy_scheme�using_https_forwarding_proxys      r/�_get_request_targetz"URLLib3Session._get_request_target�s����T�)�	���>�>�#�&�&�
 �	�*�1�1���G�#�
N��$�$�&�*�*�+E�u�M�	%�
(�3�>�>�'�+B��J��>�>�#�&�&r.c�b�|jdd�}t|�}|j�dk(S)NzTransfer-Encodingr.schunked)rKrrW)rlry�transfer_encodings   r/�_chunkedzURLLib3Session._chunked�s4��#�K�K�(;�S�A��(�):�;�� �&�&�(�J�6�6r.c��|jj�|jj�D]}|j��yr+)r��clearr��values)rlr�s  r/�closezURLLib3Session.close�s9���
�
�����+�+�2�2�4�	�G��M�M�O�	r.c
��	|jj|j�}|j|j|�}|j	|j�}|j||j|j�ttjjdd��r.t|j�j}||jd<|j|j|�}|j|j ||j"|j$t'd�ddd|j)|j$���	}t*j,j/|j|j0|j$|�}|j2s|j4|S#t6$r}	t9|j|	���d}	~	wt:t<j>f$r}	tA|j|	���d}	~	wtB$r}	tEtG�|	���d}	~	wtH$r}	tK|j|	���d}	~	wtL$r}	tO|j|	���d}	~	wtP$r}	tS|	||j���d}	~	wtT$r*}	d	}
tVjY|
d
��t[|	���d}	~	wwxYw)
N�(BOTO_EXPERIMENTAL__ADD_PROXY_HOST_HEADER�reF)	�methodrs�bodyry�retries�assert_same_host�preload_content�decode_content�chunked)�endpoint_urlr�)r_r�)r��requestr�z4Exception received when sending urllib3 HTTP requestT)�exc_infor�).r�rursr��connection_from_urlr�r�rYrIrJrKr!�hostnamer�r��urlopenr�r�ryrr�r�r��AWSResponse�status�
stream_output�contentr�r
r	�socket�gaierrorr#rr&rb�URLLib3ConnectTimeoutErrorr�URLLib3ReadTimeoutErrorrr
r"�	Exceptionr1r2r$)rlrr_r�r�re�request_target�urllib_response�
http_responser��messages           r/�sendzURLLib3Session.send�s@��=	+��*�*�8�8����E�I��2�2�7�;�;�	�J�G��.�.�w�{�{�;�D�� � ��w�{�{�D�L�L�A���
�
���I�2�N�� ����,�5�5��-1��"�"�6�*�!�5�5�g�k�k�9�M�N�"�l�l��~�~�"��\�\�����e��!&� %�$��
�
�g�o�o�6�+�
�O�%�/�/�;�;�����&�&��'�'��	�M��(�(��%�%� � ���	>�����1�=�=��"�F�O�O�4�	M�)�w�{�{�!�L�L���	�&�(��3�1��
��*�	I�%�7�;�;�a�H�H��&�	F�"����1�E�E���	�'���w�{�{��
���	+�L�G��L�L��4�L�0�!��*�*��	+�s`�F)F,�,	K�5G�K�(G?�?K�H!�!K�-I�K�I'�'K�3J�K�%J<�<Kr+)r�r�r�r��MAX_POOL_CONNECTIONSror�r�r�r�r�r�r�r�r�r�r�rr-r.r/r�r�sb��	����1����%L�NJ�
#�(�/� �!�5�4�'�(7�
�
>+r.r�)NNNN)M�loggingrI�os.pathr	rE�warnings�base64r�urllib3rrr�urllib3.exceptionsrrrr	r
rrrr
r��urllib3.util.retryr�urllib3.util.ssl_rrrrrr�urllib3.util.urlrrr�ImportError�catch_warnings�simplefilter�DeprecationWarning�urllib3.contrib.pyopensslrrr�botocore.awsrequestr��botocore.compatrrrr r!�botocore.exceptionsr"r#r$r%r&�	getLoggerr�r1r�rr��join�dirname�__file__r,�certifir)r5rRrYrbrfrhr�r-r.r/�<module>r*s����	��
�
���8�8����K�:�$���'�6�C�
-�
!��	 �	 �	"�
�����h�1C�D�	
�
��1����	�	�	���	��	�	�8�	$�������G�G�L�L�������!:�L�I��!���=A�M�`%��$A�
8�8�vj+�j+��c�6�6�5�6��
�
���-�,�-��
���O�	��B�!�!�!�s`�$E
�-E,�>E �E,�"E=�!F
�

E�E� E)�%E,�,E:�9E:�=F�F�
F�F