o
    9Bi                     @  s   d dl mZ d dlmZmZ d dlmZ d dlmZ d dl	m
Z
mZmZ d dlmZmZ d dlmZmZ d dlmZmZmZmZ d d	lmZ erTd d
lmZ d dlmZ G dd dejZG dd dej Z ee e!e!e"gee# f Z$dddZ%dS )     )annotations)TYPE_CHECKINGCallable)error)	transport)deferprotocolreactor)IPv4AddressIPv6Address)DeferredmaybeDeferred)IAddress
IConnectorIListeningPortIReactorTCP)Failure)ConchOptions)SSHUserAuthClientc                   @  s4   e Zd ZdddZdddZdddZdddZdS )SSHClientFactorydDeferred[None]optionsr   verifyHostKey_VHKuserAuthObjectr   returnNonec                 C  s   || _ || _|| _|| _d S N)r   r   r   r   )selfr   r   r   r    r    [/var/www/html/Trade-python/venv/lib/python3.10/site-packages/twisted/conch/client/direct.py__init__   s   
zSSHClientFactory.__init__	connectorr   reasonr   c                 C  s   | j d r|  d S d S )N	reconnect)r   connect)r   r#   r$   r    r    r!   clientConnectionLost'   s   
z%SSHClientFactory.clientConnectionLostc                 C  s*   | j d u rd S | j d }| _ || d S r   )r   errback)r   r#   r$   r   r    r    r!   clientConnectionFailed+   s   
z'SSHClientFactory.clientConnectionFailedaddrr   SSHClientTransportc                 C  sh   t | }| jd r| jd |_| jd r| jd |_| jd r'dg|jdd< | jd r2| jd |_|S )Nciphersmacscompresss   zlibr      zhost-key-algorithms)r+   r   supportedCipherssupportedMACssupportedCompressionssupportedPublicKeys)r   r*   transr    r    r!   buildProtocol1   s   



zSSHClientFactory.buildProtocolN)
r   r   r   r   r   r   r   r   r   r   )r#   r   r$   r   r   r   )r*   r   r   r+   )__name__
__module____qualname__r"   r'   r)   r5   r    r    r    r!   r      s
    


r   c                   @  s^   e Zd ZU ded< dddZddd
dZdd Zdd Zdd Zd ddZ	dd Z
dd ZdS )!r+   r   factoryr   r   c                 C  s   || _ d | _d S r   )r9   
unixServer)r   r9   r    r    r!   r"   B   s   
zSSHClientTransport.__init__Nr$   Failure | Nonec                   s<   j rtj j}d _ ntd }| fdd d S )Nc                   s   t j S r   )r   r+   connectionLost)xr$   r   r    r!   <lambda>T   s    z3SSHClientTransport.connectionLost.<locals>.<lambda>)r:   r   stopListeningr   succeedaddCallback)r   r$   r   r    r>   r!   r<   F   s   
z!SSHClientTransport.connectionLostc                 C  s8   | j jd u rd S | j jd }| j _|t|| d S r   )r9   r   r(   r   
ConchError)r   codedescr   r    r    r!   receiveErrorW   s   zSSHClientTransport.receiveErrorc                 C  sH   | j jd u rd S | j jd }| j _tj| || |t|| d S r   )r9   r   r   r+   sendDisconnectr(   r   rC   )r   rD   r$   r   r    r    r!   rG   ]   s
   z!SSHClientTransport.sendDisconnectc                 C  s(   | j jd|||d |rt| d S d S )Nz!Received Debug Message: {message})messagealwaysDisplaylang)_logdebugprint)r   rI   rH   rJ   r    r    r!   receiveDebugd   s   zSSHClientTransport.receiveDebugpubKeybytesfingerprintstrDeferred[bool]c                 C  sJ   | j }|d us	J | }t|ttfsJ d| j| |jd||S )Nz+Address must have a host to verify against.zutf-8)	r   getPeer
isinstancer
   r   r9   r   hostencode)r   rO   rQ   r   peerr    r    r!   r   n   s   z SSHClientTransport.verifyHostKeyc                 C  s\   | j jd|d tj| | |jdkr*| jjd ur,| jjd }| j_|d  d S d S d S )Nz"setting client server to {service})servicezssh-userauth)	rK   infor   r+   
setServicenamer9   r   callback)r   rY   r   r    r    r!   r[   y   s   zSSHClientTransport.setServicec                 C  s   |  | jj d S r   )requestServicer9   r   )r   r    r    r!   connectionSecure   s   z#SSHClientTransport.connectionSecure)r9   r   r   r   r   )r$   r;   r   r   )rO   rP   rQ   rR   r   rS   )r6   r7   r8   __annotations__r"   r<   rF   rG   rN   r   r[   r_   r    r    r    r!   r+   >   s   
 


r+   rV   rR   portintr   r   r   r   r   r   r   r   c                 C  s,   t  }t||||}tt| || |S r   )r   r   r   r   r	   
connectTCP)rV   ra   r   r   r   r   r9   r    r    r!   r&      s   r&   N)rV   rR   ra   rb   r   r   r   r   r   r   r   r   )&
__future__r   typingr   r   twisted.conchr   twisted.conch.sshr   twisted.internetr   r   r	   twisted.internet.addressr
   r   twisted.internet.deferr   r   twisted.internet.interfacesr   r   r   r   twisted.python.failurer   twisted.conch.client.optionsr   twisted.conch.ssh.userauthr   ClientFactoryr   r+   rP   rR   boolr   r&   r    r    r    r!   <module>   s    $F