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/CyberCP/lib/python3.10/site-packages/asyncssh/__pycache__/tuntap.cpython-310.pyc
o

�h�/�
@sdZddlZddlZddlZddlZddlZddlZddlZddlm	Z	m
Z
mZmZej
dkr3ddlZdZdZdZdZdZd	Zd
ZdZdZd
ZdZdZdZdZdZGdd�dej�ZGdd�de�Z Gdd�de�Z!Gdd�de�Z"de	gej#fde$de
e$deeej#ffdd�Z%dS)zSSH TUN/TAP forwarding support�N)�Callable�Optional�Tuple�cast�win32��i����lN��I96sli@li@i�T@i�16sHcseZdZdZdejdef�fdd�Zdejfdd�Z	d	ejdd
fdd�Z
d(d
d�Zdefdd�Z
d(dd�Zd(dd�Zdefdd�Zdefdd�Zdeeeffdd�Z	
	
d)deedeedd
fdd�Zd(dd �Zd!edd
fd"d#�Zdefd$d%�Zd(d&d'�Z�ZS)*�SSHTunTapTransportzLayer 2/3 tunnel transport�loop�	interfacecs"t�jd|id�||_d|_dS)Nr)�extra)�super�__init__�_loop�	_protocol)�selfr
r��	__class__��B/usr/local/CyberCP/lib/python3.10/site-packages/asyncssh/tuntap.pyr?s
zSSHTunTapTransport.__init__�returncCs|jdusJ�|jS)z-Get protocol object associated with transportN)r�rrrr�get_protocolEszSSHTunTapTransport.get_protocol�protocolNcCsttj|�|_dS)z&Set protocol associated with transportN)r�asyncio�Protocolr)rrrrr�set_protocolLszSSHTunTapTransport.set_protocolcCs|��dS)zAbort this transportN)�closerrrr�abortQszSSHTunTapTransport.abortcC�t���'Return if the transport is reading data��NotImplementedErrorrrrr�
is_readingV�zSSHTunTapTransport.is_readingcCr")�
Pause readingr%rrrr�
pause_reading[r(z SSHTunTapTransport.pause_readingcCr")�Resume readingr%rrrr�resume_reading`r(z!SSHTunTapTransport.resume_readingcC�dS)z*This transport doesn't support writing EOFFrrrrr�
can_write_eofer(z SSHTunTapTransport.can_write_eofcCr-)z#This transport has no output bufferrrrrrr�get_write_buffer_sizejr(z(SSHTunTapTransport.get_write_buffer_sizecCr-)�2This transport doesn't support write buffer limits)rrrrrrr�get_write_buffer_limitsor(z*SSHTunTapTransport.get_write_buffer_limits�high�lowcCr-)r0Nr)rr2r3rrr�set_write_buffer_limitst�z*SSHTunTapTransport.set_write_buffer_limitscCr-)z$Ignore writing EOF on this transportNrrrrr�	write_eofxr5zSSHTunTapTransport.write_eof�datacCr")�Write a packetr%�rr7rrr�write{r(zSSHTunTapTransport.writecCr-)z"Return if the transport is closingFrrrrr�
is_closing�r(zSSHTunTapTransport.is_closingcCr")�Close this transportr%rrrrr �r(zSSHTunTapTransport.close�rN)NN)�__name__�
__module__�__qualname__�__doc__r�AbstractEventLoop�strr�BaseProtocolrrr!�boolr'r*r,r.�intr/rr1rr4r6�bytesr:r;r �
__classcell__rrrrr<s.


��
�
rc�|eZdZdZdejdedeef�fdd�Zde	fdd	�Z
ddd�Zdd
d�Zddd�Z
dedd
fdd�Zddd�Z�ZS)�SSHTunTapOSXTransportzTunTapOSX transportr
�mode�unitc
	sD|tkrdnd}|dur9td�D]}ztd|�|��ddd�}Wn	ty)Yqw|}n
ttjd|�d	���ntd|�|��ddd�}|�|��}|��}t�tjtj	�}	z.t
�t|d�}
t
�|	t|
�}
t
�t|
�\}}|tO}t
�t||�}
t
�|	t|
�W|	��n|	��wt��||�||_d|_t�|��d
�dS)N�tun�tap�z/dev/�rb+r��	bufferingzNo z devices availableT)�SSH_TUN_MODE_POINTTOPOINT�range�open�OSError�errno�EBUSY�encode�socket�AF_INET�
SOCK_DGRAM�struct�pack�IFF_FMT�fcntl�ioctl�DARWIN_SIOCGIFFLAGS�unpack�IFF_UP�DARWIN_SIOCSIFFLAGSr rr�_file�_read_thread�os�set_blocking�fileno)
rr
rKrL�prefix�i�filer�name�sock�ifr�_�flagsrrrr�s8��zSSHTunTapOSXTransport.__init__rcCs
|jduS)r$N)rgrrrrr'�s
z SSHTunTapOSXTransport.is_readingNcCs|jr
|j��d|_dSdS)r)N)rg�joinrrrrr*�s

