+
    4Ssi_> ã                   ó  € R t ^ RIHt ^ RIHt ^ RIHtHtHtH	t	 ^ RI
t
^ RIt^ RIt^ RIHtHt ^ RIHtHtHtHtHtHtHtHt ^ RIHtHt ^ RIHtHtHtHtH t H!t! ^ R	I"H#t# ^ R
I$H%t% ^ RIH&t& ^ RI'H(t( ^ RI)H*t* ^ RIH+t+ ^ RIH,t, ^ RI-H.t. ^ RIH/t/H0t0 ^ RIH1t1 ^ RI2H3t3H4t4H5t5 ^ RI6t6^ RI7t7^ RI8t8^ RI9t9^ RI:t:^ RI;H<t< ^ RI=H>t> ^ RI?H@t@ ^ RIHAtAHBtB  ! R R]C4      tD ! R R]E4      tFR#R ltGR#R ltHR$R ltI ! R R ]F4      tJ ! R! R"]J4      tKR# )%zJoining a domain.)Úsystem_session)ÚSamDB)ÚgensecÚLdbÚ	drs_utilsÚarcfour_encryptN)Úndr_packÚ
ndr_unpack)ÚsecurityÚdrsuapiÚmiscÚnbtÚlsaÚdrsblobsÚ	dnsserverÚdnsp)ÚCredentialsÚDONT_USE_KERBEROS)Úsecretsdb_self_joinÚ	provisionÚprovision_fillÚFILL_DRSÚFILL_SUBDOMAINÚDEFAULTSITE)Ú
setup_path)ÚSchema)Ú
descriptor)ÚNet)Úsetup_bind9_dns)Úread_and_sub_file)Úwerror)Ú	b64encode)ÚWERRORErrorÚNTSTATUSError)Úsd_utils)ÚARecordÚ
AAAARecordÚCNAMERecord)ÚOrderedDict)Ú
get_string)ÚCommandError)ÚdsdbÚfunctional_levelc                   ó2   a a€ ] tR t^6t oV 3R ltRtVtV ;t# )ÚDCJoinExceptionc                ó4   <€ \         SV `  R V,          4       R# )zCan't join, error: %sN)ÚsuperÚ__init__)ÚselfÚmsgÚ	__class__s   &&€Ú,/usr/lib/python3/dist-packages/samba/join.pyr1   ÚDCJoinException.__init__8   s   ø€ Ü‰ÑÐ0°3Õ6Ö7ó    © )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r1   Ú__static_attributes__Ú__classdictcell__Ú__classcell__©r4   Ú__classdict__s   @@r5   r.   r.   6   s   ù‡ € ÷8õ 8r7   r.   c                   ó  a € ] tR t^<t o RtR&R ltR'R ltR'R l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(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'V t(R# ))ÚDCJoinContextzPerform a DC join.Nc                ó0  € Wn         W0n        W@n        WPn        Wpn        W n        WÐn        Wàn        Wðn        VV n	        WÀn
        R V n        . V n        . V n        V P                  P                  VP                  4       \         P"                  ,          4       \%        V P                  V P                  R7      V n        W n        VV n        V'       d$   VV n        V P,                  P.                  V n        MÜV P(                  '       d&   Vf!   V P1                  V P(                  4      V n        MdV P                   P3                  RV,          4       V P5                  V4      V n        V P                   P3                  RV P(                  ,          4       \7        RV P(                  ,          \9        4       V P                  V P                  R7      V n        V P                  f   \:        V n         V P,                  P=                  \>        P@                  . R7       \I        T P,                  PK                  4       4      T n&        \I        T P,                  PO                  4       4      T n(        \I        T P,                  PS                  4       4      T n*        \I        T P,                  PW                  4       4      T n,        \Z        P\                  ! T P,                  P_                  4       4      T n0        T P`                  T n1        T Pe                  4       T n3        T Pi                  4       T n5        \l        Pn                  ! \I        \p        Pr                  ! 4       4      4      T n:        T P,                  Pw                  4       T n<        T P{                  4       T n>        T P                  4       T n@        T	e   Y�nA        M\„        P†                  ! ^x^x4      T nA        T P,                  P‰                  4       T nE        T'       EdÀ   Y`nF        RT PŒ                  ,          T nG        RT PŒ                  : R	T P                  : R
T PX                  : 2T nH        RT P�                  ,          T nI        RT PŒ                  : RT PL                  : 2T nJ        T PŒ                  P—                  4       : RT PŠ                  : 2T nL        T P,                  P›                  4       T nN        RT PL                  ,          pT PŸ                  T4      '       d   RT PŒ                  : RT: 2T nP        MR T nP        RT PŒ                  ,          RT P˜                  ,          RT P˜                  : RT Pœ                  : 2.T nQ        T P,                  P=                  \>        P@                  R.T PL                  R7      pT^ ,          R,          ^ ,          T nR        RT PL                  ,          T nS        RT PP                  ,          T nT        R\>        Pª                  ! T P¦                  4      ,          pT P,                  P=                  \>        P¬                  . T P,                  P¯                  4       TR7      pTf	   RT nX        M)\³        T4      ^ 8X  d   RT nX        \µ        R4       MY°nX        T PŠ                  T n[        R T n\        \º        P¼                  \º        P¾                  ,          \º        PÀ                  ,          \º        PÂ                  ,          \º        PÄ                  ,          T nc        R T nd        R T ne        R T nf        RT ng        R T nh        R T n]        R T ni        RT nj        R T nk        R T nl        R T nm        R T nn        RT no        R #   \>        PB                   d    pTPD                  w  pp\G        T4      hR p?ii ; i)N)ÚcredsÚlpz&Finding a writeable DC for domain '%s'zFound DC %sú	ldap://%s©ÚurlÚsession_infoÚcredentialsrF   ©ÚscopeÚattrsú%s$úCN=z,CN=Servers,CN=z
,CN=Sites,zCN=NTDS Settings,%sz,OU=Domain Controllers,Ú.zGCN=Topology,CN=Domain System Volume,CN=DFSR-GlobalSettings,CN=System,%sÚ,zHOST/%szGC/Ú/ÚrIDManagerReference)rM   rN   ÚbasezDC=DomainDnsZones,%szDC=ForestDnsZones,%sú$(&(objectClass=crossRef)(ncName=%s))©rM   rN   rU   Ú
expressionÚNONEzCNO DNS zone information found in source domain, not replicating DNSF)pÚloggerrE   rF   ÚsiteÚ	targetdirÚ	use_ntvfsÚplaintext_secretsÚbackend_storeÚbackend_store_sizeÚfilter_secretsÚpromote_existingÚpromote_from_dnÚnc_listÚfull_nc_listÚset_gensec_featuresÚget_gensec_featuresr   ÚFEATURE_SEALr   ÚnetÚserverÚforced_local_samdbÚsamdbrI   Úfind_dc_siteÚinfoÚfind_dcr   r   r   ÚsearchÚldbÚ
SCOPE_BASEÚLdbErrorÚargsr.   ÚstrÚget_default_basednÚbase_dnÚget_root_basednÚroot_dnÚget_schema_basednÚ	schema_dnÚget_config_basednÚ	config_dnr
   Údom_sidÚget_domain_sidÚdomsidÚ	forestsidÚget_domain_nameÚdomain_nameÚget_forest_domain_nameÚforest_domain_namer   ÚGUIDÚuuidÚuuid4Úinvocation_idÚget_dsServiceNameÚ
dc_ntds_dnÚget_dnsHostNameÚdc_dnsHostNameÚget_behavior_versionÚbehavior_versionÚ	acct_passÚsambaÚ generate_random_machine_passwordÚdomain_dns_nameÚ	dnsdomainÚmynameÚsamnameÚ	server_dnÚntds_dnÚacct_dnÚlowerÚdnshostnameÚforest_dns_nameÚ	dnsforestÚ	dn_existsÚtopology_dnÚSPNsÚrid_manager_dnÚdomaindns_zoneÚforestdns_zoneÚbinary_encodeÚSCOPE_ONELEVELÚget_partitions_dnÚdns_backendÚlenÚprintÚrealmÚ	tmp_samdbr   ÚDRSUAPI_DRS_INIT_SYNCÚDRSUAPI_DRS_PER_SYNCÚDRSUAPI_DRS_GET_ANCÚDRSUAPI_DRS_GET_NC_SIZEÚDRSUAPI_DRS_NEVER_SYNCEDÚreplica_flagsÚnever_reveal_sidÚ
reveal_sidÚconnection_dnÚRODCÚ	krbtgt_dnÚ	managedbyÚ	subdomainÚ	adminpassÚpartition_dnÚdns_a_dnÚdns_cname_dnÚforce_all_ips)ÚctxrZ   rj   rE   rF   r[   Únetbios_namer\   ÚdomainÚmachinepassr]   r§   rb   r^   r_   r`   rk   ra   ÚeÚenumÚestrÚtopology_baseÚres_rid_managerÚexprÚres_domaindnss   &&&&&&&&&&&&&&&&&&       r5   r1   ÚDCJoinContext.__init__?   sŒ  € ð Œ
ØŒ	ØŒØŒØ!ŒØ!ŒØ 1ÔØ)ÔØ!3ÔØ+ˆÔà/ÔØ"ˆÔàˆŒØˆÔà�	‰	×%Ñ% e×&?Ñ&?Ó&AÄF×DWÑDWÕ&WÔXÜ˜CŸI™I¨#¯&©&Ô1ˆŒàŒ
Ø!3ˆÔçØ*ˆCŒIØŸ™Ÿ™ˆC�Jà�z�zˆzà’<Ø"×/Ñ/°·
±
Ó;�C”Høð —
‘
—‘Ð HÈ6Õ QÔRØ Ÿ[™[¨Ó0�”
Ø—
‘
—‘ °·
±
Õ :Ô;Ü +°·
±
Õ":Ü+9Ó+;Ø*-¯)©)¸¿¹ô@ˆCŒIð �8‰8ÒÜ"ˆCŒHð	(Ø�I‰I×Ñ¤3§>¡>¸ÐÔ<ô
 ˜#Ÿ)™)×6Ñ6Ó8Ó9ˆŒÜ˜#Ÿ)™)×3Ñ3Ó5Ó6ˆŒÜ˜CŸI™I×7Ñ7Ó9Ó:ˆŒÜ˜CŸI™I×7Ñ7Ó9Ó:ˆŒÜ×%Ò% c§i¡i×&>Ñ&>Ó&@ÓAˆŒ
ØŸ
™
ˆŒØ×-Ñ-Ó/ˆŒØ!$×!;Ñ!;Ó!=ˆÔÜ ŸIšI¤c¬$¯*ª*«,Ó&7Ó8ˆÔàŸ™×4Ñ4Ó6ˆŒØ ×0Ñ0Ó2ˆÔØ"×7Ñ7Ó9ˆÔàÒ"Ø'�Mä!×BÒBÀ3ÈÓLˆCŒMàŸ	™	×1Ñ1Ó3ˆŒ÷ ˆ<à%ŒJØ #§*¡*Õ,ˆC�KØDGÇJÄJÐPS×PXÔPXÐZ]×ZgÓZgÐhˆCŒMØ/°#·-±-Õ?ˆC�KØ>A¿j¼jÈ#Ï+Ë+ÐVˆCŒKØ),¯©×)9Ñ)9Ö);¸S¿]»]ÐKˆCŒOØŸI™I×5Ñ5Ó7ˆCŒMàeÐhk×hsÑhsÕsˆMØ�}‰}˜]×+Ó+Ø03·
´
ºMÐ"J�•à"&�”à! C§J¡JÕ.Ø! C§O¡OÖ3Ø&)§o¤o°s·}³}ÐEðGˆCŒHð "Ÿi™i×.Ñ.´S·^±^Ø6KÐ5LØ47·K±Kð /ó AˆOð "1°Õ!3Ð4IÕ!JÈ1Õ!MˆCÔà3°c·k±kÕAˆÔØ3°c·k±kÕAˆÔà5¼×8IÒ8IÈ#×J\ÑJ\Ó8]Õ]ˆØŸ	™	×(Ñ(¬s×/AÑ/AØ/1Ø.1¯i©i×.IÑ.IÓ.KØ48ð )ó :ˆð ÒØ$ˆC�Oä�=Ó! QÔ&Ø"(�”ÜÐ[Õ\à"-”à—M‘MˆŒ	àˆŒä$×:Ñ:Ü$×9Ñ9õ:ä$×8Ñ8õ9ô %×<Ñ<õ=ô %×=Ñ=õ	>ˆÔð  $ˆÔØˆŒØ ˆÔØˆŒØˆŒØˆŒØˆŒØˆŒØˆŒØˆÔàˆŒØˆÔð "ˆÖøôA �|‰|ô 	(ØŸ6™6‰LˆT�4Ü! $Ó'Ð'ûð	(ús   Ç++]! Ý!^Ý6^Þ^c                ób  € V'       dU    V P                   P                  V\        P                  R .R7      pT F   pT P                  TP                  RR7       K"  	   V P                   P                  V4       \        RV,          4       R#   \         d     R# i ; i  \         d     R# i ; i)Údn©rU   rM   rN   NT©Ú	recursivez
Deleted %s)	rl   rp   rq   r¥   Ú	ExceptionÚdel_noerrorrË   Údeleter©   )r¾   rË   rÎ   ÚresÚrs   &&&  r5   rÐ   ÚDCJoinContext.del_noerrorØ   sš   € ßðØ—i‘i×&Ñ&¨B´c×6HÑ6HÐQUÐPVÐ&ÓW�ó �Ø—‘ §¡°�Ö5ñ ð	Ø�I‰I×Ñ˜RÔ Ü�, Õ#Ö$øô ô Úðûô ô 	Úð	ús#   Š-B Á-B ÂBÂBÂB.Â-B.c           
     óÜ  € V P                   P                  V P                   P                  4       R \        P                  ! V P
                  4      ,          RR.R7      p\        V4      ^ 8X  d   R# V'       Eg   \        4       pVP                  V P                  4        VP                  V P                  4       VP                  V P                  P                  4       4       \        RV P                  ,          \!        4       W0P                  R7      pVP                  \        P"                  RR.R	7      pV^ ,          R,          ^ ,          V^ ,          R,          ^ ,          8X  d   \%        R
V P
                  ,          4      h V P'                  V^ ,          P(                  RR7       V^ ,          P+                  R^ R7      pVe"   W`n        V P'                  V P,                  4       V P                   P                  V P                   P                  4       R\        P                  ! RV P.                  ,          4      : R\        P                  ! RV P0                  ,          4      : R2. R7      pV'       d%   V P'                  V^ ,          P(                  RR7       V P                   P                  V P                   P                  4       R\        P                  ! RV P.                  ,          4      ,          . R7      pV'       d^   \%        R\        P                  ! RV P.                  ,          4      : R\        P                  ! RV P0                  ,          4      : 24      hR#     ELæ; i)úsAMAccountName=%súmsDS-krbTgtLinkÚ	objectSID©rU   rX   rN   NrG   rH   Ú ÚtokenGroups)rM   rU   rN   z“Not removing account %s which looks like a Samba DC account matching the password we already have.  To override, remove secrets.ldb and secrets.tdbTrÍ   úmsDS-KrbTgtLink)Úidxz(&(sAMAccountName=údns-%sz)(servicePrincipalName=zdns/%sz))z(sAMAccountName=%s)zNot removing account zU which looks like a Samba DNS service account but does not have servicePrincipalName=)rl   rp   rv   rq   r¤   r–   r¨   r   ÚguessrF   Úset_machine_accountÚset_kerberos_staterE   Úget_kerberos_stater   rj   r   rr   r.   rÐ   rË   ÚgetÚnew_krbtgt_dnr•   r›   )r¾   ÚforcerÒ   rE   Úmachine_samdbÚ	token_resr¶   s   &&     r5   Úcleanup_old_accountsÚ"DCJoinContext.cleanup_old_accountsæ   s­  € Ø�i‰i×Ñ C§I¡I×$@Ñ$@Ó$BØ*=Ä×@QÒ@QÐRU×R]ÑR]Ó@^Õ*^Ø&7¸Ð%Eð ó Gˆô ˆs‹8�qŒ=ÙçˆuÜ“MˆEØ�K‰K˜Ÿ™Ôð9Ø×)Ñ)¨#¯&©&Ô1Ø×(Ñ(¨¯©×)EÑ)EÓ)GÔHÜ %¨+¸¿
