o
    j
                     @   s   d dl mZmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZmZ d dlZd dlZG dd	 d	ZG d
d dZdd Zdd ZedkrRee  dS dS )    )	UniTargetUniProto)	UniServer)LDAPPacketizer)LDAPRelayServerConnectionspnegorelay_ntlm_factory)NTLMRelaySettingsntlmrelay_factoryNc                   @   s    e Zd Zdd Zedd ZdS )LDAPServerSettingsc                 C   s
   || _ d S Ngssapi_factory)selfr    r   /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/msldap/relay/server.py__init__   s   
zLDAPServerSettings.__init__c                 C   s   |   S r   r   r   r   r   r   gssapi   s   zLDAPServerSettings.gssapiN)__name__
__module____qualname__r   propertyr   r   r   r   r   r   
   s    r   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
LDAPRelayServerc                 C   s(   || _ || _d | _d | _i | _d| _d S )Nr   )targetsettingsserverserving_taskconnectionsconn_ctr)r   r   r   r   r   r   r      s   
zLDAPRelayServer.__init__c                 C   s   |  j d7  _ | j S )N   )r   r   r   r   r   get_ctr   s   zLDAPRelayServer.get_ctrc              
      s   z(| j  2 z3 d H W }td t| j|}|| j|  < t|	 }q6 W d S  t
y@ } zt  W Y d }~d S d }~ww )Nzconnection in!)r   serveprintr   r   r   r!   asynciocreate_taskrun	Exception	traceback	print_exc)r   
connectionsmbconnectionxer   r   r   __handle_connection   s   z#LDAPRelayServer.__handle_connectionc                    s(   t | jt | _t|  | _| jS r   )r   r   r   r   r$   r%   #_LDAPRelayServer__handle_connectionr   r   r   r   r   r&   ,   s   zLDAPRelayServer.runN)r   r   r   r   r!   r/   r&   r   r   r   r   r      s
    r   c              
      s  zhddl m} ddlm} ddlm} |d}	 |  I d H }t| |||ddd}| I d H \}}|d urHtd	|  tt	
|j q||}	|	 2 z3 d H W \}
}|d urctd
|  qPt|
 qP6 q ty } zt	  W Y d }~d S d }~ww )Nr   )SMBConnection)	SMBTarget)
SMBMachinez
10.10.10.2TF)preserve_gssapinosignzSMB client login err: %szSMB client list_shares err: %s)aiosmb.connectionr0    aiosmb.commons.connection.targetr1   !aiosmb.commons.interfaces.machiner2   getr#   loginr(   	format_tb__traceback__list_sharesr'   r)   )rqr0   r1   r2   test_targetitemr*   _errmachinesharer-   r   r   r   test_relay_queue1   s8   
rD   c               
      s   z.t   t t } tddtj}t fdd}t||}|	 I d H }|I d H  W d S  t
yF } zt  W Y d }~d S d }~ww )Nz0.0.0.0i|  c                      s   t  dd S )Nc                   S   s   t  S r   )r
   r   r   r   r   <lambda>Q   s    z)amain.<locals>.<lambda>.<locals>.<lambda>r   r   auth_relay_queuer   r   rE   Q   s    zamain.<locals>.<lambda>)r$   Queuer%   rD   r   r   SERVER_SSL_TCPr   r   r&   r'   r(   r)   )r,   r   r   r   server_taskr-   r   rF   r   amainK   s   
rK   __main__)asysocks.unicomm.common.targetr   r   asysocks.unicomm.serverr   msldap.network.packetizerr   msldap.relay.serverconnectionr   %asyauth.protocols.spnego.relay.nativer   #asyauth.protocols.ntlm.relay.nativer	   r
   r(   r$   r   r   rD   rK   r   r&   r   r   r   r   <module>   s    