o
    Žõ±ji	  ã                   @   sh   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 G dd„ dƒZ	dd„ Z
edkr2e
ƒ  dS dS )	é    N)Úlogger)ÚLDAPConnectionFactoryc                   @   s.   e Zd Zdd„ Zdd„ Zddd„Zdd	„ Zd
S )ÚMSLDAPCompDomainListc                 C   s"   || _ d | _d | _d | _d | _d S )N)Úconn_urlÚ
connectionÚadinfoÚldapinfoÚdomain_name)ÚselfÚldap_url© r   ú”/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/msldap/examples/msldapcompdnslist.pyÚ__init__   s
   
zMSLDAPCompDomainList.__init__c              
   Ã   s‚   �z)t  | j ¡ ¡ t  | j ¡ ¡ | j ¡ | _| j ¡ I dH \}}|dur(|‚W dS  ty@ } z
d|fW  Y d}~S d}~ww )zPerforms connection and loginN©TNF)	r   Údebugr   Úget_credentialÚ
get_targetÚ
get_clientr   ÚconnectÚ	Exception)r
   Ú_ÚerrÚer   r   r   Úlogin   s   €€ÿzMSLDAPCompDomainList.loginTc              
   Ã   s~   �z'| j du r| jj| _ | j j dd¡ dd¡ dd¡| _|du r&t| j ƒ W dS  ty> } z
d	|fW  Y d}~S d}~ww )
z%Prints detailed Active Driectory infoNÚDCÚ ú=ú,Ú.Tr   F)r   r   Ú	_ldapinfoÚdistinguishedNameÚreplacer	   Úprintr   )r
   Úshowr   r   r   r   Ú	do_adinfo'   s   €

"
€ÿzMSLDAPCompDomainList.do_adinfoc                 Ã   sÀ   �zT|   ¡ I d H \}}|d ur|‚|  d¡I d H \}}|d ur!|‚| jjddgd�2 z'3 d H W \}}|d ur8|‚|j}|d u rKd|jd d… | jf }tt|ƒƒ q*6 W d S    t	 
¡  Y d S )NFÚsAMAccountNameÚdNSHostName)Úattrsz%s.%séÿÿÿÿ)r   r$   r   Úget_all_machinesr&   r%   r	   r"   ÚstrÚ	tracebackÚ	print_exc)r
   r   r   ÚmachineÚdnsr   r   r   Úrun4   s$   €"ø	zMSLDAPCompDomainList.runN)T)Ú__name__Ú
__module__Ú__qualname__r   r   r$   r/   r   r   r   r   r      s
    
r   c                  C   s´   dd l } | jdd�}|jdddddd� |jd	d
dd� |jddd� | ¡ }|jdkr4tjtjd� nt 	tj
¡ t 	tj
¡ tjtj
d� t |j¡}t|ƒ}t | ¡ ¡ d S )Nr   zMS LDAP library)Údescriptionz-vz	--verboseÚcountzVerbosity, can be stacked)ÚactionÚdefaultÚhelpz-nz--no-interactiveÚ
store_true)r5   Úurlz Connection string in URL format.)r7   )Úlevel)ÚargparseÚArgumentParserÚadd_argumentÚ
parse_argsÚverboseÚloggingÚbasicConfigÚINFOÚsocksloggerÚsetLevelÚDEBUGr   r   Úfrom_urlr9   r   Úasyncior/   )r;   ÚparserÚargsr   Úcompdomlistr   r   r   ÚmainJ   s   
rK   Ú__main__)rG   r+   r@   Úmsldapr   ÚasysocksrC   Úmsldap.commons.factoryr   r   rK   r0   r   r   r   r   Ú<module>   s   ;
ÿ