¹
Õ*BÜ3AÓ3CØ27¿F¹Fô!D�ð *×0Ñ0´s·~±~ÈBÐWdÐVeÐ0Óf�	Ø˜Q•< Õ.¨qÕ1Ø˜!•f˜[Õ)¨!Õ,ô-ä)ð +\ð -0¯K©Kõ	+8ó 9ð 9ð-ð 	�‰˜˜A�Ÿ	™	¨TˆÔ2à˜•F—J‘JÐ0°a�JÓ8ˆ	ØÒ Ø )ÔØ�O‰O˜C×-Ñ-Ô.à�i‰i×Ñ C§I¡I×$@Ñ$@Ô$Bä #× 1Ò 1°(¸S¿Z¹ZÕ2GÖ HÜ #× 1Ò 1°(¸S¿_¹_Õ2LÖ Mð+Oð &(ð	 ó )ˆ÷
 Ø�O‰O˜C �FŸI™I°ˆOÔ6à�i‰i×Ñ C§I¡I×$@Ñ$@Ó$BØ*?Ä#×BSÒBSÐT\Ð_b×_iÑ_iÕTiÓBjÕ*jØ%'ð ó )ˆ÷ Ý!ô $'×#4Ò#4°XÀÇ
Á
Õ5JÖ#KÜ#&×#4Ò#4°XÀÇÁÕ5OÕ#Pð	#Ró Sð Sñ øð=Úús   ÂA5M& Í&M+c                óÂ  € V P                   '       g   V P                  VR7       V P                  e   V P                  V P                  4       V P                  e   V P                  V P                  4       V P                  V P
                  4       V P                  V P                  RR7       V P                  '       d   V P                  V P                  4       V P                  '       d   V P                  V P                  4       V P                   '       Edh   Rp\        P                  ! RV P                  : RV: R2V P                  V P                  4      p\        P                  ! 4       p\        P                  ! 4       Vn        VP#                  R	V\$        P&                  4      p\        P(                  ! 4       pV P*                  Vn        VP/                  WV\        P0                  4      pVP3                  WWP4                  P6                  4       \        P(                  ! 4       pV P8                  Vn        VP/                  WV\        P0                  4      pVP3                  WWP4                  P6                  4       V P:                  '       d   V P                  V P:                  4       V P<                  '       d   V P                  V P<                  4       R# R# )
z$Remove any DNs from a previous join.)rå   NTrÍ   Úsignúncacn_ip_tcp:Ú[Ú]rÚ   )r¸   rè   r´   rÐ   r¶   r˜   r—   rŸ   rº   r   Úlsarpcrj   rF   rE   ÚObjectAttributeÚQosInfoÚsec_qosÚOpenPolicy2r
   ÚSEC_FLAG_MAXIMUM_ALLOWEDÚStringrª   ÚstringÚQueryTrustedDomainInfoByNameÚ!LSA_TRUSTED_DOMAIN_INFO_FULL_INFOÚDeleteTrustedDomainÚinfo_exÚsidr…   r»   r¼   )r¾   rå   Úbinding_optionsÚlsaconnÚ
objectAttrÚ
pol_handleÚnamern   s   &&      r5   Úcleanup_old_joinÚDCJoinContext.cleanup_old_join  sî  € ð �}�}ˆ}Ø×$Ñ$¨5Ð$Ô1à×ÑÒ(Ø�O‰O˜C×-Ñ-Ô.Ø�=‰=Ò$Ø�O‰O˜CŸM™MÔ*Ø�‰˜Ÿ™Ô$Ø�‰˜Ÿ™°ˆÔ6Ø�?�?ˆ?Ø�O‰O˜CŸO™OÔ,Ø××ÐØ�O‰O˜C×,Ñ,Ô-à�=�=‰=Ø$ˆOÜ—j“j¸#¿*¼*ÃoÐ!VØ!$§¡¨¯©ó4ˆGô ×,Ò,Ó.ˆJÜ!$§¢£ˆJÔà ×,Ñ,¨RØ-7Ü-5×-NÑ-NóPˆJô —:’:“<ˆDØŸ)™)ˆDŒKØ×7Ñ7¸
Ì#×JoÑJoÓpˆDà×'Ñ'¨
·L±L×4DÑ4DÔEä—:’:“<ˆDØ×0Ñ0ˆDŒKØ×7Ñ7¸
Ì#×JoÑJoÓpˆDà×'Ñ'¨
·L±L×4DÑ4DÔEà�<�<ˆ<Ø�O‰O˜CŸL™LÔ)à××ÐØ�O‰O˜C×,Ñ,Ö-ñ r7   c                ó  € V P                   '       d   \        R4      hV P                  P                  V P                  P	                  4       R\
        P                  ! V P                  4      ,          . ROR7      p\        V4      ^ 8X  d   \        RV P                  ,          4      hRV^ ,          9   g   RV^ ,          9   g   RV^ ,          9   d   \        R	V P                  ,          4      h\        V^ ,          R,          ^ ,          4      \        P                  P                  \        P                  P                  ,          ,          ^ 8X  d   \        R
V P                  ,          4      hV^ ,          P                  V n        R# )z]confirm that the account is just a bare NT4 BDC or a member server, so can be safely promotedz Can not promote into a subdomainrÖ   ÚuserAccountControlÚserverReferenceBLÚrIDSetReferencesrÙ   zcCould not find domain member account '%s' to promote to a DC, use 'samba-tool domain join' instead'rÜ   zhAccount '%s' appears to be an active DC, use 'samba-tool domain join' if you must re-create this accountzZAccount %s is not a domain member or a bare NT4 BDC, use 'samba-tool domain join' instead'N)r×   r  r  r  )r¸   rÏ   rl   rp   rv   rq   r¤   r–   r¨   Úintr‘   r+   ÚUF_WORKSTATION_TRUST_ACCOUNTÚUF_SERVER_TRUST_ACCOUNTrË   rc   ©r¾   rÒ   s   & r5   Úpromote_possibleÚDCJoinContext.promote_possibleJ  so  € à�=�=ˆ=äÐ>Ó?Ð?à�i‰i×Ñ C§I¡I×$@Ñ$@Ó$BØ*=Ä×@QÒ@QÐRU×R]ÑR]Ó@^Õ*^Ú%wð ó yˆô ˆs‹8�qŒ=Üð  Bð  EH÷  EPñ  EPõ  Pó  Qð  QØ  A¥Ô&Ð*=ÀÀQÅÔ*GÐK]ÐadÐefÕagÔKgÜð  Gð  JM÷  JUñ  JUõ  Uó  Vð  VÜ��A•Ð+Õ,¨QÕ/Ó0´E·J±J×4[Ñ4[Ü49·J±J×4VÑ4Võ5Wõ XØ[\ô]äÐxÐ{~÷  |Gñ  |Gõ  Gó  Hð  Hà! !�fŸi™iˆÖr7   c                ó&  €  V P                   P                  V\        P                  \        P                  ,          \        P
                  ,          R7      V n        T P                  P                  e7   T P                  P                  R8w  d   T P                  P                  T n        T P                  P                  #   \         d*   p\        RT: RTP                  ^,          : 24      hRp?i\         d    \        RT,          4      hi ; i)z(find a writeable DC for the given domain)rÀ   Úflagsz*Failed to find a writeable DC for domain 'z': Nz-Failed to find a writeable DC for domain '%s'rÚ   )ri   Úfinddcr   ÚNBT_SERVER_LDAPÚNBT_SERVER_DSÚNBT_SERVER_WRITABLEÚ	cldap_retr#   r*   rt   rÏ   Úclient_siter[   Úpdc_dns_name)r¾   rÀ   Úerrors   && r5   ro   ÚDCJoinContext.find_dc]  sß   € ð	YØŸG™GŸN™N°&Ä×@SÑ@SÔVY×VgÑVgÕ@gÔjm÷  kBñ  kBõ  AB˜Nó  CˆCŒMð �=‰=×$Ñ$Ò0°S·]±]×5NÑ5NÐRTÔ5TØ—}‘}×0Ñ0ˆCŒHØ�}‰}×)Ñ)Ð)øô ô 	8ÝÛ &¨¯
©
°1¯ð 7ó 8ð 8ûäô 	YÜÐNÐQWÕWÓXÐXð	Yús   ‚AC  Ã DÃ$C/Ã/DÃ<Dc                óà   € R pV P                   P                  V\        P                  \        P                  ,          R7      pVP
                  e   VP
                  R8w  d   VP
                  pV# )N)Úaddressr  rÚ   )ri   r  r   r  r  r  )r¾   rj   r[   r  s   &&  r5   rm   ÚDCJoinContext.find_dc_sitej  s^   € ØˆØ—G‘G—N‘N¨6Ü),×)<Ñ)<¼s×?PÑ?PÕ)Pð #ó Rˆ	à× Ñ Ò,°×1FÑ1FÈ"Ô1LØ×(Ñ(ˆDØˆr7   c                ó   € V P                   P                  V P                  \        P                  R .R7      pR V^ ,          9   d!   \        V^ ,          R ,          ^ ,          4      # \        P                  P                  # )úmsDS-Behavior-VersionrÌ   )	rl   rp   rw   rq   rr   r  r‘   r+   ÚDS_DOMAIN_FUNCTION_2000r
  s   & r5   rŽ   Ú"DCJoinContext.get_behavior_versionr  s_   € Ø�i‰i×Ñ C§K¡K´s·~±~ÐNeÐMfÐÓgˆØ" c¨!¥fÔ,Ü�s˜1•vÐ5Õ6°qÕ9Ó:Ð:ä—:‘:×5Ñ5Ð5r7   c                óœ   € V P                   P                  R \        P                  R.R7      p\	        V^ ,          R,          ^ ,          4      # )rÚ   ÚdnsHostNamerÌ   )rl   rp   rq   rr   ru   r
  s   & r5   rŒ   ÚDCJoinContext.get_dnsHostNamey  s<   € Ø�i‰i×Ñ B¬c¯n©nÀ]ÀOÐÓTˆÜ�3�q•6˜-Õ(¨Õ+Ó,Ð,r7   c                óJ  € V P                   P                  4       pV P                   P                  V\        P                  R.R\        P
                  ! \        V P                   P                  4       4      4      ,          R7      p\        V^ ,          R,          ^ ,          4      # ©z9get netbios name of the domain from the partitions recordÚnETBIOSNamez	ncName=%s)rU   rM   rN   rX   )rl   r¦   rp   rq   r¥   r¤   ru   rv   ©r¾   Úpartitions_dnrÒ   s   &  r5   r‚   ÚDCJoinContext.get_domain_name}  s|   € àŸ	™	×3Ñ3Ó5ˆØ�i‰i×Ñ M¼×9KÑ9KÐTaÐSbØ*5¼×8IÒ8IÌ#ÈcÏiÉi×NjÑNjÓNlÓJmÓ8nÕ*nð ó pˆä�3�q•6˜-Õ(¨Õ+Ó,Ð,r7   c                óJ  € V P                   P                  4       pV P                   P                  V\        P                  R.R\        P
                  ! \        V P                   P                  4       4      4      ,          R7      p\        V^ ,          R,          ^ ,          4      # r#  )rl   r¦   rp   rq   r¥   r¤   ru   rx   r%  s   &  r5   r„   Ú$DCJoinContext.get_forest_domain_name„  s|   € àŸ	™	×3Ñ3Ó5ˆØ�i‰i×Ñ M¼×9KÑ9KÐTaÐSbØ*5¼×8IÒ8IÌ#ÈcÏiÉi×NgÑNgÓNiÓJjÓ8kÕ*kð ó mˆä�3�q•6˜-Õ(¨Õ+Ó,Ð,r7   c                ó&  € V P                   P                  V P                  . R\        P                  ! V P
                  4      \        P                  \        P                  P                  3,          R7      p\        V^ ,          P                  4      # )z7get the parent domain partition DN from parent DNS namez9(&(objectclass=crossRef)(dnsRoot=%s)(systemFlags:%s:=%u)))rU   rN   rX   )rl   rp   r}   rq   r¤   Úparent_dnsdomainÚOID_COMPARATOR_ANDr‘   r+   ÚSYSTEM_FLAG_CR_NTDS_DOMAINru   rË   r
  s   & r5   Úget_parent_partition_dnÚ%DCJoinContext.get_parent_partition_dn‹  sp   € à�i‰i×Ñ C§M¡M¸Ø*eÜ #× 1Ò 1°#×2FÑ2FÓ GÜ #× 6Ñ 6¼¿
¹
×8]Ñ8]ð _õ+_ð ó `ˆô �3�q•6—9‘9‹~Ðr7   c                óÔ   € V P                   P                  R\        P                  R.R7      pV^ ,          R,          ^ ,          p\	        V P                   P                  RV4      4      # )z]get the SID of the connected user. Only works with w2k8 and later,
so only used for RODC joinrÚ   rÛ   rÌ   rØ   )rl   rp   rq   rr   r)   Úschema_format_value)r¾   rÒ   Úbinsids   &  r5   Ú	get_mysidÚDCJoinContext.get_mysid“  sT   € ð �i‰i×Ñ B¬c¯n©nÀ]ÀOÐÓTˆØ�Q•˜Õ& qÕ)ˆÜ˜#Ÿ)™)×7Ñ7¸ÀVÓLÓMÐMr7   c                óî   €  V P                   P                  V\        P                  . R7      pR#   \        P                   d0   pTP
                  w  rET\        P                  8X  d    Rp?R# h Rp?ii ; i)zcheck if a DN existsrÌ   NFT)rl   rp   rq   rr   rs   rt   ÚERR_NO_SUCH_OBJECT)r¾   rË   rÒ   Úe5rÃ   rÄ   s   &&    r5   rž   ÚDCJoinContext.dn_existsš  s`   € ð	Ø—)‘)×"Ñ"¨´#·.±.ÈÐ"ÓKˆCñ øô �|‰|ô 	ØŸ7™7‰LˆTØ”s×-Ñ-Ô-ÝØûð		ús   ‚,0 °A4Á#A/Á.A/Á/A4c                ó>  € \        RV P                  ,          4       RV P                  RRR\        \        P                  P
                  \        P                  P                  ,          4      RRRR	V P                  ,          /pV P                  P                  VR
