Ë
    ³ŒjA  ã                   óV  — d Z ddlmZmZ ddlZddlZddlZddlmZ ddl	Z	ddl
mZmZ ddlZddlmZ ddlmZmZ  ej&                  e«      ZdZ ed	«      Z ed
«      Zd„ Zd„ Ze G d„ d«      «       Zdefd„Z G d„ dej:                  «      Zd„ Z e«       fdefd„Z  G d„ de«      Z!y)z5Mutual TLS for Google Compute Engine metadata server.é    )Ú	dataclassÚfieldN)ÚPath)ÚurlparseÚ
urlunparse)ÚHTTPAdapter)Úenvironment_varsÚ
exceptionsÚntz#C:/ProgramData/Google/ComputeEnginez/run/google-mds-mtlsc                  óT   — t         j                  t        k(  r	t        dz  S t        dz  S )Nzmds-mtls-root.crtzroot.crt©ÚosÚnameÚ_WINDOWS_OS_NAMEÚ"_WINDOWS_MTLS_COMPONENTS_BASE_PATHÚ_MTLS_COMPONENTS_BASE_PATH© ó    új/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/google/auth/compute_engine/_mtls.pyÚ_get_mds_root_crt_pathr   ,   s&   € Ü	‡w�wÔ"Ò"Ü1Ð4GÑGÐGä)¨JÑ6Ð6r   c                  óT   — t         j                  t        k(  r	t        dz  S t        dz  S )Nzmds-mtls-client.keyz
client.keyr   r   r   r   Ú"_get_mds_client_combined_cert_pathr   3   s&   € Ü	‡w�wÔ"Ò"Ü1Ð4IÑIÐIä)¨LÑ8Ð8r   c                   óF   — e Zd ZU  ee¬«      Zeed<    ee¬«      Z	eed<   y)ÚMdsMtlsConfig)Údefault_factoryÚca_cert_pathÚclient_combined_cert_pathN)
Ú__name__Ú
__module__Ú__qualname__r   r   r   r   Ú__annotations__r   r   r   r   r   r   r   :   s-   … áØ.ô€L�$ó ñ ',Ø:ô'Ð˜tô r   r   Úmds_mtls_configc                 óª   — t         j                  j                  | j                  «      xr) t         j                  j                  | j                  «      S )z&Checks if the mTLS certificates exist.)r   ÚpathÚexistsr   r   )r"   s    r   Ú_certs_existr&   D   s:   € ä�7‰7�>‰>˜/×6Ñ6Ó7ò ¼B¿G¹G¿N¹NØ×1Ñ1ó=ð r   c                   ó   — e Zd ZdZdZdZdZy)ÚMdsMtlsModeaG  MDS mTLS mode. Used to configure connection behavior when connecting to MDS.

    STRICT: Always use HTTPS/mTLS.  If certificates are not found locally, an error will be returned.
    NONE: Never use mTLS. Requests will use regular HTTP.
    DEFAULT: Use mTLS if certificates are found locally, otherwise use regular HTTP.
    ÚstrictÚnoneÚdefaultN)r   r   r    Ú__doc__ÚSTRICTÚNONEÚDEFAULTr   r   r   r(   r(   K   s   „ ñð €FØ€DØ�Gr   r(   c                  óÂ   — t         j                  j                  t        j                  d«      j                  «       } 	 t        | «      S # t        $ r t        d«      ‚w xY w)z7Parses the GCE_METADATA_MTLS_MODE environment variable.r*   zXInvalid value for GCE_METADATA_MTLS_MODE. Must be one of 'strict', 'none', or 'default'.)r   ÚenvironÚgetr	   ÚGCE_METADATA_MTLS_MODEÚlowerr(   Ú
ValueError)Úmode_strs    r   Ú_parse_mds_moder7   X   sU   € ä�z‰z�~‰~Ô.×EÑEÀvÓN×TÑTÓV€Hð
Ü˜8Ó$Ð$øÜò 
ÜØfó
ð 	
ð
ús   ¾
A	 Á	Ac                 ó¼   — t        «       }|t        j                  k(  r!t        | «      st	        j
                  d«      ‚y|t        j                  k(  ryt        | «      S )z:Determines if mTLS should be used for the metadata server.z+mTLS certificates not found in strict mode.TF)r7   r(   r-   r&   r
   ÚMutualTLSChannelErrorr.   )r"   Úmodes     r   Úshould_use_mds_mtlsr;   c   sW   € äÓ€DØŒ{×!Ñ!Ò!Ü˜OÔ,Ü×2Ñ2Ø=óð ð Ø	”×!Ñ!Ò	!Øä˜OÓ,Ð,r   c                   ó^   ‡ — e Zd ZdZ e«       fdefˆ fd„Zˆ fd„Zˆ fd„Zˆ fd„Zˆ fd„Z	ˆ xZ
