HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //proc/self/root/lib/python3/dist-packages/docker/transport/__pycache__/sshconn.cpython-310.pyc
o

�2.a��@s�ddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlmZddl
mZddlmZzddlmmZWn
eyNddlZYnwejjZGdd�de	j	�ZGdd�dej�ZGd	d
�d
ejj�ZGdd�de�ZdS)
�N)�BaseHTTPAdapter�)�	constantscsTeZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
�ZS)�	SSHSocketcsjt��tjtj�||_d|_d|_d|jvr!|j�d�\|_|_d|jvr0|j�d�\|_|_d|_	dS)N�:�@)
�super�__init__�socket�AF_INET�SOCK_STREAM�host�port�user�split�proc)�selfr
��	__class__��:/usr/lib/python3/dist-packages/docker/transport/sshconn.pyr	s�


zSSHSocket.__init__cKs�dg}|jr
|d|jg}|jr|d|jg}|d|jdg}d}tjs*dd�}|}ttj�}|�dd�|�d	d�t	j
d
�|�|dt	jt	jtjrLdn|d�|_
dS)
N�sshz-lz-pz--�docker system dial-stdiocSst�tjtj�dS�N)�signal�SIGINT�SIG_IGNrrrr�f2szSSHSocket.connect.<locals>.f�LD_LIBRARY_PATH�
SSL_CERT_FILE� T)�env�shell�stdout�stdin�
preexec_fn)rrr
r�IS_WINDOWS_PLATFORM�dict�os�environ�pop�
subprocess�Popen�join�PIPEr)r�kwargs�args�preexec_funcrr!rrr�connect&s*
�zSSHSocket.connectcCs6|jr|jjjrtd��|jj�|�}|jj��|S�Nz<SSH subprocess not initiated.connect() must be called first.)rr$�closed�	Exception�write�flush)r�data�writtenrrr�_writeDs
zSSHSocket._writecCs|�|�dSr�r:�rr8rrr�sendallLszSSHSocket.sendallcCs
|�|�Srr;r<rrr�sendOs
zSSHSocket.sendcCs|jstd��|jj�|�Sr3)rr5r#�read)r�nrrr�recvRszSSHSocket.recvcCs |js|��||jj_|jjSr)rr2r#�channel)r�moderrr�makefileXs
zSSHSocket.makefilecCs<|jr|jjjr
dS|jj�d�|jj��|j��dS)Ns

)rr$r4r6r7�	terminate�rrrr�close_s
zSSHSocket.close)�__name__�
__module__�__qualname__r	r2r:r=r>rArDrG�
__classcell__rrrrrs
rcs&eZdZd�fdd�	Zdd�Z�ZS)�
SSHConnectionN�<cs&t�jd|d�||_||_||_dS)N�	localhost)�timeout)rr	�
ssh_transportrO�ssh_host)rrPrOr
rrrr	hs�
zSSHConnection.__init__cCsP|jr|j��}|�|j�|�d�nt|j�}|�|j�|��||_dS)Nr)	rP�open_session�
settimeoutrO�exec_commandrrQr2�sock)rrUrrrr2ps


zSSHConnection.connect)NrMN)rHrIrJr	r2rKrrrrrLgsrLcs2eZdZdZd�fdd�	Zdd�Zd	d
�Z�ZS)�SSHConnectionPoolrNrM�
cs6t�jd||d�d|_||_|r|��|_||_dS)NrN)rO�maxsize)rr	rPrO�
get_transportrQ)r�
ssh_clientrOrXr
rrrr	�s�

zSSHConnectionPool.__init__cCst|j|j|j�Sr)rLrPrOrQrFrrr�	_new_conn�szSSHConnectionPool._new_conncCsjd}z|jj|j|d�}Wn!tytj�|d��tjy.|jr,tj�	|d��Ynw|p4|�
�S)N)�blockrOzPool is closed.z>Pool reached maximum size and no more connections are allowed.)�pool�getr\�AttributeError�urllib3�
exceptions�ClosedPoolError�queue�Empty�EmptyPoolErrorr[)rrO�connrrr�	_get_conn�s��	zSSHConnectionPool._get_conn)NrMrWN)rHrIrJ�schemer	r[rgrKrrrrrV}s

rVcsbeZdZejjjgd�Zdejej	df�fdd�	Z
dd�Zdd	�Zddd�Z
�fd
d�Z�ZS)�SSHHTTPAdapter)�poolsrOrZ�
ssh_params�
max_pool_sizerMFcsjd|_|s|�|�|��||_|�d�r|td�d�|_||_||_t|dd�d�|_	t
���dS)Nzssh://cSs|��Sr)rG)�prrr�<lambda>�sz)SSHHTTPAdapter.__init__.<locals>.<lambda>)�dispose_func)rZ�_create_paramiko_client�_connectrQ�
startswith�lenrOrl�RecentlyUsedContainerrjrr	)r�base_urlrO�pool_connectionsrl�	shell_outrrrr	�s

�zSSHHTTPAdapter.__init__cCsBt�d��tj�t��|_tj�	|�}|j
|j|jd�|_
tj�d�}tj�|�r�t��}t|��
}|�|�Wd�n1sBwY|�|j
�}d|vr\t�|jd�|j
d<d|vrg|d|j
d<|jdurwd|vrw|d|j
d<|jdur�d|vr�|d|j
d	<d
|vr�|d
|j
d<|j��|j�t���dS)N�paramiko)�hostnamer�usernamez
~/.ssh/config�proxycommandrUryrrrz�identityfile�key_filename)�logging�	getLogger�setLevel�WARNINGrx�	SSHClientrZ�urllib�parse�urlparseryrrzrkr(�path�
expanduser�exists�	SSHConfig�open�lookup�ProxyCommand�ssh_conf�load_system_host_keys�set_missing_host_key_policy�
WarningPolicy)rru�ssh_config_file�confr�host_configrrrrp�s8
�
�
�
z&SSHHTTPAdapter._create_paramiko_clientcCs"|jr|jjdi|j��dSdS)Nr)rZr2rkrFrrrrq�s�zSSHHTTPAdapter._connectNcCs�|jst|j|j|j|jd�S|jj�7|j�|�}|r%|Wd�S|jr1|j��s1|�	�t|j|j|j|jd�}||j|<Wd�|S1sMwY|S)N)rZrOrXr
)
rZrVrOrlrQrj�lockr^rYrq)r�url�proxiesr]rrr�get_connection�s2�
��
��zSSHHTTPAdapter.get_connectioncs"t���|jr|j��dSdSr)rrGrZrFrrrrG�s
�zSSHHTTPAdapter.closer)rHrIrJ�requests�adapters�HTTPAdapter�	__attrs__r�DEFAULT_NUM_POOLS�DEFAULT_MAX_POOL_SIZEr	rprqr�rGrKrrrrri�s�
ri)rxrc�urllib.parser��requests.adaptersr�r~r(rr
r+� docker.transport.basehttpadapterr�r�http.client�client�httplib�requests.packages.urllib3�packagesr`�ImportError�_collectionsrtr�HTTPConnectionrL�connectionpool�HTTPConnectionPoolrVrirrrr�<module>s,�O'