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__/client.cpython-36.pyc
3

�L_�d�@s�ddlZddlZddlZddlZddlZddlZddlZddlZddl	j
Z
ddljZddl
jZddljZddljZddlmZmZmZmZmZddl	mZmZmZmZmZmZmZddlm Z m!Z!yddl"m#Z#Wne$k
r�dZ#YnXyddl%Z&e'e&j%d�e&Z%WnRe(k
�rZyddl)Z)e'e)j%d�e)Z%Wne$k
�rTddl%Z%YnXYnXej*ej+ej,�a-dd�Z.da/d	d
�Z0dd�Z1d
d�Z2Gdd�d�Z3Gdd�d�Z4iZ5iZ6dd�Z7dd�Z8dd�Z9dd�Z:dd�Z;dd�Z<dd �Z=d!d"�Z>dS)#�N)�SockWrapper�Handler�Proxy�Mux�
MuxWrapper)�log�debug1�debug2�debug3�Fatal�islocal�resolvconf_nameservers)�
get_method�Features)�getpwnamZrecvmsgcCstd|�tjd�dS)Nzexiting on signal %d
�)r�sys�exit)Zsignum�frame�r�/usr/lib/python3.6/client.py�
got_signal)src Cstjj|�aytt�jd�}WnBtk
r`}z&|jtjkr@dSt	dt|f��WYdd}~XnX|sttj
t�dSt|j�p�d�}|dkr�tj
t�dSytj
|d�WnLtk
r�}z0|jtjkr�tj
t�dS|jtjkr�n�WYdd}~XnXt	dt|f��dS)Nizcan't read %s: %srz(%s: sshuttle is already running (pid=%d))�os�path�abspath�_pidname�open�read�IOError�errno�ENOENTr�unlink�int�strip�kill�OSErrorZESRCHZEPERM)�pidfileZoldpid�errr�check_daemon1s2"


r(cCs�tj�rtjd�tj�tj�r,tjd�tjttjtjBtjBd�}ztj	|dtj
��Wdtj|�Xtjd�t
j
t
jt�ttjd�}tj|j�d�tj|j�d�|j�dS)Nri�s%d
�/zr+r)r�fork�_exit�setsidrr�O_WRONLY�O_CREAT�O_EXCL�write�getpid�close�chdir�signal�SIGTERMr�devnull�dup2�fileno)ZoutfdZsirrr�	daemonizePs


r9cCsFytjt�Wn2tk
r@}z|jtjkr.n�WYdd}~XnXdS)N)rr!rr%rr )r'rrr�daemon_cleanuphsr:c@sDeZdZejdfdd�Zdd�Zdd�Zdd	�Zd
d�Z	dd
�Z
dS)�
MultiListenerrcCs"||_||_d|_d|_d|_dS)NF)�type�proto�v6�v4�bind_called)�selfZkindr=rrr�__init__ts
zMultiListener.__init__cCs:|js
t�|jr |jj|||�|jr6|jj|||�dS)N)r@�AssertionErrorr>�
setsockoptr?)rA�levelZoptname�valuerrrrD{s

zMultiListener.setsockoptcsT|js
t�g}|jr |j|j�|jr2|j|j��jt|����fdd���dS)Ncs�|����S)Nr)�sock)�callback�handlers�method�muxrr�<lambda>�sz+MultiListener.add_handler.<locals>.<lambda>)r@rCr>�appendr?r)rArIrHrJrKZsocksr)rHrIrJrKr�add_handler�s
zMultiListener.add_handlercCsz|js
t�|jr|jj|�|jrvy|jj|�WnBtjk
rt}z$|jtjkr`|jr`d|_n|�WYdd}~XnXdS)N)	r@rCr>�listenr?�socket�errorr�
EADDRINUSE)rAZbacklogr'rrrrO�s
zMultiListener.listencCsz|jst�d|_|dk	r>tjtj|j|j�|_|jj|�nd|_|dk	rptjtj|j|j�|_	|j	j|�nd|_	dS)NT)
r@rCrP�AF_INET6r<r=r>�bind�AF_INETr?)rAZ
address_v6Z
address_v4rrrrT�szMultiListener.bindcCsr|js
t�|jr<|jj�}td||f�td||jf�|jrn|jj�}td||f�td||jf�dS)Nz%s listening on %r.
z%s listening with %r.
)r@rCr>�getsocknamerr	r?)rAZwhatZlisteniprrr�print_listening�s


zMultiListener.print_listeningN)�__name__�
__module__�__qualname__rPZSOCK_STREAMrBrDrNrOrTrWrrrrr;rsr;c@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�FirewallClientcs�g|_tjjtjjt��}tjtjdgdgtj	p4dd|gdg}t
jrX|dg7}tj�j
d�rndg}n
dd	d
g}|r�|dd|g7}|||g}tj�\}��fd
d�}d}	tj�dkr�|dd�}xX|D]P}
y4|
ddkr�tjjd�tj|
||d�|_d}	PWq�tk
�r Yq�Xq�W|
|_|j��jd�|_|	�r\td|j�t|	��|jj�}|j�|dd�dk�r�td|j|f��|dd�}t|jd��|_ |j j!|�dS)Nrz-vz--methodz
--firewallz--syslogZOpenBSDZdoasZsudoz-pz[local sudo] Password: z/usr/bin/envz
PYTHONPATH=%scs�j�dS)N)r2r)�s2rr�setup�sz&FirewallClient.__init__.<locals>.setuprZsuz[local su] )�stdoutZ
preexec_fnZrwbzSpawning firewall manager: %r
�sREADYz%r expected READY, got %r��ASCII���rb)"�	auto_netsrr�dirname�__file__r�
executable�argv�helpers�verbose�ssyslog�_p�platform�
startswithrPZ
socketpair�getuid�stderrr0�ssubprocess�Popen�pr%r2�makefile�pfilerr�readline�checkr�decoderJZset_firewall)rA�method_name�sudo_pythonpathZpython_pathZargvbaseZelev_prefixZ
argv_tries�s1r]r'rg�liner)r\rrB�sP&




zFirewallClient.__init__c

Cs:||_||_||_||_||_||_||_||_|	|_dS)N)	�subnets_include�subnets_exclude�nslist�redirectport_v6�redirectport_v4�
dnsport_v6�
dnsport_v4�udp�user)
rAr|r}r~rr�r�r�r�r�rrrr]�szFirewallClient.setupcCs$|jj�}|r td|j|f��dS)Nz%r returned %d)rr�pollrrg)rA�rvrrrrvs
zFirewallClient.checkc	Cst|jjd�x>|j|jD].\}}}}}|jjd|||jd�||f�qWx8|jD].\}}}}}|jjd|||jd�||f�qTW|jjd�x,|jD]"\}}|jjd||jd�f�q�W|jjd|j|j|j	|j
f�d}|jr�d	}|jdkr�d
}n&t
|jt��rt|jd�}n
d|j}|jjd
||f�|jj�|jj�}|j�|dk�rptd|j|f��dS)NsROUTES
s%d,%d,0,%s,%d,%d
ras%d,%d,1,%s,%d,%d
sNSLIST
s%d,%s
sPORTS %d,%d,%d,%d
rr�-zutf-8s%ds	GO %d %s
sSTARTED
z%r expected STARTED, got %r)rtr0r|rc�encoder}r~rr�r�r�r�r��
isinstance�str�bytes�flushrurvrrg)	rA�family�ip�widthZfportZlportr�r�r{rrr�starts@




zFirewallClient.startcCsFtjd|�st�tjd|�s$t�|jjd||f�|jj�dS)Ns[^-\w\.]s[^0-9.]sHOST %s,%s
)�re�searchrCrtr0r�)rAZhostnamer�rrr�	sethostip-szFirewallClient.sethostipcCs.|jj�|jj�}|r*td|j|f��dS)Nzcleanup: %r returned %d)rtr2rr�waitrrg)rAr�rrr�done3s

zFirewallClient.doneN)	rXrYrZrBr]rvr�r�r�rrrrr[�s7
(r[cCs�g}x:tj�D].\}}||krtd|�|j|�|j|=qWx|D]
}t|=qFWtdtt��g}xRtj�D]F\}\}}||krrtd||f�|j|tj	d�|j|�|j|=qrWx|D]
}t|=q�Wtdtt��dS)Nzexpiring dnsreqs channel=%d
zRemaining DNS requests: %d
z(expiring UDP channel channel=%d peer=%r
�zRemaining UDP channels: %d
)
�dnsreqs�itemsr
rM�channels�len�
udp_by_src�send�ssnetZ
CMD_UDP_CLOSE)�nowrK�remove�chanZtimeoutZpeerrrr�expire_connections>s&





r�c
Csty|j�\}}Wn~tjk
r�}z`|jdtjtjgkr|td�tj	t
�z|j�\}}|j	�Wdtjtjtj
�a
XdS�WYdd}~XnX|j|�}td|d|d|d|df�|d|j�dkr�t|d|j�r�td�|j	�dS|j�}|�std�|j	�dS|j|tjd|j|djd�|df�t||�}	|jtt||�|	��ttj�|�dS)	Nrz3Rejected incoming connection: too many open files!
zAccept TCP: %s:%r -> %s:%r.
rz-- ignored: that's my address!
z8warning: too many open channels.  Discarded connection.
s%d,%s,%dra)ZacceptrPrQ�argsrZEMFILEZENFILErrr2�	_extra_fdrr6�O_RDONLYZ
get_tcp_dstiprVrr��next_channelrr�r�ZCMD_TCP_CONNECTr�rrMrrr��time)
�listenerrJrKrIrG�srcipr'�dstipr�Zoutwraprrr�onaccept_tcpUs:

