o
    �õ±jû  ã                   @   s   d dl Z d dlZd dlZd dlmZ d dlmZmZ d dlZdd„ Z	G dd„ dej
ƒZejejejejejejejejejejejejejejdœZejd	ejd	ejd	ejd	ejd	ejd
ejdejdejdejdejdejdiZdd„ Zde	egfdegfdegfdegfdegfdegfdegfdegfdegfdegfdegfdegfdœZ G dd„ dƒZ!e"dkrÌdZ#dZ$dZ%e! &e#e$e%gdd¡Z'e'D ]Z(e)e(ƒ qÅdS dS ) é    N)ÚList)ÚurlparseÚparse_qsc                 C   s   t | ƒ ¡ S ©N)ÚstrÚupper©Úx© r
   ú�/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/asysocks/unicomm/common/proxy.pyÚstru   ó   r   c                   @   s\   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdZdZdZdZdS )ÚUniProxyProtoé   é   é   é   é   é   é   é   é	   iæ  iç  é   é   é
   é   é   é   é   é   é   N)Ú__name__Ú
__module__Ú__qualname__ÚCLIENT_SOCKS4ÚCLIENT_SSL_SOCKS4ÚCLIENT_SOCKS5_TCPÚCLIENT_SOCKS5_UDPÚCLIENT_SSL_SOCKS5_TCPÚCLIENT_SSL_SOCKS5_UDPÚCLIENT_HTTPÚCLIENT_SSL_HTTPÚCLIENT_WSNETÚCLIENT_CUSTOMÚCLIENT_WSNETTESTÚCLIENT_WSNETDIRECTÚCLIENT_SSL_WSNETDIRECTÚCLIENT_WSNETWSÚCLIENT_SSL_WSNETWSÚSERVER_WSNETÚSERVER_SOCKS5_TCPÚSERVER_SOCKS5_UDPÚSERVER_SSL_SOCKS5_TCPÚSERVER_SSL_SOCKS5_UDPr
   r
   r
   r   r      s*    r   )ÚSOCKS4ÚSOCKS4SÚSOCKS5ÚSOCKS5UÚSOCKS5SÚHTTPÚHTTPSÚWSNETÚ	WSNETTESTÚWSNETWSÚWSNETWSSÚWSNETDIRECTÚWSNETDIRECTSSLÚCUSTOMi8  i�  iû   iü!  i="  c                 C   s   t |  ¡  S r   )Úproxyshort_to_typer   r   r
   r
   r   Úurlparam_protoB   r   rG   ÚprotocolÚ	server_ipÚserver_portÚis_bindÚtimeoutÚendpoint_timeoutÚbuffer_sizeÚusernameÚpasswordÚuseridÚagentid)ÚtypeÚhostÚserverÚportÚbindrL   ÚetimeoutÚbsizeÚuserÚpassrQ   rR   c                   @   sf   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zddd„Ze	ddd„ƒZ
e	ddd„ƒZe	dd„ ƒZdS )ÚUniProxyTargetc                 C   sn   d | _ d | _d | _d | _d| _d | _d | _d | _d | _d| _	t
 d¡ ¡  d¡| _d | _d| _d| _d| _d S )Nr   Fr   Úascii)rI   rJ   rR   rH   rL   Ússl_ctxÚ
credentialÚendpoint_ipÚendpoint_portÚwsnet_reuseÚosÚurandomÚhexÚencoderQ   ÚcustomproxyfactoryÚ	only_openÚ	only_authÚ	only_bind©Úselfr
   r
   r   Ú__init__V   s   
