HEX
Server: LiteSpeed
System: Linux cpir1.prohostdns.com 4.18.0-553.123.2.lve.el8.x86_64 #1 SMP Thu May 7 23:17:13 UTC 2026 x86_64
User: pelakir (2976)
PHP: 8.2.31
Disabled: exec, shell_exec, system, passthru, proc_open, proc_close, proc_terminate, proc_get_status, popen, pclose, pcntl_exec
Upload Files
File: //proc/thread-self/root/lib/python3.6/site-packages/sshuttle/__pycache__/server.cpython-36.pyc
3

�L_�3�@sZddlZddlZddlZddlZddlZddlZddlZddlZejd$krXddl	m
Z
nejejBdfdd�Z
ddl
jZddljZddljZddlZddl
mZmZmZmZddlmZmZmZmZmZmZmZdd	�Z d
d�Z!dd
�Z"dd�Z#dd�Z$dd�Z%dd�Z&dd�Z'dd�Z(dd�Z)Gdd�d�Z*Gdd�de�Z+Gd d!�d!e�Z,d"d#�Z-dS)%�N�)�whichcCsx|dk	r|g}n,dtjkr.tjdjtj�}ntjjtj�}x6|D].}tjj||�}tjj|�rBtj||�rB|SqBWdS)N�PATH)	�os�environ�split�pathsep�defpath�path�join�exists�access)�file�moder
Zsearch_paths�p�filepath�r�/usr/lib/python3.6/server.pyrs

r)�Handler�Proxy�Mux�
MuxWrapper)�b�log�debug1�debug2�debug3�Fatal�resolvconf_random_nameservercCs�|dkrd}tjd|�}|r�|j�}|d}t|dp8d�}|ddkr\|d7}t|d	�}n>|d
dkr||d7}t|d�}n|d
dkr�|d7}t|d�}|}tjdtj|��d|fSdS)N�defaultz	0.0.0.0/0z*^(\d+(\.\d+(\.\d+(\.\d+)?)?)?)(?:/(\d+))?$r�� �z.0.0.0��z.0.0�rz.0�z!I)	�re�match�groups�int�min�struct�unpack�socketZ	inet_aton)Zipstr�m�gZips�widthrrr�_ipmatch&s$
r2cCs|dkr|Sd||fSdS)Nr!z%s/%dr)�ipr1rrr�_ipstr<sr4cCs8|sdSx*td�D]}|dtd|�@rd|SqWdS)Nr!rr")�range�_shl)Znetmask�irrr�	_maskbitsDsr8cCs|td|�S)Nr$)r*)�n�bitsrrrr6Nsr6cCsB|jd�}t|�dkrdSt|d�}t|d�}t|�}||fS)Nrrr$)NN)r�lenr2r8)�lineZcols�ipwZmaskw�maskrrr�_route_netstatRs
r?cCs>|jdd�d}d|krdS|jd�\}}t|�}|t|�fS)Nr"r�/)NN)rr2r*)r<Zipmr3r>r=rrr�_route_iproute\srAcCs�tjddd�}tj|tj|d�}g}x~|jD]t}|j�s<q.||jd��\}}|sTq.t|d|�}|dt	t	d|�dd|�@}	|j
tjtj
tjd	|	��|f�q.W|j�}
|
dkr�td
||
f�td�|S)Nr�C)r�LC_ALL)�stdout�env�ASCIIr"rr!z!IzWARNING: %r returned %d
z1WARNING: That prevents --auto-nets from working.
)rr�ssubprocess�Popen�PIPErD�strip�decoder+r6�appendr.�AF_INETZ	inet_ntoar,�pack�waitr)�argvZ
extract_routerEr�routesr<r=r>r1r3�rvrrr�_list_routeses&  rSccsxtd�rtddgt�}n$td�r0tddgt�}ntd�g}x6|D].\}}}|jd�rB|jd�rB|||fVqBWdS)Nr3ZrouteZnetstatz-rnz:WARNING: Neither ip nor netstat were found on the server.
z0.z127.)rrSrAr?r�
startswith)rQ�familyr3r1rrr�list_routessrVcCstj�}djtj|��S)N�)�sys�exc_infor�	traceback�format_exception)rYrrr�	_exc_dump�sr\cCs�tj�\}}tj�}|s�d}zpyD|j�tj|j�d�tj|j�d�|j�tj||�p^d}Wn&t	k
r�t
dt��d}YnXWdtj|�X|j�||fS)N�cr"rz%s
�b)
r.Z
socketpairr�fork�close�dup2�fileno�	hostwatchZhw_main�	Exceptionrr\�_exit)Z
seed_hosts�
auto_hosts�s1�s2�pidrRrrr�start_hostwatch�s"rjc@seZdZdd�ZdS)�	HostwatchcCsd|_d|_dS)Nr)ri�sock)�selfrrr�__init__�szHostwatch.__init__N)�__name__�
__module__�__qualname__rnrrrrrk�srkc@s0eZdZdd�Zedd��Zdd�Zdd�Zd	S)
�DnsProxycCs�tj|g�tj�d|_||_||_d|_||_i|_d|_	d|_
|dkrTd|_n$|jd�\|_	|_
|j
|j	|j
�|_|j�dS)N�r�@)rrn�time�timeout�mux�chan�tries�request�peers�
to_ns_peer�
to_ns_port�
to_nameserverr�	_addrinfo�try_send)rmrwrxrzr~rrrrn�s
zDnsProxy.__init__cCs2t|�dkrd}tj||�d\}}}}}||fS)Nr�5)r*r.Zgetaddrinfo)�peer�portrU�_�sockaddrrrrr�szDnsProxy._addrinfocCs.|jdkrdS|jd7_|jdkr6t�\}}d}n|j}t|j�}|j||�\}}tj|tj�}|j	tj
tjd�|j|�||j
|<td|||jf�y|j|j�|jj|�Wnntjk
�r(tj�dd�\}}|jdtjk�rtd||f�|j�dStd||f�dSYnXdS)	Nrr"r��?zDNS: sending to %r:%d (try %d)
r$rzDNS send to %r: %s
)ryr~rr|r*r}rr.�
SOCK_DGRAM�
setsockopt�SOL_IP�IP_TTLZconnectr{r�sendrz�socksrL�errorrXrY�args�ssnet�NET_ERRSr�r)rmr�r�r�rUr�rl�errrr��s2





