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    ÿ