o
    j                     @   s\  d dl mZmZ d dlZd dlmZ d dlmZmZm	Z	 d dl
m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egfdegfdZdefdefdefdefdefdefdZejdejdejdiZG dd dZedkrdZdZdZeeZeeZed eD ]	Zeej qdS dS )    )urlparseparse_qsN)SocksCredential)SocksServerVersionSocksProtocolSOCKS5Method)SocksTargetc                 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/common/clienturl.pystru   s   r   version	server_ipserver_portis_bindprototimeoutendpoint_timeoutbuffer_sizeusernamepasswordauthtypeuseridagentid)typehostserverportbindr   r   etimeoutbsizeuserpassr   r   r   )isbindr   r   
buffersizer   r      c                   @   sR   e Zd Zdd Zdd Zdd Zdd Zedd
dZedd Z	edd Z
d	S )SocksClientURLc                 C   s`   d | _ d | _d| _d| _tj| _d| _d| _d | _	d| _
d | _d | _d | _d | _d | _d | _d S )N8  F
   i   )r   r   r   r   r   TCPr   r   r   ssl_ctxwsnet_reuseendpoint_ipendpoint_portr   r   r   r   selfr   r   r   __init__0   s   
zSocksClientURL.__init__c                 C   s(   | j d u rd S t }| j |_ | j|_|S r	   )r   r   r   )r2   credsr   r   r   	get_credsD   s   
zSocksClientURL.get_credsc                 C   s|   t  }| j|_| j|_| j|_| j|_| j|_| j|_| j|_| j|_| j	|_	| j
|_
| j|_|  |_| j|_| j|_|S r	   )r   r   r   r   r   r   r   r   r/   r0   r   r-   r5   
credentialr   r.   )r2   targetr   r   r   
get_targetL   s    
zSocksClientURL.get_targetc                 C   s^   | j tjkr| jd u rtd| jd u rtd| jdkr$td| j | jd u r-tdd S )NzSOCKS server IP is missing!zSOCKS server port is missing!r   zbuffer_size is too low! %szEndpoint IP address is missing!)r   r   WSNETr   	Exceptionr   r   r/   r1   r   r   r   sanity_check^   s   



zSocksClientURL.sanity_checkNc                 C   st   g }d}d }| d d d D ]%}t | }|du r#||_||_d}n|j|_|j|_|}|| q|d d d S )NTF)r)   from_urlr8   r/   r0   r   r   append)urlsr/   r0   	proxylistfirst
prevtargeturlresr   r   r   	from_urlsl   s   zSocksClientURL.from_urlsc                 C   sn  t  }t| }t|j |_|j|_|jd urt	|j|_
nY|jtjkr)d|_
nO|jtjkr3d|_
nE|jtjkr=d|_
n;|jtjkrGd|_
n1|jtjkrQd|_
n'|jtjkr[d|_
n|jtjkred|_
n|jtjkrod|_
n	|jtjkrxd |_
|j|_|j|_|jtv rt |_|jd urt|j}|D ]}|tv rt| d }t| d || d }t||| q|S )Ni  i   r*   r   r(   )r)   r   r   schemer   r   hostnamer   r    intr   HTTPHTTPSSOCKS5SOCKS5SSOCKS4SOCKS4SSOCKS4ASOCKS4ASr9   r   r   sockssslversionssslcreate_default_contextr-   queryr   clienturl_url2varsetattr)url_strrD   url_erT   kpnameparamr   r   r   r=      sJ   




zSocksClientURL.from_urlc                 C   sR  t  }t| }|j|_|jrt|j|_|jdurt|j}dg}ddi}|D ]7}|	dr^zt|d  |d |vrJd||d < |
t|d  W q' ty] } zW Y d}~q'd}~ww q't|t|krktd|  d}|}	|ddd D ]g}
t  }|du rd	}|}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|
< qzt|dkr|D ]}|| jtv rtdqn|d jtv rt |d _|D ]	}||   q
g }|D ]}
|
|t|
   q|S )z

		Nr   0proxy   z,proxyies are not in sequential order! ERROR!Tr<   Fzproxy%s   r(   zCSSL in proxy chaining not supported! That would be a lot of work...)r)   r   rG   r/   r    rH   r0   rT   r   
startswithr>   r:   lensortr   r   clienturl_param2varrV   r
   r   rQ   rR   rS   r-   r;   r8   )rW   	lastproxyrC   rT   proxycounts	proxynumsrY   e	firstiter	prevproxyipdatastartstringstartposdatactargetsr   r   r   from_params   s   




zSocksClientURL.from_params)NN)__name__
__module____qualname__r3   r5   r8   r;   staticmethodrE   r=   rq   r   r   r   r   r)   /   s    
+r)   __main__zIhttp://alma.com:80/haha?proxytype=socks5&proxyport=66&proxyhost=127.0.0.1zhttp://alma.com:80/haha?proxytype=socks5&proxyport=66&proxyhost=127.0.0.1&proxy1type=socks4&proxy1port=9876&proxy1host=255.255.0.0zhttp://alma.com:80/haha?proxytype=socks5&proxyport=66&proxyhost=127.0.0.1&proxy2type=socks4&proxy2port=9876&proxy2host=255.255.0.0&proxy1type=socks5&proxy1port=6666&proxy1host=127.255.0.0aaaaaaaaaaaaaaaaaaaa)urllib.parser   r   rR   asysocks.common.credentialsr   asysocks.common.constantsr   r   r   asysocks.common.targetr   r   r
   rH   boolrc   rU   rL   rN   rJ   rQ   r)   rr   rC   orq   rD   printr7   __dict__r   r   r   r   <module>   sZ   

 Q
