+
    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    03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        Wn        Wn        Wn        Wn        VV n	        Wn
        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        MV 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   YnA        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YnX        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&?&?&AFDWDW&WXCII#&&1
!3*CICJzzz<"//

;CH 

 H6 QR [[0




 :;+

":+9+;*-))@CI 88"CH	(II3>><
 #))6689#))3356CII779:CII779:%%cii&>&>&@A


--/!$!;!;!= IIc$**,&78446 002"779"'M!BB3LCM		113 <%J#**,CKDGJJPSPXPXZ]ZgZghCM/#--?CK>Ajj#++VCK),)9)9);S]]KCOII557CMehkhshssM}}]++03

M"J"&!CJJ.!COO3&)oos}}EGCH "ii..S^^6K5L47KK / AO "1!34I!J1!MC3ckkA3ckkA58I8I#J\J\8]]		((s/A/A/1.1ii.I.I.K48 ) : $CO=!Q&"([\"-MM	$::$99:$889 %<<= %==	>  $  "A || 	(66LT4!$''	(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    ii&&Bc6H6HQUPV&W 5 	II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   zNot 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   iiCII$@$@$B*=@Q@QRUR]R]@^*^&7%E  G s8q=uMEKK9))#&&1(()E)E)GH %+

*B3A3C27FF!D *00s~~BWdVe0f	Q<.q1!f[)!,-) +\ -0KK	+8 9 9- 	A		T2FJJ0aJ8	  )OOC--.iiCII$@$@$B # 1 1(SZZ2G H # 1 1(S__2L M+O &(	  )
 OOCFIIO6iiCII$@$@$B*?#BSBST\_b_i_iTiBj*j%'  ) ! $'#4#4X

5J#K#&#4#4X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(OOC--.==$OOCMM*$6???OOCOO,OOC,,-===$Ojj#**o!V!$4G ,,.J!$J ,,R-7-5-N-NPJ ::<D))DK77
#JoJopD''
LL4D4DE::<D00DK77
#JoJopD''
LL4D4DE<<<OOCLL)OOC,,- 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   ===>??iiCII$@$@$B*=@Q@QRUR]R]@^*^%w  y s8q=  B  EH  EP  EP  P  Q  QA&*=Q*GK]adefagKg  G  JM  JU  JU  U  V  VA+,Q/0EJJ4[4[49JJ4V4V5W X[\]x{~  |G  |G  G  H  H!!fii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GGNN&@S@SVYVgVg@gjm  kB  kB  ABN  CCM ==$$0S]]5N5NRT5T}}00CH}})))  	8 &

1 7 8 8 	YNQW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^    GGNN6),)<)<s?P?P)P # R	  ,1F1F"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_    iiCKKs~~NeMfg"c!f,s1v56q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<    iiBcnn]OT3q6-(+,,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iiM9K9KTaSb*58I8I#ciiNjNjNlJm8n*n  p3q6-(+,,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iiM9K9KTaSb*58I8I#ciiNgNgNiJj8k*k  m3q6-(+,,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    iiCMM*e # 1 1#2F2F G # 6 6

