ó
    cÛ–iº  ã                   ó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°[Ø&2ÐSXØ!(ð 	ò 	*ó    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*   ø€ Ü‰‰˜DŸG™G×0Ñ0°Ó5¸UØ 'ð 	ò 	)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$ )	zƒIncrement 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Á   € ð
 �k‰kÐ%BÈÜ #× 1Ñ 1ð ð 3ˆà�‰V�Z‰Z˜Ó$ˆÜ×#Ñ#ˆØ‰:Ø�Q‘—‘˜LÓ)ˆBÜ×#Ñ#ˆDÜ”C˜“G“˜qÑ ˆÜ�kŠk‹mˆÜ—’˜˜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)z·Setup 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àøó ‹F“C›£cð+ˆð 	�‰”�d—o‘o cÓ*Ó+¨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Ø€IàIMØ48÷*÷)ò÷&0ò 0r   r   )rM   Ú__docformat__r%   ÚsambaÚLdbr   © r   r   Ú<module>rT      s'   ðñ& :à"€ã 
Û ôH0ˆe�i‰iõ H0r   