ó
Á£ô_c           @   sg  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 y$ d d
 l m Z d d l m Z Wn e k
 rÑ e Z e Z n Xi d d 6d d 6d d 6d d 6d d 6d d 6d d 6Z e j e ƒ Z d „  Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d  „  ƒ  YZ d S(!   s0   Module configuring Certbot in a snap environmentiÿÿÿÿN(   t   Session(   t   HTTPAdapter(   t	   HTTPError(   t   RequestException(   t   List(   t   os(   t   Error(   t   HTTPConnection(   t   HTTPConnectionPools   aarch64-linux-gnut   arm64s   arm-linux-gnueabihft   armhfs   i386-linux-gnut   i386s   powerpc64le-linux-gnut   ppc64els   powerpc-linux-gnut   powerpcs   x86_64-linux-gnut   amd64s   s390x-linux-gnut   s390xc      	   C   s¿  t  j j d ƒ } | t k r6 t d j | ƒ ƒ ‚ n  d j t  j j d ƒ t | ƒ t  j d <t ƒ  ž } | j d t ƒ  ƒ y | j d ƒ } | j	 ƒ  Wnd t
 k
 r} t | t ƒ rë | j j d k rë t j d	 ƒ t j d
 ƒ n t j d ƒ | ‚ n XWd QX| j ƒ  } g  | j d i  ƒ j d g  ƒ D]_ } | j d i  ƒ j d ƒ d k r3| j d i  ƒ j d ƒ d k r3d j | d d ƒ ^ q3} d j | ƒ t  j d <|  j d ƒ |  S(   sÃ   
    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
    t	   SNAP_ARCHs$   Unrecognized value of SNAP_ARCH: {0}s   {0}/usr/lib/{1}/libaugeas.so.0t   SNAPt   CERTBOT_AUGEAS_PATHs   http://snapd/s:   http://snapd/v2/connections?snap=certbot&interface=contenti”  sY   An error occurred while fetching Certbot snap plugins: your version of snapd is outdated.s[   Please run "sudo snap install core; sudo snap refresh core" in your terminal and try again.s^   An error occurred while fetching Certbot snap plugins: make sure the snapd service is running.Nt   resultt   establishedt   plugt   plugins
   plug-attrst   contents	   certbot-1s.   /snap/{0}/current/lib/python3.8/site-packages/t   slott   snapt   :t   CERTBOT_PLUGIN_PATHs   --preconfigured-renewal(   R   t   environt   gett   _ARCH_TRIPLET_MAPR   t   formatR    t   mountt   _SnapdAdaptert   raise_for_statusR   t
   isinstanceR   t   responset   status_codet   LOGGERt   errort   jsont   joint   append(   t   cli_argst	   snap_archt   sessionR$   t   et   datat   itemt   connections(    (    sA   /usr/lib/python2.7/site-packages/certbot/_internal/snap_config.pyt   prepare_env$   s0    #!"!>t   _SnapdConnectionc           B   s   e  Z d  „  Z d „  Z RS(   c         C   s#   t  t |  ƒ j d ƒ d  |  _ d  S(   Nt	   localhost(   t   superR3   t   __init__t   Nonet   sock(   t   self(    (    sA   /usr/lib/python2.7/site-packages/certbot/_internal/snap_config.pyR6   S   s    c         C   s/   t  j  t  j t  j ƒ |  _ |  j j d ƒ d  S(   Ns   /run/snapd.socket(   t   sockett   AF_UNIXt   SOCK_STREAMR8   t   connect(   R9   (    (    sA   /usr/lib/python2.7/site-packages/certbot/_internal/snap_config.pyR=   W   s    (   t   __name__t
   __module__R6   R=   (    (    (    sA   /usr/lib/python2.7/site-packages/certbot/_internal/snap_config.pyR3   R   s   	t   _SnapdConnectionPoolc           B   s   e  Z d  „  Z d „  Z RS(   c         C   s   t  t |  ƒ j d ƒ d  S(   NR4   (   R5   R@   R6   (   R9   (    (    sA   /usr/lib/python2.7/site-packages/certbot/_internal/snap_config.pyR6   ]   s    c         C   s   t  ƒ  S(   N(   R3   (   R9   (    (    sA   /usr/lib/python2.7/site-packages/certbot/_internal/snap_config.pyt	   _new_conn`   s    (   R>   R?   R6   RA   (    (    (    sA   /usr/lib/python2.7/site-packages/certbot/_internal/snap_config.pyR@   \   s   	R!   c           B   s   e  Z d d  „ Z RS(   c         C   s   t  ƒ  S(   N(   R@   (   R9   t   urlt   proxies(    (    sA   /usr/lib/python2.7/site-packages/certbot/_internal/snap_config.pyt   get_connectione   s    N(   R>   R?   R7   RD   (    (    (    sA   /usr/lib/python2.7/site-packages/certbot/_internal/snap_config.pyR!   d   s   (   t   __doc__t   loggingR:   t   requestsR    t   requests.adaptersR   t   requests.exceptionsR   R   t   acme.magic_typingR   t   certbot.compatR   t   certbot.errorsR   t   urllib3.connectionR   t   urllib3.connectionpoolR   t   ImportErrort   objectR   t	   getLoggerR>   R&   R2   R3   R@   R!   (    (    (    sA   /usr/lib/python2.7/site-packages/certbot/_internal/snap_config.pyt   <module>   s8   

	.
