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: //lib/python3.6/site-packages/sshuttle/__pycache__/client.cpython-36.opt-1.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__cCs0|jr|jj|||�|jr,|jj|||�dS)N)r>�
setsockoptr?)rA�levelZoptname�valuerrrrC{szMultiListener.setsockoptcsJg}|jr|j|j�|jr(|j|j��jt|����fdd���dS)Ncs�|����S)Nr)�sock)�callback�handlers�method�muxrr�<lambda>�sz+MultiListener.add_handler.<locals>.<lambda>)r>�appendr?r)rArHrGrIrJZsocksr)rGrHrIrJr�add_handler�szMultiListener.add_handlercCsp|jr|jj|�|jrly|jj|�WnBtjk
rj}z$|jtjkrV|jrVd|_n|�WYdd}~XnXdS)N)r>�listenr?�socket�errorr�
EADDRINUSE)rAZbacklogr'rrrrN�szMultiListener.listencCsnd|_|dk	r2tjtj|j|j�|_|jj|�nd|_|dk	rdtjtj|j|j�|_|jj|�nd|_dS)NT)	r@rO�AF_INET6r<r=r>�bind�AF_INETr?)rAZ
address_v6Z
address_v4rrrrS�szMultiListener.bindcCsh|jr2|jj�}td||f�td||jf�|jrd|jj�}td||f�td||jf�dS)Nz%s listening on %r.
z%s listening with %r.
)r>�getsocknamerr	r?)rAZwhatZlisteniprrr�print_listening�s

zMultiListener.print_listeningN)�__name__�
__module__�__qualname__rOZSOCK_STREAMrBrCrMrNrSrVrrrrr;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���ra)"�	auto_netsrr�dirname�__file__r�
executable�argv�helpers�verbose�ssyslog�_p�platform�
startswithrOZ
socketpair�getuid�stderrr0�ssubprocess�Popen�pr%r2�makefile�pfilerr�readline�checkr�decoderIZset_firewall)rA�method_name�sudo_pythonpathZpython_pathZargvbaseZelev_prefixZ
argv_tries�s1r\r'rf�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}r~rr�r�r�r�rrrr\�szFirewallClient.setupcCs$|jj�}|r td|j|f��dS)Nz%r returned %d)rq�pollrrf)rA�rvrrrrus
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
r`s%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)rsr0r{rb�encoder|r}r~rr�r�r�r��
isinstance�str�bytes�flushrtrurrf)	rA�family�ip�widthZfportZlportr�r�rzrrr�starts@




zFirewallClient.startcCs"|jjd||f�|jj�dS)NsHOST %s,%s
)rsr0r�)rAZhostnamer�rrr�	sethostip-szFirewallClient.sethostipcCs.|jj�|jj�}|r*td|j|f��dS)Nzcleanup: %r returned %d)rsr2rq�waitrrf)rAr�rrr�done3s

zFirewallClient.doneN)	rWrXrYrBr\rur�r�r�rrrrrZ�s7
(rZcCs�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
rL�channels�len�
udp_by_src�send�ssnetZ
CMD_UDP_CLOSE)�nowrJ�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,%dr`)ZacceptrOrP�argsrZEMFILEZENFILErrr2�	_extra_fdrr6�O_RDONLYZ
get_tcp_dstiprUrr��next_channelrr�r�ZCMD_TCP_CONNECTr�rrLrrr��time)
�listenerrIrJrHrF�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��datarIrFr��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�rIr�rrrK�szonaccept_udp.<locals>.<lambda>s%d�s%s,%d,rr`r)
r��recv_udprr�r�r�r�r�ZCMD_UDP_OPENr�r�ZCMD_UDP_DATAr�)
r�rIrJrHr��tr�r��_Zhdrr)r�r�rIr�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�rIrFr�r�rJrrr�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�rJ)r�)r�r�)r�r�r�rIrJr�rrrK�szondns.<locals>.<lambda>)r�r�rr�r�r�r�r�ZCMD_DNS_REQr�r�)r�rIrJrHr�r�r�r)r�r�r�rIrJr�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_nameserverrb)rnZoptionsrz#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�r`zIgnored auto net %d/%s/%d
zAdding auto net %d/%s/%d
r)
r#r�r"rvrOrRr>r	rTr?rbrL�
got_routes)Zroutestrrzr�r�r�)rb�fwrJ�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�)Zhostlistrz�namer�)r�rr�
onhostlists
z_main.<locals>.onhostlistzseed_hosts: %r
�
).rrkZpython_versionrIrgrhZ	logprefix�sshZconnectrirj�stdin�dictrOrPr�rZEPIPErrrrrLZrecvr�Z
ECONNRESETr�rrr]r�r9rr�Z
got_host_listrMr�r�r�r�r�ZCMD_HOST_REQr�r��joinZrunonceZcheck_fullness)r��udp_listenerr��ssh_cmd�
remotename�pythonr��dns_listener�
seed_hostsr�rb�daemonr�rIrHZ
serverprocZ
serversockr'Zexpected�vZ
initstringr�r�r�r)rbr�rJr�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#�|!�sF|�|#j"d$�|#j#d%�|$�rj|$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
�r`}z(|j t j!k�rL|}|j|"�n|�WYdd}~XnX�q�Wtd#�|'j#d(�|!�s�|�nd}(d})d}'|�r�|dk�r�td)��|�r�|(dk�r�td*��|�r�| dk�r�td+��|�r�|)dk�r�td,��|jj$|#�|$�r|jj%|$�|'�r"|jj%|'�|j&||
||| |(|)|j|�	z t'|#|$||||||'|	|
|||�
Sz(|�rpd|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)rOrR)�.0�irrr�
<listcomp>Iszmain.<locals>.<listcomp>cSsg|]}|dtjkr|�qS)r)rOrR)r�r�rrrr�JscSsg|]}|dtjkr|�qS)r)rOrT)r�r�rrrr�KscSsg|]}|dtjkr|�qS)r)rOrT)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�rrara)/rr(rrrZr
�tuplerIZget_supported_featuresrZipv6rZpw_uid�KeyErrorr�r�Zipv4r��dnsr�Zassert_features�anyrLrOrTrR�ranger	r;Z
SOCK_DGRAMrSrPrrQrNrVZsetup_tcp_listenerZsetup_udp_listenerr\r�rq�
returncoder�r�r��stopr:)*r�r�r�r�r�r�r�r}rwr�r�rbr{r|r�r�r&r�rxr'r�ZsubnetsZ
subnets_v6Z	nslist_v6Z
subnets_v4Z	nslist_v4ZavailZrequiredZportsZ
used_portsZlast_er~rZboundZportr�r�Zlv6Zlv4r�r�r�r)r�r�r�main*s`






 
















r�)?r�rer4r��
subprocessrorrrkZsshuttle.helpersrgZsshuttle.ssnetr�Zsshuttle.sshr�Zsshuttle.ssyslogriZsshuttle.sdnotifyr�rrrrrrrr	r
rrr
Zsshuttle.methodsrr�pwdr�ImportErrorrOZpythonsocket�getattr�AttributeErrorZ
socket_extrr6r�r�rrr(r9r:r;rZr�r�r�r�r�r�r�r�r�r�rrrr�<module>sb




$

H%}