$
r�cCsB|jdd�\}}}|t|�f}td||f�|j||||�dS)N�,�zdoing send from %r to %r
)�splitr"r
�send_udp)r��datarJrGr��srcZsrcportr�rrr�udp_donezsr�c
s�tj�}�j�d�}|dkr dS|\�}}td�|f��tkrPt�\�}n6|j������fdd�|j�<|j�tjd�j	��|dft�<d|dj
d	�|d
f}	|j�tj|	|�t||�dS)NizAccept UDP: %r -> %r.
cst�|���d�S)N)r�)r�)�cmdr�)r�r�rJr�rrrL�szonaccept_udp.<locals>.<lambda>s%d�s%s,%d,rrar)
r��recv_udprr�r�r�r�r�ZCMD_UDP_OPENr�r�ZCMD_UDP_DATAr�)
r�rJrKrIr��tr�r��_Zhdrr)r�r�rJr�r�onaccept_udp�s
r�cCs4td|||f�|j|=t|=|j||||�dS)Nz#dns_done: channel=%d src=%r dst=%r
)r
r�r�r�)r�r�rJrGr�r�rKrrr�dns_done�sr�cs�tj�}�j�d�}|dkr dS|\��}td��t|�f��j��|dt�<�j�tj|�������fdd��j	�<t
|��dS)Niz$DNS request from %r to %r: %d bytes
r�c	st�|�����d�S)N)r�r�rK)r�)r�r�)r�r�r�rJrKr�rrrL�szondns.<locals>.<lambda>)r�r�rr�r�r�r�r�ZCMD_DNS_REQr�r�)r�rJrKrIr�r�r�r)r�r�r�rJrKr�r�ondns�s
r�c
"s�tdtj���j}
g}tjdkr,dt_ndt_td�y2tj|||t	j
oRt	j
jt||	|�d�d�\}}Wn@t
jk
r�}z"|jdtjkr�td	��n�WYdd}~XnXt|jd
�|jd���|j��d}yVd
}x|r�|dkr�|jd�}q�Wd
}x|�r|dk�r|jd�}q�W|jt|��}WnDt
jk
�rl}z$|jdtjk�rZtd��n�WYdd}~XnX|j�}|�r�td|��||k�r�td||f��td�tjj�|�r�t�tdt������fdd�}|�_ �fdd���fdd�}|�_!�j"|t#|
��|�r*|j"|t$|
��|�r@|j"|t%|
��|dk	�rrtd|��j&dt'j(t)j*dj+|���x:|j�}|�r�td|��t'j,|��|�rt�j-��qtWdS)Nz'Starting client with Python version %s
rzc : zclient: zconnecting to server...
)�latency_control�
auto_hosts�
to_nameserverrc)roZoptionsrz#failed to establish ssh session (1)�rb�wbsSSHUTTLE0001�x�z#failed to establish ssh session (2)zserver died with error code %dz&expected server init string %r; got %rzConnected.
zdaemonizing (%s).
cs��r�x�|j�jd�D]�}|sq|jdd�\}}}t|�}t|�}|jd�}|tjkrp�jdkrptd|||f�|tjkr��j	dkr�td|||f�qtd|||f��j
j|||ddf�qWd�_��dS)N�
r�r�razIgnored auto net %d/%s/%d
zAdding auto net %d/%s/%d
r)
r#r�r"rwrPrSr>r	rUr?rcrM�
got_routes)Zroutestrr{r�r�r�)rc�fwrK�serverready�tcp_listenerrr�onroutes�s 
	z_main.<locals>.onroutescs"�j�tjtj�tjd��dS)NZ	Connected)r��sdnotifyr�ZreadyZstatusr)r�rrr�sz_main.<locals>.serverreadycsFtd|�x4|j�j�D]$}|r|jdd�\}}�j||�qWdS)Nzgot host list: %r