zDnsProxy.try_sendcCs�|j|}y|jd�}Wn~tjk
r�tj�dd�\}}|jj|�|j|=|jdt	j
kr~td||f�|j�dSt
d||f�dSYnXtdt|��|jj|jt	j|�d|_dS)Nir$rzDNS recv from %r: %s
zDNS response: %d bytes
F)r{�recvr.r�rXrYr��remover�r�r�rr�rr;rwr�rxZCMD_DNS_RESPONSE�ok)rmrlr��datar�r�rrr�callback�s 

zDnsProxy.callbackN)rorprqrn�staticmethodrr�r�rrrrrr�s$rrc@s$eZdZdd�Zdd�Zdd�ZdS)�UdpProxycCs^tj|tj�}tj||g�tj�d|_||_||_||_|tj	krZ|jj
tjtjd�dS)Nrsr�)
r.r�rrnrurvrwrxrlrMr�r�r�)rmrwrxrUrlrrrrn	s
zUdpProxy.__init__cCshtd|�y|jj||�WnDtjk
rbtj�dd�\}}td|d|d|f�dSXdS)NzUDP: sending to %r port %d
r$zUDP send to %r port %d: %s
rr")rrlZsendtor.r�rXrYr)rm�dstipr�r�r�rrrr�sz
UdpProxy.sendc
Cs�y|jd�\}}WnDtjk
rVtj�dd�\}}td|d|d|f�dSXtdt|��td|d|df�}|j	j
|jtj
||�dS)Nir$zUDP recv from %r port %d: %s
rr"zUDP response: %d bytes
z%s,%r,)Zrecvfromr.r�rXrYrrr;rrwr�rxr��CMD_UDP_DATA)rmrlr�r�r�r�Zhdrrrrr�szUdpProxy.callbackN)rorprqrnr�r�rrrrr�s
	r�cs�tdtj��tjdkr"dt_ndt_td|�tjjd�tjj	�g�t
