o
    j                     @   s   d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlmZ d dl	m
Z
 edZe ZedZee ee eej G dd dZdS )	    N)
prototable)SSLBaseMonitor)default_intercept_tablezasysocks.interceptz3%(asctime)s %(name)-12s %(levelname)-8s %(message)sc                   @   s6   e Zd ZdddZdd Zdd Zdd	 Zd
d ZdS )InterceptServerNc                 C   s@   || _ || _|| _|| _|| _t | _d | _d | _	| 
  d S N)servercertmanager	log_queueintercept_targetsprotocol_load_tableasyncioQueuemonitor_dispatch_qserver_taskprocessing_tasksetup)selfr   r   r	   r
   r    r   /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/asysocks/intercepting/server.py__init__   s   
zInterceptServer.__init__c                 C   s(   | j d u rt| _ | jd u rt| _d S d S r   )r   r   r
   r   r   r   r   r   r   %   s
   


zInterceptServer.setupc              
      s  zs|}| j D ]h}||\}}|d uro|du rdt }d|_tj|_| jj|	 |j
dI d H \}}}	|	d urCt|	 ||	f  W S ||| ttj}
d|
_tj|
_t|||
d}t|  | j| || j} nq|d fW S  ty } z
d |fW  Y d }~S d }~ww )NTF)port)client_ssl_ctxdestination_ssl_ctx)r
   get_proto_for_monitorsslcreate_default_contextcheck_hostname	CERT_NONEverify_moder   get_cert_by_hostget_dst_hostnamedst_portprintload_cert_chain
SSLContextPROTOCOL_TLS_CLIENTr   r   create_taskrunr   r	   	Exception)r   monitorselected_protocolentryis_sslprotor   fake_cert_filefake_key_fileerrr   er   r   r   __lookup_monitor,   s8   
"
z InterceptServer.__lookup_monitorc              
      s   z1t d 	 | j I d H }t d | |I d H \}}|d ur't | |t d t|  q tyN } zt	d t | W Y d }~d S d }~ww )N   T
monitor_in,   __process_monitors)
r#   r   get _InterceptServer__lookup_monitorr   r'   r(   r)   logger	exception)r   r*   monitor_protocolr1   r2   r   r   r   r7   M   s$   
z"InterceptServer.__process_monitorsc                    s@   | j | j_ t| j | _tdI d H  |  I d H  d S )Nr   )r   r   r   r'   r(   r   sleep"_InterceptServer__process_monitorsr   r   r   r   r(   `   s
   
zInterceptServer.run)NN)__name__
__module____qualname__r   r   r9   r>   r(   r   r   r   r   r      s    
!r   )r   loggingjsonrer   asysocks.intercepting.monitorsr   &asysocks.intercepting.monitors.sslbaser   -asysocks.intercepting.default_intercept_tabler   	getLoggerr:   StreamHandlerhandler	Formatter	formattersetFormatter
addHandlersetLevelINFOr   r   r   r   r   <module>   s"   


