+
    4SsiQ  ã                   ó  € ^ RI t ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RI	H
t
HtHtHtHt ^Kt^Yt^KR^LR^MR	^NR
^OR^PR^QR^RR^SR^TR^UR^VR^WR^XR^YR/t]
^J]^M]^Q]^Q]^Y/t]
^]^]^	]^
]^/t. t ! R R]4      t ! R R]4      tR# )é    N)Ú	b64encode)Úsd_utils)Úsecurity)Ú'get_managed_service_accounts_descriptor)ÚDS_DOMAIN_FUNCTION_2008ÚDS_DOMAIN_FUNCTION_2008_R2ÚDS_DOMAIN_FUNCTION_2012ÚDS_DOMAIN_FUNCTION_2012_R2ÚDS_DOMAIN_FUNCTION_2016z$5e1574f6-55df-493e-a671-aaeffca6a100z$d262aae8-41f7-48ed-9f35-56bbb677573dz$82112ba0-7e4c-4a44-89d9-d46c9612bf91z$c3c927a6-cc1d-47c0-966b-be8f9b63d991z$54afcfb9-637a-4251-9f47-4d50e7021211z$f4728883-84dd-483c-9897-274f2ebcf11ez$ff4f9d27-7157-4cb0-80a9-5d6f2b14c8ffz$83c53da7-427e-47a4-a07a-a324598b88f7z$c81fc9cc-0130-4fd1-b272-634d74818133z$e5f9e791-d96d-4fc9-93c9-d53e1dc439baz$e6d5fd00-385d-4e65-b02d-9da3493ed850z$3a6b3fbf-3168-4312-a10d-dd5b3393952dz$7f950403-0ab3-47f9-9730-5d7b0269f9bdz$434bb40d-dbc9-4fe7-81d4-d57229f7b080z$a0c238ba-9e30-4ee6-80a6-43f731e9a5cdc                   ó   € ] tR t^WtRtR# )ÚDomainUpdateException© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__static_attributes__r   ó    Ú5/usr/lib/python3/dist-packages/samba/domain_update.pyr   r   W   s   † Ûr   r   c                   ó´   a € ] tR t^[t o RtRR ltRR ltR tRR ltR t	R t
R	 tR
 tR tR tR tR tR tR tR tR tR tR tR tR tR tR tRtV tR# )ÚDomainUpdatez2Check and update a SAM database for domain updatesc                ó  € Wn         W n        W0n        W@n        RV n        V P                   P                  4       V n        V P                   P                  4       V n        V P                   P                  4       V n	        \        P                  ! V4      V n
        \        P                  ! VP                  4       4      V n        V P                   P!                  4       V n         V P"                  P%                  R4       T P                   P!                  4       T n         T P,                  P%                  R4       R#   \&        P(                   d    \+        R4      hi ; i  \&        P(                   d    \+        R4      hi ; i)a  
