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: //usr/lib/python3.6/site-packages/sshuttle/__pycache__/ssnet.cpython-36.opt-1.pyc
3

xR<_4M�@s�ddlZddlZddlZddlZddlZddlZddlZddlmZm	Z	m
Z
mZmZm
Z
dZdZdZdZdZdZdZd	Zd
ZdZdZd
ZdZdZdZdZdZdZdZ dZ!dZ"edededededededededed ed!ed"e d#e!d$e"d%iZ#ej$ej%ej&ej'ej(ej)ej'ej*ej+g	Z,d&d'�Z-d(d)�Z.d*d+�Z/d,d-�Z0da1Gd.d/�d/�Z2Gd0d1�d1�Z3Gd2d3�d3e3�Z4Gd4d5�d5e3�Z5Gd6d7�d7e2�Z6d8d9�Z7d:d;�Z8dS)<�N)�b�log�debug1�debug2�debug3�Fatali��i����iBiBiBiBiBiBiBiBiBi	Bi
BiBiBi
BiBZEXITZPINGZPONGZTCP_CONNECTZTCP_STOP_SENDINGZTCP_EOFZTCP_DATAZROUTESZHOST_REQZ	HOST_LISTZDNS_REQZDNS_RESPONSEZUDP_OPENZUDP_DATAZ	UDP_CLOSEcCs||kr|j|�dS)N)�append)�socks�elem�r�/usr/lib/python3.6/ssnet.py�_add>srcCsPg}x>|D]6}y|j|j��Wq
tk
r>|j|�Yq
Xq
W|j�|S)N)r�fileno�AttributeError�sort)r�out�irrr�_fdsCs
rcGsby||�Stk
r\tj�dd�\}}|jtjtjfkrB�ntd|j|f�dSYnXdS)Nr	z%s: err was: %s
)�OSError�sys�exc_info�errnoZEWOULDBLOCKZEAGAINr�__name__)�func�args�_�errr�	_nb_cleanNsr cCs�y$|j�}|r"d|d|dfSWnftjk
rxtj�dd�\}}|jdtjkr\n|jdtjtj	fkrt�Ynt
k
r�YnXdS)Nz%s:%srrr	�unknown)Zgetpeername�socket�errorrrrr�EINVALZENOTCONNZENOTSOCKr)�sockZpnrrrrr�
_try_peernameZsr&c@szeZdZddd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	e
dd��Zdd�Zdd�Z
dd�Zdd�Zdd�ZdS)�SockWrapperNcCsZtd7atdt�d|_||_||_d|_|_g|_||_|pJt	|j�|_
|j�dS)Nrz(creating new SockWrapper (%d now exist)
F)�_swcountr�exc�rsock�wsock�	shut_read�
shut_write�buf�
connect_tor&�peername�try_connect)�selfr*r+r/r0rrr�__init__oszSockWrapper.__init__cCs4td8atd|tf�|jr0td||jf�dS)Nrz%r: deleting (%d remain)
z%r: error was: %s
)r(rr))r2rrr�__del__|szSockWrapper.__del__cCsB|j|jkrd|jj�}nd|jj�|jj�f}d||jfS)Nz#%dz#%d,%dzSW%s:%s)r*r+rr0)r2Zfdsrrr�__repr__�szSockWrapper.__repr__cCs |js||_|j�|j�dS)N)r)�nowrite�noread)r2rrrr�seterr�szSockWrapper.seterrcCsZ|jr|jr|j�d|_|js$dS|jjd�td||jf�y|jj|j�d|_Wn�tjk
�rTt	j
�dd�\}}td||f�|jdtj
kr�|jjtjtj�}tj|tj|��}td||f�|jdtjtjgkr�nb|jddk�rd|_nJ|jdtjk�r d|_n0|jdttjtjgk�rNd|_|j|�n�YnXdS)NFz%r: trying connect to %r
r	z%r: connect result: %s
rz%r: fixed connect result: %s
)r/r-r7r*�setblockingrZconnectr"r#rrrrr$Z
getsockoptZ
SOL_SOCKETZSO_ERROR�os�strerrorZEINPROGRESSZEALREADYZEISCONN�NET_ERRSZEACCESZEPERMr8)r2rrZrealerrrrrr1�s8


