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   ;