:param samdb: LDB database
:param fix: Apply the update if the container is missing
:param new_install: Apply the update as per a new install (see op 88)
:param add_update_container: Add the container at the end of the change
:raise DomainUpdateException:
Fz(CN=Operations,CN=DomainUpdates,CN=Systemz+Failed to add domain update container childz3CN=ActiveDirectoryUpdate,CN=DomainUpdates,CN=Systemz#Failed to add revision object childN)ÚsamdbÚfixÚnew_installÚadd_update_containerÚcheck_update_appliedÚget_config_basednÚ	config_dnÚ	domain_dnÚget_schema_basednÚ	schema_dnr   ÚSDUtilsr   Údom_sidÚget_domain_sidÚ
domain_sidÚget_root_basednÚdomainupdate_containerÚ	add_childÚldbÚLdbErrorr   Úrevision_object)Úselfr   r   r   r   s   &&&&&r   Ú__init__ÚDomainUpdate.__init__^   s2  € ð Œ
ØŒØ&ÔØ$8Ô!à$)ˆÔ!àŸ™×5Ñ5Ó7ˆŒØŸ™×-Ñ-Ó/ˆŒØŸ™×5Ñ5Ó7ˆŒä ×(Ò(¨Ó/ˆŒÜ"×*Ò*¨5×+?Ñ+?Ó+AÓBˆŒà&*§j¡j×&@Ñ&@Ó&BˆÔ#ð	WØ×'Ñ'×1Ñ1Ð2\Ô]ð  $Ÿz™z×9Ñ9Ó;ˆÔð	OØ× Ñ ×*Ñ*Ð+`Öaøô �|‰|ô 	WÜ'Ð(UÓVÐVð	Wûô �|‰|ô 	OÜ'Ð(MÓNÐNð	Oús   Ã!D9 ÄE Ä9!EÅ!E>Nc                ó2  € V P                   P                  V P                  R.\        P                  R7      p\
        V,          pV'       d   \
        V,          pV^,          pM\        pV P                  We4       \        V,          p\        V^ ,          R,          ^ ,          4      pV'       dh   W‡8  d`   V P                  '       g   \        RVV3,          4      hV P                   P                  R\        V P                  4      V3,          4       R# R# R# )zÔ
Apply all updates for a given old and new functional level
:param functional_level: constant
:param old_functional_level: constant
:param update_revision: modify the stored version
:raise DomainUpdateException:
Úrevision)ÚbaseÚattrsÚscopezERevision is not high enough. Fix is set to False.
Expected: %dGot: %dz9dn: %s
changetype: modify
replace: revision
revision: %d
N)r   Úsearchr,   r*   Ú
SCOPE_BASEÚfunctional_level_to_max_updateÚ
MIN_UPDATEÚcheck_updates_rangeÚfunctional_level_to_versionÚintr   r   Úmodify_ldifÚstr)	r-   Úfunctional_levelÚold_functional_levelÚupdate_revisionÚresÚexpected_updateÚ
min_updateÚexpected_versionÚfound_versions	   &&&&     r   Úcheck_updates_functional_levelÚ+DomainUpdate.check_updates_functional_level‚   s  € ð �j‰j×Ñ T×%9Ñ%9Ø'1 l¼#¿.¹.ð  ó Jˆô 9Ð9IÕJˆçÜ7Ð8LÕMˆJØ˜!�O‰Jä#ˆJà× Ñ  Ô=ä6Ð7GÕHÐÜ˜C �F :Õ.¨qÕ1Ó2ˆß˜}Ô?Ø—8—8�8Ü+ð -DØGWØGTðGVõ-Vó Wð Wð �J‰J×"Ñ"ð $ô ˆ4×ÑÓ Ð"2Ð3õ	$4ö 5ñ  @‰?r   c                óŒ   € V F=  pV\         8  g   V\        8”  d   \        R4      h\        V RV,          4      ! V4       K?  	  R# )z¬
Apply a list of updates which must be within the valid range of updates
:param iterator: Iterable specifying integer update numbers to apply
:raise DomainUpdateException:
úUpdate number invalid.úoperation_%dN)r8   Ú
MAX_UPDATEr   Úgetattr)r-   ÚiteratorÚops   && r   Úcheck_updates_iteratorÚ#DomainUpdate.check_updates_iterator¦   s=   € ó ˆBØ”JŒ "¤z¤/Ü+Ð,DÓEÐEô �D˜.¨2Õ-Ô.¨rÖ2ó r   c                óÂ   € TpV\         8  g   W8”  g   V\        8”  d   \        R4      hW28:  d0   V\        9  d   \	        V RV,          4      ! V4       V^,          pK5  R# )z¼
Apply a range of updates which must be within the valid range of updates
:param start: integer update to begin
:param end: integer update to end (inclusive)
:raise DomainUpdateException:
rI   rJ   N)r8   rK   r   Úmissing_updatesrL   )r-   ÚstartÚendrN   s   &&& r   r9   Ú DomainUpdate.check_updates_range³   sW   € ð ˆØ”:Ô ¤°´jÔ0@Ü'Ð(@ÓAÐAØŒiØœÔ(ä˜˜n¨rÕ1Ô2°2Ô6à�!�GŠBñ r   c                óŽ  € R\         V,          : RV P                  : 2p V P                  P                  V\        P
                  . R7      p\        T4      ^8X  g   Q h\        RT\         T,          3,          4       R#   \        P                   d0   pTP                  w  rVT\        P                  8w  d   h  Rp?R# Rp?ii ; i)zL
