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  zz| j jrz9| 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  zzM| 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   