zSockWrapper.try_connectcCs|jstd|�d|_dS)Nz%r: done reading
T)r,r)r2rrrr7�szSockWrapper.noreadcCsf|jsbtd|�d|_y|jjt�Wn8tjk
r`tj�dd�\}}|j	d|�YnXdS)Nz%r: done writing
Tr	znowrite: %s)
r-rr+Zshutdown�SHUT_WRr"r#rrr8)r2rrrrrr6�szSockWrapper.nowritecCsdS)NFrrrrr�too_full�szSockWrapper.too_fullcCs�|jr
dS|jjd�yttj|jj�|�Stk
r�tj	�dd�\}}|j
t
jkrrtd|�|j
�dS|jd|�dSYnXdS)NrFr	z%r: uwrite: got EPIPE
z
uwrite: %s)r/r+r9r r:�writerrrrrZEPIPErr6r8)r2r.rrrrr�uwrite�szSockWrapper.uwritecCs
|j|�S)N)r@)r2r.rrrr?�szSockWrapper.writecCst|jr
dS|jrdS|jjd�yttj|jj�d�Stk
rnt	j
�dd�\}}|jd|�td�SXdS)NFir	z	uread: %s�)
r/r,r*r9r r:�readrrrrr8r)r2rrrrr�uread�szSockWrapper.ureadcCs:|jr
dS|j�}|r"|jj|�|td�kr6|j�dS)NrA)r.rCrrr7)r2�rbrrr�fill�szSockWrapper.fillcCsv|jr8|jdr8|j|jd�}|jd|d�|jd<x"|jrZ|jdrZ|jjd�q:W|jrr|jrr|j�dS)Nr)r.r?�popr,r6)r2Zoutwrap�wroterrr�copy_to�szSockWrapper.copy_to)NN)r�
__module__�__qualname__r3r4r5r8r1r7r6�staticmethodr>r@r?rCrErHrrrrr'ms

0

	r'c@s&eZdZddd�Zdd�Zdd�ZdS)	�HandlerNcCsd|_|pg|_|r||_dS)NT)�okr�callback)r2rrNrrrr3s
zHandler.__init__cCsx|jD]}t||�qWdS)N)rr)r2�r�w�xrrrr�
pre_selectszHandler.pre_selectcCs\td|�tj|jggd�\}}}x2|D]*}|jd�}|s*td|�g|_d|_q*WdS)Nz--no callback defined-- %r
riz--closed-- %r
F)r�selectrZrecvrM)r2r%rOr�s�vrrrrNs

zHandler.callback)NN)rrIrJr3rRrNrrrrrL	s
rLc@s$eZdZdd�Zdd�Zdd�ZdS)�ProxycCs,tj||j|j|j|jg�||_||_dS)N)rLr3r*r+�wrap1�wrap2)r2rWrXrrrr3"szProxy.__init__cCs�|jjr|jj�|jjr$|jj�|jjr<t||jj�n8|jjr^|jj�stt||jj	�n|jj
stt||jj�|jjr�t||jj�n8|jjr�|jj�s�t||jj	�n|jj
s�t||jj�dS)N)rWr-rXr7r/rr*r.r>r+r,)r2rOrPrQrrrrR(s$



zProxy.pre_selectcCs�|jj�|jj�|jj�|jj�|jj|j�|jj|j�|jjrf|jjrfg|j_|jj�|jjr�|jjr�g|j_|jj�|jjr�|jjr�|jjr�|jjr�d|_	|jj
�|jj
�dS)NF)rWr1rXrErHr.r-r7r,rMr6)r2r%rrrrN>s"






zProxy.callbackN)rrIrJr3rRrNrrrrrV srVc@sdeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dS)�MuxcCs�tj|||g�||_||_d|_|_|_d|_|_|_	d|_
|_i|_d|_
d|_td�|_g|_d|_d|_|jdttd��dS)NrrAFZchicken)rLr3�rfile�wfile�new_channel�got_dns_req�
got_routes�got_udp_openZgot_udp_dataZ
got_udp_close�got_host_req�
got_host_list�channels�chani�wantr�inbuf�outbuf�fullnessr>�send�CMD_PING)r2rZr[rrrr3Ts
zMux.__init__cCsHxBtd�D]6}|jd7_|jtkr,d|_|jj|j�s
|jSq
WdS)Nir)�rangerc�MAX_CHANNELrb�get)r2rrrr�next_channelds
zMux.next_channelcCs$d}x|jD]}|t|�7}qW|S)Nr)rf�len)r2ZtotalZbyterrr�
amount_queuedmszMux.amount_queuedcCs,|jtkr(|js"|jdttd��d|_dS)NrZrttestT)rg�LATENCY_BUFFER_SIZEr>rhrir)r2rrr�check_fullnessss
zMux.check_fullnesscCsltjdtd�td�||t|��|}|jj|�td|tj|t	|��t|�|j
f�|j
t|�7_
dS)Nz!ccHHH�Sz* > channel=%d cmd=%s len=%d (fullness=%d)
)�struct�packrrnrfrr�cmd_to_namerl�hexrg)r2�channel�cmd�data�prrrrh~szMux.sendcCsztd|tj|t|��t|�f�|tkr<|jdt|��n:|tkr\td�d|_d|_	�n|t
krnd|_�n|tkr�|j
r�|j
||�n�|tkr�|jr�|j||�n�|tkr�|jr�|j||�n�|tkr�|jr�|j|�ntd��n�|tk�r|j�r|j|�ntd��nh|tk�r6|j�r,|j|�ntd��n@|jj|�}|�sltd|tj|t|��t|�f�n
|||�dS)	Nz<  channel=%d cmd=%s len=%d
rzreceived PING response
Fz"got CMD_ROUTES without got_routes?z&got CMD_HOST_REQ without got_host_req?z(got CMD_HOST_LIST without got_host_list?z-warning: closed channel %d got cmd=%s len=%d
)rrurlrvrnrirh�CMD_PONGr>rg�CMD_EXITrM�CMD_TCP_CONNECTr\�CMD_DNS_REQr]�CMD_UDP_OPENr_�
CMD_ROUTESr^�	Exception�CMD_HOST_REQr`�
CMD_HOST_LISTrarbr)r2rwrxryrNrrr�
got_packet�sH






 zMux.got_packetcCs�ytj|jj�d�WnHtk
