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/methods/__pycache__/tproxy.cpython-36.pyc
3

7��]V*�@s&ddlZddlmZddlmZddlmZmZmZddl	m
Z
ddlmZmZm
Z
dZy ddlZeejd�eZdZWnRek
r�y ddlZeejd�eZd	ZWnek
r�ddlZYnXYnXd
ZdZeZdZd
ZeZedkr�dd�Zned	k�r
dd�Zndd�ZGdd�de
�ZdS)�N)�
subnet_weight)�family_to_string)�ipt�ipt_ttl�ipt_chain_exists)�
BaseMethod)�debug1�debug3�Fatal�recvmsg�python�
socket_ext���)�JcCs6td�|jdtjd��\}}}}d}d}�x�|D]�\}}	}
|tjkr�|	tkr�tjd|
dd��\}}tj|�}|tj	kr�d}d}
nt
d|��tj||
|||
��}||f}Pq2|tko�|	t
kr2tjd|
dd��\}}tj|�}|tjkr�d}d	}
nt
d|��tj||
|||
��}||f}Pq2W|||fS)
Nz!Accept UDP python using recvmsg.
i�z=HHr�zUnsupported socket type '%s'��)r	r�socket�
CMSG_SPACE�SOL_IP�IP_ORIGDSTADDR�struct�unpack�htons�AF_INETr
�	inet_ntop�SOL_IPV6�IPV6_ORIGDSTADDR�AF_INET6)�listener�bufsize�dataZancdata�_�srcip�dstip�family�
cmsg_level�	cmsg_type�	cmsg_data�port�start�length�ip�r0�/usr/lib/python3.6/tproxy.py�recv_udp"s6



r2c
CsJtd�|j|ftjd��\}}}}d}d}�x|D�]}|jtjkr�|jtkr�tj	d|j
dd��\}}	tj|	�}	|tjkr�d}
d}nt
d|��tj||j
|
|
|��}||	f}Pq4|jtko�|jtkr4tj	d|j
dd��\}}	tj|	�}	|tjk�rd}
d}nt
d|��tj||j
|
|
|��}||	f}Pq4W|||dfS)	Nz%Accept UDP using socket_ext recvmsg.
rz=HHrrzUnsupported socket type '%s'rr)r	rrrr)rr*rrrr+rrr
rrr r!)
r"r#r&r$Zadatar%r'r(�ar,r-r.r/r0r0r1r2As:


cCs td�|j|�\}}|d|fS)NzAccept UDP using recvfrom.
)r	Zrecvfrom)r"r#r$r&r0r0r1r2bscsTeZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
�ZS)�Methodcs:tt|�j�}d|_tdkr*d|_d|_nd|_d|_|S)NTF)�superr4�get_supported_featuresZipv6r�udpZdns)�self�result)�	__class__r0r1r6jszMethod.get_supported_featurescCs|j�S)N)Zgetsockname)r8�sockr0r0r1�
get_tcp_dstipuszMethod.get_tcp_dstipcCs0t||�\}}}|s&td|f�dS|||fS)NzB-- ignored UDP from %r: couldn't determine destination IP address
)r2r)r8�udp_listenerr#r&r'r$r0r0r1r2xs
zMethod.recv_udpcCsj|std|f�dStj|jtj�}|jtjtjd�|jtjtd�|j	|�|j
||�|j�dS)Nz;-- ignored UDP to %r: couldn't determine source IP address
�)rrr(Z
SOCK_DGRAM�
setsockoptZ
SOL_SOCKETZSO_REUSEADDRr�IP_TRANSPARENTZbindZsendto�close)r8r;r&r'r$Zsenderr0r0r1�send_udp�s

zMethod.send_udpcCs|jtjtd�dS)Nr>)r?rrr@)r8Ztcp_listenerr0r0r1�setup_tcp_listener�szMethod.setup_tcp_listenercCsJ|jtjtd�|jdk	r,|jjtjtd�|jdk	rF|jjttd�dS)Nr>)	r?rrr@Zv4�IP_RECVORIGDSTADDRZv6r�IPV6_RECVORIGDSTADDR)r8r=r0r0r1�setup_udp_listener�s