.4       V P                  P                  V P                  \        P                  R.R7      pV^ ,          R,          ^ ,          V n        \        RV P                  ,          4       \        P                  ! 4       p\        P                  ! V P                  V P                   4      Vn        \        P$                  ! V P                  \        P&                  R4      VR&   V P                  P)                  V4       RV P                  : RV P*                  : 2V n        \        RV P                  : RV P,                  : 24       V P                  P/                  V P                  V P,                  4       R# )z#RODCs need a special krbtgt accountú	Adding %srË   ÚobjectclassÚuserÚuseraccountcontrolÚshowinadvancedviewonlyÚTRUEÚdescriptionzkrbtgt for %súrodc_join:1:1ÚsamAccountNamerÌ   zGot krbtgt_name=%sr×   rP   ú
,CN=Users,z	Renaming z to N)r©   r¶   ru   r‘   r+   ÚUF_NORMAL_ACCOUNTÚUF_ACCOUNTDISABLEr–   rl   Úaddrp   rq   rr   Úkrbtgt_nameÚMessageÚDnr™   rË   ÚMessageElementÚFLAG_MOD_REPLACEÚmodifyrw   rä   Úrename)r¾   ÚrecrÒ   Úms   &   r5   Úadd_krbtgt_accountÚ DCJoinContext.add_krbtgt_account¥  sw  € äˆk˜CŸM™MÕ)Ô*à�#—-‘-Ø˜6Ø ¤#¤e§j¡j×&BÑ&BÜ&+§j¡j×&BÑ&Bõ'Có #Dà$ fØ˜?¨S¯[©[Õ8ð:ˆð 	�	‰	�‰�c˜OÐ,Ô-ð �i‰i×Ñ C§M¡M¼¿¹ÐP`ÐOaÐÓbˆØ˜a�&Ð!1Õ2°1Õ5ˆŒäÐ" S§_¡_Õ4Ô5ä�KŠK‹MˆÜ�vŠv�c—i‘i §¡Ó-ˆŒÜ"×1Ò1°#·-±-Ü25×2FÑ2FÐHYó [ˆÐ
Ñà�	‰	×Ñ˜Õà36·?´?ÀCÇKÃKÐPˆÔÝ S§]¤]°C×4EÓ4EÐFÔGØ�	‰	×Ñ˜Ÿ™¨×(9Ñ(9Ö:r7   c                ó>  € RpV P                   P                  4       ^	8¼  d
   VR,          pRV P                  : RV: R2p\        P                  ! W P                   V P                  4      V n        \
        P                  ! V P                  4      w  V n        V n        R# )z.make a DRSUAPI connection to the naming masterÚsealú,printrì   rí   rî   N)	rF   Ú	log_levelrj   r   rE   r   Ú
drs_DsBindÚdrsuapi_handleÚbind_supported_extensions)r¾   rü   Úbinding_strings   &  r5   Údrsuapi_connectÚDCJoinContext.drsuapi_connectÂ  sq   € à ˆØ�6‰6×ÑÓ Ô"Ø˜xÕ'ˆOøØ25·*´*»oÐNˆÜ—o’o n·f±f¸c¿i¹iÓHˆŒÜ>G×>RÒ>RÐSV×S^ÑS^Ó>_Ñ;ˆÔ	˜SÖ:r7   c           
     ó  € \        V P                  V P                  R7      V n        \	        \        4       RRV P                  V P                  RRR7      V n        V P                  P                  V P                  4       R# )z2create a temporary samdb object for schema queries)ÚschemadnNF)rJ   rI   Úauto_connectrK   rF   Úglobal_schemaÚam_rodc)
r   r€   r{   Ú
tmp_schemar   r   rE   rF   r«   Ú
set_schema©r¾   s   &r5   Úcreate_tmp_samdbÚDCJoinContext.create_tmp_samdbË  s[   € ä §
¡
Ø),¯©ô8ˆŒä¬>Ó+;ÀÐTYØ*-¯)©)¸¿¹ÈeØ&+ô-ˆŒð 	�‰× Ñ  §¡Ö0r7   c           	     ó  € V P                   f   V P                  4        V P                  f   V P                  4        . pV EFP  p\         P                  ! 4       pVR,          Vn        . pV F©  pVR8X  d   K  \        W6,          \        4      '       g   W6,          .pMW6,          pV Uu. uF,  p\        V\        4      '       d   VP                  R4      MTNK.  	  ppV P                  P                  V P                  Wg4      p	VP                  V	4       K«  	  \         P                  ! 4       p
\        V4      V
n        WZn        \         P                   ! 4       pWKn        W«n        \         P&                  ! 4       pW¼n        VP                  V4       EKS  	  \         P*                  ! 4       pV^ ,          Vn        VP,                  pVR,           F  pWþn        TpK  	  V P                   P1                  V P2                  ^V4      w  ppV^8X  d”   VP4                  \         P6                  8w  d(   \9        RVP4                  ,          4       \;        R4      hVP<                  ^ ,          \>        P@                  8w  d(   \9        RVP<                  ,          4       \;        R4      hV^8X  EdU   VPB                  ^8w  d   \;        RVPB                  ,          4      hVPD                  PF                  ^ ,          \>        P@                  8w  dž   VPD                  PH                  f/   \9        RVPD                  PF                  ^,          ,          4       ML\9        R	VPD                  PF                  ^,          : R
VPD                  PH                  P<                  : 24       \;        R4      hVPD                  P4                  \         P6                  8w  d2   \9        RVPD                  P4                  ,          4       \;        R4      hVPJ                  # u upi )z,add a record via the DRSUAPI DsAddEntry callrË   Úutf8:é   NNz!DsAddEntry failed with dir_err %uzDsAddEntry failedz(DsAddEntry failed with status %s info %szexpected err_ver 1, got %uz.DsAddEntry failed with status %s, info omittedzDsAddEntry failed with status z info )&r   rZ  r«   rd  ÚDsReplicaObjectIdentifierrË   Ú
isinstanceÚlistru   ÚencodeÚdsdb_DsReplicaAttributeÚappendÚDsReplicaAttributeCtrr¨   Únum_attributesÚ
attributesÚDsReplicaObjectÚ
identifierÚattribute_ctrÚDsReplicaObjectListItemÚobjectÚDsAddEntryRequest2Úfirst_objectÚnext_objectÚ
DsAddEntryrW  Údir_errÚDRSUAPI_DIRERR_OKr©   ÚRuntimeErrorÚextended_errr    ÚWERR_SUCCESSÚerr_verÚerr_dataÚstatusrn   Úobjects)r¾   Úrecsrƒ  rN  ÚidrN   ÚaÚvÚxÚrattrrt  rv  Úlist_objectÚreq2ÚprevÚoÚlevelÚctrs   &&                r5   rz  ÚDCJoinContext.DsAddEntryÔ  s  € à�;‰;ÒØ×ÑÔ!Ø�=‰=Ò Ø× Ñ Ô"àˆÜˆCÜ×2Ò2Ó4ˆBØ˜•IˆBŒEàˆEÛ�Ø˜”9ÙÜ! #¥&¬$×/Ò/Ø�˜‘Aà��AÙLMÓNÉAÀq¬°A´s×);Ò);�Q—X‘X˜fÔ%ÀÒBÉA�ÐNØŸ™×=Ñ=¸c¿m¹mÈQÓR�Ø—‘˜UÖ#ñ ô $×9Ò9Ó;ˆMÜ+.¨u«:ˆMÔ(Ø',Ô$ä×,Ò,Ó.ˆFØ "ÔØ#0Ô ä!×9Ò9Ó;ˆKØ!'ÔØ�N‰N˜;×'ñ5 ô8 ×)Ò)Ó+ˆØ# A�JˆÔØ× Ñ ˆØ˜—�ˆAØ ÔØŠDñ ð —{‘{×-Ñ-¨c×.@Ñ.@À!ÀTÓJ‰ˆ�Ø�AŒ:Ø�{‰{œg×7Ñ7Ô7ÜÐ9¸C¿K¹KÕGÔHÜ"Ð#6Ó7Ð7Ø×Ñ Õ"¤f×&9Ñ&9Ô9ÜÐ@ÀC×DTÑDTÕUÔVÜ"Ð#6Ó7Ð7Ø�A�:Ø�{‰{˜aÔÜ"Ð#?À#Ç+Á+Õ#MÓNÐNØ�|‰|×"Ñ" 1Õ%¬×)<Ñ)<Ô<Ø—<‘<×$Ñ$Ò,ÜÐJÈcÏlÉl×NaÑNaÐbcÕNdÕeÕfåÈÏÉ×H[ÑH[Ð\]×H^ÐH^ØHKÏÉ×HYÑHY×HfÓHfðhô iä"Ð#6Ó7Ð7Ø�|‰|×#Ñ#¤w×'@Ñ'@Ô@ÜÐ9¸C¿L¹L×<PÑ<PÕPÔQÜ"Ð#6Ó7Ð7à�{‰{Ðùò[ Os   Â*2P	c                óø  € \        RV P                  ,          4       \        RV P                  3RR\        \        P
                  P                  4      3RV P                  3.4      pV P                  V P                  V P                  .pV P                  \        P
                  P                  8¼  d/   \        P                  ! V P                  4      p\        V4      VR&   V P                  \        P
                  P                  8¼  d   V P                  VR&   V P                  '       d-   RV P                  ,          VR&   V P                   VR	&   R
VR&   V# RV P                  ,          VR&   V P                  \        P
                  P                  8¼  d   V P                   VR&   . VR&   V F-  pW@P                   9   g   K  VR,          P#                  V4       K/  	  RVR&   \%        V P&                  4      VR&   V# )z return the ntdsdsa object to addr:  rË   ÚsystemFlagsÚdMDLocationr  zmsDS-HasDomainNCszCN=NTDS-DSA-RO,%sÚobjectCategoryzmsDS-HasFullReplicaNCsÚ37ÚoptionszCN=NTDS-DSA,%szmsDS-HasMasterNCsÚHasMasterNCsÚ1ÚinvocationId)r;  ÚnTDSDSA)r©   r˜   r(   ru   r‘   r+   Ú#SYSTEM_FLAG_DISALLOW_MOVE_ON_DELETEr{   rw   r}   r�   ÚDS_DOMAIN_FUNCTION_2003r,   Údc_level_from_lprF   rµ   re   rn  r   r‰   )r¾   rN  rd   ÚdomainControllerFunctionalityÚncs   &    r5   Újoin_ntdsdsa_objÚDCJoinContext.join_ntdsdsa_obj  s°  € ô 	ˆk˜CŸK™KÕ'Ô(ô Ø�3—;‘;ÐØ&ØœC¤§
¡
× NÑ NÓOÐPØ˜CŸM™MÐ*ð	,ó -ˆð —;‘; §¡¨s¯}©}Ð=ˆà×Ñ¤5§:¡:×#EÑ#EÔEô
 -=×,MÒ,MÈcÏfÉfÓ,UÐ)Ü+.Ð/LÓ+MˆCÐ'Ñ(à×Ñ¤5§:¡:×#EÑ#EÔEØ'*§{¡{ˆCÐ#Ñ$à�8�8ˆ8Ø$7¸#¿-¹-Õ$GˆCÐ Ñ!Ø,/×,<Ñ,<ˆCÐ(Ñ)Ø!ˆC�	‰Nð" ˆ
ð %5°s·}±}Õ$DˆCÐ Ñ!ð ×#Ñ#¤u§z¡z×'IÑ'IÔIØ+.×+;Ñ+;�Ð'Ñ(à')ˆC�ÑÛ�Ø×)Ñ)Ö)Ø˜Õ'×.Ñ.¨rÖ2ñ ð !ˆC�	‰NÜ"*¨3×+<Ñ+<Ó"=ˆC�Ñàˆ
r7   c                ó  € V P                  4       pV P                  '       d    V P                  P                  VR.R7       MBV P                  '       d   V P                  P                  VR.4       MV P                  V.4       V P                  P                  V P                  \        P                  R.R7      p\        P                  ! V P                  P                  RV^ ,          R,          ^ ,          4      4      V n        R# )zadd the ntdsdsa objectúrelax:0©ÚcontrolsrA  Ú
objectGUIDrÌ   N)r   rk   rl   rF  rµ   rz  rp   r˜   rq   rr   r   r†   r1  Ú	ntds_guid)r¾   rN  rÒ   s   &  r5   Újoin_add_ntdsdsaÚDCJoinContext.join_add_ntdsdsaG  s¹   € ð ×"Ñ"Ó$ˆØ×!×!Ð!Ø�I‰I�M‰M˜#¨¨ˆMÕ4Ø�X�XˆXØ�I‰I�M‰M˜# Ð0Õ1à�N‰N˜C˜5Ô!ð �i‰i×Ñ C§K¡K´s·~±~ÈlÈ^ÐÓ\ˆÜŸ	š	 #§)¡)×"?Ñ"?ÀÈcÐRSÍfÐUaÕNbÐcdÕNeÓ"fÓgˆŽr7   c                ó   € V P                   '       Ed‚   \        RV P                   ,          4       RV P                   RRRV P                  RV P                  R\        V P                  \
        P                  P                  ,          4      RV P                  /pV P                  \
        P                  P                  8¼  d(   \        \
        P                  P                  4      VR	&   MV P                  '       d   . VR	&   V P                  '       d   V P                  VR
&   MV P                  '       d   . VR
&   V P                  '       d   V P                  VR&   MV P                  '       d   . VR&   V P                  '       d   V P                  VR&   MV P                  '       d   . VR&   V'       d   \!        V4      VR&   V P                  '       dŸ   V P"                  V P                   8w  d1   V P$                  P'                  V P"                  V P                   4       V P$                  P)                  \*        P,                  P/                  V P$                  V\*        P0                  4      4       M%RpVe   R.pV P$                  P3                  W#R7       V P4                  '       d   V P7                  4        V P8                  '       dÖ   \        RV P8                  ,          4       RV P8                  RRR\        \
        P                  P:                  \
        P                  P<                  ,          \
        P                  P>                  ,          4      RV P                  /pV P                   '       d   V P                   VR&   V P$                  P3                  V4       V P@                  '       d
   RV n!        R# V PD                  '       EdÁ   V PG                  4        R\*        PH                  ! V PJ                  4      ,          pV P$                  PM                  \*        PN                  . V P$                  PQ                  4       VR7      V PJ                  3pR\*        PH                  ! V PR                  4      ,          pV P$                  PM                  \*        PN                  . V P$                  PQ                  4       VR7      V PR                  3pWV3 F¹  w  rxW€PT                  9  d   K  \W        V4      ^8X  g   K)  \*        P,                  ! 4       p	V^ ,          PX                  V	n,        Rp
