o
    �õ±jé  ã                   @   s:   d dl Z d dlZd dlZd dlT d dlZG dd„ dƒZdS )é    N)Ú*c                   @   s>   e Zd Zddd„Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ ZdS )ÚWSNetworkTCPTESTFc                 C   sR   d | _ d | _d | _|| _|| _|| _|| _|| _t 	d¡| _
d | _d | _d | _d S )Né   )Úws_urlÚwsÚws_proxyÚipÚportÚin_qÚout_qÚreuse_wsÚosÚurandomÚtokenÚin_taskÚout_taskÚ _WSNetworkTCPTEST__internal_in_q)Úselfr   r	   r
   r   r   © r   úŠ/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/asysocks/test/wsnettest.pyÚ__init__	   s   
zWSNetworkTCPTEST.__init__c                 Ã   sN   �| j d ur| j  ¡  | jd ur| j ¡  | jd ur"| j ¡ I d H  d | _d S )N)r   Úcancelr   r   Úclose)r   r   r   r   Ú	terminate   s   €





zWSNetworkTCPTEST.terminatec              
   Ã   sR  �zŸz‚| j jrƒz9| j  ¡ I d H }t t|ƒ¡}|jtjkr%t	dƒ t
dƒ‚|jtjkr3t	dƒ t
dƒ‚| j |jd f¡I d H  W n> tjyT   Y W W |  ¡ I d H  d S  t
y~ } zt ¡  | j d |f¡I d H  W Y d }~W W |  ¡ I d H  d S d }~ww | j jsW n   t ¡  Y W |  ¡ I d H  d S W |  ¡ I d H  d S |  ¡ I d H  w )Nz Remote end terminated the socketz>Proxy sent error during data transmission. Killing the tunnel.)r   ÚopenÚrecvÚCMDÚ
from_bytesÚ	bytearrayÚtypeÚCMDTypeÚOKÚprintÚ	ExceptionÚERRr
   ÚputÚdataÚasyncioÚCancelledErrorr   Ú	tracebackÚ	print_exc©r   r&   ÚcmdÚer   r   r   Ú__handle_in!   s<   €ù€ùð€€" zWSNetworkTCPTEST.__handle_inc                 Ã   sŒ  �z¥zM| j jrN| j ¡ I d H }|d u s|dkr9W W zt| jƒ}| j  | ¡ ¡I d H  W n   Y |  ¡ I d H  d S t	| j|ƒ}| j  | ¡ ¡I d H  | j jsW n6 t
y… } z*t ¡  W Y d }~W zt| jƒ}| j  | ¡ ¡I d H  W n   Y |  ¡ I d H  d S d }~ww W zt| jƒ}| j  | ¡ ¡I d H  W n   Y |  ¡ I d H  d S zt| jƒ}| j  | ¡ ¡I d H  W n   Y |  ¡ I d H  w )Nó    )r   r   r   ÚgetÚWSNOKr   ÚsendÚto_bytesr   ÚWSNSocketDatar#   r)   r*   r+   r   r   r   Ú__handle_out=   sP   €
õù€
€÷€
û
zWSNetworkTCPTEST.__handle_outc              
   Ã   sÜ   �zRt d| j| jf ƒ t| jd| j| jƒ}| j | ¡ ¡I d H  | j ¡ I d H }t	 
t|ƒ¡}t d| ƒ |jtjkr?W dS |jtjkrLtd|j ƒ‚td|jj ƒ‚ tym } zt ¡  d|fW  Y d }~S d }~ww )NzWSNETTEST connecting... %s:%sÚTCPzWSNETTEST connect reply %s©TNz,Connection failed, proxy sent error. Err: %sz,Connection failed, expected CONTINUE, got %sF)r"   r   r	   Ú
WSNConnectr   r   r2   r3   r   r   r   r   r   r    ÚCONTINUEr$   r#   ÚreasonÚvaluer)   r*   )r   r,   r&   r-   r   r   r   ÚconnectR   s$   €€þzWSNetworkTCPTEST.connectc              
   Ã   sÆ   �z@t  ¡ | _d| _t | j¡I d H | _|  ¡ I d H \}}|d ur/| j d ¡I d H  d|fW S t  	|  
¡ ¡| _t  	|  ¡ ¡| _W dS  tyb } zt ¡  |  ¡ I d H  d|fW  Y d }~S d }~ww )Nzws://127.0.0.1:8700Fr7   )r'   ÚQueuer   r   Ú
websocketsr<   r   r
   r%   Úcreate_taskÚ_WSNetworkTCPTEST__handle_inr   Ú_WSNetworkTCPTEST__handle_outr   r#   r)   r*   r   )r   Ú_Úerrr-   r   r   r   Úrung   s$   €

€ýzWSNetworkTCPTEST.runN)F)	Ú__name__Ú
__module__Ú__qualname__r   r   r@   rA   r<   rD   r   r   r   r   r      s    
	r   )r'   r   r)   Úwsnet.protocolr>   r   r   r   r   r   Ú<module>   s   