:param op: Integer update number
:return: True if update exists else False
zCN=Ú,)r2   r4   r3   NFzSkip Domain Update %u: %sT)Ú
update_mapr(   r   r5   r*   r6   r+   ÚargsÚERR_NO_SUCH_OBJECTÚlenÚprint)r-   rN   Ú	update_dnrA   ÚeÚnumÚmsgs   &&     r   Úupdate_existsÚDomainUpdate.update_existsÄ   s¥   � ô
 #-¨R§. .°$×2MÓ2MÐNˆ	ð	Ø—*‘*×#Ñ#¨Ü*-¯.©.Ø*,ð $ó .ˆCô �3‹x˜1Œ}Ðˆ}ÜÐ)¨R´¸BµÐ,@Õ@ÔAÙøô �|‰|ô 	ØŸ™‰JˆSØ”c×,Ñ,Ô,ØÝûð		ús   ¡,B  Â CÂ$B?Â?Cc                óÈ   € V P                   P                  R\        V,          : R\        V P                  4      : R24       \        RV\        V,          3,          4       R# )zW
Add the corresponding container object for the given update
:param op: Integer update
zdn: CN=rW   z
objectClass: container
zApplied Domain Update %u: %sN)r   Úadd_ldifrX   r=   r(   r\   ©r-   rN   s   &&r   Ú
update_addÚDomainUpdate.update_addØ   sJ   € ð
 	�
‰
×Òä�"‡~€~”s˜4×6Ñ6Ö7ð9ô 	:ô 	Ð,°´J¸rµNÐ/CÕCÖDr   c                óN   € V P                   '       g   \        RV,          4      hR# )zc
Raises an exception if not set to fix.
:param op: Integer operation
:raise DomainUpdateException:
z3Missing operation %d. Fix is currently set to FalseN)r   r   re   s   &&r   Úraise_if_not_fixÚDomainUpdate.raise_if_not_fixâ   s$   € ð �x�xˆxÜ'Ð(]Ð`bÕ(bÓcÐcñ r   c                ó  € V P                  V4      '       d   R # V P                  V4       V P                  P                  RV P                  ,          RR.R7       V P
                  '       d   V P                  V4       R # R # )NzVdn: CN=TPM Devices,%s
objectClass: top
objectClass: msTPM-InformationObjectsContainer
úrelax:0úprovision:0©Úcontrols)ra   ri   r   rd   r    r   rf   re   s   &&r   Úoperation_78ÚDomainUpdate.operation_78ì   sx   € Ø×Ñ˜b×!Ò!ÙØ×Ñ˜bÔ!à�
‰
×Ñð ð ‡n�nõð '0°Ð%?ð	 	ô 	Að ×$×$Ð$Ø�O‰O˜BÖñ %r   c                óø   € V P                  V4      '       d   R # V P                  V4       RpV P                  P                  V P                  V.R7       V P
                  '       d   V P                  V4       R # R # )NzY(OA;CIIO;WP;ea1b7b93-5e48-46d5-bc6c-4df4fda78a35;bf967a86-0de6-11d0-a285-00aa003049e2;PS)©Úadd_aces©ra   ri   r   Úupdate_aces_in_daclr    r   rf   ©r-   rN   Úaces   && r   Úoperation_79ÚDomainUpdate.operation_79û   sc   € Ø×Ñ˜b×!Ò!ÙØ×Ñ˜bÔ!àiˆà�‰×)Ñ)¨$¯.©.ÀCÀ5Ð)ÔIà×$×$Ð$Ø�O‰O˜BÖñ %r   c                óø   € V P                  V4      '       d   R # V P                  V4       RpV P                  P                  V P                  V.R7       V P
                  '       d   V P                  V4       R # R # )Nz1(OA;;CR;3e0f7e18-2c7a-4c10-ba82-4d926db99a3e;;CN)rs   ru   rw   s   && r   Úoperation_80ÚDomainUpdate.operation_80  sc   € Ø×Ñ˜b×!Ò!ÙØ×Ñ˜bÔ!àAˆà�‰×)Ñ)¨$¯.©.ÀCÀ5Ð)ÔIà×$×$Ð$Ø�O‰O˜BÖñ %r   c                óø   € V P                  V4      '       d   R # V P                  V4       RpV P                  P                  V P                  V.R7       V P
                  '       d   V P                  V4       R # R # )Nz7(OA;CIOI;RPWP;3f78c3e5-f79a-46bd-a0b8-9d18116ddc79;;PS)rs   ru   rw   s   && r   Úoperation_81ÚDomainUpdate.operation_81  sc   € Ø×Ñ˜b×!Ò!ÙØ×Ñ˜bÔ!àGˆà�‰×)Ñ)¨$¯.©.ÀCÀ5Ð)ÔIà×$×$Ð$Ø�O‰O˜BÖñ %r   c                óˆ  € V P                  V4      '       d   R # V P                  V4       \        V P                  4      p\	        V4      P                  R4      pR\        V P                  4      ,          pV P                  P                  RV: RV: 2RR.R7       V P                  '       d   V P                  V4       R # R # )NÚutf8úCN=Managed Service Accounts,%súdn: z™