V PZ                  '       d   Rp
\*        P\                  ! V PD                  \*        P^                  V
4      Wš&   V P$                  P)                  V	4       K»  	  V P`                  eX   \        RV P`                  ,          4       RV P`                  RRRRRRRV Pb                  /pV P$                  P3                  V4       V P                   '       EdÛ   \        R V P                   ,          4       \*        P,                  ! 4       p	\*        Pd                  ! V P$                  V P                   4      V	n,        \g        \W        V Ph                  4      4       FF  pV Ph                  V,          Pk                  R!\        V PB                  4      4      V Ph                  V&   KH  	  \*        P\                  ! V Ph                  \*        P0                  R"4      V	R"&   V P$                  P)                  V	4       \        R#V P                  ,          4        V P$                  Pm                  R$\*        PH                  ! V P                  4      ,          V Pn                  R%V P                  R&7       V P$                  PM                  V P                   \*        P|                  R(R).R*7      pR(V^ ,          9   d'   \        V^ ,          R(,          ^ ,          4      V n@        MRV n@        \ƒ        \„        P†                  V^ ,          R,          ^ ,          4      V nD        \        R+4       \*        P,                  ! 4       p	\*        Pd                  ! V P$                  V P                   4      V	n,        \*        P\                  ! \        V P                  4      \*        P0                  R4      V	R&   V P$                  P)                  V	4       V PŠ                  P�                  R,4      '       Ed:   \
        PŽ                  ! ^€^ÿ4      V nH        V P$                  P“                  \•        \—        R-4      R.V P˜                  R/V Pš                  R0V Pœ                  R1\Ÿ        V P�                  P¡                  R24      4      P£                  R34      R4V P                  /4      4      pV F¦  w  ppV\*        P¤                  8X  g   Q hVR,          p\        R5VR,          ,          4       VR6 VR7 \        \
        P                  P¦                  \
        P                  P                  ,          4      VR&    V P$                  P3                  V4       K¨  	  \        R8V Pœ                  ,          4        V P$                  Pm                  R9\*        PH                  ! V Pœ                  4      ,          V P�                  R%V P                  R&7       V P$                  PM                  X\*        P|                  R(.R*7      pR(V^ ,          9   d(   \        V^ ,          R(,          ^ ,          4      V nU        R# RV nU        R# R#   \*        Pp                   dl   pTPr                  w  rÞT\*        Pt                  8w  d   h T Pv                  Py                  T P                  T Pz                  T Pn                  R'7        Rp?EL&Rp?ii ; i  \*        Pp                   d1   pTPr                  w  rÞT\*        P¨                  8w  d   h  Rp?EKO  Rp?ii ; i  \*        Pp                   ds   pTPr                  w  rÞT\*        Pt                  8w  d   h T Pv                  Py                  R:T Pœ                  ,          T Pz                  T P�                  R'7        Rp?ELºRp?ii ; i);z+add the various objects needed for the joinr:  rË   ÚobjectClassÚcomputerÚdisplaynameÚsamaccountnamer  r›   zmsDS-SupportedEncryptionTypesr·   zmsDS-NeverRevealGroupzmsDS-RevealOnDemandGroupÚ	objectSidNr£  r¤  r;  rj   r’  r   ÚserverReferencerV   rW   zmsDS-NC-Replica-LocationszmsDS-NC-RO-Replica-LocationsÚnTDSConnectionÚenabledconnectionr?  r–  Ú65Ú
fromServerzAdding SPNs to %sz	$NTDSGUIDÚservicePrincipalNamezSetting account password for %sz((&(objectClass=user)(sAMAccountName=%s))F)Úforce_change_at_next_loginÚusername)Úaccount_namerƒ   ÚnewpasswordzmsDS-KeyVersionNumberrØ   rÌ   zEnabling accountÚBIND9_zprovision_dns_add_samba.ldifÚ	DNSDOMAINÚDOMAINDNÚHOSTNAMEÚDNSPASS_B64ú	utf-16-lerg  ÚDNSNAMEz#Adding DNS account %s with dns/ SPNÚclearTextPasswordÚisCriticalSystemObjectz#Setting account password for dns-%sz,(&(objectClass=user)(samAccountName=dns-%s))rÞ   )Vr™   r©   r–   ru   r  r‘   r+   rE  r›   r�   ÚDS_DOMAIN_FUNCTION_2008ÚENC_ALL_TYPESrb   r·   r²   r³   r   rc   rl   rM  rL  rq   rH  Ú	from_dictrK  rF  r¶   rP  r—   ÚSYSTEM_FLAG_CONFIG_ALLOW_RENAMEÚ%SYSTEM_FLAG_CONFIG_ALLOW_LIMITED_MOVEr›  r¸   r§  r˜   r¨  r¤   r¢   rp   r¥   r¦   r£   rd   r¨   rË   rµ   rJ  ÚFLAG_MOD_ADDr´   r‹   rI  Úranger    ÚreplaceÚsetpasswordr�   rs   rt   ÚERR_UNWILLING_TO_PERFORMri   Úset_passwordrƒ   rr   r  Úkey_version_numberr	   r
   r~   Únew_dc_account_sidr§   Ú
startswithÚgenerate_random_passwordÚdnspassÚ
parse_ldifr   r   r”   rw   r•   r!   rl  ÚdecodeÚCHANGETYPE_NONErD  ÚERR_ENTRY_ALREADY_EXISTSÚdns_key_version_number)r¾   Úspecified_sidrN  r¥  rÇ   rÀ   ÚforestÚpartÚzonerO  ÚattrÚiÚe2ÚnumÚ_rÒ   r„  Ú
changetyper3   Údns_acct_dnrÂ   Úe3s   &&                    r5   Újoin_add_objectsÚDCJoinContext.join_add_objectsV  s–	  € à�;�;‰;Ü�+ §¡Õ+Ô,à�c—k‘kØ˜zØ˜sŸ{™{Ø  #§+¡+Ø$¤c¨#×*@Ñ*@Ä5Ç:Á:×C_ÑC_Õ*_Ó&`Ø˜sŸ™ð0ˆCð ×#Ñ#¤u§z¡z×'IÑ'IÔIÜ7:¼5¿:¹:×;SÑ;SÓ7T�Ð3Ò4Ø×%×%Ð%Ø79�Ð3Ñ4Ø�}�}ˆ}Ø#&§=¡=��KÒ Ø×%×%Ð%Ø#%��KÑ à×#×#Ð#Ø/2×/CÑ/C�Ð+Ò,Ø×%×%Ð%Ø/1�Ð+Ñ,à�~�~ˆ~Ø25·.±.�Ð.Ò/Ø×%×%Ð%Ø24�Ð.Ñ/çÜ#+¨MÓ#:��KÑ à×#×#Ð#Ø×&Ñ&¨#¯+©+Ô5Ø—I‘I×$Ñ$ S×%8Ñ%8¸#¿+¹+ÔFØ—	‘	× Ñ ¤§¡×!6Ñ!6°s·y±yÀ#Äs×G[ÑG[Ó!\Õ]à�Ø Ò,Ø )˜{�HØ—	‘	—‘˜c�Ô5à�=�=ˆ=Ø×"Ñ"Ô$à�=�=ˆ=Ü�+ §¡Õ-Ô.à�c—m‘mØ˜xàœs¤5§:¡:×#MÑ#MÜ#(§:¡:×#SÑ#Sõ$Tä#(§:¡:×#QÑ#Qõ$Ró  Sð ˜sŸ™ð0ˆCð �{�{ˆ{Ø),¯©�Ð%Ñ&à�I‰I�M‰M˜#Ôà�=�=ˆ=à ˆCŒMÙà�;�;‰;Ø× Ñ Ô"ð :¼C×<MÒ<MÈc×N`ÑN`Ó<aÕaˆDØ—i‘i×&Ñ&¬S×-?Ñ-?Ø-/Ø,/¯I©I×,GÑ,GÓ,IØ26ð 'ó 8ð :=×9KÑ9KðMˆFð
 :¼C×<MÒ<MÈc×N`ÑN`Ó<aÕaˆDØ—i‘i×&Ñ&¬S×-?Ñ-?Ø-/Ø,/¯I©I×,GÑ,GÓ,IØ26ð 'ó 8ð :=×9KÑ9KðMˆFð
  &Ó.‘
�ØŸ{™{Ô*Ùä�t“9 –>ÜŸš›�AØ �7Ÿ:™:�A”DØ6�DØ—x—x�xØ=˜ä!×0Ò0°·±Ü14×1AÑ1AÀ4óI�A‘Gà—I‘I×$Ñ$ QÖ'ñ /ð ×ÑÒ(Ü�+ × 1Ñ 1Õ1Ô2à�c×'Ñ'ØÐ/Ø# VØ˜4Ø˜cŸn™nð.ˆCð �I‰I�M‰M˜#Ôà�;�;‰;ÜÐ%¨¯©Õ3Ô4Ü—’“ˆAÜ—6’6˜#Ÿ)™) S§[¡[Ó1ˆAŒDÜœ3˜sŸx™x›=Ö)�Ø!Ÿh™h q�k×1Ñ1°+¼sÀ3Ç=Á=Ó?QÓR�—‘˜“ñ *ä(+×(:Ò(:¸3¿8¹8Ü;>×;OÑ;OØ;Qó)SˆAÐ$Ñ%ð �I‰I×Ñ˜QÔô Ð3°c·k±kÕAÔBð@Ø—	‘	×%Ñ%Ð&PÜ(+×(9Ò(9¸#¿+¹+Ó(Fõ'Gà&)§m¡mØAFØ/2¯{©{ð	 &ô <ð —)‘)×"Ñ"¨¯©¼3¿>¹>Ø*AØ*5ð*7ð #ó 8ˆCð '¨#¨a­&Ô0Ü),¨S°­VÐ4KÕ-LÈQÕ-OÓ)P�Õ&à)-�Ô&ä%/´×0@Ñ0@Ø03°Aµ°{Õ0CÀAÕ0Fó&HˆCÔ"ô Ð$Ô%Ü—’“ˆAÜ—6’6˜#Ÿ)™) S§[¡[Ó1ˆAŒDÜ&)×&8Ò&8¼¸S×=SÑ=SÓ9TÜ9<×9MÑ9MØ9Mó'OˆAÐ"Ñ#ð �I‰I×Ñ˜QÔà�?‰?×%Ñ% h×/Ó/Ü×8Ò8¸¸cÓBˆCŒKà—9‘9×'Ñ'Ô(9¼*ÐEcÓ:dØ;FÈÏÉØ;EÀsÇ{Á{Ø;EÀsÇzÁzØ;HÌ)ÐTW×T_ÑT_×TfÑTfÐgrÓTsÓJt×J{ÑJ{ð  }Có  KDØ;DÀcÇoÁoð	;Wó)Xó YˆDó $(‘�
˜CØ!¤S×%8Ñ%8Ô8Ð8Ð8Ø! $�i�ÜÐ;¸cÀ$½iÕGÔHð Ð+Ð,àÐ0Ð1ä,/´·
±
×0LÑ0LÜ05·
±
×0LÑ0Lõ1Mó -N�Ð(Ñ)ðØ—I‘I—M‘M #Ö&ñ $(ô0 Ð7¸#¿*¹*ÕDÔEð>Ø—	‘	×%Ñ%Ð&TÜ(+×(9Ò(9¸#¿*¹*Ó(Eõ'Fà&)§k¡kØAFØ/2¯{©{ð	 &ô <ð —)‘)×"Ñ"¨¼3¿>¹>Ø*AÐ)Bð #ó DˆCà&¨#¨a­&Ô0Ü-0°°QµÐ8OÕ1PÐQRÕ1SÓ-T�Ö*à-1�Ö*ñk 0øô7 —<‘<ô @ØŸ7™7‘�Øœ#×6Ñ6Ô6ØØ—‘×$Ñ$°#·+±+Ø14·±Ø14·±ð %÷ @ò @ûð	@ûôd —|‘|ô Ø Ÿv™v‘H�SØœc×:Ñ:Ô:Øö ;ûðûô" —<‘<ô >ØŸ7™7‘�Øœ#×6Ñ6Ô6ØØ—‘×$Ñ$°(¸S¿Z¹ZÕ2GØ14·±Ø14·±ð %÷ >ò >ûð	>úsL   Ü8Al; è:n>é6Ap ì;n;íA n6î6n;î>pï$o>ï>pðrðA'ròrc                óð  € \        RV P                  ,          4       R\        V P                  4      : R\        P
                  : 2/p\        P                  ! V P                  VR7      pRV P                  RRRR	V P                  ,          R
V P                  RV P                  RV P                  RV P                  R\        \        P                  P                   \        P                  P"                  ,          4      RV/	pV P$                  \        P                  P&                  8¼  d   \        V P$                  4      VR&   V P)                  4       pV P+                  W4.4      p\-        V4      ^8w  d   \/        R4      hV^,          P0                  V n        \        R4       V P4                  P7                  V P                  \8        P:                  ! R4      V P2                  \<        P>                  \<        P@                  R7       \        R4       V P4                  P7                  V PB                  \8        P:                  ! R4      V P2                  \<        P>                  \<        P@                  R7       R# )zLadd the various objects needed for the join, for subdomains post replicationr:  ÚSubdomainAdminsÚ-)Úname_maprË   r;  ÚcrossRefr”  zCN=Cross-Ref,%sÚnCNamer$  ÚdnsRootÚtrustParentr’  ÚntSecurityDescriptorr  z"Expected 2 objects from DsAddEntryzReplicating partition DNú$00000000-0000-0000-0000-000000000000)Úexopr±   zReplicating NTDS DNN)"r©   rº   ru   r€   r
   ÚDOMAIN_RID_ADMINSr   Ú+get_paritions_crossref_subdomain_descriptorr�   r{   rw   rƒ   r”   Úparent_partition_dnr‘   r+   ÚSYSTEM_FLAG_CR_NTDS_NCr-  r�   rœ  r   rz  r¨   r.   Úguidr§  ÚreplÚ	replicater   r†   r   ÚDRSUAPI_EXOP_REPL_OBJÚDRSUAPI_DRS_WRIT_REPr˜   )r¾   ré  Ú	sd_binaryrN  Úrec2rƒ  s   &     r5   Újoin_add_objects2ÚDCJoinContext.join_add_objects2-  sÒ  € ô 	ˆk˜C×,Ñ,Õ,Ô-Ø%´#°c·j±j¶/Ä8×C]ÓC]Ð'^Ð_ˆÜ×JÒJÈ3Ï=É=ÐckÔlˆ	à�#×"Ñ"Ø˜:ØÐ/°#·-±-Õ?Ø�c—k‘kØ˜3Ÿ?™?Ø�s—}‘}Ø˜3×2Ñ2Øœ3œuŸz™z×@Ñ@Ä%Ç*Á*×BgÑBgÕgÓhØ" Ið

