
    Id@                         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y)    N)nbt)Net)CommandErrorl         c                    | }t        j                  d|       }|r|j                  d      }|j                  d      }|C|j                         }|j	                         |j	                         k7  rt        d| d| d      |j	                         d|j                         fS d}t        j                  d|       }|r||j                  d      }|j                  d      }|X|j                         }|j                  d	d      d
   }|j	                         |j	                         k7  rt        d| d| d      |j	                         |j                         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+$)      z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      sW    H
!4(A771:?002J||~!1!1!33"^F8 <22<R$A B B  "flln55E
&A771:
?++-I )Q 7 :{{} 1 7 7 99"]5' :--6Kr$; < < NNekkmR00    c                     | j                  d      j                         dz   | j                  d      j                         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   s7     66.!'')C/"&&/2G2G2IIIr   c                     t        ||       }|| j                  d      }|j                  |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!   r   )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   sc     Eb
!C}w

%!$!4!4s7H7H!H3KbKb!b  dI!!!r   c                     t        ||       }|j                  |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   s@     Eb
!C

7!$!4!4s7H7H!H  JIr   c                 r    dd l }	 t        |       }|D ]  }|j                  |      d   dk(  s y y#  Y yxY w)Nr   FCT)unicodedatastrcategory)valr4   str_valcs       r   is_printable_attr_valr:   a   sN    c(  "1%, s   2 6c                 T   t        j                         }|j                  |_        |j                         D ]O  }|dk(  r	||   }|||<   d}|D ]  }t	        |      rd} n |r.||   j                  t         j                         Q | j                  |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66ADXXZ :91v! 	A$Q'K		
 aDNN3889: ""1c&9&9:Kr   c                 V    t        |       t        k(  ry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      s)    
 =_,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]      sR   ( 
   % 
 )*%1PJ	"$448
r   