HEX
Server: LiteSpeed
System: Linux php-prod-1.spaceapp.ru 5.15.0-157-generic #167-Ubuntu SMP Wed Sep 17 21:35:53 UTC 2025 x86_64
User: xnsbb3110 (1041)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //usr/local/CyberPanel/lib64/python3.10/site-packages/asyncssh/__pycache__/socks.cpython-310.pyc
o

�h��	@s�dZddlmZddlmZmZmZddlmZm	Z	ddl
mZer(ddlm
Z
eeegdfZd	Zd
ZdZdZdZdZdZdZd	Zededdddddf�Zeeedf�Zed	ed
iZGdd�de	�ZdS)zSOCKS forwarding support�)�
ip_address)�
TYPE_CHECKING�Callable�Optional�)�SSHForwarderCoro�SSHLocalForwarder)�DataType)�
SSHConnectionN���Z��cseZdZdZdddef�fdd�Zd'd	d
�Zd'dd�Zd'd
d�Zde	ddfdd�Z
de	ddfdd�Zde	ddfdd�Zde	ddfdd�Z
de	ddfdd�Zde	ddfdd�Zde	ddfdd�Zde	ddfdd�Zde	ddfd d!�Zde	ddfd"d#�Zd(de	d$eddf�fd%d&�
Z�ZS))�SSHSOCKSForwarderz0SOCKS dynamic port forwarding connection handler�connr
�corocs8t��||�d|_d|_|j|_d|_d|_d|_dS)N��r�)	�super�__init__�_inpbuf�
_bytes_needed�
_recv_version�
_recv_handler�	_addrtype�_host�_port)�selfrr��	__class__��D/usr/local/CyberPanel/lib/python3.10/site-packages/asyncssh/socks.pyr=s
zSSHSOCKSForwarder.__init__�returnNcCsD|jdusJ�d|_|j�d�dd�\}}|�|j|j||�dS)z,Send request to open a new tunnel connectionN�peernamer)�
_transportr�get_extra_info�forwardrr)r�	orig_host�	orig_portr"r"r#�_connectGszSSHSOCKSForwarder._connectcCs|jdusJ�|j�t�dS)zSend SOCKS4 success responseN)r&�write�SOCKS4_OK_RESPONSE)rr"r"r#�_send_socks4_okQsz!SSHSOCKSForwarder._send_socks4_okcCs@|jdusJ�t|jd}|j�tt|jf�|d�dS)zSend SOCKS5 success responseNr�)r&�_socks5_addr_lenrr,�SOCKS5_OK_RESPONSE_HDR�bytes)r�addrlenr"r"r#�_send_socks5_okXs
�
�z!SSHSOCKSForwarder._send_socks5_ok�datacCsd|dtkr|dtkrd|_|j|_dS|��dS|dtkr,|d|_|j|_dS|��dS)zParse SOCKS versionrr�N)�SOCKS4�
SOCKS_CONNECTr�_recv_socks4_addrr�close�SOCKS5�_recv_socks5_authlist�rr5r"r"r#rcs
zSSHSOCKSForwarder._recv_versioncCsZ|dd>|d|_|dd�dks|ddkr$tt|dd���|_d|_|j|_dS)	zParse SOCKSv4 address and portr�rrrsN���)r�strrrr�_recv_socks4_userrr=r"r"r#r9rs
z#SSHSOCKSForwarder._recv_socks4_addrcCs,|jr
|��|��dSd|_|j|_dS)zParse SOCKSv4 usernamer?N)rr.r+r�_recv_socks4_hostnamerr=r"r"r#rA~s
z#SSHSOCKSForwarder._recv_socks4_usercCsBz|�d�|_Wnty|��YdSw|��|��dS)zParse SOCKSv4 hostname�utf-8N)�decoder�UnicodeDecodeErrorr:r.r+r=r"r"r#rB�s�z'SSHSOCKSForwarder._recv_socks4_hostnamecCsH|jdusJ�t|vr|j�tttf��d|_|j|_dS|��dS)z,Parse SOCKSv5 list of authentication methodsNr)	r&�SOCKS5_AUTH_NONEr,r2r;r�_recv_socks5_commandrr:r=r"r"r#r<�sz'SSHSOCKSForwarder._recv_socks5_authlistcCs�|dtkrA|dtkrA|ddkrA|dtkr$d|_|j|_t|_dSt�	|d�}|r;||_|j
|_|d|_dS|��dS|��dS)zParse SOCKSv5 commandrrrrN)r;r8�SOCKS5_ADDR_HOSTNAMEr�_recv_socks5_hostlenr�SOCKS5_ADDR_IPV4rr0�get�_recv_socks5_addrr:)rr5r3r"r"r#rG�s$
z&SSHSOCKSForwarder._recv_socks5_commandcCs tt|��|_d|_|j|_dS)zParse SOCKSv5 addressrN)r@rrr�_recv_socks5_portrr=r"r"r#rL�sz#SSHSOCKSForwarder._recv_socks5_addrcCs|d|_|j|_dS)zParse SOCKSv5 host lengthrN)r�_recv_socks5_hostrr=r"r"r#rI�s
z&SSHSOCKSForwarder._recv_socks5_hostlencCs@z|�d�|_Wnty|��YdSwd|_|j|_dS)zParse SOCKSv5 hostrCNr)rDrrEr:rrMrr=r"r"r#rN�s�z#SSHSOCKSForwarder._recv_socks5_hostcCs*|dd>|d|_|��|��dS)zParse SOCKSv5 portrr>rN)rr4r+r=r"r"r#rM�sz#SSHSOCKSForwarder._recv_socks5_port�datatypecs�|jrl|j|7_|jrf|jdkrB|j�d�}|dkr3|jd|�}|j|dd�|_|�|�n0t|j�dkr@|��dSdSt|j�|jkra|jd|j�}|j|jd�|_|�|�ndS|js
|j}d|_|rwt��||�dSdS)z*Handle incoming data from the SOCKS clientrr/Nr�r)rrr�find�lenr:r�
data_received)rr5rO�idxr r"r#rS�s0
��zSSHSOCKSForwarder.data_received)r$N)N)�__name__�
__module__�__qualname__�__doc__rrr+r.r4r2rr9rArBr<rGrLrIrNrMr	rS�
__classcell__r"r"r r#r:s"





$r)rX�	ipaddressr�typingrrrr(rr�sessionr	�
connectionr
r2�_RecvHandlerr7r;r8�	SOCKS4_OK�	SOCKS5_OKrFrJrH�SOCKS5_ADDR_IPV6r-r1r0rr"r"r"r#�<module>s*