zUniProxyTarget.__init__c                 C   ó   d| j | jf S ©Nz%s:%s)rI   rJ   rk   r
   r
   r   Ú	get_snameh   ó   zUniProxyTarget.get_snamec                 C   rn   ro   )r`   ra   rk   r
   r
   r   Ú	get_tnamek   rq   zUniProxyTarget.get_tnamec                 C   s
   t | jƒS r   )r   Ú__dict__rk   r
   r
   r   Ú__repr__n   s   
zUniProxyTarget.__repr__c                 C   s*   d}| j D ]}|d|| j | f 7 }q|S )Nz==== UniProxyTarget ====
z%s: %s
)rs   )rl   ÚtÚkr
   r
   r   Ú__str__q   s   
zUniProxyTarget.__str__Nc                 C   sÖ   t ƒ }t | j¡|_t | j¡|_t | j¡|_t | j¡|_t | j¡|_t | j¡|_t | j	¡|_	t | j
¡|_
t | j¡|_t | j¡|_t | j¡|_t | j¡| _t | j¡| _t | j¡| _| j|_|S r   )r\   ÚcopyÚdeepcopyrI   rJ   rR   rH   rL   r^   r_   r`   ra   rb   rQ   rh   ri   rj   rg   )rl   ÚmemoÚproxyr
   r
   r   Ú__deepcopy__x   s"   zUniProxyTarget.__deepcopy__c                 C   sÊ  t ƒ }||_t|ƒ|_| d urÓdg}dd i}| D ]7}| d¡rOzt|d ƒ |d |vr;d ||d < | t|d ƒ¡ W q tyN } zW Y d }~qd }~ww qt|ƒt|ƒkr\tdƒ‚| ¡  d}|}	|d d d… D ]g}
t ƒ }|du ryd}|}n
|	j	|_|	j
|_|}	d	|
 }|
dkr�d}| D ]<}| |¡rËd
}|
dkržd}||d … tv rË| | d }t||d …  d D ]}||ƒ}q¶t|t||d …  d |ƒ q�||t|
ƒ< qkg }|D ]}
| |t|
ƒ ¡ q×|S )Nr   Ú0r{   r   z,proxyies are not in sequential order! ERROR!TéÿÿÿÿFzproxy%sr   r   )r\   r`   Úintra   Ú
startswithÚappendÚ	ExceptionÚlenÚsortrI   rJ   Ú"uniproxytarget_urlparams_param2varÚsetattrr   )ÚqueryÚhostnamera   Ú	lastproxyÚproxycountsÚ	proxynumsrv   ÚeÚ	firstiterÚ	prevproxyÚiÚpdataÚstartstringÚstartposÚdataÚcÚtargetsr
   r
   r   Úfrom_url_params‹   sn   

€€þú

ý€zUniProxyTarget.from_url_paramsc                 C   sN   t | ƒ}|j}|jrt|jƒ}nt|ƒ}d}|jdur t|jƒ}t |||¡S )z

		N)r   rˆ   rV   r   r‡   r   r\   r–   )Úurl_strra   Úurlr`   r‡   r
   r
   r   Úfrom_urlÖ   s   

zUniProxyTarget.from_urlc                 C   s^  g }t | tƒr-| ddd… D ]}t |||¡}||7 }|d j}|d j}q|ddd… S t| ƒ}|j ¡  	d¡\}}t
| }d}	|jdurKt|jƒ}	i }
|	D ]}|tv rl|	| d }t| d D ]
}||ƒ}||
|< qaqOd}|jdusy|jdur|j|jf}tƒ }|j|_|jdurŽ|jnt| |_||_||_||_||_|
 d¡|_|
 dd¡|_|gS )	ú9socks5+password://TEST\Administrator:Password!1@127.0.0.1Nr~   r   ú+r   rR   rL   r   )Ú
isinstanceÚlistr\   Úfrom_url_fullrI   rJ   r   Úschemer   ÚsplitrF   r‡   r   r…   rO   rP   rˆ   rV   Úproxyshort_protocol_defportrH   r`   ra   r_   ÚgetrR   rL   )r—   r`   ra   Úresultr˜   ÚresÚprotoÚauthrH   r‡   Úparamsrv   r“   r”   r_   Úptr
   r
   r   rž   æ   sF   




€zUniProxyTarget.from_url_fullr   )r!   r"   r#   rm   rp   rr   rt   rw   r|   Ústaticmethodr–   r™   rž   r
   r
   r
   r   r\   U   s    
Jr\   Ú__main__rš   )*rc   ÚsslÚenumÚtypingr   Úurllib.parser   r   rx   r   ÚEnumr   r$   r%   r&   r'   r(   r*   r+   r,   r.   r1   r2   r/   r0   r-   rF   r¡   rG   r   r   Úboolr…   r\   r!   ÚaÚbr”   rž   r¤   ÚrÚprintr
   r
   r
   r   Ú<module>   sz    òô
ó ?
ø