r�r)r	r#r�r�)Zhostlistr{�namer�)r�rr�
onhostlists
z_main.<locals>.onhostlistzseed_hosts: %r
�
).rrlZpython_versionrJrhriZ	logprefix�sshZconnectrjrk�stdin�dictrPrQr�rZEPIPErrrsrMZrecvr�Z
ECONNRESETr�rrr^r�r9rr�Z
got_host_listrNr�r�r�r�r�ZCMD_HOST_REQr�r��joinZrunonceZcheck_fullness)r��udp_listenerr��ssh_cmd�
remotename�pythonr��dns_listener�
seed_hostsr�rc�daemonr�rJrIZ
serverprocZ
serversockr'Zexpected�vZ
initstringr�r�r�r)rcr�rKr�r�r�_main�s�






r�c**s�|std��|rJyt|�Wn,tk
rH}ztd|�dSd}~XnXtd�t||�}|r�|t�7}|dk	r�dt|dd��}nd}||
}dd�|D�}d	d�|D�}d
d�|D�}dd�|D�}|jj�}t	�}�dk�r�|j
r�d-�nd�|dk	�rDtdk�rtd��yt|�j}Wn"t
k
�rBtd|��YnX|jjdk�r�t|�dk�pf�dk	|_
t|�dk�p~�dk	|_nd|_
d|_|j|_t|�dk|_|dk�r�dnd|_|j
�s�g}|}|jj|�|j
�r�dk�r�td��td|j
�td|j�td|j�td|j��dk�r6d.�|j�rrt�fdd�|D���rr|
jtj�ddddf�|j
�r�t�fdd�|D���r�|
jtj�ddddf���rֈd�rֈ�rֈd�r�dg}ntdd d/�}g}d}d}d} d}!td!��x2|D�](}"td"|"�t�}#|j�r2ttj�}$nd}$��rT�d�rT�}%|%d}n ��rl�d|"f}%|"}nd}%d}��r��d�r��}&|&d} n ��r��d|"f}&|"} nd}&d} y2|#j|%|&�|$�r�|$j|%|&�d}!|j|"�PWnHtjk
�r,}z(|j t j!k�r|}|j|"�n|�WYdd}~XnX�qWtd#�|!�sP|�sLt"�|�|#j#d$�|#j$d%�|$�rt|$j$d&�d}!|j�r�td'�tdd d0�}x�|D]�}"td"|"�|"|k�r��q�ttj�}'��rڈd|"f}%|"}(nd}%d}(��r��d|"f}&|"})nd}&d})y |'j|%|&�d}!|j|"�PWnHtjk
�rj}z(|j t j!k�rV|}|j|"�n|�WYdd}~XnX�q�Wtd#�|'j$d(�|!�s�|�s�t"�|�nd}(d})d}'|�r�|j
�s�t"�|dk�r�td)��|�r�|j�s�t"�|j
�s�t"�|(dk�r�td*��|�r| dk�rtd+��|�r*|)dk�r*td,��|jj%|#�|$�rH|jj&|$�|'�rZ|jj&|'�|j'||
||| |(|)|j|�	z t(|#|$||||||'|	|
|||�
Sz(|�r�d|j)_*|j+�t,j-t,j.��Wd|�r�t/�XXdS)1NzYou must specify -r/--remote.z%s
r_zStarting sshuttle proxy.
z%s@%srcSsg|]}|dtjkr|�qS)r)rPrS)�.0�irrr�
<listcomp>Iszmain.<locals>.<listcomp>cSsg|]}|dtjkr|�qS)r)rPrS)r�r�rrrr�JscSsg|]}|dtjkr|�qS)r)rPrU)r�r�rrrr�KscSsg|]}|dtjkr|�qS)r)rPrU)r�r�rrrr�Ls�auto�::1rz-Routing by user not available on this system.zUser %s does not exist.ZnatFTz IPv6 required but not listening.zIPv6 enabled: %r
zUDP enabled: %r
zDNS enabled: %r
zUser enabled: %r
�	127.0.0.1c3s|]}�d|dkVqdS)rrNr)r��sex)�listenip_v4rr�	<genexpr>�szmain.<locals>.<genexpr>� c3s|]}�d|dkVqdS)rrNr)r�r�)�listenip_v6rrr��s�i0i(#zBinding redirector:z %dr��
zTCP redirectorzUDP redirectorzBinding DNS:ZDNSz&IPv6 subnets defined but not listeningz)IPv6 ns servers defined but not listeningz&IPv4 subnets defined but not listeningz)IPv4 ns servers defined but not listening)r�r)r�rrbrb)0rr(rrr[r
�tuplerJZget_supported_featuresrZipv6rZpw_uid�KeyErrorr�r�Zipv4r��dnsr�Zassert_features�anyrMrPrUrS�ranger	r;Z
SOCK_DGRAMrTrQrrRrCrOrWZsetup_tcp_listenerZsetup_udp_listenerr]r�rr�
returncoder�r�r��stopr:)*r�r�r�r�r�r�r�r~rxr�r�rcr|r}r�r�r&r�ryr'r�ZsubnetsZ
subnets_v6Z	nslist_v6Z
subnets_v4Z	nslist_v4ZavailZrequiredZportsZ
used_portsZlast_err�ZboundZportr�r�Zlv6Zlv4r�r�r�r)r�r�r�main*sj






 


















r�)?rr�r4r��
subprocessrprrrlZsshuttle.helpersrhZsshuttle.ssnetr�Zsshuttle.sshr�Zsshuttle.ssyslogrjZsshuttle.sdnotifyr�rrrrrrrr	r
rrr
Zsshuttle.methodsrr�pwdr�ImportErrorrPZpythonsocket�getattr�AttributeErrorZ
socket_extrr6r�r�rrr(r9r:r;r[r�r�r�r�r�r�r�r�r�r�rrrr�<module>sb




$

H%}