ˆð ×Ñ¤5§:¡:×#EÑ#EÔEÜ+.¨s×/CÑ/CÓ+DˆCÐ'Ñ(à×#Ñ#Ó%ˆà—.‘. # Ó-ˆÜˆw‹<˜1ÔÜ!Ð"FÓGÐGà �
Ÿ™ˆŒäÐ(Ô)Ø�‰×Ñ˜3×+Ñ+ÜŸ9š9Ð%KÓLØŸ=™=Ü '× =Ñ =Ü)0×)EÑ)Eð	 	ô 	Gô 	Ð#Ô$Ø�‰×Ñ˜3Ÿ;™;ÜŸ9š9Ð%KÓLØŸ=™=Ü '× =Ñ =Ü)0×)EÑ)Eð	 	ö 	Gr7   c                ó†  € \        R4       V P                  P                  p\        V P                  \        4       3/ RVbRV P                  bR\        bRV P                  bRV P                  bRV P                  bRV P                  bR	V P                  bR
V P                  bRV P                  bRV P                  bRV P                   bRV P"                  bRRbRV P$                  bRV P                  bRV P&                  bRV P(                  bRV P*                  bRV P,                  bRV P.                  bRV P0                  bRRb p\        RVP2                  ,          4       VP4                  V n        VP                  V n        VP8                  V n        VP:                  V n        V P<                  V P:                  n        R# )úProvision the local SAM.zCalling bare provisionÚsmbconfr\   Ú
samdb_fillrª   ÚrootdnÚdomaindnr]  ÚconfigdnÚserverdnrÀ   ÚhostnameÚ	domainsidrÁ   Ú
serverroleú"active directory domain controllerÚsitenamerF   Úntdsguidr]   r§   r^   r_   r`   Ú
batch_modeTzProvision OK for domain DN %sN)r©   rF   Ú
configfiler   rZ   r   r\   r   rª   ry   rw   r{   r}   r—   rƒ   r•   r€   r�   r[   r§  r]   r§   r^   r_   r`   r  rl   Úlocal_samdbÚpathsÚnamesr�   )r¾   r   Úpresults   &  r5   Újoin_provisionÚDCJoinContext.join_provisionX  s¹  € ô 	Ð&Ô'à—&‘&×#Ñ#ˆä˜CŸJ™J¬Ó(8ò -Á'ð -Ø&)§m¢mð-Ý@Hð-ØPS×PYÒPYð-à#&§;¢;ð-à9<¿ºð-ð &)§]¢]ð-ð >A¿]º]ð-ð &)§]¢]ð	-ð <?¿?º?ð	-ð
 &)§Z¢Zð-ð
 <?¿:º:ð-ð ),¯ªð-ñ Cgð-ð &)§X¢Xð-ð 36·&²&ð-ð DGÇ=Â=ð-ð '*§m¢mð-ð BEÇÂð-ð /2×.CÒ.Cð-ð +.×*;Ò*;ð-ð 03×/EÒ/Eð-ñ (,ð-ˆô 	Ð-°×0@Ñ0@Õ@ÔAØ!Ÿ-™-ˆŒØ!Ÿ*™*ˆŒØ!Ÿ-™-ˆŒ	Ø!Ÿ-™-ˆŒ	ð "Ÿm™mˆ�	‰	Ör7   c                ó	  € \        R4       \        V P                  P                  R.\	        4       V P                  P
                  RR7      V n        V P                  P                  \        V P                  4      4       V P                  V n        V P                  P                  R4       V P                  P                  V P                  \        P                  R.RR.R	7      pR
V^ ,          9  d2   \!        RV P                  : RV P                  P                  : 24      h \        \"        P$                  ! \        P&                  ! V P                  V^ ,          R,          ^ ,          P)                  R4      4      P+                  R4      4      4      V P,                  n        T P                  P                  RT P,                  P.                  ,          4       T P                  P                  R4       \3        T P4                  P6                  \	        4       T P
                  R7      p\9        T P                  TT P                  T P,                  T P4                  T P:                  \<        T P>                  RT P
                  T P,                  P@                  T P,                  PB                  T PD                  T PF                  R7       T P:                  \H        PJ                  PL                  8¼  dô   T P:                  pRpT P
                  PO                  R4      f*   T P
                  PQ                  RR4       \        R4       RpT P                  PS                  4         ^ RI*H+p T! T P                  RR7      pTPY                  T\H        PJ                  PZ                  RR7       T P                  P]                  4        T'       d   T P
                  PQ                  RR4       \        RT P,                  Pb                  ,          4       R#   \0         d)    \!        RT^ ,          R,          ^ ,          ,          4      hi ; i  \^         d2   pT P                  Pa                  4        \!        RT,          4      hRp?ii ; i) rÿ  zReconnecting to local samdbz#transaction_index_cache_size:200000F)rI   r–  rJ   rF   r_  zFinding domain GUID from ncNameÚncNamezextended_dn:1:1zreveal_internals:0)rU   rM   rN   r¥  rë  z*Can't find naming context on partition DN z in rg  r†   z3Can't find GUID in naming master on partition DN %szGot domain GUID %szCalling own domain provision©rJ   rF   r	  )	Údom_for_fun_levelr  rÁ   r  rF   ÚhostipÚhostip6r§   r¹   zdsdb:schema update allowedNÚyesz;Temporarily overriding 'dsdb:schema update allowed' settingT)ÚDomainUpdate)Úfix)Úupdate_revisionzDomainUpdate() failed: %sÚnozProvision OK for domain %s)2r©   r   r  rI   r   rF   rl   Úset_invocation_idru   r‰   rZ   rn   rp   rº   rq   rr   r.   r   r†   rI  rÔ  Úget_extended_componentr  Ú
domainguidÚKeyErrorr   r  Úsecretsr   r�   r   r�   r  r  r§   r¹   r‘   r+   ÚDS_DOMAIN_FUNCTION_2012rã   ÚsetÚtransaction_startÚsamba.domain_updater  Úcheck_updates_functional_levelrÃ  Útransaction_commitrÏ   Útransaction_cancelr”   )r¾   rÒ   Úsecrets_ldbÚadprep_levelÚupdates_allowed_overriddenr  rÀ   rÂ   s   &       r5   Újoin_provision_own_domainÚ'DCJoinContext.join_provision_own_domainu  sb  € ô 	Ð+Ô,Ü˜cŸo™o×1Ñ1àBð"Dä'5Ó'7Ø Ÿ_™_×/Ñ/Ø(-ô/ˆŒ	ð 	�	‰	×#Ñ#¤C¨×(9Ñ(9Ó$:Ô;ØŸ)™)ˆŒà�
‰
�‰Ð9Ô:Ø�o‰o×$Ñ$¨#×*:Ñ*:Ä#Ç.Á.ÐYaÐXbØ/@ÐBVÐ.Wð %ó Yˆð ˜3˜q�6Ô!Ý!ÐZ]×ZjÔZjÐlo×luÑlu×lyÓlyÐ"zÓ{Ð{ð	oÜ#&¤t§y¢y´·²¸¿	¹	À3ÀqÅ6È(ÕCSÐTUÕCV×C]ÑC]Ð^dÓCeÓ1f×1}Ñ1}ð  Eó  2Fó  (Gó  $HˆC�I‰IÔ ð 	�
‰
�‰Ð,¨s¯y©y×/CÑ/CÕCÔDà�
‰
�‰Ð6Ô7ä˜#Ÿ)™)×+Ñ+¼.Ó:JÈsÏvÉvÔVˆä�s—‘¨Ø—z‘z 3§9¡9¨c¯i©iØ),×)=Ñ)=Ü"0Ø#&§=¡=Ð=aØŸ&™&¨¯©×)9Ñ)9À3Ç9Á9×CTÑCTØ#&§?¡?¸c¿m¹mõ	Mð ×Ñ¤5§:¡:×#EÑ#EÔEØ×/Ñ/ˆLà).Ð&Ø�v‰v�z‰zÐ6Ó7Ò?Ø—‘—
‘
Ð7¸Ô?ÜÐSÔTØ-1Ð*à�I‰I×'Ñ'Ô)ðGÝ<á% c§o¡o¸4Ô@�Ø×5Ñ5°lÜ6;·j±j×6XÑ6XØFJð 6ô Lð —	‘	×,Ñ,Ô.÷
 *Ø—‘—
‘
Ð7¸Ô>äÐ*¨S¯Y©Y×-@Ñ-@Õ@ÖAøôW ô 	oÜ!Ð"WÐZ]Ð^_ÕZ`ÐaiÕZjÐklÕZmÕ"mÓnÐnð	oûôH ô GØ—	‘	×,Ñ,Ô.Ü%Ð&AÀAÕ&EÓFÐFûðGús&   Ä&B P Í"A Q Ð3QÑR Ñ,Q;Ñ;R c                óè   € \         P                  ! RV P                   RV R2V P                  VV P                  V P
                  4      pV P                  '       d   \         P                  ! V4      pV# )ú2Creates a new DRS object for managing replicationsrì   rí   rî   )r   Údrs_ReplicatorImplrj   rF   r  r‰   ra   Údrs_SecretFilter)r¾   Ú
repl_credsrü   rö  s   &&& r5   Úcreate_replicatorÚDCJoinContext.create_replicator½  sf   € ä×+Ò+Ø˜CŸJ™J˜< q¨Ð(9¸Ð;Ø�F‰FØØ�O‰OØ×Ñó
ˆð ××ÐÜ×-Ò-¨dÓ3ˆDØˆr7   c           	     ó€  € V P                   P                  R4       V P                  P                  4         \        P
                  ! V P                  P                  4       4      pV P                  f1   \        R4       \        P
                  ! \        P                  4      pMV P                  pV P                  '       dr   \        4       pVP                  V P                  4       VP!                  \"        4       VP%                  V P&                  4       VP)                  V P*                  4       MV P,                  pRpV P                  P/                  4       ^	8¼  d
   VR,          pV P1                  W44      p\2        P4                  ! WPP                  4      pVP7                  V P8                  VVRV P                  V P:                  R7       VP7                  V P<                  VW P                  V P:                  R7       V P>                  '       g°   \        R	4        VP7                  V P@                  VW P                  V PB                  \        PD                  ,          R7       T PB                  \        PD                  ,          '       g5    TP7                  T P@                  TY P                  T PB                  R7       \        R4       V PP                  V PR                  3 FX  pWpPT                  9   g   K  \        R\W        V4      ,          4       VP7                  WqW P                  V P:                  R7       KZ  	  V P                  '       d^   VP7                  V PX                  VV\        PZ                  RR7       VP7                  V P\                  VV\        PZ                  RR7       M<V P^                  e/    VP7                  V P^                  VV\        P`                  R7       WPn5        Wn6        W n7        V P                   P                  R4       V PB                  \        PD                  ,          '       g+   V P                  Pq                  \r        Pt                  ^4       V P                  Pw                  4        V P                  Pq                  \r        Pt                  ^ 4       V P                   P                  R4       T P{                  4        R#   \F         dN   pTPH                  ^ ,          \J        PL                  8X  d"   T P                   PO                  R
4        Rp?ELÆh Rp?ii ; i  \F         do   pTPH                  ^ ,          \J        PL                  8X  dC   T PB                  \        PD                  ,          '       d   T P                   PO                  R4       h Rp?ii ; i  \b        Pd                   dW   pTPH                  w  ršT	\        Pf                  8X  d.   \        RT Ph                  ,          4       \        R4        Rp?EL+h Rp?ii ; i   T P                  Py                  4        h ; i)zReplicate the SAM.zStarting replicationNzUsing DS_BIND_GUID_W2K3rS  rT  T)ÚschemaÚrodcr±   )r9  r±   z;Replicating critical objects from the base DN of the domainzÃFirst pass of replication with DRSUAPI_DRS_CRITICAL_ONLY not possible due to a missing parent object.  This is typical of a Samba 4.5 or earlier server. We will replicate all the objects instead.z§Replication with DRSUAPI_DRS_CRITICAL_ONLY failed due to a missing parent object.  This may be a Samba 4.5 or earlier server and is not compatible with --critical-onlyz5Done with always replicated NC (base, config, schema)zReplicating %s)rð  r9  )rð  zdWARNING: Unable to replicate own RID Set, as server %s (the server we joined) is not the RID Master.zxNOTE: This is normal and expected, Samba will be able to create users after it contacts the RID Master at first startup.z1Committing SAM database - this may take some timezCommitted SAM database)>rZ   rn   r  r&  r   r†   rl   Úget_invocation_idr§  r©   r   ÚDRSUAPI_DS_BIND_GUID_W2K3rµ   r   rß   rF   rá   r   Úset_usernamer–   rÍ  r�   rE   rU  r5  r   Údrs_Replicatorr÷  r{   r±   r}   r¸   rw   Údomain_replica_flagsÚDRSUAPI_DRS_CRITICAL_ONLYr"   rt   r    ÚWERR_DS_DRA_MISSING_PARENTÚwarningr¢   r£   rd   ru   r™   ÚDRSUAPI_EXOP_REPL_SECRETrä   r¡   ÚDRSUAPI_EXOP_FSMO_RID_ALLOCr‘   ÚDsExtendedErrorÚDRSUAPI_EXOP_ERR_FSMO_NOT_OWNERrj   rö  Úsource_dsa_invocation_idÚdestination_dsa_guidÚ
set_opaquer+   Ú0DSDB_FULL_JOIN_REPLICATION_COMPLETED_OPAQUE_NAMEr)  r*  Úrefresh_ldb_connection)r¾   rF  rG  r4  rü   rö  rÂ   rŸ  Úe1rÃ   rÄ   s   &          r5   Újoin_replicateÚDCJoinContext.join_replicateÊ  sõ  € ð 	�
‰
�‰Ð.Ô/ð
 	�‰×)Ñ)Ô+ðG	6Ü'+§y¢y°·±×1LÑ1LÓ1NÓ'OÐ$Ø�}‰}Ò$ÜÐ/Ô0Ü'+§y¢y´×1RÑ1RÓ'SÑ$à'*§}¡}Ð$à�x�xˆxÜ(›]�
