ó
    cÛ–i  ã                   ó„   • S r SSKrSSKJrJr   " S S\5      r " S S\5      r " S S	\5      r " S
 S\5      rS r	S r
g)zManipulating sites.é    N)ÚFLAG_MOD_ADDÚLdbErrorc                   ó$   • \ rS rSrSrS rS rSrg)ÚSiteExceptioné   zBase element for Sites errorsc                 ó   • Xl         g )N©Úvalue)Úselfr
   s     Ú-/usr/lib/python3/dist-packages/samba/sites.pyÚ__init__ÚSiteException.__init__   s   € Ø�
ó    c                 óP   • U R                   R                  < SU R                  < 3$ )Nz: )Ú	__class__Ú__name__r
   )r   s    r   Ú__str__ÚSiteException.__str__   s   € ØŸ>™>×2Ô2°D·J³JÐ?Ð?r   r	   N)r   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   Ú__static_attributes__© r   r   r   r      s   † Ù'òõ@r   r   c                   ó   • \ rS rSrSrSrg)ÚSiteNotFoundExceptioné"   z>Raised when the site is not found and it's expected to exists.r   N©r   r   r   r   r   r   r   r   r   r   r   "   s   † ÜHr   r   c                   ó   • \ rS rSrSrSrg)ÚSiteAlreadyExistsExceptioné&   zBRaised when the site is not found and it's expected not to exists.r   Nr   r   r   r   r    r    &   s   † ÜLr   r    c                   ó   • \ rS rSrSrSrg)ÚSiteServerNotEmptyExceptioné*   z0Raised when the site still has servers attached.r   Nr   r   r   r   r#   r#   *   s   † Ü:r   r#   c           	      óB  • U R                  U[        R                  SU-  S9n[        U5      S:w  a  [	        SU-  5      e[        R
                  " 5       n[        R                  " U SU< S[        U5      < 35      Ul        [        R                  " S[        S5      US'   U R                  U5        [        R
                  " 5       n[        R                  " U S	[        UR                  5      -  5      Ul        [        R                  " S
[        S5      US'   U R                  U5        [        R
                  " 5       n[        R                  " U S[        UR                  5      -  5      Ul        [        R                  " S[        S5      US'   U R                  U5        g)zó
Create a site

:param samdb: A samdb connection
:param configDn: The DN of the configuration partition
:param siteName: Name of the site to create
:return: True upon success
:raise SiteAlreadyExists: if the site to be created already exists.
z(&(objectclass=Site)(cn=%s))©ÚbaseÚscopeÚ
expressionr   z&A site with the name %s already existszCn=z
,CN=Sites,ÚsiteÚobjectclasszCn=NTDS Site Settings,%sÚnTDSSiteSettingszCn=Servers,%sÚserversContainerT)ÚsearchÚldbÚSCOPE_SUBTREEÚlenr    ÚMessageÚDnÚstrÚdnÚMessageElementr   Úadd)ÚsamdbÚconfigDnÚsiteNameÚretÚmÚm2Úm3s          r   Úcreate_siter?   .   s3  € ð �,‰,˜H¬C×,=Ñ,=Ø"@À8Ñ"Kð ð M€Cä
ˆ3ƒx�1ƒ}Ü(Ð)QÐT\Ñ)\Ó]Ð]ä�Š‹€AÜ�6Š6‘%³¼#¸h½-ÐHÓI€A„DÜ×)Ò)¨&´,ÀÓN€A€mÑà	‡I�Iˆa„Lä	�Š‹€BÜ�FŠF�5Ð4´s¸1¿4¹4³yÑ@ÓA€B„EÜ×*Ò*Ð+=¼|È]Ó[€B€}Ñà	‡I�Iˆb„Mä	�Š‹€BÜ�FŠF�5˜/¬C°·±«IÑ5Ó6€B„EÜ×*Ò*Ð+=¼|È]Ó[€B€}Ñà	‡I�Iˆb„Màr   c                 ó$  • [         R                  " U S5      n UR                  U5         UR                  S5        UR                  SSU5        [         R                  " U S5      nUR                  U5         U R                  U[         R                  SS	9n[        U5      S
:w  a  [        SU-  5      e U R                  U[         R                  SS	9n[        U5      S:w  a  [        SU-  5      eU R                  US/5        g! [         R                   a    [	        S5      ef = f! [         R                   a    [	        S5      ef = f! [         a:  nUR                  u  pxU[         R                  :X  a  [        SU-  5      e SnANÕSnAff = f)a6  
Delete a site

:param samdb: A samdb connection
:param configDn: The DN of the configuration partition
:param siteName: Name of the site to delete
:return: True upon success
:raise SiteNotFoundException: if the site to be deleted do not exists.
:raise SiteServerNotEmpty: if the site has still servers in it.
zCN=Siteszdnsite.add_base() failedzCN=Xzdnsite.add_child() failedr   ÚCNz
CN=ServerszobjectClass=siter&   é   zSite %s does not existNz(objectclass=server)z9Site %s still has servers in it, move them before removalztree_delete:0T)r/   r3   Úadd_baser   r   Ú	add_childÚset_componentr.   Ú
SCOPE_BASEr1   r   ÚargsÚERR_NO_SUCH_OBJECTÚSCOPE_ONELEVELr#   Údelete)	r8   r9   r:   ÚdnsiteÚ	dnserversr;   ÚeÚenumÚestrs	            r   Údelete_siterP   S   s…  € ô �VŠV�E˜:Ó&€Fð8Ø�‰˜Ô!ð9Ø×Ñ˜Ô ð ×Ñ˜˜D (Ô+ä—’�u˜lÓ+€IØ×Ñ�vÔðMØ�l‰l ¬c¯n©nØ&8ð ð :ˆäˆs‹8�q‹=Ü'Ð(@À8Ñ(KÓLÐLð ð �,‰,˜I¬S×-?Ñ-?Ø"8ð ð :€Cä
ˆ3ƒx�1ƒ}Ü)Ð*eÐhpÑ*pÓqÐqà	‡L�L�˜/Ð*Ô+àøô9 �<‰<ó 8ÜÐ6Ó7Ð7ð8ûô �<‰<ó 9ÜÐ7Ó8Ð8ð9ûô ó MØ—v‘v‰ˆØ”3×)Ñ)Ó)Ü'Ð(@À8Ñ(KÓLÐLô *ûðMús.   ™D «D( Á8<E Ä D%Ä( EÅ
FÅ0F
Æ
F)r   r/   r   r   Ú	Exceptionr   r   r    r#   r?   rP   r   r   r   Ú<module>rR      sQ   ðñ$ ã 
ß &ô@�Iô @ôI˜Mô IôM ô Mô; -ô ;ò"óJ+r   