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rdZ#dZ$dZ%e!&e#e$e%gddZ'e'D ]Z(e)e( qd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rd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rd}| D ]<}||rd
}|
dkrd}||d  tv r| | d }t||d   d D ]}||}qt|t||d   d | q||t|
< qkg }|D ]}
||t|
  q|S )Nr   0r{   r   z,proxyies are not in sequential order! ERROR!TFz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    
 ?