changetype: add
objectClass: container
description: Default container for managed service accounts
showInAdvancedViewOnly: FALSE
nTSecurityDescriptor:: rl   rm   rn   )ra   ri   r   r&   r   Údecoder=   r    r   r<   r   rf   )r-   rN   Ú
descriptorÚmanagedservice_descrÚmanaged_service_dns   &&   r   Úoperation_75ÚDomainUpdate.operation_75'  s°   € Ø×Ñ˜b×!Ò!ÙØ×Ñ˜bÔ!ä<¸T¿_¹_ÓMˆ
Ü(¨Ó4×;Ñ;¸FÓCÐØ=Ü�—‘Óõ Ðð 	�
‰
×Òó
 !3Ò4Hð Jð *3°MÐ(Bð 	ô 	Dð ×$×$Ð$Ø�O‰O˜BÖñ %r   c                óR  € V P                  V4      '       d   R # V P                  V4       R\        V P                  4      ,          pV P                  P                  R\        V P                  4      : RV: R2RR.R7       V P                  '       d   V P                  V4       R # R # )Nrƒ   r„   zl
changetype: modify
add: otherWellKnownObjects
otherWellKnownObjects: B:32:1EB93889E40C45DF9F0C64D23BBB6237:Ú
rl   rm   rn   ©ra   ri   r=   r    r   r<   r   rf   )r-   rN   rˆ   s   && r   Úoperation_76ÚDomainUpdate.operation_76=  s™   € Ø×Ñ˜b×!Ò!ÙØ×Ñ˜bÔ!à=Ü�—‘Óõ Ðð 	�
‰
×Òô ˆ4�>‰>ÖÓ.ð	 0ð <EØ;Hð;Jð	 	ô 	Kð ×$×$Ð$Ø�O‰O˜BÖñ %r   c                ó  € V P                  V4      '       d   R # V P                  V4       V P                  P                  R\	        V P
                  4      ,          RR.R7       V P                  '       d   V P                  V4       R # R # )NzFdn: CN=PSPs,CN=System,%s
objectClass: top
objectClass: msImaging-PSPs
rl   rm   rn   )ra   ri   r   rd   r=   r    r   rf   re   s   &&r   Úoperation_77ÚDomainUpdate.operation_77P  s}   € Ø×Ñ˜b×!Ò!ÙØ×Ñ˜bÔ!à�
‰
×Ñð ô 
ˆ$�.‰.Óõð &/°Ð$>ð 	ô 	@ð
 ×$×$Ð$Ø�O‰O˜BÖñ %r   c                ó˜  € V P                  V4      '       d   R # V P                  V4       R\        V P                  4      ,          pRpVR,          pVR,          pVR,          pVR,          pVR,          pVR,          pR	V: R
