a
    Wa                     @   s`   d dl Z d dlmZ d dlmZ d dlZdd Zdd Zddd	Zdd
dZ	dd Z
dd ZdS )    N)nbt)Netc                 C   sx   | }d}d}t d| }|rB|d}|d}| | |fS t d| }|rf|d}|d}| || fS )z get the realm or the domain and the base user
        from user like:
        * username
        * DOMAIN\username
        * username@REALM
     z(\w+)\\(\w+$)      z(\w+)@(\w+))rematchgrouplowerupper)userZbaseuserrealmdomainm r   5/usr/lib/python3/dist-packages/samba/netcmd/common.py_get_user_realm_domain   s    



r   c                 C   s    |  d d |  d  S )zkreturn the full DNS name of our own host. Used as a default
       for hostname when running status queriesznetbios name.r   )getr
   )lpr   r   r   netcmd_dnsname/   s    r   c                 C   s@   t || d}|du r| d}|j|tjtjB tjB d}|jS )zReturn domain-name of a writable/ldap-capable DC for the default
       domain (parameter "realm" in smb.conf) unless another realm has been
       specified as argumentcredsr   Nr   )r   flags)r   r   finddcr   NBT_SERVER_LDAPNBT_SERVER_DSZNBT_SERVER_WRITABLEZpdc_dns_name)r   r   r   net	cldap_retr   r   r   netcmd_finddc5   s    
r   c                 C   s&   t || d}|j|tjtjB d}|S )zaReturn domain information (CLDAP record) of the ldap-capable
       DC with the specified addressr   )addressr   )r   r   r   r   r   )r   r   r    r   r   r   r   r   !netcmd_get_domain_infos_via_cldapA   s
    
r!   c                 C   sJ   dd l }zt| }W n   Y dS 0 |D ]}||d dkr( dS q(dS )Nr   FCT)unicodedatastrcategory)valr#   Zstr_valcr   r   r   is_printable_attr_valI   s    r(   c                 C   s~   t  }|j|_| D ]R}|dkr&q|| }|||< d}|D ]}t|rLq>d} qVq>|s|| t j q| |t j}|S )NdnFT)	ldbZMessager)   keysr(   Z	set_flagsZFLAG_FORCE_NO_BASE64_LDIFZ
write_ldifZCHANGETYPE_NONE)Zsamdbmsgr   kZvalsZneed_base64vZresult_ldifr   r   r   get_ldif_for_editor[   s"    r/   )N)N)r   Zsamba.dcerpcr   Z	samba.netr   r*   r   r   r   r!   r(   r/   r   r   r   r   <module>   s   