Ø× Ñ  §¡Ô(Ø×-Ñ-Ô.?Ô@Ø×'Ñ'¨¯©Ô4Ø×'Ñ'¨¯©Õ6à ŸY™Y�
à$ˆOØ�v‰v×ÑÓ! QÔ&Ø 8Õ+�à×(Ñ(¨ÓEˆDÜ×+Ò+¨D·/±/ÓBˆDà�N‰N˜3Ÿ=™=Ð*BØ/¸À3Ç8Á8Ø),×):Ñ):ð ô <ð �N‰N˜3Ÿ=™=Ð*BØ/·h±hØ),×):Ñ):ð ô <ð —=—=�=ô ÐSÔTðØ—N‘N 3§;¡;Ð0HØ#7¿h¹hØ14×1IÑ1IÌG×LmÑLmÕ1mð #ô oð0 ×/Ñ/´'×2SÑ2S×SÔSðØŸ™ s§{¡{Ð4LØ';Ç(Á(Ø58×5MÑ5Mð 'ô Oô ÐIÔJð
 ×)Ñ)¨3×+=Ñ+=Ó>�ØŸ™Ö$ÜÐ*¬c°"«gÕ6Ô7Ø—N‘N 2Ø#7¿h¹hØ14×1BÑ1Bð #ö Dñ ?ð �x�xˆxØ—‘˜sŸ{™{Ð,DØ3Ü$+×$DÑ$DÈ4ð ô Qð —‘˜s×0Ñ0Ð2JØ3Ü$+×$DÑ$DÈ4ð õ Qð ×#Ñ#Ò/ð
Ø—N‘N 3×#5Ñ#5Ð7OØ#7Ü(/×(KÑ(Kð #ô Mð ŒHØ+CÔ(Ø';Ô$à�J‰J�O‰OÐOÔPð ×+Ñ+¬g×.OÑ.O×OÔOØ—‘×*Ñ*¬4×+`Ñ+`Ø+,ô.à�O‰O×.Ñ.Ô0Ø�O‰O×&Ñ&¤t×'\Ñ'\Ø'(ô*à�J‰J�O‰OÐ4Ô5ð 	×"Ñ"Ö$øôC #ô 
à—v‘v˜a•y¤F×$EÑ$EÔEØŸ
™
×*Ñ*ð ,X÷ Yò Yð ûð
ûô4 'ô àŸ6™6 !�9¬×(IÑ(IÔIØ×3Ñ3´g×6WÑ6W×WÔWØŸJ™J×.Ñ.ð 0\ô ]ð ûðûôF ×,Ñ,ô Ø#%§7¡7‘L�TØœw×FÑFÔFÜð  Eð  HK÷  HRñ  HRõ  Rô  SÜð  Y÷  Zò  Zàûðûð	Ø�O‰O×.Ñ.Ô0Øús¯   ·B	X  ÃEX  ÈAS É'&X  Ê3T6 Ë3X  Ë:AX  ÍA+X  Î?-V2 Ï,-X  ÓT3Ó&AT.Ô'X  Ô-T.Ô.T3Ô3X  Ô6V/ÕAV*ÖV*Ö*V/Ö/X  Ö2X×A
XØX  ØXØXØX  Ø X=c                óÔ  €  V P                   P                  \        P                  . R 7       R#   \        P                   d¤   pTP
                  w  r#T\        P                  8X  dq   RT9   g   RT9   dc   T P                  P                  R4       \        RT P                  ,          \        4       T P                  T P                  R7      T n          Rp?R# \        T4      hRp?ii ; i)rL   Ú!NT_STATUS_CONNECTION_DISCONNECTEDÚNT_STATUS_CONNECTION_RESETz)LDB connection disconnected. ReconnectingrG   rH   N)rl   rp   rq   rr   rs   rt   ÚERR_OPERATIONS_ERRORrZ   rA  r   rj   r   rE   rF   r.   )r¾   rÂ   rÃ   rÄ   s   &   r5   rJ  Ú$DCJoinContext.refresh_ldb_connection`  s®   € ð	,à�I‰I×Ñ¤3§>¡>¸ÐÖ<øÜ�|‰|ô 	,ØŸ6™6‰LˆTð œ×0Ñ0Ô0Ø4¸Ô<Ø-°Ô5Ø—
‘
×"Ñ"Ð#NÔOÜ! k°C·J±JÕ&>Ü/=Ó/?Ø.1¯i©i¸C¿F¹FôD�—	’	ô & dÓ+Ð+ûð	,ús   ‚+/ ¯C'ÁBC"ÃC"Ã"C'c                óô  € \         P                  ! 4       p\         P                  ! 4       Vn        \	        V4      VP                  n        \        P                  ! R 4      VP                  n        \        P                  ! R4      VP                  n        V P                  Vn        \	        V P                  4      : RV P                  : 2Vn        \         P                   \         P"                  ,          Vn        V P&                  '       g(   V;P$                  \         P(                  ,          un        V P                   f   V P+                  4        V P                   P-                  V P.                  ^V4       R# )rï  zS-0-0z._msdcs.N)r   ÚDsReplicaUpdateRefsRequest1ri  Únaming_contextru   rË   r   r†   rõ  r
   r~   rû   r§  Údest_dsa_guidr�   Údest_dsa_dns_nameÚDRSUAPI_DRS_ADD_REFÚDRSUAPI_DRS_DEL_REFr–  rµ   rù  rZ  ÚDsReplicaUpdateRefsrW  )r¾   rË   rÓ   s   && r5   Úsend_DsReplicaUpdateRefsÚ&DCJoinContext.send_DsReplicaUpdateRefsr  sð   € Ü×/Ò/Ó1ˆÜ"×<Ò<Ó>ˆÔÜ! "›gˆ×ÑÔÜ $§	¢	Ð*PÓ Qˆ×ÑÔÜ'×/Ò/°Ó8ˆ×ÑÔØŸ-™-ˆŒÜ03°C·M±MÖ0BÀCÇMÃMÐRˆÔÜ×/Ñ/´'×2MÑ2MÕMˆŒ	Ø�x�xˆxØ�IŠIœ×5Ñ5Õ5�Ià�;‰;ÒØ×ÑÔ!à�‰×'Ñ'¨×(:Ñ(:¸A¸qÖAr7   c                ód  € \         P                  p\         P                  \         P                  ,          pV P                  pRV P
                  ,          pV P                  p\        V P                  4      pV: RV: 2p\        P                  ! V P                  V P                  4      pV P                  P                  R\        V4      WS3,          4       Rp	\         P                   ! RV P                   : RV	: R2V P                  V P"                  4      p
Rp\$        P&                  ! V P(                  4      p\*        P,                  ! 4       pV P.                  Vn        \*        P2                  ! R	\        V P4                  4      \*        P6                  3,          4      Vn         V
P;                  V^ V P                   VVR
\<        P>                  VR
R
4
      w  rïT'       d¥   XPJ                   F”  pTPL                   F�  pTPN                  \<        PP                  8X  g"   TPN                  \<        PR                  8X  g   KC  \         PT                  ! 4       pTTn%         T
PW                  T^ T P                   TTR
T4       Kƒ  	  K–  	  T F»  pTPY                  R4      R8w  d4   T P                  P                  RT: RT: RT: 24       \[        T4      pM2T P                  P                  RT: RT: RT: 24       \]        T4      p\         PT                  ! 4       pTTn%        T
PW                  T^ T P                   TTTR
4       K½  	  \        T4      ^ 8”  Ed°   \^        P`                  ! T P(                  T Pb                  4      pT P(                  Pe                  T: RT: 2TR7      w  T n3        pTPi                  T Pf                  TR\*        Pj                  \*        Pl                  ,          ,          .R7       T P                  P                  RT: RT: RT: 24       \         PT                  ! 4       p\o        T4      pTTn%        T
PW                  T^ T P                   TTTR
4       \^        P`                  ! T P(                  T Pp                  4      pT P(                  Pe                  T: RT: 2TR7      w  T n9        pTPi                  T Pr                  TR\*        Pj                  \*        Pl                  ,          ,          .R7       T P                  P                  R4       R
#   \@         d@   pTPB                  ^ ,          \D        PF                  8X  d	   Rp R
p?ELƒ\I        T4       h R
p?ii ; i  \@         d4   pTPB                  ^ ,          \D        PF                  8X  d    R
p?EK¬  h R
p?ii ; i)a>  Remotely Add a DNS record to the target DC.  We assume that if we
replicate DNS that the server holds the DNS roles and can accept
updates.

This avoids issues getting replication going after the DC
first starts as the rest of the domain does not have to
wait for samba_dnsupdate to run successfully.

Specifically, we add the records implied by the DsReplicaUpdateRefs
call above.

We do not just run samba_dnsupdate as we want to strictly
operate against the DC we just joined:
 - We do not want to query another DNS server
 - We do not want to obtain a Kerberos ticket
   (as the KDC we select may not be the DC we just joined,
   and so may not be in sync with the password we just set)
 - We do not wish to set the _ldap records until we have started
 - We do not wish to use NTLM (the --use-samba-tool mode forces
   NTLM)

z	_msdcs.%srQ   z&Adding %d remote DNS records for %s.%srë   rì   rí   rî   Tz%s-%dNFÚ:zAdding DNS AAAA record z for IPv6 IP: zAdding DNS A record z for IPv4 IP: )Údns_partitionzsd_flags:1:%dr¤  zAdding DNS CNAME record z for éÿÿÿÿzbAll other DNS records (like _ldap SRV records) will be created by samba_dnsupdate on first startup):r   ÚDNS_CLIENT_VERSION_LONGHORNÚDNS_RPC_VIEW_AUTHORITY_DATAÚDNS_RPC_VIEW_NO_CHILDRENr”   r�   r•   ru   r§  r‘   Úinterface_ipsrF   r½   rZ   rn   r¨   rj   rE   r$   ÚSDUtilsrl   r
   r   rÏ  Ú	owner_sidr~   r€   ÚDOMAIN_RID_DCSÚ	group_sidÚDnssrvEnumRecords2r   ÚDNS_TYPE_ALLr"   rt   r    Ú"WERR_DNS_ERROR_NAME_DOES_NOT_EXISTr©   rN  ÚrecordsÚwTypeÚ
DNS_TYPE_AÚDNS_TYPE_AAAAÚDNS_RPC_RECORD_BUFÚDnssrvUpdateRecord2Úfindr&   r%   rq   rI  r¢   Ú
dns_lookupr»   Úmodify_sd_on_dnÚSECINFO_OWNERÚSECINFO_GROUPr'   r£   r¼   )r¾   Úclient_versionÚselect_flagsrÛ  Ú
msdcs_zoner   Úmsdcs_cnameÚcname_targetÚIPsrü   Údns_connÚ
name_foundÚ	sd_helperÚchange_owner_sdÚbuflenrÒ   rÂ   rN  ÚrecordÚdel_rec_bufÚIPÚadd_rec_bufÚdomaindns_zone_dnÚldap_recordÚforestdns_zone_dns   &                        r5   Újoin_add_dns_recordsÚ"DCJoinContext.join_add_dns_recordsƒ  s·  € ô0 #×>Ñ>ˆÜ ×<Ñ<Ü×.Ñ.õ/ˆð �}‰}ˆØ  3§=¡=Õ0ˆ
Ø�z‰zˆÜ˜#Ÿ-™-Ó(ˆÛ"&ªÐ-ˆÜ×!Ò! #§&¡&¨#×*;Ñ*;Ó<ˆà�
‰
�‰Ð@Ü˜S› 4Ð.õ/ô 	0ð !ˆÜ×&Ó&ÀÇ
Ä
ËOÐ'\Ø'*§v¡v¨s¯y©yó:ˆð ˆ
ä×$Ò$ S§Y¡YÓ/ˆ	ä"×-Ò-Ó/ˆØ$'×$:Ñ$:ˆÔ!Ü$,×$4Ò$4°WÜ69¸#¿*¹*³oÜ6>×6MÑ6Mð6Oõ6Oó %PˆÔ!ð
	à×-Ñ-¨nØ./Ø.1¯j©jØ.2Ø.2Ø.2Ü.2×.?Ñ.?Ø.:Ø.2Ø.2ó	4ñ ˆV÷$ Ø—w”w�Ø!Ÿkœk�FØ—|‘|¤t§¡Ô6Ø—|‘|¤t×'9Ñ'9Ö9ä&/×&BÒ&BÓ&D˜Ø*0˜œð&Ø$×8Ñ8¸Ø9:Ø9<¿¹Ø9=Ø9=Ø9=Ø9DöFó *ñ ó* ˆBØ�w‰w�s‹|˜rÔ!Ø—
‘
—’Û#'«ªrð!3ô 4ä  “n‘à—
‘
—’Û#'«ªrð!3ô 4ä˜b“k�ô $×6Ò6Ó8ˆKØ!ˆKŒOØ×(Ñ(¨Ø)*Ø),¯©Ø)-Ø)-Ø)4Ø)-ö/ñ ô* �‹H�q�LÜ #§¢ s§y¡y°#×2DÑ2DÓ EÐà—)‘)×&Ñ&³$ºÐ'=Ø5Fð 'ó Hñ (ˆSŒ\˜;ð
 ×%Ñ% c§l¡l°OØ0?Ü3;×3IÑ3IÜ5=×5KÑ5Kõ4Lõ1Mð 0Nð &ô Oð �J‰J�OŠOÛ*«JºðFô Gô $×6Ò6Ó8ˆKÜ˜lÓ+ˆCØ!ˆKŒOØ×(Ñ(¨Ø)*Ø),¯©Ø)3Ø)4Ø)4Ø)-ô/ô !$§¢ s§y¡y°#×2DÑ2DÓ EÐà—)‘)×&Ñ&³+ºzÐ'JØ5Fð 'ó Hñ ,ˆSÔ˜{ð
 ×%Ñ% c×&6Ñ&6¸Ø0?Ü3;×3IÑ3IÜ5=×5KÑ5Kõ4Lõ1Mð 0Nð &ô Oð
 	�
‰
�‰ð Nö 	Oøôq ô 	Ø�v‰v�a�yœF×EÑEÔEØ"–
ä�a”Øûð	ûô.  +ô &Ø Ÿv™v a�y¬F×,UÑ,UÔUÞ $à %ûð	&ús<   Æ&4T$ É!U1Ô$U.Ô/(U)ÕU)Õ)U.Õ1V/Õ<&V*Ö)V*Ö*V/c           
     óN  € V P                   V P                  3 Fˆ  pWP                  9   g   K  V P                  P	                  R \        V4      ,          4       V P                  P                  WP                  V P                  V P                  V P                  RR7       KŠ  	  R# )z!Replicating new DNS records in %sF)r9  r±   Ú	full_syncN)r¢   r£   rd   rZ   rn   ru   rö  r÷  rF  r§  rµ   r±   )r¾   rŸ  s   & r5   Újoin_replicate_new_dns_recordsÚ,DCJoinContext.join_replicate_new_dns_records  sy   € Ø×%Ñ% s×'9Ñ'9Ó:ˆBØ—[‘[Ö Ø—