8]8] _+_  ` 3q699~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     iiBcnn]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`    	))""#.."KC  || 	77LT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   kCMM)*#--6 #ejj&B&B&+jj&B&B'C #D$f?S[[8: 			cO,- iiCMMP`Oaba&!1215"S__45KKMvvcii-"11#--252F2FHY [
		36??CKKPS]]C4E4E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     66"x'O25**oNoonffciiH>G>R>RSVS^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        Wn        \         P&                  ! 4       pWn        VP                  V4       EKS  	  \         P*                  ! 4       pV^ ,          Vn        VP,                  pVR,           F  pWn        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4BIBEE9!#&$//AALMNAqAs););QXXf%BAN==cmmQRU#  $99;M+.u:M(',$,,.F "#0 !99;K!'NN;'5 8 ))+#AJ  A D  {{--c.@.@!TJA:{{g7779CKKGH"#677"f&9&99@CDTDTUV"#677A:{{a"#?#++#MNN||""1%)<)<<<<$$,JcllNaNabcNdefH[H[\]H^H^HKHYHYHfHfh i"#677||##w'@'@@9CLL<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    	kCKK'( 3;;&C

 N NOPCMM*	, - ;;s}}=5::#E#EE
 -=,M,Mcff,U)+./L+MC'(5::#E#EE'*{{C#$888$7#--$GC !,/,<,<C()!C	N" 
 %5s}}$DC ! ##uzz'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     ""$!!!IIMM#M4XXXIIMM#01NNC5! iiCKKs~~l^\		#))"?"?cRSfUaNbcdNe"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  rxWPT                  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  rT\*        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  rT\*        P                  8w  d   h  Rp?EKO  Rp?ii ; i  \*        Pp                   ds   pTPr                  w  rT\*        Pt                  8w  d   h T Pv                  Py                  R:T P                  ,          T Pz                  T P                  R'7        Rp?ELR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	   ;;;++,ckkzs{{ #++$c#*@*@5::C_C_*_&`s0C ##uzz'I'II7:5::;S;S7T34%%%7934}}}#&==K %%%#%K ###/2/C/C+,%%%/1+,~~~25.../%%%24./#+M#:K ###&&#++5II$$S%8%8#++F		  !6!6syy#sG[G[!\] , ){H		c5===""$===+-.cmmxs5::#M#M#(::#S#S$T#(::#Q#Q$R  S s0C {{{),%&IIMM#=== CM;;;  " :C<M<McN`N`<aaDii&&S-?-?-/,/II,G,G,I26 ' 8 :=9K9KMF
 :C<M<McN`N`<aaDii&&S-?-?-/,/II,G,G,I26 ' 8 :=9K9KMF
  &.
{{*t9>A7::AD6Dxxx=!00141A1A4IAGII$$Q' / (+ 1 112c''/#V4cnn.C IIMM#;;;%34A66#))S[[1AD3sxx=)!hhqk11+s3==?QR *(+(:(:388;>;O;O;Q)SA$% IIQ 3ckkAB@		%%&P(+(9(9#++(F'G&)mmAF/2{{	 & < ))""3>>*A*5*7 # 8C '#a&0),SV4K-LQ-O)P&)-&%/0@0@03A{0CA0F&HC" $%A66#))S[[1AD&)&8&8S=S=S9T9<9M9M9M'OA"# IIQ??%%h//88cBCK99''(9*Ec:d;F;Es{{;Eszz;H)TWT_T_TfTfgrTsJtJ{J{  }C  KD;Dcoo	;W)X YD $(
C!S%8%8888!$i;c$iGH +,01,/

0L0L05

0L0L1M -N()IIMM#& $(0 7#**DE>		%%&T(+(9(9#**(E'F&)kkAF/2{{	 & < ))""3>>*A)B # DC&#a&0-0Q8O1PQR1S-T*-1*k 07 << @77#666$$#++1414 % @ @	@d ||  vvHSc::: ;" << >77#666$$(SZZ2G14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    	kC,,,-%#cjj/8C]C]'^_JJ3==ckl	#"":/#--?ckk3??s}}3223uzz@@%**BgBggh"I

 5::#E#EE+.s/C/C+DC'(##%..#-w<1!"FGG
()3++99%KL== ' = =)0)E)E	 	 	G 	#$3;;99%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    	&'&&##CJJ(8 -' -&)mm-@H-PSPYPY-#&;;-9<- &)]]- >A]]- &)]]	- <???	-
 &)ZZ-
 <?::- ),- Cg- &)XX- 36&&- DG==- '*mm- BE- /2.C.C- +.*;*;- 03/E/E- (,- 	-0@0@@A!--!**!--	!--	 "mm		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    	+,coo11B"D'5'7 __//(-/	 			##C(9(9$:;))

9:oo$$#*:*:#..YaXb/@BV.W % Y 3q6!!Z]ZjZjlolululyly"z{{	o#&tyy		3q6(CSTUCVC]C]^dCe1f1}1}  E  2F  (G  $HCII  	

,syy/C/CCD

67#))++.:JsvvVszz399cii),)=)="0#&===a&&)9)9399CTCT#&??cmm	M 5::#E#EE//L).&vvzz67?

7?ST-1*II'')G<%coo4@55l6;jj6X6XFJ 6 L 		,,.
 *

