
    b@                         d dl Z d dlmZ d dlmZ d dlmZ d dlZ ed          Z	ddZ
d ZddZdd	Zd
 Zd Zd Zd Zd ZdS )    N)nbt)Net)CommandErrorl         c                 B   | }t          j        d|           }|r|                    d          }|                    d          }|T|                                }|                                |                                k    rt          d| d| d          |                                d|                                fS d}t          j        d	|           }|r|                    d          }|                    d          }|p|                                }|                    d
d          d         }|                                |                                k    rt          d| d| d          |                                |                                dfS )a    get the realm or the domain and the base user
        from user like:
        * username
        * DOMAIN\username
        * username@REALM

         A SamDB object can also be passed in to check
        our domain or realm against the obtained ones.
    z(\w+)\\(\w+$)      NzGiven domain 'z' does not match our domain 'z'! z(\w+)@(\w+).r   zGiven realm 'z' does not match our realm ')	rematchgroupdomain_netbios_namelowerr   upperdomain_dns_namesplit)	usersambaseusermdomain
our_domainrealm	our_realmour_realm_initials	            5/usr/lib/python3/dist-packages/samba/netcmd/common.py_get_user_realm_domainr      s    H
!4((A 
6771::?0022J||~~!1!1!3!333" $AF $A $A2<$A $A $A B B B   "fllnn55E
&&A 	<771::

?++--I )Q 7 7 :{{}} 1 7 7 9 999" $;5 $; $;-6$; $; $; < < < NNekkmmR00    c                     |                      d                                          dz   |                      d                                          z   S )zkreturn the full DNS name of our own host. Used as a default
       for hostname when running status queriesznetbios namer
   r   )getr   )lps    r   netcmd_dnsnamer"   G   sB     66.!!''))C/"&&//2G2G2I2IIIr   c                     t          ||           }||                     d          }|                    |t          j        t          j        z  t          j        z            }|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_DSNBT_SERVER_WRITABLEpdc_dns_name)r!   r%   r   net	cldap_rets        r   netcmd_finddcr.   M   se     Eb
!
!
!C}w

%!$!4s7H!H3Kb!b  d dI!!r   c                     t          ||           }|                    |t          j        t          j        z            }|S )zaReturn domain information (CLDAP record) of the ldap-capable
       DC with the specified addressr$   )addressr&   )r   r'   r   r(   r)   )r!   r%   r0   r,   r-   s        r   !netcmd_get_domain_infos_via_cldapr1   Y   sF     Eb
!
!
!C

7!$!4s7H!H  J JIr   c                     dd l }	 t          |           }n#  Y dS xY w|D ]$}|                    |          d         dk    r dS %dS )Nr   FCT)unicodedatastrcategory)valr4   str_valcs       r   is_printable_attr_valr:   a   sr    c((uu
   ""1%,,55 - 4s    c                 Z   t          j                    }|j        |_        |                                D ]V}|dk    r	||         }|||<   d}|D ]}t	          |          rd} |s%||                             t           j                   W|                     |t           j                  }|S )NdnFT)	ldbMessager<   keysr:   	set_flagsFLAG_FORCE_NO_BASE64_LDIF
write_ldifCHANGETYPE_NONE)samdbmsgr   kvalsneed_base64vresult_ldifs           r   get_ldif_for_editorrK   s   s     	A6ADXXZZ : :991v! 	 	A$Q'' K 	:aDNN38999""1c&9::Kr   c                 t    t          |           t          k    rdS t          t          |                     dz  S )z8Converts a timestamp in -100 nanosecond units to minutesr   g    A)intNEVER_TIMESTAMPabstimestamp_strs    r   timestamp_to_minsrR      s7    
 =_,,q3}%%&&(33r   c                 &    t          |           dz  S )z5Converts a timestamp in -100 nanosecond units to daysi  )rR   rP   s    r   timestamp_to_daysrT      s    ]++w77r   c                 *    || v r| |         d         S |S )z/get an attribute from a ldap msg with a defaultr    )rE   attrnamedefaults      r   attr_defaultrY      s    38}QNr   )N)r   samba.dcerpcr   	samba.netr   samba.netcmdr   r=   rM   rN   r   r"   r.   r1   r:   rK   rR   rT   rY   rV   r   r   <module>r]      s  ( 
			             % % % % % % 



 #)**%1 %1 %1 %1PJ J J	" 	" 	" 	"     $  44 4 48 8 8
    r   