‘
—‘Ð CÄsÈ2ÃwÕ OÔPØ—‘×"Ñ" 2×'CÑ'CØ#&§=¡=°s·x±xØ14×1BÑ1BØ-2ð #ö 4ó ;r7   c                óT  € V P                   P                  R4       V P                   F  pV P                  V4       K  	  V P                  '       Ed*   \        R4       V P                  P                  \        V P                  4      4       V P                  P                  RV P                  4       \        P                  ! 4       p\        P                  ! V P                  RV P                  ,          4      Vn        \        P"                  ! \%        V P                  4      \        P&                  R4      VR&   V P                  P)                  V4       V P                  P+                  VP                   R^ 4       V P                   P                  R4       \        P                  ! 4       p\        P                  ! V P                  R4      Vn        \        P"                  ! R\        P&                  R	4      VR	&   V P,                  p\        P"                  ! R
\        V4      ,          \        P&                  R4      VR&   V P                  P)                  V4       V P.                  '       d   R# \1        V P2                  P4                  \7        4       V P8                  R7      pV P                   P                  R4       \;        W@P<                  V P>                  V P@                  V PB                  V PD                  V PF                  V PH                  V PJ                  R7	       V PL                  PO                  R4      '       dg   \Q        V P                  VV PR                  V P2                  V P                   V PL                  V PT                  V P                  V PV                  R7	       R# R# )z=Finalise the join, mark us synchronised and setup secrets db.z=Sending DsReplicaUpdateRefs for all the replicated partitionszSetting RODC invocationIdÚdomainFunctionalityz%sr™  ú(Setting isSynchronized and dsServiceNameú@ROOTDSEr?  ÚisSynchronizedú	<GUID=%s>ÚdsServiceNameNr  zSetting up secrets database)rÀ   rª   r”   Únetbiosnamer  rÁ   Úsecure_channel_typerÎ  rº  )r§   rÒ  Úos_levelrÎ  ),rZ   rn   rd   r[  rµ   r©   r  r  ru   r‰   rH  r�   rq   rH  rI  r˜   rË   rJ  r   rK  rL  Ú"set_attribute_replmetadata_versionr§  r¸   r   r  r#  r   rF   r   rƒ   rª   r”   r•   r€   r�   r—  rÎ  r§   rÐ  r   r  rÒ  r×  )r¾   rŸ  rO  rõ  r+  s   &    r5   Újoin_finaliseÚDCJoinContext.join_finalise(  s‰  € ð 	�
‰
�‰ÐWÔXØ—+”+ˆBØ×(Ñ(¨Ö,ñ ð �8�8‰8ÜÐ-Ô.Ø�O‰O×-Ñ-¬c°#×2CÑ2CÓ.DÔEØ�O‰O×&Ñ&Ð'<Ø'*×';Ñ';ô=ä—’“ˆAÜ—6’6˜#Ÿ/™/¨4°#·+±+Õ+=Ó>ˆAŒDÜ #× 2Ò 2´8¸C×<MÑ<MÓ3NÜ36×3GÑ3GØ3Aó!CˆAˆnÑð �O‰O×"Ñ" 1Ô%ð �O‰O×>Ñ>¸q¿t¹tØ?MØ?@ôBð 	�
‰
�‰ÐBÔCÜ�KŠK‹MˆÜ�vŠv�c—o‘o zÓ2ˆŒÜ!×0Ò0°¼×9MÑ9MÐO_Ó`ˆÐ
Ñà�}‰}ˆÜ ×/Ò/°¼cÀ$»iÕ0GÜ03×0DÑ0DÀoóWˆˆ/Ñà�‰×Ñ˜qÔ!à�=�=ˆ=Ùä˜#Ÿ)™)×+Ñ+¼.Ó:JÈsÏvÉvÔVˆà�
‰
�‰Ð5Ô6Ü˜K·±Ø"%§)¡)Ø&)§m¡mØ(+¯
©
Ø&)§j¡jØ(+¯©Ø03×0GÑ0GØ/2×/EÑ/Eõ	Gð �?‰?×%Ñ% h×/Ò/Ü˜CŸO™O¨[ØŸI™I s§y¡y°#·*±*Ø(+¯©Ø$'§K¡K¸#×:NÑ:NØ/2×/IÑ/I÷	Kñ 0r7   c                ó’
  € \        RV P                  ,          4       Rp\        P                  ! RV P                  : RV: R2V P                  V P
                  4      p\        P                  ! 4       p\        P                  ! 4       Vn        VP                  RV\        P                  4      p\        P                  ! 4       pV P                  VP                  n        V P                  VP                   n        V P"                  Vn        \        P&                  \        P(                  ,          Vn        \        P,                  Vn        \        P0                  Vn         \        P4                  ! 4       pV P                  Vn        VP7                  WF\        P8                  4      p\        RV P                  : RVP:                  P$                  : R24       VP=                  WGP:                  P$                  4       \A        V PB                  PE                  R	4      4      p\F        PH                  ! 4       p	\K        V4      V	n&        W‰n'        \F        PP                  ! 4       p
\R        PT                  ! \W        \X        PX                  ! 4       4      4      V
n-        \        P\                  V
n/        Wšn0        \F        Pb                  ! 4       p^Vn2        V
.Vn3        \F        Ph                  ! 4       p^Vn2        W¼n5        \F        Pl                  ! 4       p^.R
,          p\o        R
4       F  p\p        Pr                  ! ^ ^ÿ4      Wï&   K  	  Wín:        WÍn;        WÍn<        \{        V4      p\}        VP~                  V4      p\        P€                  ! 4       p\K        V4      Vn&        \A        V4      VnA        \        P„                  ! 4       pVVnC        VP‰                  VVV\        PŠ                  4      pRRV PŒ                  : RV PŽ                  : 2RRR\‘        VP.                  4      R\‘        VP2                  4      R\‘        VP*                  4      RV P’                  RV PŒ                  R\{        V4      R\{        V4      R\{        V P”                  4      /
pV P–                  P™                  V4       RRV P’                  : RV PŽ                  : 2RRR\‘        \R        Pš                  Pœ                  4      RV PB                  PE                  R	4      RRV P’                  ,          /pV P–                  P™                  V4       R#   \>         d     ELIi ; i)zprovision the local SAM.z"Setup domain trusts with server %srÚ   z	ncacn_np:rí   rî   zRemoving old trust record for ú (SID Ú)r¿  i   rË   zcn=z,cn=system,r;  ÚtrustedDomainÚ	trustTypeÚtrustAttributesÚtrustDirectionÚflatnameÚtrustPartnerÚtrustAuthIncomingÚtrustAuthOutgoingÚsecurityIdentifierz$,cn=users,r<  r  rÁ  rB  rO   N)Or©   rj   r   rï   rF   rE   rð   rñ   rò   ró   r
   rô   ÚTrustDomainInfoInfoExr”   rƒ   rö   r¿   r€   rû   ÚLSA_TRUST_DIRECTION_INBOUNDÚLSA_TRUST_DIRECTION_OUTBOUNDÚtrust_directionÚLSA_TRUST_TYPE_UPLEVELÚ
trust_typeÚ!LSA_TRUST_ATTRIBUTE_WITHIN_FORESTÚtrust_attributesrõ   r÷   rø   rú   rù   r}  rk  Útrustdom_passrl  r   ÚAuthInfoClearr¨   ÚsizeÚpasswordÚAuthenticationInformationr‘   Úunix2nttimer  ÚtimeÚLastUpdateTimeÚTRUST_AUTH_TYPE_CLEARÚAuthTypeÚAuthInfoÚAuthenticationInformationArrayÚcountÚarrayÚtrustAuthInOutBlobÚcurrentÚtrustDomainPasswordsrÉ  ÚrandomÚrandintÚ
confounderÚoutgoingÚincomingr   r   Úsession_keyÚ	DATA_BUF2ÚdataÚTrustDomainInfoAuthInfoInternalÚ	auth_blobÚCreateTrustedDomainEx2ÚSEC_STD_DELETEr�   rw   ru   r…   r�   r  rF  r+   ÚUF_INTERDOMAIN_TRUST_ACCOUNT)r¾   rü   rý   rþ   rÿ   rn   ÚoldnameÚoldinfoÚpassword_blobÚclear_valueÚ clear_authentication_informationÚ authentication_information_arrayrÄ  Ú	trustpassrÃ  rÝ  Útrustpass_blobÚencrypted_trustpassrÊ  Ú	auth_infoÚtrustdom_handlerN  s   &                     r5   Újoin_setup_trustsÚDCJoinContext.join_setup_trustso  s  € ô 	Ð2°S·Z±ZÕ?Ô@ØˆÜ—*“*°#·*´*»oÐNØ ŸV™V S§Y¡Yó0ˆô ×(Ò(Ó*ˆ
Ü Ÿ[š[›]ˆ
Ôà×(Ñ(¨Ø)3´X×5VÑ5VóXˆ
ô ×(Ò(Ó*ˆØ"%§-¡-ˆ×ÑÔØ#&§?¡?ˆ×ÑÔ Ø—:‘:ˆŒÜ"×>Ñ>Ä×AaÑAaÕaˆÔÜ×4Ñ4ˆŒÜ #× EÑ EˆÔð	Ü—j’j“lˆGØ Ÿ]™]ˆGŒNØ×:Ñ:¸:Ü;>×;`Ñ;`óbˆGåÀÇÄÐPW×P_ÑP_×PcÔPcÐdÔeØ×'Ñ'¨
·O±O×4GÑ4GÔHô ˜S×.Ñ.×5Ñ5°kÓBÓCˆä×,Ò,Ó.ˆÜ˜}Ó-ˆÔØ,Ôä+3×+MÒ+MÓ+OÐ(Ü:?×:KÒ:KÌCÔPT×PYÒPYÓP[ÓL\Ó:]Ð(Ô7Ü47×4MÑ4MÐ(Ô1Ø4?Ô1ä+3×+RÒ+RÓ+TÐ(Ø12Ð(Ô.Ø2RÐ1SÐ(Ô.ä×.Ò.Ó0ˆØˆŒØ;Ôä×1Ò1Ó3ˆ	Ø�S˜3•Yˆ
ä�s–ˆAÜ"ŸNšN¨1¨cÓ2ˆJ‹Mñ ð  *Ôà%ÔØ%Ôä! )Ó,ˆä-¨g×.AÑ.AÀ>ÓRÐä—M’M“Oˆ	ÜÐ0Ó1ˆ	ŒÜÐ1Ó2ˆ	Œä×7Ò7Ó9ˆ	Ø'ˆ	Ôà!×8Ñ8¸Ø9=Ø9BÜ9A×9PÑ9PóRˆñ ¨#¯-¬-¸¿»ÐEØ˜?Øœ˜TŸ_™_Ó-Øœs 4×#8Ñ#8Ó9Øœc $×"6Ñ"6Ó7Ø˜×.Ñ.Ø˜CŸM™MØ¤¨(Ó!3Ø¤¨(Ó!3Ø ¤(¨3¯=©=Ó"9ð
ˆð 	�‰×Ñ˜CÔ ñ ¨#×*@Ô*@À#Ç+Ã+ÐNØ˜6Ø ¤#¤e§j¡j×&MÑ&MÓ"NØ ×!2Ñ!2×!9Ñ!9¸+Ó!FØ˜e c×&<Ñ&<Õ<ð
ˆð 	�‰×Ñ˜CÖ øôM ô 	Úð	ús   ÅBT7 Ô7UÕUc                óØ  € V P                   V P                  .V n        V P                  V P                   V P                  .V n        V P
                  '       d8   V P                  R 8w  d'   V ;P                  V P                  .,          un        R# V P
                  '       gÊ   V ;P                  V P                  .,          un        V P                  R 8w  d“   V ;P                  V P                  .,          un        V ;P                  V P                  .,          un        V ;P                  V P                  .,          un        V ;P                  V P                  .,          un        R# R# R# )rY   N)	r}   r{   rd   rw   re   r¸   r§   r¢   r£   rc  s   &r5   Úbuild_nc_listsÚDCJoinContext.build_nc_listsÔ  sö   € ð —}‘} c§m¡mÐ4ˆŒØŸK™K¨¯©¸¿¹ÐFˆÔà�=�=ˆ=˜SŸ_™_°Ô6Ø×Ò ×!3Ñ!3Ð 4Õ4×à——�Ø�KŠK˜CŸK™K˜=Õ(�Kà�‰ &Ô(Ø—’ × 2Ñ 2Ð3Õ3•Ø—’ × 2Ñ 2Ð3Õ3•Ø× Ò  S×%7Ñ%7Ð$8Õ8Õ Ø× Ò  S×%7Ñ%7Ð$8Õ8× ñ	 )ñ r7   c                ó|  € V P                  4        V P                  '       d   V P                  4        MV P                  4         V P	                  4        V P                  4        V P                  4        V P                  '       d1   V P                  4        V P                  4        V P                  4        V P                  R 8w  d!   V P                  4        V P                  4        V P                  4        R#     \        R4       M  \          d     Mi ; iT P#                  4        T P                  4        h ; i)rY   zJoin failed - cleaning upN)rÜ  rb   r  r  rä  r  rL  r¸   rü  r.  rÙ  r§   r‰  r�  rš  r©   ÚIOErrorrJ  rc  s   &r5   Údo_joinÚDCJoinContext.do_joiné  sü   € Ø×ÑÔà××ÐØ× Ñ Õ"à× Ñ Ô"ð	Ø× Ñ Ô"Ø×ÑÔ Ø×ÑÔ Ø�}�}ˆ}Ø×%Ñ%Ô'Ø×-Ñ-Ô/Ø×%Ñ%Ô'à�‰ &Ô(Ø×(Ñ(Ô*Ø×2Ñ2Ô4à×ÑÖøð
	ðÜÐ1Õ2øÜô Ùðúð
 ×&Ñ&Ô(Ø× Ñ Ô"Øús8   ÁAC: ÂA1C: Ã:D;Ã=D	ÄD;Ä	DÄD;ÄDÄ$D;r8   )NNNNNNNNNFNFFNNNF)F©N))r9   r:   r;   r<   Ú__doc__r1   rÐ   rè   r  r  ro   rm   rŽ   rŒ   r‚   r„   r.  r3  rž   rP  rZ  rd  rz  r   r¨  rä  rü  r  r.  r5  rL  rJ  r[  r‰  r�  rš  rÙ  rÜ  rà  r=   r>   )rA   s   @r5   rC   rC   <   sÔ   ø‡ € ÙôW"ôrô3Sôj-.ò^(ò&*òò6ò-ò-ò-òòNò	ò;ò:`ò1òAòF.ò`hôU2òn)GòV,ò:FBòPòT%òl,ò$Bò"ZOòx4òEKòNc!òJ9÷* ð  r7   rC   c                ó  € \        WW#WEWgWšVWÍVVR7      pVP                  RVP                  4       V P                  RVP                  ,          4       VP                  RVP                  4       V P                  RVP                  ,          4       RVP
                  : RVP                  : 2Vn        RVP                  : R	\        P                  : R
2R\        P                  ,          R\        P                  ,          R\        P                  ,          R\        P                  ,          .Vn        RVP                  : R	\        P                   : R
2Vn        VP%                  4       pRV,          pVVn        \(        P*                  P,                  \(        P*                  P.                  ,          \(        P*                  P0                  ,          Vn        VP4                  P7                  RVP
                  ,          RVP8                  ,          .4       RVP:                  ,          Vn        \>        P@                  Vn!        RVn"        V;PF                  \H        PJ                  \H        PL                  ,          ,          un#        VPF                  Vn'        V'       d(   V;PN                  \H        PP                  ,          un'        VPS                  4        V P                  RVP                  : RVP                  : R24       R# )zJoin as a RODC.©r_   r`   Ú	workgroupúworkgroup is %srª   úrealm is %sz
CN=krbtgt_rC  z<SID=rè  Ú>z<SID=%s>zRestrictedKrbHost/%szCN=RODC Connection (FRS),%sTúJoined domain r�  z) as an RODCN)*rC   r%  rƒ   rn   rª   r•   rw   r¶   r€   r
   ÚDOMAIN_RID_RODC_DENYÚSID_BUILTIN_ADMINISTRATORSÚSID_BUILTIN_SERVER_OPERATORSÚSID_BUILTIN_BACKUP_OPERATORSÚSID_BUILTIN_ACCOUNT_OPERATORSr²   ÚDOMAIN_RID_RODC_ALLOWr³   r3  r·   r‘   r+   r  Ú)UF_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATIONÚUF_PARTIAL_SECRETS_ACCOUNTr  r    Úextendr›   r˜   r´   r   ÚSEC_CHAN_RODCr—  rµ   r±   r   Ú%DRSUAPI_DRS_SPECIAL_SECRET_PROCESSINGÚ$DRSUAPI_DRS_GET_ALL_GROUP_MEMBERSHIPr>  r?  rà  )rZ   rj   rE   rF   r[   r¿   r\   rÀ   Údomain_critical_onlyrÁ   r]   r§   rb   r^   r_   r`   r¾   ÚmysidÚadmin_dns   &&&&&&&&&&&&&&&&   r5   Ú	join_RODCrú    s  € ô ˜¨°4Ø!¨;À;Ø(Ø&3Ø+=ô	?€Cð ‡F�Fˆ;˜Ÿ™Ô(Ø
‡K�KÐ! C§O¡OÕ3Ô4à‡F�Fˆ7�C—I‘IÔØ
‡K�K� §	¡	Õ)Õ*à25·*´*¸c¿k»kÐJ€C…Mð Ÿœ¤X×%BÔ%BÐCØ”X×8Ñ8Õ8Ø”X×:Ñ:Õ:Ø”X×:Ñ:Õ:Ø”X×;Ñ;Õ;ð=€CÕð '*§j¤j´(×2PÔ2PÐQ€C„Nà�M‰M‹O€EØ˜EÕ!€HØ€C„Mä#Ÿj™j×EÑEÜ#Ÿj™j×RÑRõSä#Ÿj™j×CÑCõD€CÔð ‡H�H‡O�OÐ+¨c¯j©jÕ8Ø+¨c¯o©oÕ=ð?ô @ð 6¸¿¹ÕC€CÔÜ"×0Ñ0€CÔØ€C„HØ×Òœ'×GÑGÜ!×FÑFõGõ HÕà"×0Ñ0€CÔßØ× Ò ¤G×$EÑ$EÕEÕ à‡K�K„Mà
‡K‚K¸#¿/¼/È3Ï:Ì:ÐVÖWr7   c                ó˜  € \        WW#WEWgWšVWÍVVR7      pVP                  RVP                  4       V P                  RVP                  ,          4       VP                  RVP                  4       V P                  RVP                  ,          4       \
        P                  P                  \
        P                  P                  ,          Vn	        VP                  P                  RVP                  ,          4       \        P                  Vn        V;P                   \"        P$                  \"        P&                  ,          ,          un        VP                   Vn        V'       d(   V;P(                  \"        P*                  ,          un        VP-                  4        V P                  RVP                  : RVP.                  : R	24       R
# )zJoin as a DC.rå  ræ  rç  rª   rè  z1E3514235-4B06-11D1-AB04-00C04FC2DCD2/$NTDSGUID/%srê  r�  z	) as a DCN)rC   r%  rƒ   rn   rª   r‘   r+   r	  ÚUF_TRUSTED_FOR_DELEGATIONr  r    rn  r”   r   ÚSEC_CHAN_BDCr—  r±   r   rù  Ú!DRSUAPI_DRS_FULL_SYNC_IN_PROGRESSr>  r?  rà  r€   )rZ   rj   rE   rF   r[   r¿   r\   rÀ   r÷  rÁ   r]   r§   rb   r^   r_   r`   r¾   s   &&&&&&&&&&&&&&&& r5   Újoin_DCrÿ  D  s1  € ô ˜¨°4Ø!¨;À;Ø(Ø&3Ø+=ô	?€Cð ‡F�Fˆ;˜Ÿ™Ô(Ø
‡K�KÐ! C§O¡OÕ3Ô4à‡F�Fˆ7�C—I‘IÔØ
‡K�K� §	¡	Õ)Ô*ä"ŸZ™Z×?Ñ?Ä%Ç*Á*×BfÑBfÕf€CÔà‡H�H‡O�OÐGÈ#Ï-É-ÕWÔXÜ"×/Ñ/€CÔà×Òœ'×6Ñ6Ü!×CÑCõDõ EÕà"×0Ñ0€CÔßØ× Ò ¤G×$EÑ$EÕEÕ à‡K�K„MØ
‡K‚K°s·´ÈÏ
Ì
ÐSÖTr7   c
                óž  € \        WW#VWWVVV	R7
      p
VP                  RV
P                  4       V P                  RV
P                  ,          4       VP                  RV
P                  4       V P                  RV
P                  ,          4       V
P                  4        V P                  RV
P                  : RV
P                  : R24       V
# )	z%Creates a local clone of a remote DC.)r\   rÀ   r§   Úinclude_secretsr_   r`   ræ  rç  rª   rè  zCloned domain r�  rž  )ÚDCCloneContextr%  rƒ   rn   rª   rà  r€   )rZ   rj   rE   rF   r\   rÀ   r  r§   r_   r`   r¾   s   &&&&&&&&&& r5   Ú
join_cloner  f  s™   € ô
 ˜¨¸iØ &Ø)8Ø'4Ø,>ô	@€Cð ‡F�Fˆ;˜Ÿ™Ô(Ø