V: R2pV P                  P                  V4       V P                  '       d   V P                  V4       R # R # )Nú
CN=Keys,%szO:DAzD:z&(A;CI;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;EA)z&(A;CI;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;DA)z&(A;CI;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;SY)z&(A;CI;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;DD)z&(A;CI;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;ED)ú
dn: z…
objectClass: container
description: Default container for key credential objects
ShowInAdvancedViewOnly: TRUE
nTSecurityDescriptor: rŒ   )ra   ri   r=   r    r   rd   r   rf   )r-   rN   Úkeys_dnÚsddlÚldifs   &&   r   Úoperation_82ÚDomainUpdate.operation_82r  s»   € Ø×Ñ˜b×!Ò!ÙØ×Ñ˜bÔ!à¤ T§^¡^Ó!4Õ4ˆàˆØ��ˆØÐ8Õ8ˆØÐ8Õ8ˆØÐ8Õ8ˆØÐ8Õ8ˆØÐ8Õ8‰ó “ðˆð 	�
‰
×Ñ˜DÔ!à×$×$Ð$Ø�O‰O˜BÖñ %r   c                ó.  € V P                  V4      '       d   R # V P                  V4       R\        V P                  4      ,          pR.pVR.,          pV P                  P                  W#R7       V P                  '       d   V P                  V4       R # R # )Nr”   z&(A;CI;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;KA)ú&(A;CI;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;EK)rs   )ra   ri   r=   r    r   rv   r   rf   )r-   rN   r–   Úacess   &&  r   Úoperation_83ÚDomainUpdate.operation_83–  s   € Ø×Ñ˜b×!Ò!ÙØ×Ñ˜bÔ!à¤ T§^¡^Ó!4Õ4ˆà9Ð:ˆØÐ9Ð:Õ:ˆà�‰×)Ñ)¨'Ð)ÔAà×$×$Ð$Ø�O‰O˜BÖñ %r   c                óN  € V P                  V4      '       d   R # V P                  V4       R\        V P                  4      ,          pR\        V P                  4      : RV: R2pV P                  P                  V4       V P                  '       d   V P                  V4       R # R # )Nr”   r•   zl
changetype: modify
add: otherWellKnownObjects
otherWellKnownObjects: B:32:683A24E2E8164BD3AF86AC3C2CF3F981:rŒ   r�   )r-   rN   r–   r˜   s   &&  r   Úoperation_84ÚDomainUpdate.operation_84«  s   € Ø×Ñ˜b×!Ò!ÙØ×Ñ˜bÔ!à¤ T§^¡^Ó!4Õ4‰ô ˆ4�>‰>Ö›Gð%ˆð 	�
‰
×Ñ˜tÔ$à×$×$Ð$Ø�O‰O˜BÖñ %r   c                ó@  € V P                  V4      '       d   R # V P                  V4       R.pVR\        V P                  4      ,          .,          pV P                  P                  V P                  VR7       V P                  '       d   V P                  V4       R # R # )Nz5(OA;CI;RPWP;5b47d60f-6090-40b2-9f37-2a4de88f3063;;KA)z9(OA;CI;RPWP;5b47d60f-6090-40b2-9f37-2a4de88f3063;;%s-527)rs   ©	ra   ri   r=   r&   r   rv   r    r   rf   ©r-   rN   r�   s   && r   Úoperation_85ÚDomainUpdate.operation_85Ê  s‰   € Ø×Ñ˜b×!Ò!ÙØ×Ñ˜bÔ!àHÐIˆàÐLÜ�T—_‘_Ó%õ&ð 'õ 	'ˆð 	�‰×)Ñ)¨$¯.©.À4Ð)ÔHà×$×$Ð$Ø�O‰O˜BÖñ %r   c                ó  € V P                  V4      '       d   R # V P                  V4       R.pVR.,          pV P                  P                  V P                  VR7       V P
                  '       d   V P                  V4       R # R # )NzY(OA;CIIO;SW;9b026da6-0d3c-465c-8bee-5199d7165cba;bf967a86-0de6-11d0-a285-00aa003049e2;PS)zY(OA;CIIO;SW;9b026da6-0d3c-465c-8bee-5199d7165cba;bf967a86-0de6-11d0-a285-00aa003049e2;CO)rs   ru   r¥   s   && r   Úoperation_86ÚDomainUpdate.operation_86á  sr   € Ø×Ñ˜b×!Ò!ÙØ×Ñ˜bÔ!àlÐmˆØÐlÐmÕmˆà�‰×)Ñ)¨$¯.©.À4Ð)ÔHà×$×$Ð$Ø�O‰O˜BÖñ %r   c                ó4  € V P                  V4      '       d   R # V P                  V4       R\        V P                  4      ,          .pR.pV P                  P                  V P                  VVR7       V P                  '       d   V P                  V4       R # R # )Nz*(A;CI;RPWPCRLCLOCCDCRCWDWOSDDTSW;;;%s-527)rœ   ©Údel_acesrt   r¤   ©r-   rN   r­   rt   s   &&  r   Úoperation_87ÚDomainUpdate.operation_87÷  sŒ   € Ø×Ñ˜b×!Ò!ÙØ×Ñ˜bÔ!ð AÜ˜Ÿ™Ó(õ)ð *ˆà<Ð=ˆà�‰×)Ñ)¨$¯.©.Ø3;Ø3;ð 	*ô 	=ð ×$×$Ð$Ø�O‰O˜BÖñ %r   c                ó.  € V P                  V4      '       d   R # V P                  V4       V P                  '       d   RpMRpRV P                   RV R2pV P                  P                  V4       V P                  '       d   V P                  V4       R # R # )NÚTRUEÚFALSEr•   zr
