
    M/ez                     R   d Z ddlZddlZddlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZ dd	lmZ dd
lmZ ddlmZ 	 ddlmZ ddlmZ ddddddddZ ej2                  e      Zdee   dee   fdZ G d de      Z G d de      Z G d de
      Z y# e$ r eZeZY Ww xY w)z0Module configuring Certbot in a snap environment    N)Iterable)List)Optional)Session)HTTPAdapter)	HTTPError)RequestException)os)Error)HTTPConnection)HTTPConnectionPoolzaarch64-linux-gnuzarm-linux-gnueabihfzi386-linux-gnuzpowerpc64le-linux-gnuzpowerpc-linux-gnuzx86_64-linux-gnuzs390x-linux-gnu)arm64armhfi386ppc64elpowerpcamd64s390xcli_argsreturnc                 v   t         j                  j                  d      }|t        vrt	        dj                  |            dj                  t         j                  j                  d      t        |         t         j                  d<   t               5 }|j                  dt                      	 |j                  dd	      }|j                          	 ddd       j#                         }|j                  di       j                  dg       D cg c]a  }|j                  di       j                  d      dk(  r;|j                  di       j                  d      dk(  rdj                  |d   d         c }}dj%                  |      t         j                  d<   | j'                  d       | S # t        $ rq}t        |t              rE|j                  j                  d
k(  r,t        j!                  d       t        j!                  d       |t        j!                  d       |d}~ww xY w# 1 sw Y   XxY wc c}w )z
    Prepare runtime environment for a certbot execution in snap.
    :param list cli_args: List of command line arguments
    :return: Update list of command line arguments
    :rtype: list
    	SNAP_ARCHz$Unrecognized value of SNAP_ARCH: {0}z{0}/usr/lib/{1}/libaugeas.so.0SNAPCERTBOT_AUGEAS_PATHzhttp://snapd/z:http://snapd/v2/connections?snap=certbot&interface=contentg      >@)timeouti  zYAn error occurred while fetching Certbot snap plugins: your version of snapd is outdated.z[Please run "sudo snap install core; sudo snap refresh core" in your terminal and try again.z^An error occurred while fetching Certbot snap plugins: make sure the snapd service is running.Nresultestablishedplugpluginz
plug-attrscontentz	certbot-1z./snap/{0}/current/lib/python3.8/site-packages/slotsnap:CERTBOT_PLUGIN_PATHz--preconfigured-renewal)r
   environget_ARCH_TRIPLET_MAPr   formatr   mount_SnapdAdapterraise_for_statusr	   
isinstancer   responsestatus_codeLOGGERerrorjsonjoinappend)r   	snap_archsessionr-   edataitemconnectionss           ?/usr/lib/python3/dist-packages/certbot/_internal/snap_config.pyprepare_envr;   &   s    

{+I)):AA)LMM(H(O(O


v 1) <)>BJJ$% 
 go}7	{{#_+/ # 1H%%'$ ==?D#xx"599-LQhhvr*..v6(Bxxb155i@KO DJJ4PV<X^K_` QK Q
 ),(=BJJ$%OO-.O+   		!Y'AJJ,B,Bc,I B C ? @
 G  G HG		 &Qs2   H)/#F,A&H6,	H&5A,H!!H&&H))H3c                   (     e Zd Zd fdZddZ xZS )_SnapdConnectionc                 2    t         |   d       d | _        y N	localhost)super__init__sockself	__class__s    r:   rB   z_SnapdConnection.__init__U   s    %-1	    c                     t        j                   t         j                  t         j                        | _        | j                  j	                  d       y )Nz/run/snapd.socket)socketAF_UNIXSOCK_STREAMrC   connectrE   s    r:   rL   z_SnapdConnection.connectY   s1    MM&..&2D2DE			-.rG   r   N)__name__
__module____qualname__rB   rL   __classcell__rF   s   @r:   r=   r=   T   s    2/rG   r=   c                   ,     e Zd Zd fdZdefdZ xZS )_SnapdConnectionPoolr   c                 $    t         |   d       y r?   )rA   rB   rD   s    r:   rB   z_SnapdConnectionPool.__init___   s    %rG   c                     t               S N)r=   rM   s    r:   	_new_connz_SnapdConnectionPool._new_connb   s    !!rG   rN   )rO   rP   rQ   rB   r=   rY   rR   rS   s   @r:   rU   rU   ^   s    &"+ "rG   rU   c                   0    e Zd Z	 ddedeee      defdZy)r*   Nurlproxiesr   c                     t               S rX   )rU   )rE   r[   r\   s      r:   get_connectionz_SnapdAdapter.get_connectiong   s    #%%rG   rX   )rO   rP   rQ   strr   r   rU   r^    rG   r:   r*   r*   f   s*    :>&# & (# 7&CW&rG   r*   )!__doc__loggingrI   typingr   r   r   requestsr   requests.adaptersr   requests.exceptionsr   r	   certbot.compatr
   certbot.errorsr   urllib3.connectionr   urllib3.connectionpoolr   ImportErrorobjectr'   	getLoggerrO   r/   r_   r;   r=   rU   r*   r`   rG   r:   <module>rn      s    6       ) ) 0    19 !"&"  
		8	$+$s) +S	 +\/~ /"- "&K &g   N s   B 	B&%B&