o
    ¹iÌ  ã                   @   sd   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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
   úU/var/www/edux/Edux_v2/venv/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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 -> %rTi   r   zTunnel closed )Ússh_transportÚopen_channelÚ
chain_hostÚ
chain_portÚrequestÚgetpeernameÚ	ExceptionÚloggerÚdebugÚreprÚselectÚrecvÚlenÚsendÚclose)ÚselfÚchanÚeÚrÚwÚxÚdatar
   r
   r   Úhandle+   sX   
ýÿ€ü
ÿÿ
ýÿÿ


õ
zHandler.handleN)r   r   r   r   ÚtÚno_type_checkr#   r
   r
   r
   r   r   (   s    r   c                    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
   ©Úremote_hostÚremote_portÚ	transportr
   r   Ú	SubHander_   s    r*   z	127.0.0.1N)r   r   Úserve_forever)Ú
local_portr'   r(   r)   r*   r
   r&   r   Úforward_tunnelY   s   r-   )r   Úloggingr   ÚsocketserverÚtypingr$   Ú	getLoggerr   ÚThreadingTCPServerr   ÚBaseRequestHandlerr   r-   Ú__all__r
   r
   r
   r   Ú<module>   s    
1
