U
    luf                     @   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	   3/tmp/pip-unpacked-wheel-h6ekxre8/zmq/ssh/forward.pyr   $   s   r   c                   @   s   e Zd Zdd ZdS )Handlerc              
   C   sL  z"| j d| j| jf| j }W nD tk
rf } z&td| j| jt	|f  W Y d S d }~X Y nX |d krtd| j| jf  d S td| j | | j| jff  t

| j|gg g \}}}| j|kr| jd}t|dkrq,|| ||kr|d}t|dkrq,| 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 %r -> %r -> %ri   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*   sT    


	



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
   	SubHander[   s   r%   z	127.0.0.1)r   r   serve_forever)Z
local_portr"   r#   r$   r%   r	   r!   r
   forward_tunnelW   s    r'   )__doc__loggingr   socketserver	getLoggerr   ThreadingTCPServerr   BaseRequestHandlerr   r'   __all__r	   r	   r	   r
   <module>   s   	
.