%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /proc/self/root/usr/lib/python3/dist-packages/uaclient/http/__pycache__/
Upload File :
Create Path :
Current File : //proc/self/root/usr/lib/python3/dist-packages/uaclient/http/__pycache__/__init__.cpython-312.pyc

�

��Jhi;��J�ddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZmZm
Z
mZmZmZddlmZmZddlmZmZddlmZmZmZmZdZdZdZd	Zd
Z ejBejDe#��Z$edde%fd
ee&e&ffde'fg�Z(edde%fd
ee&e&ffde&fdee&effde
efg�Z)de&de*fd�Z+de&dee&de&dee&fd�Z,ia-dee&dee&ddfd�Z.dee&e&ffd�Z/d
ej`jbdee&e&ffd�Z2	d1dejfdee%de(fd �Z4d!�Z5d"�Z6		d2dejfdee%dee&de(fd#�Z7deefd$�Z8de&fd%�Z9	d2de&dee%dee'e&ffd&�Z:diddd'fde&d(ee'd
ee&e&fd)ee&dee%d*e*de)fd+�Z;	d3d,e&d-e&d.e&d/e&de)f
d0�Z<y)4�N)�Any�Dict�List�
NamedTuple�Optional�Tuple)�error�request)�ParseResult�urlparse)�defaults�
exceptions�system�util)z169.254.169.254�metadataz[fd00:ec2::254]zhttp://archive.ubuntu.comzhttps://esm.ubuntu.comzhttp://api.snapcraft.iozhttps://api.snapcraft.io�UnparsedHTTPResponse�code�headers�body�HTTPResponse�	json_dict�	json_list�url�returnc��	t|�}|jdvry	|jy#t$rYywxYw#t$rYywxYw)NF)�https�httpT)r�
ValueError�scheme�port)r�
parsed_urls  �8/usr/lib/python3/dist-packages/uaclient/http/__init__.py�is_service_urlr#+s\����c�]�
���� 1�1�����������������s�*�9�	6�6�	A�A�protocol�proxy�test_urlc
�x�|syt|�stj|���tj|d��}|dk(rMt|�jdk(r5	t||��}|j dk(r|Stj|���tj"||i�}tj$|�}	|j'|�|S#tj$r�tj$r�tj$r�t$r<}tjd||t|��tj|���d}~wwxYw#t(j*tj,f$rG}tjd||t/|d	t|���tj|���d}~wwxYw)
N)r%�HEAD)�methodr��https_proxyz:Error trying to use "%s" as pycurl proxy to reach "%s": %s��z:Error trying to use "%s" as urllib proxy to reach "%s": %s�reason)r#r�ProxyInvalidUrlr
�Requestrr�_readurl_pycurl_https_in_https�PycurlRequiredError�ProxyAuthenticationFailed�PycurlCACertificatesError�	Exception�LOGr	�str�ProxyNotWorkingErrorr�ProxyHandler�build_opener�open�socket�timeout�URLError�getattr)r$r%r&�req�response�e�
proxy_handler�openers        r"�validate_proxyrD<s������%� ��(�(�u�5�5�
�/�/�(�6�
2�C��7��x���5�5��@�	?�5�c�u�M�H� �=�=�C���L��1�1��>�>��(�(�(�E�):�;�M�
�
!�
!�-�
0�F�
;����C�����3�-�-�	���3�3�	���3�3�	���	?��I�I�L����A��	
��1�1��>�>��	?��(
�N�N�E�N�N�+�;��	�	�H����A�x��Q��(�		
��-�-�E�:�:��;�s2�
C�;E�AE�7E�E�#F9�2AF4�4F9�
http_proxyr+c
�~�i}|r||d<|r||d<djtt��}dD]r}tjj|�}|s�%djtt
|jd��jt
t����}�ttjd|�|tjd<|tjd<|r?tj|�}tj|�}tj|�tjdd	|i�
�|ay)aW
    Globally configure pro-client to use http and https proxies.

    - sets global proxy configuration for urllib
    - sets the no_proxy environment variable for the current process
      which gets inherited for all subprocesses
    - sets module variable for use in https-in-https pycurl requests
      this is retrieved later using get_configured_web_proxy

    :param http_proxy: http proxy to be used by urllib. If None, it will
                       not be configured
    :param https_proxy: https proxy to be used by urllib. If None, it will
                        not be configured
    rr�,)�no_proxy�NO_PROXYzSetting no_proxy: %srHrIzSetting global proxy dict�extra)rJN)�join�sorted�UA_NO_PROXY_URLS�os�environ�get�set�split�unionr5�debugr
r8r9�install_opener�_global_proxy_dict)rEr+�
proxy_dictrH�env_var�proxy_valuerBrCs        r"�configure_web_proxyrZqs��"�J��'�
�6���)�
�7���x�x��/�0�1�H�+����j�j�n�n�W�-����x�x����)�)�#�.�/�5�5�c�:J�6K�L���H�	��I�I�$�h�/�%�B�J�J�z��%�B�J�J�z����,�,�Z�8�
��%�%�m�4�����v�&��I�I�)�'�:�1F�I�G�#��c��tS�N)rV�r[r"�get_configured_web_proxyr_�s���r[c�r�|j�D��cic]\}}|j�|��c}}Scc}}wr])�items�lower)r�k�vs   r"�_headers_to_dictre�s*��&-�m�m�o�6�U�Q��A�G�G�I�q�L�6�6��6s�3r?r<c��	tj||��}|j�}t|jt|j �|��S#tj$r}|}Yd}~�Ud}~wtj$rN}t
j
t|j��tj||j���d}~wwxYw)N�r<)�causer�rrr)r
�urlopenr	�	HTTPErrorr=r5�	exceptionr6r-r�ConnectivityError�full_url�readrrrer)r?r<�resprArs     r"�_readurl_urllibrq�s���F����s�G�4���9�9�;�D��
�Y�Y� ����.�
�����?�?������>�>�F��
�
�c�!�(�(�m�$��*�*�����E�E��F�s$�A�C�'A.�.C�A	C
�
Cc���t|�}t|�}|jdk(xr7tj|j
�xr|duxr|jdk(}tjd|�|S)a�
    We only want to use pycurl if all of the following are true

    - The target url scheme is https
    - The target host is not in no_proxy
    - An https_proxy is configured either via pro's config or via environment
    - The https_proxy url scheme is https

    urllib.request provides some helpful functions that we re-use here.

    This function also returns the https_proxy to use, since it is calculated
    here anyway.
    rNzShould use pycurl: %r)r�_parse_https_proxyrr
�proxy_bypass�hostnamer5rT)r+�
target_url�parsed_target_url�parsed_https_proxy�rets     r"�should_use_pycurlrz�s���!��,��+�K�8��� � �G�+�	1��$�$�%6�%?�%?�@�@�	1��d�*�	1�
�%�%��0�	��I�I�%�s�+��Jr[c�F�d}d}t|j�dkDr|jd}t|j�dkDr|jd}||k(r|rd|vrtj��||k(rtj|���tj
|���)Nr��407�r)rA)�len�argsrr2r3�PycurlError)r	r�authentication_error_code�ca_certificates_error_coder�msgs      r"�_handle_pycurl_errorr��s����D�
�C�
�5�:�:�����z�z�!�}��
�5�:�:�����j�j��m���(�(�S�U�c�\��2�2�4�4�	
�+�	+��2�2�s�;�;��$�$�u�-�-r[c����	ddl}|j	�}|j�j
�}|dk(r|j|jd�n�|dk(r|j|jd�nn|dk(rO|j|jd�|jrA|j|j|j�ntdj|���|j|j|j!��|j#�D��cgc]\}}dj||���}}}t%|�dkDr|j|j&|�|j|j(d�|j|j*t,j.�|r|j|j0|�|rXt3|�}	|	r|	j5�nd}|j|j6|�|j|j8d�nt:j=d	�t?j@�}
|j|jB|
�i��fd
�}|j|jD|�	|jG�tQ|jS|jT��}
|
jW�}|jY�t[|
�|��S#t$rtj��wxYwcc}}w#|jH$r;}tK||j!�|jL|jN��Yd}~��d}~wwxYw)
Nr�GETTr(�POSTz5HTTP method "{}" not supported in HTTPS-in-HTTPS modez{}: {}�z1in pycurl request function without an https proxyc����|jd�}d|vry|jdd�\}}|j�j�}|j�}|�|<y)Nz
iso-8859-1�:r|)�decoderR�striprb)�header_line�name_raw�	value_raw�name�valuers     �r"�save_headerz3_readurl_pycurl_https_in_https.<locals>.save_header(s_���!�(�(��6���k�!��)�/�/��Q�7���)��~�~��%�%�'�����!�����
r[)rr�r�ri).�pycurl�ImportErrorrr1�Curl�
get_method�upper�setopt�HTTPGET�NOBODYr��data�COPYPOSTFIELDSr�format�URL�get_full_url�header_itemsr�
HTTPHEADER�FOLLOWLOCATION�CAINFOr
�SSL_CERTS_PATH�TIMEOUTrs�geturl�PROXY�	PROXYTYPEr5�warning�io�BytesIO�	WRITEDATA�HEADERFUNCTION�performr	r��E_RECV_ERROR�E_SSL_CACERT_BADFILE�int�getinfo�
RESPONSE_CODE�getvalue�closer)r?r<r+r��cr)r��val�header_str_listrx�body_outputr�rArrrs               @r"r0r0�s����
/��	���
�A��^�^�
�
#�
#�
%�F�
���	�������&�	�6�	�	�������%�	�6�	�	������d�#��8�8�
�H�H�V�*�*�C�H�H�5��C�J�J��
�
�	
��H�H�V�Z�Z��)�)�+�,�58�4D�4D�4F��'0�t�S�����c�"��O���?��a��	����"�"�O�4��H�H�V�
"�
"�D�)��H�H�V�]�]�H�3�3�4��	�������)��/��<��+=��%�%�'�4�	�	
������{�+�	����!�!�1�%����G�H��*�*�,�K��H�H�V�
�
�{�+��G���H�H�V�
"�
"�K�0�
�	�	�	���q�y�y��-�-�.�/�D����!�D��G�G�I��
��
����c�/��,�,�.�.�/��4��T�<�<�
��
�� � �"�&,�&9�&9�'-�'B�'B�		
�	
��
�s)�K6�$L�L�6L�M'�,1M"�"M'c�j�|s#tj�jd�}|rt|�SdS)Nr)r
�
getproxiesrPrr*s r"rsrsJs0����(�(�*�.�.�w�7��$/�8�K� �9�T�9r[c��|jjd�}i}|si}nJtjj	|�si}n(tjtj|��}|j|g�S)N�serviceclient_url_responses)	�featuresrPrN�path�exists�json�loadsr�	load_file)�cfgr�response_overlay_path�response_overlays    r"�_get_overlay_datar�Psl���L�L�,�,�-J�K���� ���
�W�W�^�^�1�
2����:�:�f�&6�&6�7L�&M�N������R�(�(r[c��t||�}|rH|jd�}tj|dd�5}|j	�dfcddd�St|�st
j|���tjdj|��t�jd�}i}|r||d<t||�r�ttj ||�	�||�
�}|j"dk(rt
j$|���tj&|j(�|j*jd�fStj ||�	�}		tj,|	�5}tj|�5}|j	�|j*jd
�fcddd�cddd�S#1swY���xYw#1swYnxYw	ddd�y#1swYyxYw#t.j0$rN}
|
j"dk(rt
j$|���|
j"dk(rt
j2���d}
~
wwxYw)Nrr@�	file_path�r~z
URL [GET]: {}rz
If-None-Match)r�r<r+i0�etag�ETagi�)r��pop�lzmar:ror#r�
InvalidUrlr5rTr�r_rPrzr0r
r/r�
ETagUnchanged�
decompressrrrjr	rk�VulnerabilityDataNotFound)r�rr<r��overlay_responser@�fr+rr?rAs           r"�download_xz_file_from_urlr�^s��)��c�2���#�'�'��*��
�Y�Y�x�
�+�K�8�
9�	"�Q��F�F�H�b�>�	"�	"��#���#�#��,�,��I�I�o�$�$�S�)�*�*�,�0�0��9�K��G��#'��� ���c�*�1��O�O�C��1��#�
���=�=�C���*�*�s�3�3�
�O�O�H�M�M�*���� � ��(�
�	
�
�o�o�c�7�3��
	�����%�
���Y�Y�x�(��A����� �(�(�,�,�V�4����
�
�=	"�	"��>����
�
�
�����	��v�v��}� �.�.�3�7�7��v�v��}� �:�:�<�<���
	�s`�G
