
    b                     D    d Z dZddlZddlZ G d dej                  ZdS )z3Convenience functions for using the idmap database.restructuredText    Nc                   N     e Zd ZdZdZdZdZ	 	 d fd	Zd fd	Zd	 Z	dd
Z
 xZS )IDmapDBzThe IDmap database.         Nr   c           	          || _         ||                    d          }t          t          |                               |||||||           dS )zbOpens 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superr   __init__)	selfr
   r   r   r   r   r   r   	__class__s	           -/usr/lib/python3/dist-packages/samba/idmap.pyr   zIDmapDB.__init__#   sd     ;//+..Cgt%%#"+3?[`e.5 	& 	7 	7 	7 	7 	7    c                     t          t          |                               | j                            |          ||           d S )N)r
   r   r   )r   r   connectr   r   )r   r
   r   r   r   s       r   r   zIDmapDB.connect1   sK    gt$$)=)=c)B)B%-4 	% 	6 	6 	6 	6 	6r   c                    |                      ddt          j                  }|d                             d          }t          j        }|'|d                             d          }t          j        }t          t          |                    dz   }t          j                    }t          j	        | d	          |_
        t          j        t          |          |d          |d<   |                     |           |S )
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   	xidNumberN
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_xidzIDmapDB.increment_xid5   s    
 kk%B # 1  3 3VZZ$$#:QL))B#DCGGq kmmk**-c%jj$LLKC	r   c                 (   ||                                  }d}|| j        k    rd}n|| j        k    rd}n|| j        k    rd}ndS d|d|d|d	|d
|d}|                     t          |                     |                    d                    dS )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   )r3   TYPE_UIDTYPE_GID	TYPE_BOTHaddnext
parse_ldif)r   sidtypeunixidtype_stringmods         r   setup_name_mappingzIDmapDB.setup_name_mappingH   s     >''))F4=  'KKT]""'KKT^##(KKF ssFFFCCCccc+ 	dooc**++A./////r   )NNNNNr   N)Nr   N)N)__name__
__module____qualname____doc__r8   r9   r:   r   r   r3   rC   __classcell__)r   s   @r   r   r      s         HHIIM487 7 7 7 7 76 6 6 6 6 6  &0 0 0 0 0 0 0 0r   r   )rG   __docformat__r"   sambaLdbr    r   r   <module>rM      sd   & : 9" 



 H0 H0 H0 H0 H0ei H0 H0 H0 H0 H0r   