File: //opt/saltstack/salt/lib/python3.10/site-packages/zmq/ssh/__pycache__/forward.cpython-310.pyc
o
�N�g
� @ s\ d Z ddlZddlZddlZe�d�ZG dd� dej�ZG dd� dej�Z dd � Z
d gZdS )
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.
� NZsshc @ s e Zd ZdZdZdS )�
ForwardServerTN)�__name__�
__module__�__qualname__Zdaemon_threadsZallow_reuse_address� r r �C/opt/saltstack/salt/lib/python3.10/site-packages/zmq/ssh/forward.pyr $ s r c @ s e Zd Zdd� ZdS )�Handlerc
C sF z| j �d| j| jf| j�� �}W n! ty2 } zt�d| j| jt |�f � W Y d }~d S d }~ww |d u rDt�d| j| jf � d S t�d| j�� |�� | j| jff � t
�
| j|gg g �\}}}| j|v r|| j�d�}t|�dkrwn|�
|� ||v r�|�d�}t|�dkr�n| j�
|� qX|�� | j�� t�d� d S ) Nzdirect-tcpipz$Incoming request to %s:%d failed: %sz9Incoming request to %s:%d was rejected by the SSH server.z&Connected! Tunnel open %r -> %r -> %rTi r zTunnel closed )�
ssh_transportZopen_channel�
chain_host�
chain_port�request�getpeername� Exception�logger�debug�repr�select�recv�len�send�close)�selfZchan�e�r�w�x�datar r r �handle* s\
�����
��
���
�
zHandler.handleN)r r r r r r r r r ) s r c s. G � ��fdd�dt �}td| f|��� d S )Nc s e Zd Z� Z�Z�ZdS )z!forward_tunnel.<locals>.SubHanderN)r r r r
r r r ��remote_host�remote_port� transportr r � SubHander[ s r"