‡K�KÐ! C§O¡OÕ3Ô4à‡F�Fˆ7�C—I‘IÔØ
‡K�K� §	¡	Õ)Ô*à‡K�K„MØ
‡K‚K¨s¯¬ÀÇ
Ä
ÐKÔLØ€Jr7   c                   óF   a a€ ] tR tRt oRtRV 3R lltR tR tRtVt	V ;t
# )r  i|  zClones a remote DC.c                ó  <€ \         SV `  WW4WVVV	V
V'       * R 7
       RV n        RV n        RV n        V P
                  P                  R4      ^ ,          V n        RV n        RV n	        V P                  P                  4       V n        V ;P                  \        P                  \        P                   ,          ,          un        V'       g(   V ;P                  \        P"                  ,          un        V P                  V n        R# ))r\   rÀ   r§   r_   r`   ra   NrQ   )r0   r1   r—   r˜   r™   rj   Úsplitr•   r§  r¡   rl   Úget_ntds_GUIDÚremote_dc_ntds_guidr±   r   rù  rþ  rõ  r>  )r¾   rZ   rj   rE   rF   r\   rÀ   r§   r  r_   r`   r4   s   &&&&&&&&&&&€r5   r1   ÚDCCloneContext.__init__  sÖ   ø€ ô 	‰Ñ˜¨Ø#,Ø%0Ø'4Ø,>Ø,;Ô(;ð 	ô 	=ð ˆŒØˆŒØˆŒØ—Z‘Z×%Ñ% cÓ*¨1Õ-ˆŒ
ØˆŒØ!ˆÔð #&§)¡)×"9Ñ"9Ó";ˆÔà×Òœg×:Ñ:Ü%×GÑGõHõ 	IÕçØ×Ò¤×!NÑ!NÕNÕØ#&×#4Ñ#4ˆÖ r7   c                óÄ  € V P                   P                  R 4       \        P                  ! 4       p\        P                  ! V P
                  R4      Vn        \        P                  ! R\        P                  R4      VR&   V P                  p\        P                  ! R\        V4      ,          \        P                  R4      VR&   V P
                  P                  V4       R# )r‘  r’  r?  r“  r”  r•  N)rZ   rn   rq   rH  rI  r  rË   rJ  rK  r  ru   rL  )r¾   rO  rõ  s   &  r5   rš  ÚDCCloneContext.join_finalise›  s¦   € Ø�
‰
�‰ÐBÔCÜ�KŠK‹MˆÜ�vŠv�c—o‘o zÓ2ˆŒÜ!×0Ò0°¼×9MÑ9MØ1AóCˆÐ
Ñð ×&Ñ&ˆÜ ×/Ò/°¼cÀ$»iÕ0GÜ03×0DÑ0DØ0?óAˆˆ/Ñð 	�‰×Ñ˜qÖ!r7   c                ó†   € V P                  4        V P                  4        V P                  4        V P                  4        R # râ  )rÜ  r  rL  rš  rc  s   &r5   rà  ÚDCCloneContext.do_join©  s4   € Ø×ÑÔð 	×ÑÔØ×ÑÔØ×ÑÖr7   r8   )
NNNNNNNFNN)r9   r:   r;   r<   rã  r1   rš  rà  r=   r>   r?   r@   s   @@r5   r  r  |  s   ù‡ € Ù÷5ò8"÷ò r7   r  c                   óX   a a€ ] tR tRt oRtR	V 3R lltV 3R ltR tR tR t	Rt
VtV ;t# )
ÚDCCloneAndRenameContextiµ  z6Clones a remote DC, renaming the domain along the way.c                óX   <€ \         SV `  WEWgVV	V
VVR 7	       Wn        W n        W0n        R# ))r\   rÀ   r§   r  r_   N)r0   r1   Únew_base_dnÚnew_domain_nameÚ	new_realm)r¾   r  r  r  rZ   rj   rE   rF   r\   rÀ   r§   r  r_   r4   s   &&&&&&&&&&&&&€r5   r1   Ú DCCloneAndRenameContext.__init__¸  s<   ø€ ô 	‰Ñ˜¨Ø#,Ø &Ø%0Ø)8Ø'4ð 	ô 	6ð &ŒØ-ÔØ!Žr7   c                óx   <€ \         SV `  W4      p\        P                  ! W0P                  V P
                  4      # )r1  )r0   r5  r   Údrs_ReplicateRenamerrw   r  )r¾   r4  rü   rö  r4   s   &&& €r5   r5  Ú)DCCloneAndRenameContext.create_replicatorÆ  s/   ø€ ô ‰wÑ(¨ÓEˆÜ×-Ò-¨d·K±KÀÇÁÓQÐQr7   c                óÄ   € \         P                  ! 4       w  r#VP                  RV4       \        P                  P                  VR7      p\        P                  ! V4       V# )z?Creates a non-global LoadParm based on the global LP's settingsF)Úfilename_for_non_global_lp)ÚtempfileÚmkstempÚdumpr‘   ÚparamÚLoadParmÚosÚremove)r¾   Ú	global_lpÚfdÚtmp_fileÚlocal_lps   &&   r5   Úcreate_non_global_lpÚ,DCCloneAndRenameContext.create_non_global_lpÏ  sJ   € ô  ×'Ò'Ó)‰ˆØ�‰�u˜hÔ'Ü—;‘;×'Ñ'À8Ð'ÓLˆÜ
�	Š	�(ÔØˆr7   c                óh   € \         P                  ! RV P                  ,          V P                  V4      # )z/Uses string substitution to replace the base DNrO   )ÚreÚsubrw   r  )r¾   Údn_strs   &&r5   Ú	rename_dnÚ!DCCloneAndRenameContext.rename_dnÞ  s"   € ä�vŠv�e˜cŸk™kÕ)¨3¯?©?¸FÓCÐCr7   c                óP  € \        R4       V P                  V P                  4      p\        V P                  \        4       V P                  \        V P                  VV P                  V P                  4      V P                  V P                  V P                  4      V P                  V P                  4      V P                  V P                  RV P                   V P"                  R7      p\        RVP$                  ,          4       VP&                  V n        VP*                  V n        R# )z"Provision the local (renamed) SAM.z(Provisioning the new (renamed) domain...r	  )r\   r  rª   rF   r  r  r]  r  rÀ   r  r  r§   r_   z%Provision OK for renamed domain DN %sN)r©   r%  rF   r   rZ   r   r\   r   r  r+  ry   r  r{   r}   r  r€   r§   r_   r  rl   r  r  )r¾   Únon_global_lpr  s   &  r5   r  Ú&DCCloneAndRenameContext.join_provisionç  sÐ   € ô 	Ð8Ô9ð ×0Ñ0°·±Ó8ˆô ˜CŸJ™J¬Ó(8Ø&)§m¡mÄØ"%§-¡-°MØ#&§=¡=°·±Ó#=ÈÏÉØ%(§]¡]°3·=±=Ó%AØ%(§]¡]°3·=±=Ó%AØ#&×#6Ñ#6À#Ç*Á*Ø'KØ(+¯©Ø*-×*;Ñ*;ô	=ˆô 	Ð5¸×8HÑ8HÕHÔIØ!Ÿ-™-ˆŒØ—M‘MˆŽ	r7   r8   )	NNNNNNNTN)r9   r:   r;   r<   rã  r1   r5  r%  r+  r  r=   r>   r?   r@   s   @@r5   r  r  µ  s(   ù‡ € Ù@÷"õRòòD÷"ò "r7   r  )NNNNNNNNFNFNFFNN)
NNNNNNFrY   NN)Lrã  Ú
samba.authr   Úsamba.samdbr   r‘   r   r   r   r   rq   r‡   Ú	samba.ndrr   r	   Úsamba.dcerpcr
   r   r   r   r   r   r   r   Úsamba.credentialsr   r   Úsamba.provisionr   r   r   r   r   r   Úsamba.provision.commonr   Úsamba.schemar   r   Ú	samba.netr   Úsamba.provision.sambadnsr   r   r    Úbase64r!   r"   r#   r$   Úsamba.dnsserverr%   r&   r'   rÁ  r¶  r(  r  r  Úcollectionsr(   Úsamba.commonr)   Úsamba.netcmdr*   r+   r,   rÏ   r.   rv  rC   rú  rÿ  r  r  r  r8   r7   r5   Ú<module>r?     sÂ   ðñ& å %Ý ß 9Ó 9Û 
Û Û ß *ß U× UÓ Uß <÷D÷ Då -Ý Ý Ý Ý 4Ý #Ý Ý ß ,Ý ß <Ñ <Û Û Û 	Û 	Û Ý #Ý #Ý %ß (ô8�iô 8ôM�Fô Mô`.5XôpUôDô,4�]ô 4ôrO"˜nö O"r7   