zMethod.setup_udp_listenercsH�tjtjgkr tdt����d���fdd�}��fdd�}	dd�}
d	|}d
|}d|}
|j|�||�|d|�|d
|�|d|
�|d
|
�|d|�|d
|�|dddd|�|dddd|�|d|
dddd�|d|
dd�|d|ddd|
dddd�
|�r&|d|ddd|
dddd�
xt�fdd�|D�D]^\}}|d|dddddd|ddddd d!�|d|dd"d#d$dd|ddddd d!d%t|���q:W�x�t|td&d'�D�]�\}}}}}}d*}|
|||�}|�r |d|dd(dd)||fddf|��|d|dd(dd)||fddf|��n\|d|dddddd)||fddf
|��|d|dd"d#d$dd)||fddf
|d%t|�f��|�r�d+}|
|||�}|�r�|d|dd(dd)||fddf|��|d|dd(dd)||fddf|��n\|d|dddddd)||fddf
|��|d|dd"d#d$dd)||fddf
|d%t|�f���q�WdS),Nz0Address family "%s" unsupported by tproxy method�manglecst��f|��S)N)r)�args)r(�tabler0r1�_ipt�sz#Method.setup_firewall.<locals>._iptcst��f|��S)N)r)rH)r(rIr0r1�_ipt_ttl�sz'Method.setup_firewall.<locals>._ipt_ttlcSs|r|dd||ffS|S)Nz--dportz%d:%dr0)�proto�fport�lportr0r0r1�_ipt_proto_ports�sz/Method.setup_firewall.<locals>._ipt_proto_portsz
sshuttle-m-%sz
sshuttle-t-%sz
sshuttle-d-%sz-Nz-Fz-I�OUTPUT�1z-j�
PREROUTINGz-A�MARKz
--set-markZACCEPTz-mr�tcp�-pr7csg|]}|d�kr|�qS)rr0)�.0�i)r(r0r1�
<listcomp>�sz)Method.setup_firewall.<locals>.<listcomp>z--destz%s/32z--dportZ53ZTPROXYz
--tproxy-markz0x1/0x1z	--on-portT)�key�reverseZRETURNz%s/%s)rUrT)rUr7)	rrr!�	Exceptionr�restore_firewall�str�sortedr)r8r,ZdnsportZnslistr(Zsubnetsr7�userrJrKrO�
mark_chain�tproxy_chain�divert_chainr%r/ZswidthZsexcludeZsnetrMrNZ	tcp_portsZ	udp_portsr0)r(rIr1�setup_firewall�s�






 







zMethod.setup_firewallc
s��tjtjgkr tdt����d���fdd�}��fdd�}d|}d|}d	|}	t��|�r�|d
dd|�|d
|�|d|�t��|�r�|d
dd|�|d
|�|d|�t��|	�r�|d
|	�|d|	�dS)Nz0Address family "%s" unsupported by tproxy methodrGcst��f|��S)N)r)rH)r(rIr0r1rJsz%Method.restore_firewall.<locals>._iptcst��f|��S)N)r)rH)r(rIr0r1rK
sz)Method.restore_firewall.<locals>._ipt_ttlz
sshuttle-m-%sz
sshuttle-t-%sz
sshuttle-d-%sz-DrPz-jz-Fz-XrR)rrr!r[rr)
r8r,r(r7r_rJrKr`rarbr0)r(rIr1r\�s*




zMethod.restore_firewall)�__name__�
__module__�__qualname__r6r<r2rBrCrFrcr\�
__classcell__r0r0)r:r1r4hs	
fr4)rZsshuttle.firewallrZsshuttle.helpersrZsshuttle.linuxrrrZsshuttle.methodsrrr	r
rrZpythonsocket�getattr�AttributeErrorr
�ImportErrorr@rrDrr rEr2r4r0r0r0r1�<module>s>


!