tjtj���j��tdt
|�d�|r�tt��}td	�x|D]}td
|�q�Wng}d}x|D]}|d|7}q�W�jd
tjt|��t��td��_��fdd������fdd�}|�_��fdd�}|�_i�����fdd�}	|	�_i���fdd������fdd�}
|
�_�x4�j�r��j�r��jd
k�s�t�tj�jtj�\}}|�r�t d|��tj!���|�rֈj"���rHt#j#�}
g}xH�j$�D]<\}}|j%|
k�s|j�r�t&d|�|j|�d|_�q�Wx|D]}�|=�q8W��rvg}x:�j$�D].\}}|j�s\t&d|�|j|�d|_�q\Wx|D]}�|=�q�W�qvWdS)Nz'Starting server with Python version %s
r"z s: zserver: zlatency control setting = %r
zSSHUTTLE0001z
auto-nets:�
zavailable routes:
z  %d/%s/%d
rWz	%d,%s,%d
rcs��js
t��jjd�}|rv�j|jtd��}|drP|j��_|jtd��n
td��_�j	dt
jtd�j|��nt
d��dS)Nir�r"rWrzhostwatch process died���)ri�AssertionErrorrlr��leftoverrr�poprLr�r�Z
CMD_HOST_LISTrr)rlZcontent�lines)�hwrwrr�hostwatch_readyKs


zmain.<locals>.hostwatch_readycs@�js<t|jd�j�j���\�_�_�jt�jg�d��dS)NrF)r�r�)rirjrKrJrrlrLr)r�)rf�handlersr�r�rr�got_host_reqZs
zmain.<locals>.got_host_reqcs`|jd�jdd�\}}}t|�}|tjkr0tj}t|�}tj|||�}�jt	t
�|�|��dS)NrF�,r$)rKrr*r.rMZAF_INET6r�Zconnect_dstrLrr)�channelr�rUr��dstportZoutwrap)r�rwrr�new_channelbs
zmain.<locals>.new_channelcs0td|�t�||��}�j|�|�|<dS)Nz!Incoming DNS request channel=%d.
)rrrrL)r�r��h)�dnshandlersr�rwr~rr�dns_reqrs
zmain.<locals>.dns_reqcs�td||f�|tjkrb|jtd�d�\}}}t|�}td||f��|}|j||f|�n(|tjkr�td��|}d|_�j	|=dS)Nz(Incoming UDP request channel=%d, cmd=%d
r�r$zis incoming UDP data. %r %d.
zis incoming UDP close
F)
rr�r�rrr*r�Z
CMD_UDP_CLOSEr��channels)r��cmdr�r�r�r�)rw�udphandlersrr�udp_req{s

zmain.<locals>.udp_reqcs\td�t|�}��fdd��j�<��kr:td���nt��|�}�j|�|��<dS)NzIncoming UDP open.
cs��||�S)Nr)r�r�)r�r�rr�<lambda>�sz(main.<locals>.udp_open.<locals>.<lambda>z&UDP connection channel %d already open)rr*r�rr�rL)r�r�rUr�)r�rwr�r�)r�r�udp_open�s
zmain.<locals>.udp_openz+hostwatch exited unexpectedly: code 0x%04x
zexpiring dnsreqs channel=%d
Fzexpiring UDP channel=%d
)'r�platformZpython_version�helpers�verboseZ	logprefixrXrD�write�flushr�stdinrL�str�listrVr�r�Z
CMD_ROUTESrrkr�r�r�Zgot_dns_reqZgot_udp_openr�rir�r�waitpid�WNOHANGrZrunonceZcheck_fullnessru�itemsrvr)Zlatency_controlrfr~Z	auto_netsrQ�rZroutepktr�r�r�r�ZrpidrRZnowr�r�r�r)	rfr�r�r�r�rwr~r�r�r�main(s�












r�)rr).r'r,r.rZrurXrr��version_infoZshutilr�F_OK�X_OKZsshuttle.ssnetr�Zsshuttle.helpersr�Zsshuttle.hostwatchrc�
subprocessrGrrrrrrrrrrrr2r4r8r6r?rArSrVr\rjrkrrr�r�rrrr�<module>s<



$

	X!