r^tj|jj�tj�}|tjO}tj|jj�tj|�}YnX|j	r�|j	dr�t
tj|jj�|j	d�}td|t
|j	d�f�|r�|j	d|d�|j	d<x$|j	r�|j	dr�g|j	dd�<q�WdS)NFrzmux wrote: %r/%d
r)r:�set_blockingr[rr�fcntl�F_GETFL�
O_NONBLOCK�F_SETFLrfr r?rrn)r2�flagsrGrrr�flush�s
z	Mux.flushcCs�ytj|jj�d�WnHtk
r^tj|jj�tj�}|tjO}tj|jj�tj|�}YnXyt	tj
|jj�t�}Wn4tk
r�t
j�dd�\}}td|��YnX|td�kr�d|_|r�|j|7_dS)NFr	z
other end: %rrA)r:r�rZrrr�r�r�r�r rBrprrrrrrMre)r2r�rBrrrrrrE�s
zMux.fillcCs�|j�x�t|j�|jptkrHtjd|jdt��\}}}}}|t|_|jr�t|j�|jkr�|jt|j�}|j|jd�|_d|_|j|||�q
Pq
WdS)Nz!ccHHHr)rErnrerd�HDR_LENrs�unpackr�)r2�s1�s2rwrxZdatalenryrrr�handle�s 
z
Mux.handlecCs"t||j�|jrt||j�dS)N)rrZrfr[)r2rOrPrQrrrrR�szMux.pre_selectcCsLtj|jg|jggd�\}}}|j|kr0|j�|jrH|j|krH|j�dS)Nr)rSrZr[r�rfr�)r2r%rOrPrrrrrN�s