�$G<�9G0�+G�:	G0�	G<�
G�G#	�G0�'G<�0G9�5G<�9G<�<I�A	I�ITr�r)�log_response_bodyc
���t|�stj|���|r|sd}tj||||��}djt
|�D�cgc]}dj|||���c}�}tjdj|xsd|||r|jd�nd��t�jd	�}	t|	|�rt|||	�
�}
n
t||��}
|
j jdd�
�}i}g}
d|
j"jdd�vrjt%j&|t(j*��}t-|t.�r|}n2t-|t0�r|}
ntj3dt5|��djt
|
j"�D�cgc]!}dj||
j"|���#c}�}dj|xsd||�}|r)|
j }|r|}n|
r|
}|dj|�z
}tj|�t7|
j8|
j"|||
��Scc}wcc}w)Nr~r�)r�rr)z, z
'{}': '{}'z'URL [{}]: {}, headers: {{{}}}, data: {}r��utf-8rr�rg�ignore��errors�application/json�content-typer���cls�unexpected JSON response: %sz&URL [{}] response: {}, headers: {{{}}}z
, data: {}�rrrrr)r#rr�r
r/rKrLr�r5rTr�r_rPrzr0rqrrr�r�r�DatetimeAwareJSONDecoder�
isinstance�dict�listr�r6rr)rr�rr)r<r�r?rc�sorted_header_strr+rp�decoded_bodyrr�	json_body�	debug_msg�body_to_logs                 r"�readurlr��s1���#���#�#��,�,��F���
�/�/�#�D�'�&�
I�C��	�	�5;�G�_�E���	�	�Q���
�	+�E����I�I�1�8�8��O�e���$(�D�K�K�� �d�		
��+�,�0�0��9�K���c�*�-���k�
���s�G�4���9�9�#�#�G�H�#�=�L��I��I��T�\�\�-�-�n�b�A�A��J�J�|��1N�1N�O�	��i��&�!�I�
�	�4�
(�!�I��K�K�6��I��G��	�	�:@����:N�O�Q��	�	�Q����Q��	0�O���9�?�?���%��/��I���i�i���#�K�
�#�K��\�(�(��5�5�	��I�I�i���
�Y�Y����
������a	F��B	Ps�I.�&I3�socket_path�http_method�	http_path�
http_hostnamec�X�tjtjtj�}|j|�tj
j
|�}||_	|j||�|j�}|j�jdd��}|j�|j�i}g}	d|jjdd�vrjtj |t"j$��}
t'|
t(�r|
}n2t'|
t*�r|
}	nt,j/dt1|
��t3|j4t7|j�|||	�	�S#|j�|j�wxYw)
Nr�r�r�r�r�r�r�r�r�)r;�AF_UNIX�SOCK_STREAM�connectr�client�HTTPConnection�sockr
�getresponseror�r�rrPr�r�rr�r�r�r�r5r�r6r�statusre)r�r�r�r�r��connrp�outrrr�s           r"�unix_socket_requestr��s<���=�=�����);�);�<�D��L�L����;�;�%�%�m�4�D��D�I�����[�)�,����!���i�i�k� � ��� �:���
�
���
�
���I��I��T�\�\�-�-�n�b�A�A��J�J�s��(E�(E�F�	��i��&�!�I�
�	�4�
(�!�I��K�K�6��I��G��
�[�[� ����.�
������	
�
�
���
�
��s
�+AF�"F)r])NN)�	localhost)=�
email.message�email�http.clientrr�r��loggingr�rNr;�typingrrrrrr�urllibr	r
�urllib.parserr�uaclientr
rrrrM�PROXY_VALIDATION_APT_HTTP_URL�PROXY_VALIDATION_APT_HTTPS_URL�PROXY_VALIDATION_SNAP_HTTP_URL�PROXY_VALIDATION_SNAP_HTTPS_URL�	getLogger�replace_top_level_logger_name�__name__r5r�r6�bytesrr�boolr#rDrVrZr_�message�Messagerer/rqrzr�r0rsr�r�r�r�r^r[r"�<module>rs����	����	�
�?�?�!�.�7�7�E�� ;��!9��!:��"<���g���:��:�:�8�D�E��!��	��
�	�D��c��N�#�	��������	��
�	�D��c��N�#�	��
�	�d�3��8�n�%�	�d�3�i� ��	�������"/;��/;�"�3�-�/;�36�/;�
�c�]�/;�d��.$���
�.$�,4�S�M�.$�	�.$�b�$�s�C�x�.��7�e�m�m�3�3�7��S�#�X��7�"��	����
�c�]����*�4.�&"�!%�\�	���\�
�c�]�\��#��\��	\�~:�x��'<�:�)��)�8<�1��1�$�S�M�1�
�5�#�:��1�l!� � �!�"�
F�	�F�
�5�/�F��#�s�(�^�F�
�S�M�	F�
�c�]�F��
F��F�Z%�	&��&��&��&��	&�
�&r[

Zerion Mini Shell 1.0