S )ÚMdsMtlsAdapterz7An HTTP adapter that uses mTLS for the metadata server.r"   c                 ó  •— t        j                  «       | _        | j                  j                  |j                  ¬«       | j                  j                  |j                  d¬«       t        «       | _        t        t        | �.  |i |¤Ž y )N)ÚcafileÚ )ÚcertfileÚpassword)ÚsslÚcreate_default_contextÚssl_contextÚload_verify_locationsr   Úload_cert_chainr   r   Ú_fallback_adapterÚsuperr=   Ú__init__)Úselfr"   ÚargsÚkwargsÚ	__class__s       €r   rJ   zMdsMtlsAdapter.__init__u   sw   ø€ ô ×5Ñ5Ó7ˆÔØ×Ñ×.Ñ.°o×6RÑ6RÐ.ÔSØ×Ñ×(Ñ(Ø$×>Ñ>Èð 	)ô 	
ô "-£ˆÔÜŒn˜dÑ,¨dÐ=°fÓ=r   c                 óH   •— | j                   |d<   t        t        | �  |i |¤ŽS ©NrE   )rE   rI   r=   Úinit_poolmanager©rK   rL   rM   rN   s      €r   rQ   zMdsMtlsAdapter.init_poolmanager€   s*   ø€ Ø $× 0Ñ 0ˆˆ}ÑÜ”^ TÑ;¸TÐLÀVÑLÐLr   c                 óH   •— | j                   |d<   t        t        | �  |i |¤ŽS rP   )rE   rI   r=   Úproxy_manager_forrR   s      €r   rT   z MdsMtlsAdapter.proxy_manager_for„   s*   ø€ Ø $× 0Ñ 0ˆˆ}ÑÜ”^ TÑ<¸dÐMÀfÑMÐMr   c                 óŽ  •— t        «       t        j                  k(  rt        t        | �  |fi |¤ŽS 	 t        t        | �  |fi |¤Ž}|j                  «        |S # t        j                  t        j                  j                  t        j                  j                  t        j                  j                  t        j                  j                  f$ rt}t        j                  d|«       t!        |j"                  «      }t%        |j'                  d¬«      «      }||_         | j(                  j
                  |fi |¤ŽcY d }~S d }~ww xY w)NzcmTLS connection to Compute Engine Metadata server failed. Falling back to standard HTTP. Reason: %sÚhttp)Úscheme)r7   r(   r-   rI   r=   ÚsendÚraise_for_statusrC   ÚSSLErrorÚrequestsr
   Ú	HTTPErrorÚConnectionErrorÚTimeoutÚ_LOGGERÚwarningr   Úurlr   Ú_replacerH   )rK   ÚrequestrM   ÚresponseÚeÚparsed_original_urlÚhttp_fallback_urlrN   s          €r   rX   zMdsMtlsAdapter.sendˆ   s  ø€ äÓ¤× 2Ñ 2Ò2Üœ¨Ñ3°GÑF¸vÑFÐFð	BÜœ^¨TÑ7¸ÑJÀ6ÑJˆHØ×%Ñ%Ô'ØˆOøä�L‰LÜ×Ñ×(Ñ(Ü×Ñ×)Ñ)Ü×Ñ×/Ñ/Ü×Ñ×'Ñ'ð
ò 	Bô �O‰Oð<àôô #+¨7¯;©;Ó"7ÐÜ *Ð+>×+GÑ+GÈvÐ+GÓ+VÓ WÐØ+ˆGŒKð /�4×)Ñ)×.Ñ.¨wÑA¸&ÑAÕAûð%	Bús   ²%A ÁA8EÃA)D?Ä9EÄ?Ec                 ó^   •— | j                   j                  «        t        t        | �  «        y )N)rH   ÚcloserI   r=   )rK   rN   s    €r   ri   zMdsMtlsAdapter.close¦   s"   ø€ Ø×Ñ×$Ñ$Ô&ÜŒn˜dÑ)Õ+r   )r   r   r    r,   r   rJ   rQ   rT   rX   ri   Ú__classcell__)rN   s   @r   r=   r=   r   s6   ø„ ÙAñ 0=«ñ	>Ø,õ	>ôMôNôB÷<,ð ,r   r=   )"r,   Údataclassesr   r   ÚenumÚloggingr   Úpathlibr   rC   Úurllib.parser   r   r[   Úrequests.adaptersr   Úgoogle.authr	   r
   Ú	getLoggerr   r_   r   r   r   r   r   r   r&   ÚEnumr(   r7   r;   r=   r   r   r   Ú<module>rt      sÀ   ðñ" <ç (Û Û Û 	Ý Û 
ß -ã Ý )ç 4ð ˆ'×
Ñ
˜HÓ
%€àÐ ñ
 &*Ð*OÓ%PÐ "Ù!Ð"8Ó9Ð ò7ò9ð ÷ð ó ðð -ó ô
�$—)‘)ô 
ò
ñ :G»ñ -¨ó -ô6,�[õ 6,r   