zMux.callbackN)rrIrJr3rmrorqrhr�r�rEr�rRrNrrrrrYRs	.rYc@sleZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�ZdS)�
MuxWrappercCsBtj||j|j�||_||_|j|jj|<g|_t	d|�dS)Nznew channel: %d
)
r'r3rZr[�muxrwr�rbrr)r2r�rwrrrr3�szMuxWrapper.__init__cCs|j�tj|�dS)N)r6r'r4)r2rrrr4szMuxWrapper.__del__cCsd|j|jfS)NzSW%r:Mux#%d)r0rw)r2rrrr5szMuxWrapper.__repr__cCs(|js$|jj|jttd��|j�dS)NrA)r,r�rhrw�CMD_TCP_STOP_SENDINGr�	setnoread)r2rrrr7szMuxWrapper.noreadcCs$|js td|�d|_|j�dS)Nz%r: done reading
T)r,r�maybe_close)r2rrrr�szMuxWrapper.setnoreadcCs(|js$|jj|jttd��|j�dS)NrA)r-r�rhrw�CMD_TCP_EOFr�
setnowrite)r2rrrr6szMuxWrapper.nowritecCs$|js td|�d|_|j�dS)Nz%r: done writing
T)r-rr�)r2rrrr�szMuxWrapper.setnowritecCs*|jr&|jr&td|�d|jj|j<dS)Nz%r: closing connection
)r,r-rr�rbrw)r2rrrr�!szMuxWrapper.maybe_closecCs|jjS)N)r�r>)r2rrrr>(szMuxWrapper.too_fullcCs>|jjrdSt|�dkr$|dd�}|jj|jt|�t|�S)Nri)r�r>rnrhrw�CMD_TCP_DATA)r2r.rrrr@+szMuxWrapper.uwritecCs|jrtd�SdSdS)NrA)r,r)r2rrrrC3szMuxWrapper.ureadcCsR|tkr|j�n<|tkr$|j�n*|tkr:|jj|�ntd|t|�f��dS)Nzunknown command %d (%d bytes))	r�r�r�r�r�r.rr�rn)r2rxryrrrr�9s

zMuxWrapper.got_packetN)rrIrJr3r4r5r7r�r6r�r�r>r@rCr�rrrrr��sr�cCsHtd||f�tj|�}|jtjtjd�t||||fd||fd�S)NzConnecting to %s:%d
�?z%s:%d)r/r0)rr"Z
setsockoptZSOL_IPZIP_TTLr')ZfamilyZipZportZoutsockrrr�connect_dstGs
r�c
Cs$g}g}g}dd�|D�}x|D]}|j|�q Wx|D]}|j|||�q8Wtdt|�t|�t|�t|�|j|jf�tj|||�\}}}tdt|�t|�t|�t|�f�|||}i}	x6|D].}x(|jD]}||kr�|j	|�d|	|<q�Wq�Wx$|D]}||	k�rt
d|���qWdS)NcSsg|]}|js|�qSr)rM)�.0rTrrr�
<listcomp>Tszrunonce.<locals>.<listcomp>z,Waiting: %d r=%r w=%r x=%r (fullness=%d/%d)
z  Ready: %d r=%r w=%r x=%r
rz%socket %r was not used by any handler)�removerRrrnrrgr>rSrrNr)
Zhandlersr�rOrPrQZ	to_remove�hrTZreadyZdidrrr�runoncePs0

 



r�)9rrsr"rrSr:r�Zsshuttle.helpersrrrrrrrkrpZSHUT_RDr=Z	SHUT_RDWRr�r|rir{r}r�r�r�r�r�r�r~ZCMD_DNS_RESPONSErZCMD_UDP_DATAZ
CMD_UDP_CLOSEruZECONNREFUSEDZ	ETIMEDOUTZEHOSTUNREACHZENETUNREACHZ	EHOSTDOWNZENETDOWNZECONNABORTEDZ
ECONNRESETr<rrr r&r(r'rLrVrYr�r�r�rrrr�<module>s| 2)M