o
    ™©Zhè  ã                
   @   s|   d Z ddlZddlZddlZddlZe d¡ZG dd„ dejƒZ	G dd„ dej
ƒZded	ed
edejddf
dd„ZdgZdS )a  Sample script showing how to do local port forwarding over paramiko.

This script connects to the requested SSH server and sets up local port
forwarding (the openssh -L option) from a local port through a tunneled
connection to a destination reachable from the SSH server machine.
é    NÚsshc                   @   s   e Zd ZdZdZdZdS )ÚForwardServerz#A server to use for ssh forwarding.TN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Údaemon_threadsÚallow_reuse_address© r
   r
   úQ/var/www/html/lang_env/lib/python3.10/site-packages/jupyter_client/ssh/forward.pyr   !   s    r   c                   @   s   e Zd ZdZejdd„ ƒZdS )ÚHandlerzA handle for server requests.c              
   C   sF  z| j  d| j| jf| j ¡ ¡}W n! ty2 } zt d| j| jt	|ƒf ¡ W Y d}~dS d}~ww |du rDt d| j| jf ¡ dS t d 
| j ¡ | ¡ | j| jf¡¡ 	 t | j|gg g ¡\}}}| j|v r|| j d¡}t|ƒdkrwn| |¡ ||v r’| d¡}t|ƒdkrŒn| j |¡ qX| ¡  | j ¡  t d	¡ dS )
zHandle a request.zdirect-tcpipz$Incoming request to %s:%d failed: %sNz9Incoming request to %s:%d was rejected by the SSH server.z,Connected!  Tunnel open {!r} -> {!r} -> {!r}Ti   r   zTunnel closed )Ússh_transportZopen_channelÚ
chain_hostÚ
chain_portÚrequestÚgetpeernameÚ	ExceptionÚloggerÚdebugÚreprÚformatÚselectÚrecvÚlenÚsendÚclose)ÚselfZchanÚeÚrÚwÚxÚdatar
   r
   r   Úhandle+   sV   
ýÿ€ü
ÿÿ
ýÿ


õ
zHandler.handleN)r   r   r   r   ÚtÚno_type_checkr"   r
   r
   r
   r   r   (   s    r   Ú
local_portÚremote_hostÚremote_portÚ	transportÚreturnc                    s.   G ‡ ‡‡fdd„dt ƒ}td| f|ƒ ¡  dS )zForward an ssh tunnel.c                       s   e Zd Z” Z”Z”ZdS )z!forward_tunnel.<locals>.SubHanderN)r   r   r   r   r   r   r
   ©r&   r'   r(   r
   r   Ú	SubHander^   s    r+   z	127.0.0.1N)r   r   Úserve_forever)r%   r&   r'   r(   r+   r
   r*   r   Úforward_tunnelX   s   r-   )r   Úloggingr   ÚsocketserverÚtypingr#   Ú	getLoggerr   ÚThreadingTCPServerr   ÚBaseRequestHandlerr   ÚintÚstrÚAnyr-   Ú__all__r
   r
   r
   r   Ú<module>   s    
 0
