o
    Ó2.a
  ã                   @   s®   d Z ddlZddlmZ ddlmZ ddlmZ zddlm	  m
Z
 W n ey0   ddl
Z
Y nw e
jjZejd dk sCejd dk rMdd	lmZ ee
j_G d
d„ deƒZdS )z§ Resolves OpenSSL issues in some servers:
      https://lukasa.co.uk/2013/01/Choosing_SSL_Version_In_Requests/
      https://github.com/kennethreitz/requests/pull/799
é    N)ÚStrictVersion)ÚHTTPAdapter)ÚBaseHTTPAdapteré   é   é   )Úmatch_hostnamec                       sR   e Zd ZdZejg d¢ Z		d‡ fdd„	Zddd„Z‡ fd	d
„Zdd„ Z	‡  Z
S )ÚSSLHTTPAdapterz>An HTTPS Transport Adapter that uses an arbitrary SSL version.)Úassert_fingerprintÚassert_hostnameÚssl_versionNc                    s(   || _ || _|| _tƒ jdi |¤Ž d S )N© )r   r   r
   ÚsuperÚ__init__)Úselfr   r   r
   Úkwargs©Ú	__class__r   ú=/usr/lib/python3/dist-packages/docker/transport/ssladapter.pyr   "   s   zSSLHTTPAdapter.__init__Fc                 C   s@   |||| j | jdœ}| jr|  ¡ r| j|d< tdi |¤Ž| _d S )N)Z	num_poolsÚmaxsizeÚblockr   r
   r   r   )r   r
   r   Úcan_override_ssl_versionÚPoolManagerÚpoolmanager)r   Zconnectionsr   r   r   r   r   r   Úinit_poolmanager)   s   û
zSSLHTTPAdapter.init_poolmanagerc                    s*   t ƒ j|i |¤Ž}|j| jkr| j|_|S )zÝ
        Ensure assert_hostname is set correctly on our pool

        We already take care of a normal poolmanager via init_poolmanager

        But we still need to take care of when there is a proxy poolmanager
        )r   Úget_connectionr   )r   Úargsr   Zconnr   r   r   r   6   s   zSSLHTTPAdapter.get_connectionc                 C   s8   t j d¡d }|d u rdS |dkrdS t|ƒtdƒkS )Nú-r   FZdevTz1.5)Úurllib3Ú__version__Úsplitr   )r   Z
urllib_verr   r   r   r   C   s   z'SSLHTTPAdapter.can_override_ssl_version)NNN)F)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Z	__attrs__r   r   r   r   Ú__classcell__r   r   r   r   r	      s    ÿ
r	   )r$   ÚsysZdistutils.versionr   Zrequests.adaptersr   Z docker.transport.basehttpadapterr   Zrequests.packages.urllib3Zpackagesr   ÚImportErrorr   r   Úversion_infoZbackports.ssl_match_hostnamer   Z
connectionr	   r   r   r   r   Ú<module>   s    ÿ