7>*SYY-@-@@AW  	o!"WZ]^_Z`aiZjklZm"mnn	oH  G		,,.%&AA&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    ++CJJ<q(9;FFOO
 --d3D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Lh 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  rT	\        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 domainzFirst 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.zReplication 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'+yy1L1L1N'O$}}$/0'+yy1R1R'S$'*}}$xxx(]
  (--.?@''4''6 YY
$Ovv!Q&8+((ED++D//BDNN3==*B/388),):):  < NN3==*B/hh),):):  < === STNN3;;0H#7hh141I1IGLmLm1m # o0 //'2S2SSSs{{4L';((585M5M ' O IJ
 ))3+=+=>$*c"g67NN2#7hh141B1B # D ? xxxs{{,D3$+$D$D4  Q s002J3$+$D$D4  Q ##/
NN3#5#57O#7(/(K(K # M H+C(';$JJOOOP ++g.O.OOO**4+`+`+,.OO..0OO&&t'\'\'(*JJOO45 	""$C # 
vvayF$E$EE

** ,X Y Y 
4 ' 66!9(I(II33g6W6WWWJJ.. 0\ ] F ,, #%77LTwFFF  E  HK  HR  HR  R  S  Y  Z  Z	OO..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    	,II3>><|| 	,66LT 0004<-5

""#NO!kCJJ&>/=/?.1iiCFF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--03CMM0BCMMR//'2M2MM	xxxII555I;;!''(:(:Aq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  rT'       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
zz#--("&-!!#&&#*;*;<

@S4./ 	0 !&&

O'\'*vvsyy: 
$$SYY/	"--/$'$:$:!$,$4$4W69#**o6>6M6M6O6O %P!
	--n./.1jj.2.2.2.2.?.?.:.2.2	4 V$ ww!kkF||t6||t'9'99&/&B&B&D*0&$889:9<9=9=9=9DF * * Bwws|r!

#'r!3 4 n

#'r!3 4bk $668K!KO(()*),)-)-)4)-/ * HqL #syy#2D2D E))&&$'=5F ' H (S\;
 %%cllO0?3;3I3I5=5K5K4L1M 0N & O JJOO*JF G $668Kl+C!KO(()*),)3)4)4)-/ !$syy#2D2D E))&&+z'J5F ' H ,S{
 %%c&6&60?3;3I3I5=5K5K4L1M 0N & O
 	

 N 	Oq  	vvayFEEE"
a	.  + & vvayF,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[[ 

 Cs2w OP""2'C'C#&==sxx141B1B-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((,  888-.OO--c#2C2C.DEOO&&'<'*';';=A66#//4#+++=>AD # 2 28C<M<M3N363G3G3A!CAn OO""1% OO>>qtt?M?@B 	

BCKKMvvcooz2!009M9MO_`
}} //c$i0G030D0DoW/q!===#))++.:JsvvV

56K"%))&)mm(+

&)jj(+030G0G/2/E/E	G ??%%h//COO[IIsyy#**(+$'KK#: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&        Wn'        \F        PP                  ! 4       p
\R        PT                  ! \W        \X        PX                  ! 4       4      4      V
n-        \        P\                  V
n/        Wn0        \F        Pb                  ! 4       p^Vn2        V
.Vn3        \F        Ph                  ! 4       p^Vn2        Wn5        \F        Pl                  ! 4       p^.R
,          p\o        R
4       F  p\p        Pr                  ! ^ ^4      W&   K  	  Wn:        Wn;        Wn<        \{        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    	2SZZ?@**#**oN VVSYY0 ((*
 [[]
(()3X5V5VX
 ((*"%--#&?? ::">>AaAaa44 # E E	jjlG ]]GN:::;>;`;`bGPWP_P_PcPcde''
OO4G4GH S..55kBC,,.}-,+3+M+M+O(:?:K:KCPTPYPYP[L\:](7474M4M(14?1+3+R+R+T(12(.2R1S(...0;113	S3Y
sA"NN1c2JM   *%%!),-g.A.A>RMMO	01	12	779	'	!889=9B9A9P9PR #--E?T__-s4#8#89c$"6"67..CMM(!3(!3 (3=="9
 	C  #*@*@#++N6 #ejj&M&M"N!2!2!9!9+!Fec&<&<<
 	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     }}cmm4KKF===S__6!3!3 44KKCKK=(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2n)GV,:FBPT%l,$B"ZOx4EKNc!J9*   r7   rC   c                   \        WW#WEWgWVWV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 FF;(
KK!COO34FF7CII
KK		)*25**ckkJCM X%B%BCX888X:::X:::X;;;=C '*jj(2P2PQCNMMOEE!HCM#jjEE#jjRRS#jjCCDC HHOO+cjj8+coo=? @ 6CC"00CCH'GG!FFG H"00C  G$E$EE KKM
KK#//3::VWr7   c                   \        WW#WEWgWVWV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 FF;(
KK!COO34FF7CII
KK		)*"ZZ??%**BfBffCHHOOG#--WX"//C'66!CCD E"00C  G$E$EE KKM
KKs

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 FF;(
KK!COO34FF7CII
KK		)*KKM
KKs

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,>,;(; 	 	= ZZ%%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KKMvvcooz2!009M9M1AC
 && //c$i0G030D0D0?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     58" 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--dKK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      '')uh';;''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"    vveckk)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 CJJ(8&)mm"%--M#&==#=%(]]3==%A%(]]3==%A#&#6#6#**'K(+*-*;*;	= 	58H8HHI!--MM	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 #   ,  < <   	 	  # # % (8i 8MF M`.5XpUD,4] 4rO"n O"r7   