o
    j(
                     @   sj   d dl Z d dl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)
TrafficLogzasysocks.traffic.basez3%(asctime)s %(name)-12s %(levelname)-8s %(message)sc                   @   sJ   e Zd ZdZdd ZdddZdd Zd	d
 Zdd Zdd Z	dd Z
dS )BaseMonitorz
	Base class for monitoring traffic. This does not do monitoring 
	just holds all the necessary data that enables monitoring for 
	other classes
	c                 C   s   || _ || _|| _d | _|| _|| _|| _d| j| j | j| j| jf | _d| j| j| j| j | jf | _t	
 | _t	
 | _t	
 | _t	
 | _d S )Nz[%s][MONITOR][%s:%s -> %s:%s])	client_ipclient_portdst_ipdst_hostnamedst_portmodule
session_idlogline_c2dlogline_d2casyncioQueuec2d_inc2d_outd2c_ind2c_out)selfr   r   r   r   r	   r
    r   /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/asysocks/intercepting/monitors/base.py__init__   s   


zBaseMonitor.__init__Nc                 C   sT   t  }||_| j|_| j|_| j|_| j|_| j|_	| j
|_| j|_||_||_|S N)r   module_namer	   
srv_moduler   r   r   destination_ipr   destination_hostnamer   destination_portr
   	directiondata)r   r   r   r   tr   r   r   get_trafficlog%   s   zBaseMonitor.get_trafficlogc                 C   s   | j d u r| jS | j S r   )r   r   )r   r   r   r   get_dst_hostname3   s   
zBaseMonitor.get_dst_hostnamec                 C   s
   || _ d S r   )r   )r   hostnamer   r   r   set_hostname8   s   
zBaseMonitor.set_hostnamec              
         zMz'|  s(| j I d H }| j|I d H  |dkr$W W |  d S |  rW n ty@ } ztd W Y d }~nd }~ww W |  d S W |  d S |  w )N    __proxy_c2d)	is_setr   getr   putset	Exception	srvlogger	exceptionr   stop_evtr   er   r   r   r&   <   $   zBaseMonitor.__proxy_c2dc              
      r$   )Nr%   __proxy_d2c)	r'   r   r(   r   r)   r*   r+   r,   r-   r.   r   r   r   r2   H   r1   zBaseMonitor.__proxy_d2cc                    s<   t  }t | | t | | | I dH  dS )z4
		Only invoke this if no monitoring is required!
		N)r   Eventcreate_task_BaseMonitor__proxy_c2d_BaseMonitor__proxy_d2cwait)r   r/   r   r   r   runU   s
   zBaseMonitor.runr   )__name__
__module____qualname____doc__r   r    r!   r#   r5   r6   r8   r   r   r   r   r      s    
r   )r   loggingasysocks.common.trafficlogr   	getLoggerr,   StreamHandlerhandler	Formatter	formattersetFormatter
addHandlersetLevelINFOr   r   r   r   r   <module>   s    