changetype: modify
add: msDS-ExpirePasswordsOnSmartCardOnlyAccounts
msDS-ExpirePasswordsOnSmartCardOnlyAccounts: rŒ   )ra   ri   r   r    r   r<   r   rf   )r-   rN   Úexpire_valuer˜   s   &&  r   Úoperation_88ÚDomainUpdate.operation_88  s’   € Ø×Ñ˜b×!Ò!ÙØ×Ñ˜bÔ!à××ÐØ!‰Là"ˆLðØ	‡^�^Ðð .ð /;¨^ð <ð	ˆð 	�
‰
×Ñ˜tÔ$à×$×$Ð$Ø�O‰O˜BÖñ %r   c                ó   € V P                  V4      '       d   R # V P                  V4       R.pR.pV P                  P                  V P                  VVR7       V P
                  '       d   V P                  V4       R # R # )Nrœ   z5(OA;CI;RPWP;5b47d60f-6090-40b2-9f37-2a4de88f3063;;EK)r¬   ru   r®   s   &&  r   Úoperation_89ÚDomainUpdate.operation_89:  sx   € Ø×Ñ˜b×!Ò!ÙØ×Ñ˜bÔ!ð
 =Ð=ˆØKÐLˆà�‰×)Ñ)¨$¯.©.Ø3;Ø3;ð 	*ô 	=ð ×$×$Ð$Ø�O‰O˜BÖñ %r   )r   r   r   r    r&   r(   r   r   r,   r   r"   r   )FFT)NF)r   r   )r   r   r   r   Ú__doc__r.   rF   rO   r9   ra   rf   ri   rp   ry   r|   r   r‰   rŽ   r‘   r™   rž   r¡   r¦   r©   r¯   rµ   r¸   r   Ú__classdictcell__)Ú__classdict__s   @r   r   r   [   sƒ   ø‡ € Ù<ô"OôH"5òH3ôò"ò(Eòdò ò
 ò
 ò
 ò" ò, ò& òD òH ò* ò> ò. ò, ò> ÷H ð  r   r   )r*   Úbase64r   Úsambar   Úsamba.dcerpcr   Úsamba.descriptorr   Ú
samba.dsdbr   r   r	   r
   r   r8   rK   rX   r7   r:   rR   Ú	Exceptionr   Úobjectr   r   r   r   Ú<module>rÄ      sü   ðó& Ý Ý Ý !õ÷õ ð €
Ø€
ð Ð.ØÐ.ØÐ.àÐ.ØÐ.ØÐ.ØÐ.ð Ð.ð Ð.ØÐ.ØÐ.ØÐ.ØÐ.ØÐ.àÐ.ð5€
ð> ˜RØ Ø˜RØ Ø˜Rð"Ð ð ˜QØ Ø˜QØ Ø˜RðÐ ð €ô	˜Iô 	ôo �6ö o r   