o
    Zh                     @   s\   d 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S )ForwardServerTN)__name__
__module____qualname__daemon_threadsallow_reuse_address r	   r	   F/var/www/html/lang_env/lib/python3.10/site-packages/zmq/ssh/forward.pyr   #   s    r   c                   @   s   e Zd Zdd ZdS )Handlerc              
   C   sN  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 d| d| j| jf 	 t

| j|gg g \}}}| j|v r| jd}t|dkr{n|| ||v r|d}t|dkrn| j| q\|  | j  td	 d S )
Nzdirect-tcpipz$Incoming request to %s:%d failed: %sz9Incoming request to %s:%d was rejected by the SSH server.zConnected!  Tunnel open z -> Ti   r   zTunnel closed )ssh_transportZopen_channel
chain_host
chain_portrequestgetpeername	Exceptionloggerdebugreprselectrecvlensendclose)selfZchanerwxdatar	   r	   r
   handle)   sR   

&



zHandler.handleN)r   r   r   r    r	   r	   r	   r
   r   (   s    r   c                    s.   G  fdddt }td| f|  d S )Nc                       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
   	SubHanderU   s    r%   z	127.0.0.1)r   r   serve_forever)Z
local_portr"   r#   r$   r%   r	   r!   r
   forward_tunnelQ   s   r'   )__doc__loggingr   socketserver	getLoggerr   ThreadingTCPServerr   BaseRequestHandlerr   r'   __all__r	   r	   r	   r
   <module>   s   
)
