
    g                     F    S r SrSSKrSSKr " S S\R                  5      rg)z3Convenience functions for using the idmap database.restructuredText    Nc                   `   ^  \ rS rSrSrSrSrSr  SU 4S jjrSU 4S jjr	S r
SS	 jrS
rU =r$ )IDmapDB   zThe IDmap database.         c           
      \   > X l         Uc  UR                  S5      n[        TU ]  XUXEUUS9  g)zROpens the IDMap Database.

For parameter meanings see the super class (samba.Ldb)
Nz	idmap.ldb)urllpmodules_dirsession_infocredentialsflagsoptions)r   private_pathsuper__init__)	selfr   r   r   r   r   r   r   	__class__s	           -/usr/lib/python3/dist-packages/samba/idmap.pyr   IDmapDB.__init__#   s<     ;//+.CS[&2SX!( 	 	*    c                 V   > [         TU ]  U R                  R                  U5      UUS9  g )N)r   r   r   )r   connectr   r   )r   r   r   r   r   s       r   r   IDmapDB.connect1   s*    DGG005U ' 	 	)r   c                    U R                  SS[        R                  S9nUS   R                  S5      n[        R                  nUc$  US   R                  S5      n[        R
                  n[        [        U5      5      S-   n[        R                  " 5       n[        R                  " U S5      Ul
        [        R                  " [        U5      US5      US'   U R                  U5        U$ )	zIncrement xidNumber, if not present it create and assign it to the lowerBound

:return xid can that be used for SID/unixid mapping
zdistinguishedName=CN=CONFIG )
expressionbasescoper   	xidNumber
lowerBoundr   z	CN=CONFIG)searchldbSCOPE_SUBTREEgetFLAG_MOD_REPLACEFLAG_MOD_ADDintstrMessageDndnMessageElementmodify)r   residflagnewidmsgs         r   increment_xidIDmapDB.increment_xid5   s    
 kk%B # 1 1  3VZZ$##:QL)B##DCGq kkmk*--c%j$LKC	r   c                 "   Uc  U R                  5       nSnX R                  :X  a  SnO%X R                  :X  a  SnOX R                  :X  a  SnOgSU< SU< SU< S	U< S
U< S3nU R	                  [        U R                  U5      5      S   5        g)zSetup a mapping between a sam name and a unix name.

:param sid: SID of the NT-side of the mapping.
:param unixname: Unix id to map to, if none supplied the next one will be selected
Nr   ID_TYPE_UIDID_TYPE_GIDID_TYPE_BOTHz
dn: CN=z
xidNumber: z
objectSid: z
objectClass: sidMap
type: z
cn: z

r   )r6   TYPE_UIDTYPE_GID	TYPE_BOTHaddnext
parse_ldif)r   sidtypeunixidtype_stringmods         r   setup_name_mappingIDmapDB.setup_name_mappingH   s     >'')F== 'K]]"'K^^#(K FCc+ 	dooc*+A./r   )r   )NNNNNr   N)Nr   N)N)__name__
__module____qualname____firstlineno____doc__r<   r=   r>   r   r   r6   rG   __static_attributes____classcell__)r   s   @r   r   r      s6     HHIIM48*)&0 0r   r   )rM   __docformat__r%   sambaLdbr    r   r   <module>rT      s'   & :" 
 H0eii H0r   