�z#SSHTunTapOSXTransport.pause_readingcCs0|jstj|jd�|_d|j_|j��dSdS)r+)�targetTN)rg�	threading�Thread�
_read_loop�daemon�startrrrrr,�s
�z$SSHTunTapOSXTransport.resume_readingc
Csz|jdusJ�	z|j�d�}Wn"ty2}z|jtjkr'|j�|jj|�WYd}~dSd}~ww|j�|jj	|�q)z1Loop reading packets until read is paused or doneNT�)
rrf�readrVrW�EBADFr�call_soon_threadsafe�connection_lost�
data_received�rr7�excrrrrw�s �����z SSHTunTapOSXTransport._read_loopr7cC�|j�|�dS�r8N�rfr:r9rrrr:��zSSHTunTapOSXTransport.writecC�|j��|��dS�r<N�rfr r*rrrrr ��
zSSHTunTapOSXTransport.closer=)r>r?r@rArrBrFrrrEr'r*r,rwrGr:r rHrrrrrJ�s�)


rJcsxeZdZdZdejdeef�fdd�Zde	fdd�Z
dd
d�Zddd
�Zddd�Z
dedd	fdd�Zddd�Z�ZS)�SSHDarwinUTunTransportzDarwin UTun transportr
rLcs�t�tjtjtj�}z4t�tdd�}t�|t	|�}t�
t|�\}}|dur'dn|d}|�d�|�||f�|�
�\}}WntyJ|���wt��|d|d���||_d|_dS)Nrscom.apple.net.utun_control�F�utunr)rZ�	PF_SYSTEMr\�SYSPROTO_CONTROLr]r^�DARWIN_CTLIOCGINFO_FMTr`ra�DARWIN_CTLIOCGINFOrc�setblocking�connect�getpeernamerVr rr�_sock�_reading)rr
rLro�arg�ctl_info�ctl_idrqrrrr�s(��
�
zSSHDarwinUTunTransport.__init__rcC�|jSr#�r�rrrrr'�z!SSHDarwinUTunTransport.is_readingNcCsd|_|j�|j�dS�r)FN)r�r�
remove_readerr�rrrrr*
sz$SSHDarwinUTunTransport.pause_readingcC�d|_|j�|j|j�dS�r+TN)r�r�
add_readerr��_read_readyrrrrr,�z%SSHDarwinUTunTransport.resume_readingc
Cs�|jdusJ�	z|j�d�dd�}Wn$ttfy YdSty8}z
|j�|�WYd}~dSd}~ww|j�|�q)�)Read available packets from the transportNTi�)rr��recv�BlockingIOError�InterruptedErrorrVr~rr�rrrr�s���z"SSHDarwinUTunTransport._read_readyr7cCs@|dd?}|dkr
tjntj}|�dd�|}|j�|�dS)r8rr��bigN)rZr[�AF_INET6�to_bytesr��send)rr7�version�familyrrrr:)szSSHDarwinUTunTransport.writecCr�r�)r�r r*rrrrr 2r�zSSHDarwinUTunTransport.closer=)r>r?r@rArrBrrFrrEr'r*r,r�rGr:r rHrrrrr��s


	r�crI)�SSHLinuxTunTapTransportzLinux TUN/TAP transportr
rKrLcs�tdddd�}|tkrttB}d}nttB}d}|durdn|�|����}t�t||�}z	t	�
|t|�}WntyB|�
��wt�t|�\}}	|�d���}
t��||
�||_d	|_t�|��d	�dS)
Nz/dev/net/tunrPrrQrMrN��F)rUrS�
LINUX_IFF_TUN�LINUX_IFF_NO_PI�
LINUX_IFF_TAPrYr]r^r_r`ra�LINUX_TUNSETIFFrVr rc�strip�decoderrrfr�rhrirj)rr
rKrLrmrrrkrnrprqrrrrr<s(�z SSHLinuxTunTapTransport.__init__rcCr�r#r�rrrrr'Zr�z"SSHLinuxTunTapTransport.is_readingNcCs0d|_z
|j�|j�WdStyYdSwr�)r�rr�rfrVrrrrr*_s�z%SSHLinuxTunTapTransport.pause_readingcCr�r�)r�rr�rfr�rrrrr,ir�z&SSHLinuxTunTapTransport.resume_readingc
Csn|jdusJ�	z|j�d�}Wnty)}z
|j�|�WYd}~dSd}~ww|dur0dS|j�|�q)r�NTrz)rrfr{rVr~rr�rrrr�os���z#SSHLinuxTunTapTransport._read_readyr7cCr�r�r�r9rrrr:�r�zSSHLinuxTunTapTransport.writecCr�r�r�rrrrr �r�zSSHLinuxTunTapTransport.closer=)r>r?r@rArrBrFrrrEr'r*r,r�rGr:r rHrrrrr�9s�



r��protocol_factoryrKrLrcCs�t��}d}tjdkrA|dur,zt|||�}Wn?ty+|tkr(t||�}n�Yn,w|tkr:|dkr:t||�}nt|||�}ntjdkrMt|||�}n
tt	j
dtj����|dus]J�|�}|�|�|�|�|�
�||fS)z+Create a local TUN or TAP network interfaceN�darwinrO�linuxzTunTap not supported on )r�get_event_loop�sys�platformrJrVrSr�r�rW�EPROTONOSUPPORT�connection_maderr,)r�rKrLr
�	transportrrrr�
create_tuntap�s4
��

�

r�)&rArrWrhrZr]r�ru�typingrrrrr�r`rS�SSH_TUN_MODE_ETHERNET�SSH_TUN_UNIT_ANY�SSH_TUN_AF_INET�SSH_TUN_AF_INET6r�r�rbrer�r�r�r�r_rd�	TransportrrJr�r�rDrFr�rrrr�<module>sJ
O^PS���