
    
'g%                       S SK r S SKJr  S SKrS SKJr  S SKrS SKJrJ	r	J
r
  S SKJr  S SKJrJrJrJrJr  S SKJr  S SKJrJrJrJr  S SKJr  S S	KJrJr   " S
 S\R>                  5      r  " S S\5      r! " S S\!5      r" " S S\!5      r# " S S\!5      r$ " S S\!5      r% " S S\!5      r& " S S\!5      r' " S S\!5      r( " S S\5      r)g)    N)getpass)NTSTATUSErrorntstatuswerror)system_session)drsblobslsanbtnetlogonsecurity)Net)CommandCommandErrorOptionSuperCommand)SamDB)OpenPolicyFallbackCreateTrustedDomainFallbackc                       \ rS rSrS rSrg)LocalDCCredentialsOptions(   c                 @    [         R                  R                  XSS9  g )Nzlocal-dc)special_name)optionsCredentialsOptions__init__)selfparsers     ;/usr/lib/python3/dist-packages/samba/netcmd/domain/trust.pyr   "LocalDCCredentialsOptions.__init__)   s    ""++Dz+R     N__name__
__module____qualname____firstlineno__r   __static_attributes__r"   r!   r   r   r   (   s    Sr!   r   c                      \ rS rSrSrS rS rS r " S S\5      r	 " S S	\5      r
 " S
 S\5      rS rS%S jrS rS r  S&S jrS%S jrS%S jrS rS rS rS rS rS rS rS'S jrS'S jrS rS rS rS  rS! r S" r!S(S# jr"S$r#g))DomainTrustCommand-   List domain trusts.c                     [         R                  " U 5        S U l        S U l        S U l        S U l        S U l        S U l        S U l        g N)	r   r   local_lplocal_serverlocal_binding_stringlocal_credsremote_serverremote_binding_stringremote_credsr   s    r   r   DomainTrustCommand.__init__0   sG     $(!!%)" r!   c                 B    [         R                  " U5      R                  $ r.   )ctypesc_uint32value)r   vs     r   _uint32DomainTrustCommand._uint32<   s    q!'''r!   c                 T    Uc  gU R                  UR                  S   5      nX2:X  a  gg)NFr   T)r=   args)r   runtimevalerr32s       r   check_runtime_error&DomainTrustCommand.check_runtime_error?   s+    ?W\\!_-<r!   c                       \ rS rSrS rSrg)$DomainTrustCommand.LocalRuntimeErrorI   c                     UR                  UR                  S   5      nUR                  S   nSUR                  X4U4-  n[        R                  " X5        g )Nr      z%LOCAL_DC[%s]: %s - ERROR(0x%08X) - %s)r=   r@   r0   r   r   exception_selfr   rA   messagerC   errstrmsgs          r   r   -DomainTrustCommand.LocalRuntimeError.__init__J   sO    LLa1E\\!_F9##WV== =C!!.6r!   r"   Nr#   r"   r!   r   LocalRuntimeErrorrG   I       	7r!   rQ   c                       \ rS rSrS rSrg)%DomainTrustCommand.RemoteRuntimeErrorQ   c                     UR                  UR                  S   5      nUR                  S   nSUR                  X4U4-  n[        R                  " X5        g )Nr   rJ   z&REMOTE_DC[%s]: %s - ERROR(0x%08X) - %s)r=   r@   r3   r   r   rK   s          r   r   .DomainTrustCommand.RemoteRuntimeError.__init__R   sO    LLa1E\\!_F:$$gf>> >C!!.6r!   r"   Nr#   r"   r!   r   RemoteRuntimeErrorrT   Q   rR   r!   rX   c                       \ rS rSrS rSrg) DomainTrustCommand.LocalLdbErrorY   c                     UR                   S   nUR                   S   nSUR                  X4U4-  n[        R                  " X5        g )Nr   rJ   z!LOCAL_DC[%s]: %s - ERROR(%d) - %s)r@   r0   r   r   )rL   r   	ldb_errorrM   errvalrN   rO   s          r   r   )DomainTrustCommand.LocalLdbError.__init__Z   sH    ^^A&F^^A&F5##Wf9> >C!!.6r!   r"   Nr#   r"   r!   r   LocalLdbErrorrZ   Y   rR   r!   r`   c                    U R                   b  U R                   $ UR                  5       nUR                  nUcC  UR                  5       nUS:w  a  [	        SU-  5      eUR                  S5      nSnSnUS-  nS nS n	OSnSnSU-  nUR                  U5      n	X0l        X@l         U< S	U< S
U< S3U l        Xl	        Xl
        U R                   $ )NROLE_ACTIVE_DIRECTORY_DCzInvalid server_role %sznetbios namencalrpc z,auth_type=ncalrpc_as_systemncacn_npz	ldap://%s:[])r0   get_loadparm	ipaddressserver_roler   getget_credentialsr/   r1   local_ldap_urlr2   )
r   	sambaoptslocaldcoptslpr0   rk   local_transportlocal_binding_optionsrn   r2   s
             r   setup_local_server%DomainTrustCommand.setup_local_servera   s    ($$$##%",,..*K88"#;{#KLL66.1L'O$&!!%CC!!NK(O$&!(<7N%55b9K(3BLRg$h!,&   r!   Nc                 l    [         R                  " U R                  U R                  U R                  US9$ N)basis_connection)r	   lsarpcr1   r/   r2   r   rx   s     r   new_local_lsa_connection+DomainTrustCommand.new_local_lsa_connection   s/    zz%%MM-	
 	
r!   c                 n    [         R                   " U R                  U R                  U R                  5      $ r.   )r   r1   r/   r2   r6   s    r   new_local_netlogon_connection0DomainTrustCommand.new_local_netlogon_connection   s'      !:!:DMM4K[K[\\r!   c                 f    [        U R                  [        5       U R                  U R                  S9$ )N)urlsession_infocredentialsrq   )r   rn   r   r2   r/   r6   s    r   new_local_ldap_connection,DomainTrustCommand.new_local_ldap_connection   s-    ,,"0"2!%!1!1' 	'r!   c           	         U(       a	  U(       d   eU R                   b  U R                   $ SU-  U l         U R                  c   eUR                  U R                  5      nUR                  nSn [        XPR                  US9n[        R                  [        R                  -  n	U(       a  U	[        R                  -  n	U(       a  U	[        R                  -  n	UR                  XUS9n
0 [        R                  S	_[        R                   S
_[        R                  S_[        R                  S_[        R"                  S_[        R$                  S_[        R&                  S_[        R                  S_[        R(                  S_[        R*                  S_[        R,                  S_[        R.                  S_[        R0                  S_[        R2                  S_[        R4                  S_[        R6                  S_[        R8                  S_[        R:                  S[        R<                  S0EnU R?                  UU
R@                  SS9nU RB                  RE                  SU
RF                  < SU
RH                  < S U< S!35        U
RH                  U l         S"U R                   < S#U< S$3U l%        XPl&        U R                   $ ! [         a%  n[        SU< SUR                  S   < 35      eS nAf[         a    [        SU-  5      ef = f)%Nz__unknown__remote_server__.%srd   )server)flagsdomainaddressz*Failed to find a writeable DC for domain 'z': rJ   z-Failed to find a writeable DC for domain '%s'PDCGCLDAPDSKDCTIMESERVCLOSESTWRITABLEGOOD_TIMESERVNDNCSELECT_SECRET_DOMAIN_6FULL_SECRET_DOMAIN_6ADS_WEB_SERVICEDS_8DS_9DS_10HAS_DNS_NAMEIS_DEFAULT_NCFOREST_ROOTT
names_onlyzRemoteDC Netbios[] DNS[z] ServerType[]
z	ncacn_np:rg   rh   )'r3   r0   rm   r/   rj   r   r
   NBT_SERVER_LDAPNBT_SERVER_DSNBT_SERVER_WRITABLENBT_SERVER_PDCfinddcr   r   r@   	ExceptionNBT_SERVER_GCNBT_SERVER_KDCNBT_SERVER_TIMESERVNBT_SERVER_CLOSESTNBT_SERVER_GOOD_TIMESERVNBT_SERVER_NDNC!NBT_SERVER_SELECT_SECRET_DOMAIN_6NBT_SERVER_FULL_SECRET_DOMAIN_6NBT_SERVER_ADS_WEB_SERVICENBT_SERVER_DS_8NBT_SERVER_DS_9NBT_SERVER_DS_10NBT_SERVER_HAS_DNS_NAMENBT_SERVER_IS_DEFAULT_NCNBT_SERVER_FOREST_ROOTgeneric_bitmap_to_stringserver_typeoutfwritepdc_namepdc_dns_namer4   r5   )r   credoptsr   require_pdcrequire_writabler5   r3   remote_binding_options
remote_netremote_flagsremote_infoerrorflag_mapserver_type_strings                 r   setup_remote_server&DomainTrustCommand.setup_remote_server   s    ###)%%%<vE  ,,,//> **!#
	Y\==OJ..1B1BBL 7 77 2 22$++,Wd+eK

t
 
 t	

 
 ##Z
 ""I
 ##Z
 ((/
 
 113K
 //1G
 **,=
 
 
    '!
" ''#
$ ((/&&'
* "::8;F;R;R_c ; e		#,,#00*, 	-
 )55:>:L:LNd%e"(!!!I  	8 &

1 7 8 8 	YNQWWXX	Ys   -A9J? ?
L	 K))Lc                 l    [         R                  " U R                  U R                  U R                  US9$ rw   )r	   ry   r4   r/   r5   rz   s     r   new_remote_lsa_connection,DomainTrustCommand.new_remote_lsa_connection   s/    zz&&MM-	
 	
r!   c                 l    [         R                   " U R                  U R                  U R                  US9$ rw   )r   r4   r/   r5   rz   s     r   new_remote_netlogon_connection1DomainTrustCommand.new_remote_netlogon_connection   s1      &&MM-	
 	
r!   c                     Sn[         R                  " 5       nSUl        [         R                  Ul        [        USUUSU5      u  pVpxUR                  U[         R                  5      n	XXXgU	4$ )NrJ   rd   F)r	   revision_info1revision$LSA_FEATURE_TDO_AUTH_INFO_AES_CIPHERsupported_featuresr   QueryInfoPolicy2LSA_POLICY_INFO_DNS)
r   conn_fnpolicy_access
in_versionin_revision_info1connout_versionout_revision_info1policyinfos
             r   get_lsa_infoDomainTrustCommand.get_lsa_info   s|    
..0%&"44 	, 9K9
5- $$VS-D-DEktDDr!   c           	           UR                  US SS S S [        R                  5      nUR                  $ ! [         a    UR                  X#5      s $ f = fNr   )netr_DsRGetDCNameEx2r   DS_RETURN_DNS_NAMEdc_uncRuntimeErrornetr_GetDcName)r   r   r   r   r   s        r   get_netlogon_dc_unc&DomainTrustCommand.get_netlogon_dc_unc   sZ    	7,,V-11dD$-5-H-HJD ;; 	7&&v66	7s   03 AAc           	      P    UR                  US SS S S [        R                  5      nU$ r   )r   r   r   )r   r   r   r   s       r   get_netlogon_dc_info'DomainTrustCommand.get_netlogon_dc_info  s0    (()-q$d)1)D)DF r!   c                 n    UR                   [        R                  :X  a  UR                  $ UR                  $ r.   )
trust_typer	   LSA_TRUST_TYPE_DOWNLEVELnetbios_namedns_namer   ts     r   netr_DomainTrust_to_name+DomainTrustCommand.netr_DomainTrust_to_name  s(    <<3777>>!zzr!   c                    S nS nU HY  nUR                   [        R                  -  (       d  M'  UnUR                   [        R                  -  (       d  XR                     n  O   UR                   [        R
                  -  (       a<  X$L a  gUR                   [        R                  -  (       a  gXR                     nXcL a  ggUR                  [        R                  -  (       a  gg)NParentTreeRootChildShortcutForestExternal)	trust_flagsr   NETR_TRUST_FLAG_PRIMARYNETR_TRUST_FLAG_TREEROOTparent_indexNETR_TRUST_FLAG_IN_FORESTtrust_attributesr	   %LSA_TRUST_ATTRIBUTE_FOREST_TRANSITIVE)r   ar   primaryprimary_parent_tparents          r   netr_DomainTrust_to_type+DomainTrustCommand.netr_DomainTrust_to_type  s    B~~ @ @@@~~(I(II%&%7N  ==8==="}}x@@@!~~&F  I IIr!   c                     UR                   [        R                  -  (       a  gUR                  [        R
                  -  (       a  gUR                  [        R                  -  (       a  gg)NYesNo)r   r   r  r  r	   "LSA_TRUST_ATTRIBUTE_NON_TRANSITIVEr  r   s     r   netr_DomainTrust_to_transitive1DomainTrustCommand.netr_DomainTrust_to_transitive)  sH    ==8=== F FF I IIr!   c                    UR                   [        R                  -  (       a#  UR                   [        R                  -  (       a  gUR                   [        R                  -  (       a  gUR                   [        R                  -  (       a  gg)NBOTHINCOMINGOUTGOINGINVALID)r   r   NETR_TRUST_FLAG_INBOUNDNETR_TRUST_FLAG_OUTBOUNDr   s     r   netr_DomainTrust_to_direction0DomainTrustCommand.netr_DomainTrust_to_direction5  sV    ==8;;;==8<<<==8;;;==8<<<r!   c                 h     X   nSX$4-  nU$ ! [          a    U R                  U5      nSU-  n N*f = f)Nz__unknown__%08X__	0x%x (%s))KeyErrorr=   )r   e_dictr<   r   wv32rs          r   generic_enum_to_string)DomainTrustCommand.generic_enum_to_stringB  sI    	*	A
 1&   	*,,q/C#c)A	*s     11c                     / nUn[        UR                  5       5       H  nXV-  (       d  M  XV) -  nXAU   /-  nM     US:w  a  U R                  U5      nUSU-  /-  nSR                  U5      nU(       a  U$ SX(4-  n	U	$ )Nr   z__unknown_%08X__,r  )sortedkeysr=   join)
r   b_dictr<   r   scbc32r  r   s
             r   r   +DomainTrustCommand.generic_bitmap_to_stringL  s    &AEGA)A	 ' 6,,q/C$s*++AHHQKH1& r!   c                     [         R                  S[         R                  S[         R                  S[         R                  S0nU R                  X!5      $ )N	DOWNLEVELUPLEVELMITDCE)r	   r   LSA_TRUST_TYPE_UPLEVELLSA_TRUST_TYPE_MITLSA_TRUST_TYPE_DCEr!  )r   r<   typess      r   trustType_string#DomainTrustCommand.trustType_stringa  sH    ((+&&	""E""E	
 **544r!   c                     [         R                  [         R                  -  S[         R                  S[         R                  S0nU R                  X!5      $ )Nr  INBOUNDOUTBOUND)r	   LSA_TRUST_DIRECTION_INBOUNDLSA_TRUST_DIRECTION_OUTBOUNDr!  )r   r<   
directionss      r   trustDirection_string(DomainTrustCommand.trustDirection_stringj  sL    ++,,-.4++Y,,j	

 **:99r!   c                 (   [         R                  S[         R                  S[         R                  S[         R                  S[         R
                  S[         R                  S[         R                  S[         R                  S0nU R                  X!5      $ )	NNON_TRANSITIVEUPLEVEL_ONLYQUARANTINED_DOMAINFOREST_TRANSITIVECROSS_ORGANIZATIONWITHIN_FORESTTREAT_AS_EXTERNALUSES_RC4_ENCRYPTION)
r	   r   LSA_TRUST_ATTRIBUTE_UPLEVEL_ONLY&LSA_TRUST_ATTRIBUTE_QUARANTINED_DOMAINr  &LSA_TRUST_ATTRIBUTE_CROSS_ORGANIZATION!LSA_TRUST_ATTRIBUTE_WITHIN_FOREST%LSA_TRUST_ATTRIBUTE_TREAT_AS_EXTERNAL'LSA_TRUST_ATTRIBUTE_USES_RC4_ENCRYPTIONr   )r   r<   
attributess      r   trustAttributes_string)DomainTrustCommand.trustAttributes_strings  sz    224D00.668L557J668L11?557J779N	

 ,,Z;;r!   c                 h   [         R                  S[         R                  S[         R                  S[         R                  S[         R
                  S[         R                  S[         R                  S[         R                  S[         R                  S	[         R                  S
0
nU R                  X!5      $ )NDES_CBC_CRCDES_CBC_MD5RC4_HMAC_MD5AES128_CTS_HMAC_SHA1_96AES256_CTS_HMAC_SHA1_96zAES256_CTS_HMAC_SHA1_96-SKFAST_SUPPORTEDCOMPOUND_IDENTITY_SUPPORTEDCLAIMS_SUPPORTED!RESOURCE_SID_COMPRESSION_DISABLED)r   KERB_ENCTYPE_DES_CBC_CRCKERB_ENCTYPE_DES_CBC_MD5KERB_ENCTYPE_RC4_HMAC_MD5$KERB_ENCTYPE_AES128_CTS_HMAC_SHA1_96$KERB_ENCTYPE_AES256_CTS_HMAC_SHA1_96'KERB_ENCTYPE_AES256_CTS_HMAC_SHA1_96_SKKERB_ENCTYPE_FAST_SUPPORTED(KERB_ENCTYPE_COMPOUND_IDENTITY_SUPPORTEDKERB_ENCTYPE_CLAIMS_SUPPORTED.KERB_ENCTYPE_RESOURCE_SID_COMPRESSION_DISABLEDr   )r   r<   enctypess      r   kerb_EncTypes_string'DomainTrustCommand.kerb_EncTypes_string  s    --}--}..99;T99;T<<>Z002B==?\224FCCEh
 ,,X99r!   c                     US:X  a  g[         R                  S[         R                  S[         R                  S0nSU R	                  X!SS9-  $ )	Nr   Status[Enabled]zDisabled-NewDisabledzDisabled-Conflicting
Status[%s]Tr   )r	   LSA_TLN_DISABLED_NEWLSA_TLN_DISABLED_ADMINLSA_TLN_DISABLED_CONFLICTr   r   e_flagsr   s      r   entry_tln_status#DomainTrustCommand.entry_tln_status  sU    a<$ $$n&&
))+A

 d;;EW[;\\\r!   c                     US:X  a  g[         R                  S[         R                  S[         R                  S[         R                  S0nSU R                  X!SS	9-  $ )
Nr   rk  zDisabled-SIDzDisabled-SID-ConflictingzDisabled-NBzDisabled-NB-Conflictingrm  Tr   )r	   LSA_SID_DISABLED_ADMINLSA_SID_DISABLED_CONFLICTLSA_NB_DISABLED_ADMINLSA_NB_DISABLED_CONFLICTr   rq  s      r   entry_dom_status#DomainTrustCommand.entry_dom_status  sa    a<$ &&))+E%%}((*C	
 d;;EW[;\\\r!   c                    Ub  SU-  nOSnU R                   R                  S[        UR                  5      U4-  5        [	        UR                  5       GH  u  pVUR
                  nSnUbJ  UR                   H:  n	U	R                  U:w  a  M  U	R
                  nSU	R                  R                  -  nM<     UR                  n
UR                  [        R                  :X  aD  U R                   R                  SU R                  U5      <S SU
R                  < SU< S	35        M  UR                  [        R                  :X  a2  U R                   R                  S
S<S SU
R                  < S35        GM  UR                  [        R                  :X  d  GM@  U R                   R                  SU R!                  U5      <S SU
R"                  R                  < SU
R$                  R                  < SU
R&                  < SU< S	35        GM     g )Nz TDO[%s]rd   zNamespaces[%d]%s:
z Collision[%s]TLN: 32 DNS[*.rh   
zTLN_EX: 29r   zDOM: z DNS[z
] Netbios[] SID[)r   r   lenentries	enumerater   indexnamestringforest_trust_datatyper	   LSA_FOREST_TRUST_TOP_LEVEL_NAMErs  "LSA_FOREST_TRUST_TOP_LEVEL_NAME_EXLSA_FOREST_TRUST_DOMAIN_INFOrz  dns_domain_namenetbios_domain_name
domain_sid)r   ftitln
collisions
tln_stringier   collision_stringr*  ds              r   write_forest_trust_info*DomainTrustCommand.write_forest_trust_info  s   ?#c)JJ		-CKK(*16 6 	7 ckk*DAGGE!%#++Aww!| GGE'7166=='I$	 , ##Avv<<<		 $ 5 5e < !*:!< = 3AAA		 "AHH!. /3;;;		 $ 5 5e < ! 1 1 8 8 ! 5 5 < < !.>	!@ A+ +4 	r!   )r1   r2   rn   r/   r0   r4   r5   r3   r.   )TT)F)NN)$r$   r%   r&   r'   __doc__r   r=   rD   r   rQ   rX   r`   rt   r{   r~   r   r   r   r   r   r   r   r   r	  r  r  r!  r   r7  r?  rQ  rh  rs  rz  r  r(   r"   r!   r   r*   r*   -   s    
!(7L 77\ 77 7!>
]' )--1@"D

E*78
*5:<:	]
]#r!   r*   c                   ^    \ rS rSrSrSr\R                  \R                  \	S.r
/ rSS jrSrg)	cmd_domain_trust_listi  r,   z%prog [options]ro   versionoptsrp   Nc                 "   U R                  X5      n U R                  5       n UR	                  U[
        R                  [
        R                  -  [
        R                  -  5      nUR                  nU H  n	U	R                  [
        R                  -  (       a  M'  U R                   R#                  SU R%                  X5      -  <S SSU R'                  U	5      -  <S SS	U R)                  U	5      -  <S
 SSU R+                  U	5      -  < S35        M     g ! [         a  nU R                  XS5      eS nAff = f! [         aJ  nU R                  U[        R                  5      (       a  [        SU-  5      eU R                  XS5      eS nAff = f)N!failed to connect netlogon serverz:LOCAL_DC[%s]: netr_DsrEnumerateDomainTrusts not supported.z$netr_DsrEnumerateDomainTrusts failedzType[%s]14 zTransitive[%s]15zDirection[%s]19zName[%s]r  )rt   r~   r   rQ   netr_DsrEnumerateDomainTrustsr   r  r  r  rD   r   WERR_RPC_S_PROCNUM_OUT_OF_RANGEr   arrayr   r   r   r   r	  r  r  r   )
r   ro   r  rp   r0   local_netlogonr   local_netlogon_trustsr  r   s
             r   runcmd_domain_trust_list.run  s   ..yF	[!??AN	^<<\=E=_=_=E=^=^>_=E=]=]>^_ " "''A}}x???IIOO&)F)Fq)LL,t/R/RST/UU+d.P.PQR.SS&)F)Fq)II	K L  	3  	[((6YZZ	[  	^''v/U/UVV"#_#/$1 2 2((6\]]	^s0   D AD: 
D7 D22D7:
FAF		Fr"   NNN)r$   r%   r&   r'   r  synopsisr   SambaOptionsVersionOptionsr   takes_optiongroupstakes_optionsr  r(   r"   r!   r   r  r    s5     H ))--0Mr!   r  c                   d    \ rS rSrSrSr\R                  \R                  \	S.r
/ rS/rS	S jrSrg)
cmd_domain_trust_showi  Show trusted domain details.%prog NAME [options]r  r   Nc           	      
   U R                  X$5         [        R                  nU R                  U R                  U5      u  nnnn	n
U R                  R                  SU
R                  R                  < SU
R                  R                  < SU
R                  < S35        [        R                  " 5       nXl
         UR                  UU[        R                  5      nUR                   nUR"                  n UR                  UU[        R.                  5      n S nUR8                  [        R:                  -  (       a!  UR=                  UU[        R>                  5      nU R                  R                  S5        U R                  R                  SURJ                  R                  -  5        URJ                  R                  URL                  R                  :w  a2  U R                  R                  SURL                  R                  -  5        U R                  R                  SUR                  -  5        U R                  R                  SU RO                  URP                  5      -  5        U R                  R                  SU RS                  URT                  5      -  5        U R                  R                  SU RW                  UR8                  5      -  5        [X        RZ                  " UR"                  5      R\                  n[X        R^                  " UR"                  5      R\                  nU R                  R                  SUU4-  5        U R                  R                  SU Ra                  UR6                  5      -  5        UR8                  [        R:                  -  (       a$  U Rc                  UURL                  R                  S9  g ! [
         a  nU R                  XS5      eS nAff = f! [$         aJ  nU R'                  U[(        R*                  5      (       a  [-        SU-  5      eU R                  XS5      eS nAff = f! [$         a  nU R'                  U[(        R0                  5      (       a  S nU R'                  U[(        R2                  5      (       a  S nUb  U R                  XS5      e[        R4                  " 5       nS	Ul         S nAGNS nAff = f! [
         a  nU R'                  U[(        R@                  5      (       a  S nU R'                  U[(        RB                  5      (       a  S nUb  U R                  XS
5      e[        RD                  " 5       nS	Ul#        / Ul$         S nAGNS nAff = f)N#failed to query LSA_POLICY_INFO_DNSLocalDomain Netbios[r   r  r   4trusted domain object does not exist for domain [%s]z.QueryTrustedDomainInfoByName(FULL_INFO) failed?QueryTrustedDomainInfoByName(SUPPORTED_ENCRYPTION_TYPES) failedr   z&lsaRQueryForestTrustInformation failedzTrustedDomain:

zNetbiosName:    %s
zDnsName:        %s
zSID:            %s
zType:           %s
zDirection:      %s
zAttributes:     %s
zPosixOffset:    0x%08X (%d)
zkerb_EncTypes:  %s
r  )2rt   r	   !LSA_POLICY_VIEW_LOCAL_INFORMATIONr   r{   r   rQ   r   r   r  r  
dns_domainsidStringQueryTrustedDomainInfoByName!LSA_TRUSTED_DOMAIN_INFO_FULL_INFOinfo_exposix_offsetr   rD   r   NT_STATUS_OBJECT_NAME_NOT_FOUNDr   -LSA_TRUSTED_DOMAIN_SUPPORTED_ENCRYPTION_TYPESNT_STATUS_INVALID_PARAMETERNT_STATUS_INVALID_INFO_CLASS TrustDomainInfoSupportedEncTypes	enc_typesr  r  lsaRQueryForestTrustInformationr  "NT_STATUS_RPC_PROCNUM_OUT_OF_RANGENT_STATUS_NOT_FOUNDForestTrustInformationcountr  r   domain_namer7  r   r?  trust_directionrQ  r9   r:   r;   c_int32rh  r  )r   r   ro   r  rp   local_policy_access	local_lsalocal_policylocal_versionlocal_revision_info1local_lsa_infor   	lsaStringlocal_tdo_fulllocal_tdo_infolocal_tdo_posixlocal_tdo_enctypeslocal_tdo_forestposix_offset_u32posix_offset_i32s                       r   r  cmd_domain_trust_show.run  s   	7
	]"%"G"G !!$"?"?ATU$
 			&++22&1188&**, 	-
 JJL	!	h66|7@7:7\7\^  ,33N,99O	-66|7@7:7h7hj "	*#..1Z1ZZ==l>G>A>^>^` !  			,-		.1L1L1S1SST&&--1K1K1R1RRIIOO2^5O5O5V5VVW		.1C1CCD		.1F1F~G`G`1aab		.1K1KNLjLj1kkl		.1L1L^MlMl1mmn!???+G+GHNN!>>/*F*FGMM		7;KM]:^^_		.1J1JK]KgKg1hhi**S-V-VV(()9-;-G-G-N-N ) P 	[  	]((6[\\	]"  	h''x/W/WXX"#Y\b#bcc((6fgg		h  	-''x/S/STT''x/T/TUU ,,T-np p "%!E!E!G+,((	-(  
	*''x/Z/Z[[''x/K/KLL ,,T:bcc"99;%&"')$$
	*sc   2O ;9O, 5!Q AS 
O)O$$O),
Q 6AP;;Q 
SA?SS
U5$BU00U5r"   r  )r$   r%   r&   r'   r  r  r   r  r  r   r  r  
takes_argsr  r(   r"   r!   r   r  r    s?    &%H ))--0M JYr!   r  c            
           \ rS rSrSrSr\R                  \R                  \	S.r
\" SSSSS	S
9\" SSSSS	S
9\" SSSSS	S
9/rS/r  SS jrSrg	)cmd_domain_trust_modifyif  r  r  r  z--use-aes-keys
store_truez!The trust uses AES kerberos keys.use_aes_keysNactionhelpdestdefault--no-aes-keysz:The trust does not have any support for AES kerberos keys.disable_aes_keysz--raw-kerb-enctypesstorezThe raw kerberos enctype bitskerb_enctypesr   c           	         SnSn	Ub  U	S-  n	Ub  U	S-  n	Ub  U	S-  n	U	S:  a  [        S5      eU	S:X  a  US-  nUS:X  a  [        S5      eU R                  X$5         [        R                  n
U R	                  U R
                  U
5      u  nnnnnU R                  R                  SUR                  R                  < SUR                  R                  < SUR                  < S	35        U	S:X  Ga  [        R                  " 5       nUUl         UR                  UU[        R                   5      nU R                  R                  SU R1                  UR.                  5      -  5        [        R,                  " 5       nUb  [3        USS9Ul        O`Ub9  [4        R6                  Ul        U=R.                  [4        R8                  -  sl        O$Ub  [4        R:                  Ul        O[        S5      eUR.                  UR.                  :w  a[   UR=                  UU[        R                   U5      nU R                  R                  SU R1                  UR.                  5      -  5        g U R                  R                  S5        g ! [         a  nU R                  U US5      eS nAff = f! ["         a  nU R%                  U[&        R(                  5      (       a  S nU R%                  U[&        R*                  5      (       a  S nUb  U R                  U US
5      e[        R,                  " 5       nSUl         S nAGNS nAff = f! ["         a   nUb  U R                  U US5      e S nAg S nAff = f)Nr   rJ   zL--no-aes-keys, --use-aes-keys and --raw-kerb-enctypes are mutually exclusivez/modification arguments are required, try --helpr  r  r   r  r   r  zOld kerb_EncTypes:  %s
)basez&Internal error should be checked abovezNew kerb_EncTypes:  %s
z=SetTrustedDomainInfoByName(SUPPORTED_ENCRYPTION_TYPES) failedzNo kerb_EncTypes update needed
)r   rt   r	   r  r   r{   r   rQ   r   r   r  r  r  r  r  r  r  r   rD   r   r  r  r  r  rh  intr   r`  ra  r_  SetTrustedDomainInfoByName)r   r   ro   r  rp   r  r  r  num_modificationsenctype_argsr  r  r  r  r  r  r   r  r  r  s                       r   r  cmd_domain_trust_modify.run  s_    $AL#AL'AL!mnn1"!PQQ	7
	]"%"G"G !!$"?"?ATU$
 			&++22&1188&**, 	-
 1

I%I1::<;D;>;l;ln #" IIOO69R9RSeSoSo9ppq<<>I(&)-a&@	#)&.&S&S	###x'T'TT#!- '/&H&H	#"#KLL""&8&B&BB
v!<<\=F=@=n=n=FH '
 IIOO$>AZAZ[d[n[nAo$op 	 		 BCy  	]((u6[\\	]" ! 1++E83W3WXX E++E83X3XYY E$00u1rt t &)%I%I%K"/0",,1H % v("44T55tv v ) 	vsJ   2I= !J" AL: =
JJJ"
L7,B L22L7:
M$MM$r"   )NNNNNNr$   r%   r&   r'   r  r  r   r  r  r   r  r   r  r  r  r(   r"   r!   r   r  r  f  s    &%H ))--0 	7"	 	|P&	 	$W3#	M JHLDH[r!   r  c                   F   \ rS rSrSrSr\R                  \R                  \R                  \
S.r\" SSSSS	/S
SSS9\" SSS/ SQSSSS9\" SSSSS/SSSS9\" SSSSSS9\" SSS/ S QS!S"S#S9\" S$SS%S&SS9\" S'SS(S)SS9\" S*S+S,S-S.S9\" S/S+S0S1S.S9/	rS2/r     S5S3 jrS4rg#)6cmd_domain_trust_createi  z Create a domain or forest trust.%prog DOMAIN [options]ro   r  r   rp   z--typechoiceTYPEexternalforestz.The type of the trust: 'external' or 'forest'.r   r  metavarchoicesr  r  r  z--direction	DIRECTION)incomingoutgoingbothz6The trust direction: 'incoming', 'outgoing' or 'both'.r  r  z--create-locationLOCATIONlocalz=Where to create the trusted domain object: 'local' or 'both'.create_locationz--cross-organisationr  z=The related domains does not belong to the same organisation.cross_organisationFr  z--quarantinedzyes|no)yesnoNzSpecial SID filtering rules are applied to the trust. With --type=external the default is yes. With --type=forest the default is no.quarantined_argNz--not-transitivez#The forest trust is not transitive.not_transitivez--treat-as-externalz'The treat the forest trust as external.treat_as_externalr  store_falsez)The trust does not use AES kerberos keys.r  Tz--skip-validationzSkip validation of the trust.validater   c           
      '  ^  [         R                  " 5       nSnU
c	  US:X  a  SnOU
S:X  a  SnUS:w  a$  U(       a  [        S5      eU(       a  [        S5      e[         R                  " 5       nU(       a9  [        R
                  Ul        U=R                  [        R                  -  sl        O[        R                  Ul        [         R                  nU[         R                  -  nU[         R                  -  n[         R                  " 5       n[         R                  Ul        SUl        US	:X  aG  U=R                  [         R                   -  sl        U=R                  [         R"                  -  sl        OSUS
:X  a$  U=R                  [         R                   -  sl        O)US:X  a#  U=R                  [         R"                  -  sl        SUl        U	(       a#  U=R$                  [         R&                  -  sl        U(       a#  U=R$                  [         R(                  -  sl        US:X  a#  U=R$                  [         R*                  -  sl        U(       a#  U=R$                  [         R,                  -  sl        U(       a#  U=R$                  [         R.                  -  sl        U 4S jnS nS n[         R                  nUS:X  a  UR                  [         R                   -  (       a"  U" S5      n[1        UR3                  S5      5      nUR                  [         R"                  -  (       a"  U" S5      n[1        UR3                  S5      5      nS nGO&S nUR                  [         R                   -  (       a  U" S5      nUR                  [         R"                  -  (       a  U" S5      nU[         R                  -  nU[         R                  -  n[         R                  " 5       n[         R                  Ul        SUl        US	:X  aG  U=R                  [         R                   -  sl        U=R                  [         R"                  -  sl        OSUS
:X  a$  U=R                  [         R"                  -  sl        O)US:X  a#  U=R                  [         R                   -  sl        SUl        U	(       a#  U=R$                  [         R&                  -  sl        U(       a#  U=R$                  [         R(                  -  sl        US:X  a#  U=R$                  [         R*                  -  sl        U(       a#  U=R$                  [         R,                  -  sl        U(       a#  U=R$                  [         R.                  -  sl        T R5                  X#5      n T R7                  T R8                  U5      u  nnnn n!T R>                  RA                  SU!RB                  RD                  < SU!RF                  RD                  < SU!RH                  < S35         T RK                  XA5      n# T R7                  T RN                  U5      u  n$n%n&n'n(T R>                  RA                  SU(RB                  RD                  < SU(RF                  RD                  < SU(RH                  < S35        U(RF                  RD                  URP                  l"        U(RB                  RD                  URR                  l"        U(RH                  Ul$        U(       a[  U!RF                  RD                  URP                  l"        U!RB                  RD                  URR                  l"        U!RH                  Ul$         URP                  RD                  Ul"        URU                  UU[         RV                  5        [        SURD                  -  5      e! [:         a  n"T R=                  T U"S5      eS n"A"ff = f! [:         a  n"T RM                  T U"S5      eS n"A"ff = f! [:         a  n"T RM                  T U"S5      eS n"A"ff = f! [X         aO  n"T R[                  U"[\        R^                  5      (       d   T R=                  T U"SURD                  -  5      e S n"A"OS n"A"ff = f URR                  RD                  Ul"        URU                  UU[         RV                  5        [        SURD                  -  5      e! [X         aO  n"T R[                  U"[\        R^                  5      (       d   T R=                  T U"SURD                  -  5      e S n"A"OS n"A"ff = fU(       Gab   URP                  RD                  Ul"        U$RU                  U%U[         RV                  5        [        SURD                  -  5      e! [X         aO  n"T R[                  U"[\        R^                  5      (       d   T RM                  T U"SURD                  -  5      e S n"A"OS n"A"ff = f URR                  RD                  Ul"        U$RU                  U%U[         RV                  5        [        SURD                  -  5      e! [X         aO  n"T R[                  U"[\        R^                  5      (       d   T RM                  T U"SURD                  -  5      e S n"A"OS n"A"ff = f T Ra                  5       n)O%! [:         a  n"T R=                  T U"S5      eS n"A"ff = f T Rc                  U)U5      n*O%! [:         a  n"T R=                  T U"S5      eS n"A"ff = fU(       aq   T Re                  5       n+O%! [:         a  n"T RM                  T U"S5      eS n"A"ff = f T Rg                  U+U#U5      n,O%! [:         a  n"T RM                  T U"S5      eS n"A"ff = fS n-[h        Rj                  " 5       n.U-" UU.5      n/U-" UU.5      n0S n1S n2 U(       a  T R>                  RA                  S5        S S!S".n3[m        U$U%U[         Rn                  U&U'U0U/5      n2T R>                  RA                  S#5        U(       aA  T R>                  RA                  S$5        S S%S".n3U$Rq                  U2[         Rr                  U5        T R>                  RA                  S&5        SS!S".n3[m        UUU[         Rn                  UU U/U05      n1T R>                  RA                  S'5        U(       aA  T R>                  RA                  S(5        SS%S".n3URq                  U1[         Rr                  U5        O! [:         a  n"T R>                  RA                  S)W3S*   < S+U3S,   < S-35        U2(       a.  T R>                  RA                  S.5        U$Ru                  U25        S n2U1(       a.  T R>                  RA                  S/5        URu                  U15        S n1U3S,   S :X  a  T RM                  T U"S0U3S*   -  5      eT R=                  T U"S0U3S*   -  5      eS n"A"ff = fU(       Ga  UR$                  [         R*                  -  (       Ga  T R>                  RA                  S15         U)Rw                  U*Rx                  U(RF                  RD                  [z        R|                  5      n4O%! [:         a  n"T R=                  T U"S25      eS n"A"ff = f UR                  UU(RF                  [         R                  U4S5      n5O%! [:         a  n"T R=                  T U"S35      eS n"A"ff = fT R                  U4U(RF                  RD                  U5S49  U(       a  T R>                  RA                  S55         W+Rw                  W,U!RF                  RD                  [z        R|                  5      n6O%! [:         a  n"T RM                  T U"S25      eS n"A"ff = f U$R                  U%U!RF                  [         R                  U6S5      n7O%! [:         a  n"T RM                  T U"S35      eS n"A"ff = fT R                  U6U!RF                  RD                  U7S49  UR                  [         R"                  -  (       Ga  T R>                  RA                  S65         U)R                  U*Rx                  [z        R                  S7U(RF                  RD                  5      n8O%! [:         a  n"T R=                  T U"S85      eS n"A"ff = fT R                  U8R                  S   5      n9T R                  U8R                  S   5      n:U8R                  [z        R                  -  (       a4  S9U8R                  < S:U8R                  S;   < S<U8R                  S;   < S=3n;O3S9U8R                  < S:U8R                  S;   < S<U8R                  S;   < S>3n;U9[        R                  :w  d  U:[        R                  :w  a  [        U;5      eT R>                  RA                  S?U;-  5        U(       Ga  UR                  [         R"                  -  (       Ga  T R>                  RA                  S@5         W+R                  W,[z        R                  S7U!RF                  RD                  5      n<O%! [:         a  n"T RM                  T U"S85      eS n"A"ff = fT R                  U<R                  S   5      n=T R                  U<R                  S   5      n>U<R                  [z        R                  -  (       a4  SAU<R                  < S:U<R                  S;   < S<U<R                  S;   < S=3n?O3SAU<R                  < S:U<R                  S;   < S<U<R                  S;   < S>3n?U=[        R                  :w  d  U>[        R                  :w  a  [        U?5      eT R>                  RA                  S?U?-  5        U2b%   U$R                  U25        O! [:         a     Of = fS n2U1b%   UR                  U15        O! [:         a     Of = fS n1T R>                  RA                  SB5        g )CNFr  Tr  r  z'--not-transitive requires --type=forestz*--treat-as-external requires --type=forestr   r  r  r  c                    > S n Ub  US:w  a  U$ [        SU -  5      n[        SU -  5      nX:X  d  S nTR                  R                  S5        MK  )Nrd   zNew %s Password: zRetype %s Password: zSorry, passwords do not match.
)r   r   r   )r  passwordpasswordverifyr   s      r   get_password1cmd_domain_trust_create.run.<locals>.get_passwordR  s]    H'HN#O"#6#=>!()?$)F!G1#HIIOO$FG r!   r  zIncoming Trust	utf-16-lezOutgoing Trustc                 p    [         R                  " U S-  U S-  5      n[        UR                  S5      5      $ )N   r  )samba generate_random_machine_passwordlistencode)lengthpws     r   random_trust_secret8cmd_domain_trust_create.run.<locals>.random_trust_secrett  s1    ;;FaKSTUBIIk233r!      r  r  r   r  r   failed to locate remote serverRemoteDomain Netbios[zTrustedDomain %s already exist'z2QueryTrustedDomainInfoByName(%s, FULL_INFO) failedr  failed to get netlogon dc infoc                    U c  [         R                  " 5       nSUl        U$ [         R                  " 5       n[	        U 5      Ul        Xl        [         R                  " 5       n[        R                  " U5      Ul
        [        R                  Ul        X4l        [         R                  " 5       nSUl        U/Ul        [         R                  " 5       nSUl        XRl        U$ )Nr   rJ   )r   trustAuthInOutBlobr  AuthInfoClearr  sizer  AuthenticationInformationr  unix2nttimeLastUpdateTimer	   TRUST_AUTH_TYPE_CLEARAuthTypeAuthInfoAuthenticationInformationArrayr  current)secretupdate_timeblobclearr   r  s         r   generate_AuthInOutBlob;cmd_domain_trust_create.run.<locals>.generate_AuthInOutBlob  s    ~224
**,EVEJ#N557D"'"3"3K"@D55DM!M;;=EEK&EK..0DDJ LKr!   zCreating remote TDO.
remoteCreateTrustedDomainEx2)locationr  zRemote TDO created.
z2Setting supported encryption types on remote TDO.
SetInformationTrustedDomainzCreating local TDO.
zLocal TDO created
z1Setting supported encryption types on local TDO.
zError: r  z failed r;  zly - cleaning up
zDeleting remote TDO.
zDeleting local TDO.
z%sz(Setup local forest trust information...
*netr_DsRGetForestTrustInformation() failed&lsaRSetForestTrustInformation() failedr  r  z)Setup remote forest trust information...
zValidating outgoing trust...
r  !NETLOGON_CONTROL_TC_VERIFY failedLocalValidation: DC[] CONNECTION[rJ   ] TRUST[] VERIFY_STATUS_RETURNEDrh   OK: %s
zValidating incoming trust...
RemoteValidation: DC[z	Success.
)Mr	   r  r   r  r   r`  r  ra  r_  r  LSA_POLICY_TRUST_ADMINLSA_POLICY_CREATE_SECRETTrustDomainInfoInfoExr3  r   r  r<  r=  r  rL  rK  r  r  rN  r  r  rt   r   r{   r   rQ   r   r   r  r  r  r  r   rX   r   r  r   r  r  r   rD   r   r  r~   r   r   r   r  current_unix_timer   LSA_TRUSTED_DOMAIN_ALL_ACCESSr<  r  DeleteObject!netr_DsRGetForestTrustInformationr   r   DS_GFTI_UPDATE_TDOlsaRSetForestTrustInformationr  r  netr_LogonControl2ExNETLOGON_CONTROL_TC_VERIFYr=   pdc_connection_statustc_connection_statusr   NETLOGON_VERIFY_STATUS_RETURNEDtrusted_dc_namer   WERR_SUCCESSClose)@r   r   ro   rp   r   r  r   r  r	  r
  r  r  r  r  r  r  quarantinedr  r  local_trust_infor  incoming_secretoutgoing_secretremote_policy_accessincoming_passwordoutgoing_passwordremote_trust_infor!  r0   r  r  r  r  r  r   r3   
remote_lsaremote_policyremote_versionremote_revision_info1remote_lsa_infor  local_netlogon_inforemote_netlogonremote_netlogon_dc_uncr7  r4  incoming_bloboutgoing_bloblocal_tdo_handleremote_tdo_handlecurrent_requestlocal_forest_infolocal_forest_collisionremote_forest_inforemote_forest_collisionlocal_trust_verifylocal_trust_statuslocal_conn_statuslocal_validationremote_trust_verifyremote_trust_statusremote_conn_statusremote_validations@   `                                                               r   r  cmd_domain_trust_create.run  s    JJL	"Z'"%K!"#LMM "#OPP88:	"*"O"OI8#P#PP #+"D"DI!CCs999s;;;446&)&@&@#+,(f$,,0O0OO,,,0P0PP,
*,,0O0OO,
*,,0P0PP,,-)--1[1[[---1[1[[-!--1Z1ZZ---1W1WW---1Z1ZZ-		H "DDg%//#2Q2QQ$01A$B!"&'8'?'?'L"M//#2R2RR$01A$B!"&'8'?'?'L"M $4  //#2Q2QQ"5c"://#2R2RR"5c": C$>$>>  C$@$@@  # 9 9 ;+.+E+E(01-&(!11S5T5TT1!11S5U5UU1 J.!11S5U5UU1 J.!11S5T5TT112.!!22c6`6``2!22c6`6``2X%!22c6_6__2!22c6\6\\2 !22c6_6__2..yF		] !!$"?"?ATU$
 			&++22&1188&**, 	-
	Y 44XFM		^ !!$"@"@BVW%
 			',,33'2299'++- 	.
 />.H.H.O.O$$+/>/C/C/J/J%%,.223A3L3L3S3S))04B4G4G4N4N**1$2$6$6!
	D/;;BBI22<3<363X3XZ @9CSCSSTTW  	]((u6[\\	]  	Y))$7WXX	Y  	^))$7\]]	^.  	D++E83[3[\\,,T5-a1:1A1A.CD D ]	D
	D/<<CCI22<3<363X3XZ @9CSCSSTT 	D++E83[3[\\,,T5-a1:1A1A.CD D ]	D 
I#4#@#@#G#G	 778A8;8]8]_ ##DyGWGW#WXX  I//x7_7_``11$2f6?6F6F3HI I aI
I#4#A#A#H#H	 778A8;8]8]_ ##DyGWGW#WXX  I//x7_7_``11$2f6?6F6F3HI I aI	[!??AN 	[((u6YZZ	[	X"&";";NL"Y 	X((u6VWW	X `"&"E"E"G `--dE;^__`])-)A)A/BOQW*Y& ]--dE;[\\]	4 --/.L.L 8	C 		 89/7AY"Z$?!%55")!!	%! 		 78IIOO$YZ3;Eb&cO::;L;>;l;l;DF IIOO34+2<TUO: 11$	  IIOO12		 TU/6@]"^556F696g6g6?A  	CIIOO+F3_Z5PR S 		 89''(9:$(!		 78&&'78#' z*h6--dE4.=f.E<G H H((ud)8)@7B C C	C" 0033\3\\\		 KL
l 'HHI\IcIcIXIcIcIjIjIQIdIdf & $ l00u>jkkl	h "??@O@Z@Z@C@`@`@Q@A	C + $ h00u>fggh ,,->1@1K1K1R1R8N - P %IIOO$PQ
q ,MMNdN\NgNgNnNnNVNiNik + ( q"55dECoppq	m 'DD]ESE^E^EHEeEeEWEF	H 0 ( m"55dECkllm 001C5C5N5N5U5U<S 1 U  //#2R2RRR		 @Ac)7)L)LM`MgMgMUMpMpMNM\MgMgMnMn*p& $ c00u>abbc &*\\2D2Z2Z[\2]%^"$(LL1C1X1XYZ1[$\!%++h.V.VVV'9'I'I'9'N'Nq'Q'9'O'OPQ'R(T$ W (:'I'I'9'N'Nq'Q'9'O'OPQ'R(T$
 &)<)<<@QU[UhUh@h&'788IIOOJ1A$AB $44s7W7WWWIIOO$DEh+@@AWAIAdAdABAOAZAZAaAac ,
 ( h"55dECfggh +/,,7J7`7`ab7c*d')-6I6^6^_`6a)b&*0083[3[[[+>+N+N+>+S+STU+V+>+T+TUV+W-Y) \ ,?+N+N+>+S+STU+V+>+T+TUV+W-Y)
 +f.A.AAEW[a[n[nEn*+<==		
5F(FG(  !23  $' 01 #		%s  "^! _ "_+ A` !
_+^>>_
_(_##_(+
`5``
a)Aa$$a)-Ac 
dAdd&Ae: :
gAggAh+ +
j5Ai??jj 
j;#j66j;?k 
k4k//k4?l 
l2l--l26m
 

m,m''m,Es, ,
w
6Cww
?y 
y6y11y6:-z( (
{
2{{
5} 
}-}((}-1-~ 
)~<<@(A AA) A)
ABA3ABBABG+6AH" H"
AIH,AH?H?AIM!AM3 M3
AN M?AN N	AN N
AN(N'AN(r"   )NNNNNNNFNFFFTr$   r%   r&   r'   r  r  r   r  r  r   r   r  r   r  r  r  r(   r"   r!   r   r  r    sO   *'H ))--..0	 	xh"H-D !		#
 	}8[7L%		
 	":(S%		
 	%lS(	 	Xx*< &	 	!,9$	 	$\='	 	}?"	 	"=3	O+MZ JW[CG6:49)-	Sr!   r  c            
           \ rS rSrSrSr\R                  \R                  \R                  \
S.r\" SSSSS	/S
SS	S9/rS/r  SS jrSrg)cmd_domain_trust_deletei  zDelete a domain trust.r  r  z--delete-locationr  r  r  r  z=Where to delete the trusted domain object: 'local' or 'both'.delete_locationr   r   Nc           	      T   [         R                  nU[         R                  -  nU[         R                  -  nUS:X  a  S nO6[         R                  nU[         R                  -  nU[         R                  -  nU R	                  X#5         U R                  U R                  U5      u  n	n
nnnU R                  R                  SUR                  R                  < SUR                  R                  < SUR                  < S35        S nS nS nS n[         R                  " 5       n UUl        U	R!                  U
U[         R"                  5      nUGbO   U R1                  XA5         U R                  U R2                  U5      u  nnnnnU R                  R                  S	UR                  R                  < SUR                  R                  < SUR                  < S35        UR                  UR                  :w  d\  UR                  R                  UR4                  R                  :w  d.  UR                  R                  UR6                  R                  :w  aJ  [-        S
UR4                  R                  < SUR6                  R                  < SUR                  < S35      e UR                  R                  Ul        UR!                  UU[         R"                  5      nUb  UR                  UR                  :w  d\  UR                  R                  UR4                  R                  :w  d.  UR                  R                  UR6                  R                  :w  aJ  [-        SUR4                  R                  < SUR6                  R                  < SUR                  < S35      eUbP   UR6                  R                  Ul        U	R9                  U
U[:        R<                  5      nU	R?                  U5        S nUb=   UR6                  R                  Ul        WR9                  WU[:        R<                  5      nUb0   WR?                  U5        S nU R                  R                  S5        g g ! [         a  nU R                  XS5      eS nAff = f! [$         aJ  nU R'                  U[(        R*                  5      (       a  [-        SU-  5      eU R/                  XS5      eS nAff = f! [         a  nU R/                  XS5      eS nAff = f! [         a  nU R/                  XS5      eS nAff = f! [$         aO  nU R'                  U[(        R*                  5      (       d  U R/                  XSUR                  -  5      e S nAGNS nAff = f! [         a$  nU R                  XSUR                  -  5      eS nAff = f! [         a$  nU R/                  XSUR                  -  5      eS nAff = f! [         a8  nU R                  R                  SU R/                  XS5      -  5         S nAg S nAff = f)Nr  r  r  r   r  r   z$Failed to find trust for domain '%s'r$  r%  zLocalTDO inconsistent: Netbios[rh   z QueryTrustedDomainInfoByName(%s)z RemoteTDO inconsistent: Netbios[zOpenTrustedDomainByName(%s)zRemoteTDO deleted.
z%s
zDeleteObject() failed) r	   r  rG  rH  rt   r   r{   r   rQ   r   r   r  r  r  r  r  r  LSA_TRUSTED_DOMAIN_INFO_INFO_EXr   rD   r   r  r   rX   r   r   r   r  OpenTrustedDomainByNamer   SEC_STD_DELETErL  )r   r   ro   rp   r   r  r}  r  r\  r  r  r  r  r  r   r  rj  remote_tdo_infork  r  r`  ra  rb  rc  rd  s                            r   r  cmd_domain_trust_delete.run  s    "CCs999s;;;g%#' #&#H#H  C$>$>>  C$@$@@ 	7		] !!$"?"?ATU$
 			&++22&1188&**, 	-
  JJL		Y%I&CCLDMsOrOrtN  +]((:	b %%d&D&DFZ[!")#
 IIOO+0077+66==+//1 2
 ""n&8&88##**n.I.I.P.PP))00N4N4N4U4UU"#1#>#>#E#E#1#=#=#D#D#1#5#5$7 8 8
	E#1#<#<#C#C	 ;;M<E<?<_<_a   *!%%)<)<<!&&--1M1M1T1TT!,,337R7R7Y7YY&'6'C'C'J'J'6'B'B'I'I'6':':(< = =
 %@#1#=#=#D#D	 55l6?6>6M6MO ! ""#34#&A#2#>#>#E#E	 66}7@7?7N7NP " (h''(9:$(!		 67 	U  	]((6[\\	]$  	Y''x/W/WXX"#IF#RSS))$7WXX	Y   ]--d;[\\]   b--d;`aab, ! E//x7_7_``11$?a2;2B2B@D E E aE*   @,,T:W-6-=-=;? @ @@   A--d;X.7.>.><@ A AA   h		)@)@Ne)f fgghs   "Q$ "(R S !"T <T' !<V 4<V4 4.W% $
R.R  R
SASS
T )S;;T 
T$TT$'
V 1AU;;V 
V1V,,V14
W">WW"%
X'/.X""X'r"   NNNNNrz  r"   r!   r   r|  r|    sp     'H ))--..0	 	":(S%		M JW[ Br!   r|  c            
           \ rS rSrSrSr\R                  \R                  \R                  \
S.r\" SSSSS	/S
SS	S9/rS/r  SS jrSrg)cmd_domain_trust_validatei  zValidate a domain trust.r  r  z--validate-locationr  r  r  r  z?Where to validate the trusted domain object: 'local' or 'both'.validate_locationr   r   Nc           	      h   [         R                  nU R                  X%5      n U R                  U R                  U5      u  n	n
nnnU R                  R                  SUR                  R                  < SUR                  R                  < SUR                  < S35         [         R                  " 5       nXl
        U	R                  U
U[         R                  5      nU R                  R                  SUR*                  R                  < SUR,                  R                  < SUR                  < S35         U R/                  5       n UR1                  U[2        R4                  S
UR,                  R                  5      nU R7                  UR8                  S   5      nU R7                  UR:                  S   5      nUR<                  [2        R>                  -  (       a4  SUR@                  < SUR:                  S   < SUR8                  S   < S3nO3SUR@                  < SUR:                  S   < SUR8                  S   < S3nU[B        RD                  :w  d  U[B        RD                  :w  a  [)        U5      eU R                  R                  SU-  5         UR@                  RG                  SS5      nUR,                  R                  < SU< 3nUR1                  U[2        RH                  S
U5      nU R7                  UR:                  S   5      nSUR@                  < SUR:                  S   < S3nU[B        RD                  :w  a  [)        U5      eU R                  R                  SU-  5        US:w  GaH   U RK                  XASS9n U RO                  5       n UR1                  U[2        R4                  S
UR                  R                  5      nU R7                  UR8                  S   5      nU R7                  UR:                  S   5      nUR<                  [2        R>                  -  (       a4  SUR@                  < SUR:                  S   < SUR8                  S   < S3nO3SUR@                  < SUR:                  S   < SUR8                  S   < S3nU[B        RD                  :w  d  U[B        RD                  :w  a  [)        U5      eU R                  R                  SU-  5         UR@                  RG                  SS5      nUR                  R                  < SU< 3nUR1                  U[2        RH                  S
U5      n U R7                  U R:                  S   5      nSU R@                  < SU R:                  S   < S3n!U[B        RD                  :w  a  [)        U!5      eU R                  R                  SU!-  5        g ! [
         a  nU R                  XS5      eS nAff = f! [          aJ  nU R#                  U[$        R&                  5      (       a  [)        SU-  5      eU R                  XS5      eS nAff = f! [
         a  nU R                  XS	5      eS nAff = f! [
         a  nU R                  XS5      eS nAff = f! [
         a  nU R                  XS5      eS nAff = f! [
         a  nU RM                  XS5      eS nAff = f! [
         a  nU RM                  XS	5      eS nAff = f! [
         a  nU RM                  XS5      eS nAff = f! [
         a  nU RM                  XS5      eS nAff = f)Nr  r  r   r  r   r  ,QueryTrustedDomainInfoByName(INFO_EX) failedLocalTDO Netbios[r  r  r@  r   rA  rB  rJ   rC  rD  rh   rE  \rd   z"NETLOGON_CONTROL_REDISCOVER failedzLocalRediscover: DC[r  F)r   r$  rF  zRemoteRediscover: DC[)(r	   r  rt   r   r{   r   rQ   r   r   r  r  r  r  r  r  r  r   rD   r   r  r   r   r  r~   rP  r   rQ  r=   rR  rS  r   rT  rU  r   rV  replaceNETLOGON_CONTROL_REDISCOVERr   rX   r   )"r   r   ro   r  r   rp   r  r  r0   r  r  r  r  r  r   r  r  r  rq  rr  rs  rt  r   domain_and_serverlocal_trust_rediscoverlocal_rediscoverr3   rf  ru  rv  rw  rx  remote_trust_rediscoverremote_rediscovers"                                     r   r  cmd_domain_trust_validate.run  s    "CC..yF		] !!$"?"?ATU$
 			&++22&1188&**, 	-
	f

I%66|7@7:7Z7Z\  			&33::&2299&**, 	-
	[!??AN	[33L4<4W4W454B4N4N4U4UW  "\\*<*R*RST*UV LL);)P)PQR)ST##h&N&NNN1AA1FFqI1GGJ L O  2AA1FFqI1GGJ L
 !4!448IVM`M`8`/00IIOOJ)99:		\'77??bIF,:,F,F,M,Mv V33L4<4X4X454EG # !LL)?)T)TUV)WX5EE5JJ1MO  3 33/00IIOOJ)99:'] $ 8 8W\ 8 ]`"&"E"E"G`#889A9\9\9:9G9R9R9Y9Y[ $ #',,/B/X/XYZ/["\!%.A.V.VWX.Y!Z"((8+S+SSS#6#F#F#6#K#KA#N#6#L#LQ#O%Q! T $7#F#F#6#K#KA#N#6#L#LQ#O%Q!
 #f&9&99=OSYSfSf=f"#455		
-> >?	a,<<DDT2N0>0I0I0P0PRX$Y!#889A9]9]9:9JL ( "&.E.Z.Z[\.]!^ $;#J#J#:#O#OPQ#R!T "V%8%88"#455		
-> >?[  	]((6[\\	]  	f''x/W/WXX"#Y\b#bcc((6dee		f  	[((6YZZ	[  	[((6YZZ	[<  	\((6Z[[	\    ]--d;[\\]
   `--d;^__`   `--d;^__`<   a--d;_``as   "V=  <W! 7X8 6Y AZ  5Z$ [ 6[, $A\ =
WWW!
X5+AX00X58
YYY
Y=&Y88Y= 
Z!
ZZ!$
[.[  [
[)[$$[),
\6\\
\1\,,\1r"   r  rz  r"   r!   r   r  r    sp    "'H ))--..0	 	$8Z(U'		M JW["\r!   r  c                      \ rS rSrSrSr\R                  \R                  \	S.r
\" SSS/ SQS	S
SS9\" SSSSSS9\" SSSSS/ S9\" SSSSS/ S9\" SSSSS/ S9\" SSSS S!/ S9\" S"SS#S$S%/ S9\" S&SS#S'S(/ S9\" S)SS*S+S,/ S9\" S-SS*S.S// S9\" S0SSS1S2/ S9\" S3SSS4S5/ S9\" S6SSS7S8/ S9\" S9SSS:S;/ S9/rS</r     S?S= jrS>rg)@cmd_domain_trust_namespacesi@  zManage forest trust namespaces.z%prog [DOMAIN] [options]r  z	--refreshr  zcheck|store)checkr  NzLList and maybe store refreshed forest trust information: 'check' or 'store'.refreshNr   z--enable-allr  zATry to update disabled entries, not allowed with --refresh=check.
enable_allFr  z--enable-tlnappend	DNSDOMAINz?Enable a top level name entry. Can be specified multiple times.
enable_tln)r  r  r  r  r  z--disable-tlnz@Disable a top level name entry. Can be specified multiple times.disable_tlnz--add-tln-exzAAdd a top level exclusion entry. Can be specified multiple times.
add_tln_exz--delete-tln-exzDDelete a top level exclusion entry. Can be specified multiple times.delete_tln_exz--enable-nbNETBIOSDOMAINzIEnable a netbios name in a domain entry. Can be specified multiple times.	enable_nbz--disable-nbzJDisable a netbios name in a domain entry. Can be specified multiple times.
disable_nbz--enable-sid	DOMAINSIDz@Enable a SID in a domain entry. Can be specified multiple times.enable_sid_strz--disable-sidzADisable a SID in a domain entry. Can be specified multiple times.disable_sid_strz--add-upn-suffixzVAdd a new uPNSuffixes attribute for the local forest. Can be specified multiple times.add_upnz--delete-upn-suffixz^Delete an existing uPNSuffixes attribute of the local forest. Can be specified multiple times.
delete_upnz--add-spn-suffixz[Add a new msDS-SPNSuffixes attribute for the local forest. Can be specified multiple times.add_spnz--delete-spn-suffixzcDelete an existing msDS-SPNSuffixes attribute of the local forest. Can be specified multiple times.
delete_spnzdomain?c           	      &?   Uc  / nUc  / nU	c  / n	U
c  / n
Uc  / nUc  / nUc  / nUc  / nUc  / nUc  / nUc  / nUc  / nSnUGcs  US:X  a  [        SU-  5      eU(       a  [        S5      e[        U5      S:  a  [        S5      e[        U5      S:  a  [        S5      e[        U	5      S:  a  [        S5      e[        U
5      S:  a  [        S	5      e[        U5      S:  a  [        S
5      e[        U5      S:  a  [        S5      e[        U5      S:  a  [        S5      e[        U5      S:  a  [        S5      e[        U5      S:  a/  U H'  nUR                  S5      (       d  M  [        SU-  5      e   Sn[        U5      S:  a/  U H'  nUR                  S5      (       d  M  [        SU-  5      e   SnU H<  nU H3  nUR                  5       UR                  5       :w  a  M'  [        SU-  5      e   M>     [        U5      S:  a/  U H'  nUR                  S5      (       d  M  [        SU-  5      e   Sn[        U5      S:  a/  U H'  nUR                  S5      (       d  M  [        SU-  5      e   SnU H<  nU H3  nUR                  5       UR                  5       :w  a  M'  [        SU-  5      e   M>     Oh[        U5      S:  a  [        S5      e[        U5      S:  a  [        S5      e[        U5      S:  a  [        S5      e[        U5      S:  a  [        S5      eUb  US:X  a  SnU(       a  US:w  a  [        SU-  5      e[        U5      S:  a  [        S5      e[        U5      S:  a  [        S5      e[        U	5      S:  a  [        S5      e[        U
5      S:  a  [        S5      e[        U5      S:  a  [        S5      e[        U5      S:  a  [        S 5      e[        U5      S:  a  [        S!5      e[        U5      S:  a  [        S"5      eGOU(       aP  Sn[        U5      S:  a  [        S#5      e[        U5      S:  a  [        S$5      e[        U5      S:  a  [        S%5      e[        U5      S:  a  Sn[        U5      S:  a  SnU H<  nU H3  nUR                  5       UR                  5       :w  a  M'  [        S&U-  5      e   M>     [        U	5      S:  a/  U	 H'  nUR                  S5      (       d  M  [        S'U-  5      e   Sn[        U
5      S:  a/  U
 H'  nUR                  S5      (       d  M  [        S(U-  5      e   SnU	 H<  nU
 H3  nUR                  5       UR                  5       :w  a  M'  [        S)U-  5      e   M>     [        U5      S:  a  Sn[        U5      S:  a  SnU H<  nU H3  nUR	                  5       UR	                  5       :w  a  M'  [        S*U-  5      e   M>     / nU H+  n [
        R                  " U5      nUR                  U5        M-     / nU H+  n [
        R                  " U5      nUR                  U5        M-     [        U5      S:  a  Sn[        U5      S:  a  SnU H   nU H  nUU:w  a  M  [        S-U-  5      e   M"     [        R                  nU(       a  U[        R                  -  nU R                  X#5      n U R                  5       n U R#                  U R                  U5      u  nn n!n"n#U R$                  R'                  S0U#R(                  R*                  < S1U#R,                  R*                  < S2U#R.                  < S335        UGcp   U R1                  5       n$ U R3                  U$U5      n%U%R4                  U%R6                  :w  a(  [        S6U%R4                  < S7U%R6                  < S835      e U$R9                  U%R:                  S S5      n&U R$                  R'                  S;5        U RG                  U&U#R,                  R*                  S<9   U RI                  5       n'S>[K        U'RM                  5       5      -  n(S?S@/n) U'RO                  U([P        RR                  SAU)SB9n*U*S   n+/ n,S?U+;   a  U,RY                  U+S?   5        / n-S@U+;   a  U-RY                  U+S@   5        U R$                  R'                  SD[        U,5      -  5        U, H(  n.U R$                  R'                  SESF<SG SHU.< S335        M*     U R$                  R'                  SI[        U-5      -  5        U- H(  n.U R$                  R'                  SESF<SG SHU.< S335        M*     U(       d  g Sn// n0U0RY                  U,5        Sn1/ n2U2RY                  U-5        U HX  n3U0 H<  n.[K        U.5      R                  5       U3R                  5       :X  d  M0  [        SJU3-  5      e   U0R                  U35        Sn/MZ     U Hm  n3S n4[[        U05       H5  u  n5n.[K        U.5      R                  5       U3R                  5       :w  a  M3  U5n4  O   U4c  [        SKU3-  5      eU0R]                  U45        Sn/Mo     U HX  n6U2 H<  n.[K        U.5      R                  5       U6R                  5       :X  d  M0  [        SLU6-  5      e   U2R                  U65        Sn1MZ     U Hm  n6S n4[[        U25       H5  u  n5n.[K        U.5      R                  5       U6R                  5       :w  a  M3  U5n4  O   U4c  [        SMU6-  5      eU2R]                  U45        Sn1Mo     U R$                  R'                  SN[        U05      -  5        U0 H(  n.U R$                  R'                  SESF<SG SHU.< S335        M*     U R$                  R'                  SO[        U25      -  5        U2 H(  n.U R$                  R'                  SESF<SG SHU.< S335        M*     [P        R^                  " 5       n7U+R`                  U7l0        U/(       a)  [P        Rb                  " U0[P        Rd                  S?5      U7S?'   U1(       a)  [P        Rb                  " U2[P        Rd                  S@5      U7S@'    U'Rg                  U75         U$R9                  U%R:                  S S5      n8U R$                  R'                  SQ5        U RG                  U8U#R,                  R*                  S<9  g  [        Rh                  " 5       n9UU9l        URk                  U U9[        Rl                  5      n:U R$                  R'                  STU:Rt                  R*                  < S1U:R4                  R*                  < S2U:R.                  < S335        U:Rv                  [        Rx                  -  (       d  [        SUU-  5      eUGb   U R1                  5       n$ U R3                  U$U5      n%SVn;US:X  a  [z        R|                  n<U(       a  Sn;OSn< U$R9                  U%R:                  U:R4                  R*                  U<5      n= UR                  U U:R4                  [        R                  U=U;5      n>U R$                  R'                  SX5        U RG                  U=U:R4                  R*                  U>SY9  US:X  a   [        Rh                  " 5       n9U:R4                  R*                  U9l        UR                  U U9[        R                  5      n8U R$                  R'                  SQ5        U RG                  U8U:R4                  R*                  S<9  g  [        Rh                  " 5       n9U:R4                  R*                  U9l        UR                  U U9[        R                  5      n?U R$                  R'                  S[5        U RG                  U?U:R4                  R*                  S<9  U(       d  g / n@U@RY                  U?R                  5        [        R                  " 5       nA[        U@5      UAlD        U@UAlB        U(       Ga  WAR                   H`  nBUBR                  [        R                  :w  a  M#  WBR                  S:X  a  M5  SWBlH        UB=R                  [        R                  ) -  slG        Mb     WAR                   H  nBUBR                  [        R                  :w  a  M#  WBR                  S:X  a  M5  SWBlH        UB=R                  [        R                  ) -  slG        UB=R                  [        R                  ) -  slG        M     U GH  nCS n4[[        WAR                  5       H`  u  n5nBUBR                  [        R                  :w  a  M&  WBR                  R*                  R                  5       WCR                  5       :w  a  M^  U5n4  O   U4c  [        S\WC-  5      eWAR                  U4   R                  [        R                  -  (       d  [        S]WC-  5      eSWAR                  U4   lH        UAR                  U4   =R                  [        R                  ) -  slG        GM     U GHB  nCS n4[[        WAR                  5       H`  u  n5nBUBR                  [        R                  :w  a  M&  WBR                  R*                  R                  5       WCR                  5       :w  a  M^  U5n4  O   U4c  [        S^WC-  5      eWAR                  U4   R                  [        R                  -  (       a  [        S_WC-  5      eSWAR                  U4   lH        UAR                  U4   =R                  [        R                  ) -  slG        UAR                  U4   =R                  [        R                  -  slG        GME     U	 GH  nDS n4[[        WAR                  5       H`  u  n5nBUBR                  [        R                  :w  a  M&  WBR                  R*                  R                  5       WDR                  5       :w  a  M^  U5n4  O   U4b  [        S`WD-  5      eSaWDR                  5       -  nES n4[[        WAR                  5       H{  u  n5nBUBR                  [        R                  :w  a  M&  SaWBR                  R*                  R                  5       -  nFWEUF:X  a  [        SbWD-  5      eWER                  WF5      (       d  My  U5n4  O   U4c  [        ScWD-  5      e[        R                  " 5       nB[        R                  UBlE        SUBlG        SUBlH        WDUBR                  l        / n@U@RY                  WAR                  5        U@R                  U4SV-   UB5        [        U@5      UAlD        U@UAlB        GM     U
 H  nDS n4[[        WAR                  5       H`  u  n5nBUBR                  [        R                  :w  a  M&  WBR                  R*                  R                  5       WDR                  5       :w  a  M^  U5n4  O   U4c  [        SdWD-  5      e/ n@U@RY                  WAR                  5        U@R]                  U45        [        U@5      UAlD        U@UAlB        M     U GH  nGS n4[[        WAR                  5       Hj  u  n5nBUBR                  [        R                  :w  a  M&  WBR                  R                  R*                  R	                  5       WGR	                  5       :w  a  Mh  U5n4  O   U4c  [        SeWG-  5      eWAR                  U4   R                  [        R                  -  (       d  [        SfWG-  5      eSWAR                  U4   lH        UAR                  U4   =R                  [        R                  ) -  slG        GM     U GHL  nGS n4[[        WAR                  5       Hj  u  n5nBUBR                  [        R                  :w  a  M&  WBR                  R                  R*                  R	                  5       WGR	                  5       :w  a  Mh  U5n4  O   U4c  [        SgWG-  5      eWAR                  U4   R                  [        R                  -  (       a  [        ShWG-  5      eSWAR                  U4   lH        UAR                  U4   =R                  [        R                  ) -  slG        UAR                  U4   =R                  [        R                  -  slG        GMO     W H  nS n4[[        WAR                  5       HD  u  n5nBUBR                  [        R                  :w  a  M&  WBR                  R                  U:w  a  MB  U5n4  O   U4c  [        SiU-  5      eWAR                  U4   R                  [        R                  -  (       d  [        SjWG-  5      eSWAR                  U4   lH        UAR                  U4   =R                  [        R                  ) -  slG        M     W GH&  nS n4[[        WAR                  5       HD  u  n5nBUBR                  [        R                  :w  a  M&  WBR                  R                  U:w  a  MB  U5n4  O   U4c  [        SkU-  5      eWAR                  U4   R                  [        R                  -  (       a  [        SlWG-  5      eSWAR                  U4   lH        UAR                  U4   =R                  [        R                  ) -  slG        UAR                  U4   =R                  [        R                  -  slG        GM)      UR                  U U:R4                  [        R                  WAS5      nHU R$                  R'                  Sm5        U RG                  WAU:R4                  R*                  WHSY9   [        Rh                  " 5       n9U:R4                  R*                  U9l        UR                  U U9[        R                  5      n8U R$                  R'                  SQ5        U RG                  U8U:R4                  R*                  S<9  g ! [        [        4 a    [        S+U-  5      ef = f! [        [        4 a    [        S,U-  5      ef = f! [         a  nU R!                  U US.5      eS nAff = f! [         a  nU R!                  U US/5      eS nAff = f! [         a  nU R!                  U US45      eS nAff = f! [         a  nU R!                  U US55      eS nAff = f! [         a  nU R=                  U[>        R@                  5      (       a  [        S9U-  5      eU R=                  U[>        RB                  5      (       a  [        S9U-  5      eU R=                  U[>        RD                  5      (       a  [        S9U-  5      eU R!                  U US:5      eS nAff = f! [         a  nU R!                  U US=5      eS nAff = f! [P        RT                   a  nU RW                  U USC5      eS nAff = f! [P        RT                   a  nU RW                  U USP5      eS nAff = f! [         a  nU R!                  U US:5      eS nAff = f! [n         aK  nU R=                  U[p        Rr                  5      (       a  [        SRU-  5      eU R!                  U USS5      eS nAff = f! [         a  nU R!                  U US45      eS nAff = f! [         a  nU R!                  U US55      eS nAff = f! [         a  nU R!                  U US:5      eS nAff = f! [         a  nU R!                  U USW5      eS nAff = f! [         a  nU R!                  U USZ5      eS nAff = f! [         a  nU R!                  U USZ5      eS nAff = f! [         a  nU R!                  U USW5      eS nAff = f! [         a  nU R!                  U USZ5      eS nAff = f)nNFr  z'--refresh=%s not allowed without DOMAINz'--enable-all not allowed without DOMAINr   z'--enable-tln not allowed without DOMAINz(--disable-tln not allowed without DOMAINz'--add-tln-ex not allowed without DOMAINz*--delete-tln-ex not allowed without DOMAINz&--enable-nb not allowed without DOMAINz'--disable-nb not allowed without DOMAINz'--enable-sid not allowed without DOMAINz(--disable-sid not allowed without DOMAINz*.zEvalue[%s] specified for --add-upn-suffix should not include with '*.'TzHvalue[%s] specified for --delete-upn-suffix should not include with '*.'z@value[%s] specified for --add-upn-suffix and --delete-upn-suffixzEvalue[%s] specified for --add-spn-suffix should not include with '*.'zHvalue[%s] specified for --delete-spn-suffix should not include with '*.'z@value[%s] specified for --add-spn-suffix and --delete-spn-suffixz1--add-upn-suffix not allowed together with DOMAINz4--delete-upn-suffix not allowed together with DOMAINz1--add-spn-suffix not allowed together with DOMAINz4--delete-spn-suffix not allowed together with DOMAINz3--enable-all not allowed together with --refresh=%sz0--enable-tln not allowed together with --refreshz1--disable-tln not allowed together with --refreshz0--add-tln-ex not allowed together with --refreshz3--delete-tln-ex not allowed together with --refreshz/--enable-nb not allowed together with --refreshz0--disable-nb not allowed together with --refreshz0--enable-sid not allowed together with --refreshz1--disable-sid not allowed together with --refreshz3--enable-tln not allowed together with --enable-allz2--enable-nb not allowed together with --enable-allz3--enable-sid not allowed together with --enable-allz6value[%s] specified for --enable-tln and --disable-tlnzAvalue[%s] specified for --add-tln-ex should not include with '*.'zDvalue[%s] specified for --delete-tln-ex should not include with '*.'z8value[%s] specified for --add-tln-ex and --delete-tln-exz4value[%s] specified for --enable-nb and --disable-nbz7value[%s] specified for --enable-sid is not a valid SIDz8value[%s] specified for --disable-sid is not a valid SIDz6value[%s] specified for --enable-sid and --disable-sidzfailed to connect lsa serverr  r  r   r  r   r  r&  zThe local domain [z] is not the forest root [rh   z@LOCAL_DC[%s]: netr_DsRGetForestTrustInformation() not supported.r=  z Own forest trust information...
r  zfailed to connect to SamDBzCN=Partitions,%suPNSuffixeszmsDS-SPNSuffixesz(objectClass=crossRefContainer))r  scope
expressionattrszfailed to search partition dnz#Stored uPNSuffixes attributes[%d]:
r}  rd   r~  r  z(Stored msDS-SPNSuffixes attributes[%d]:
zBEntry already present for value[%s] specified for --add-upn-suffixz?Entry not found for value[%s] specified for --delete-upn-suffixzBEntry already present for value[%s] specified for --add-spn-suffixz?Entry not found for value[%s] specified for --delete-spn-suffixz#Update uPNSuffixes attributes[%d]:
z(Update msDS-SPNSuffixes attributes[%d]:
zfailed to update partition dnz#Stored forest trust information...
r  r  r  zItrusted domain object for domain [%s] is not marked as FOREST_TRANSITIVE.rJ   r>  z"Fresh forest trust information...
r?  z(lsaRQueryForestTrustInformation() failedz"Local forest trust information...
z8Entry not found for value[%s] specified for --enable-tlnzGEntry found for value[%s] specified for --enable-tln is already enabledz9Entry not found for value[%s] specified for --disable-tlnzIEntry found for value[%s] specified for --disable-tln is already disabledz>Entry already present for value[%s] specified for --add-tln-exz.%sz:TLN entry present for value[%s] specified for --add-tln-exz>No TLN parent present for value[%s] specified for --add-tln-exz;Entry not found for value[%s] specified for --delete-tln-exz7Entry not found for value[%s] specified for --enable-nbzFEntry found for value[%s] specified for --enable-nb is already enabledz7Entry not found for value[%s] specified for --delete-nbzHEntry found for value[%s] specified for --disable-nb is already disabledz8Entry not found for value[%s] specified for --enable-sidzGEntry found for value[%s] specified for --enable-sid is already enabledz8Entry not found for value[%s] specified for --delete-sidzIEntry found for value[%s] specified for --disable-sid is already disabledz$Updated forest trust information...
)Vr   r  
startswithlowerupperr   dom_sid
ValueError	TypeErrorr  r	   r  rG  rt   r{   r   rQ   r   r   r   r  r  r  r  r~   r   r  forest_namerM  r   rD   r   r  WERR_INVALID_FUNCTIONWERR_NERR_ACFNOTLOADEDr  r   strget_config_basednsearchldb
SCOPE_BASELdbErrorr`   extendr  popMessagednMessageElementFLAG_MOD_REPLACEmodifyr  r  r  r   r   r  r   r  r  r   rN  rO  r  r  r  r  r  r  r  r   timeLSA_TLN_DISABLED_MASKLSA_NB_DISABLED_MASKLSA_SID_DISABLED_MASKr  ro  r  endswithForestTrustRecordinsertr  rx  r  rv  )Ir   r   ro   rp   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  require_updatenr  r  r  
enable_sidr)  r  disable_sidr  r0   r  r   r  r  r  r  r  re  own_forest_infolocal_samdblocal_partitions_dnr  msgs
stored_msgstored_upn_valsstored_spn_valsr<   replace_upnupdate_upn_valsreplace_spnupdate_spn_valsupnidxr  spn
update_msgstored_forest_infor  r  lsa_update_checknetlogon_update_tdofresh_forest_infofresh_forest_collisionrm  r  update_forest_infor   r  tln_extln_dotr_dotnbupdate_forest_collisionsI                                                                            r   r  cmd_domain_trust_namespaces.run  s    JKJ M!N" OIJ?GJ?GJ>'!"#Lw#VWW"#LMM:""#LMM;!#"#MNN:""#LMM=!A%"#OPP9~!"#KLL:""#LMM>"Q&"#LMM?#a'"#MNN7|a A<<-- &'nqr'rss ! "&:"#A<<-- &'qtu'uvv $ "&#AwwyAGGI- &'ilm'mnn $  7|a A<<-- &'nqr'rss ! "&:"#A<<-- &'qtu'uvv $ "&#AwwyAGGI- &'ilm'mnn $  7|a"#VWW:""#YZZ7|a"#VWW:""#YZZ'!!%g0"#X[b#bcc:""#UVV;!#"#VWW:""#UVV=!A%"#XYY9~!"#TUU:""#UVV>"Q&"#UVV?#a'"#VWW ( !%z?Q&&'\]]y>A%&'[\\~&*&'\]]:"!%;!#!%$AwwyAGGI- &'_bc'cdd %   :"#A<<-- &'jmn'noo $ "&=!A%&A<<-- &'mpq'qrr ' "&&AwwyAGGI- &'ade'eff '   9~!!%:"!%#AwwyAGGI- &']`a'abb $  J#f"**1-C !!#& $ K$g"**1-C ""3' % :"!%;!#!%$AAv &'_bc'cdd %   "CC3#=#==..yF	V557I		] !!$"?"?ATU$
 			&++22&1188&**, 	-
 >_!%!C!C!E\&*&?&?P\&]# #..2E2Q2QQ"#6#B#B#6#B#B$D E Eh"0"R"RSfSmSmSWYZ#\" IIOO?@((-;-F-F-M-M ) OX"<<> #5s;;X;X;Z7["["$67EW"))/B035V05 * 7 "!W
 !O
*&&z-'@A O!Z/&&z2D'EFIIOOBSEYYZ$		B BC %IIOOG#oJ^^_$		B BC % "K O""?3K O""?3(A1v||~4* ,>@C,D E E )
  &&s+"  "%o6DAq1v||~4 C	 7
 ;&'hkn'noo##C(" " (A1v||~4* ,>@C,D E E )
  &&s+"  "%o6DAq1v||~4 C	 7
 ;&'hkn'noo##C(" " IIOOBSEYYZ$		B BC %IIOOG#oJ^^_$		B BC % J&MMJM,/,>,>?B?S?S?L-N
=) 141C1CODGDXDXDV2X
-.W"":.h%3%U%UViVpVpVZ\]&_"
 IIOOBC(();-;-F-F-M-M ) O	f

I%I66|7@7:7Z7Z\  			&33::&2299&**, 	-
 ..1Z1ZZjmsstt_!%!C!C!E\&*&?&?P\&]#  !'!&.&A&A#'($&'#
h #DDEXE_E_ESE_E_EfEfEXZ "d;;L<J<V<V<?<\<\<M<L	N ' IIOOAB(():-;-G-G-N-N4J ) L '!j #

I'5'A'A'H'HI$!AA,BKBEBbBbd ' 		 FG,,-?1?1K1K1R1R - T 	b

I-99@@I99,:C:=:Z:Z\  			=>$$%6)7)C)C)J)J 	% 	L (001 779#&w< %,"'//66S@@@77a<C5555 0 (//66S===77a<C4444C5555 0 CC!"4"<"<=166S@@@&&--335D > {"#]`c#cdd%--c2883;T;TT"#lor#rss34&&s+0&&s+11c6O6O5OO11   CC!"4"<"<=166S@@@&&--335D > {"#^ad#dee!))#.44s7Q7QQ"#nqt#tuu34&&s+0&&s+11c6O6O5OO1&&s+11S5O5OO11 " !FC!"4"<"<=166SCCC&&--335G > "#cfl#lmmflln,GC!"4"<"<=166S@@@ 3 3 : : @ @ BBe#&'cfl'lmm''.. > {"#cfl#lmm%%'A;;AFAGAF)/A&GNN-556NN37A&'*7|$)0&M !P $FC!"4"<"<=166SCCC&&--335G > {"#`ci#ijjGNN-556KK'*7|$)0&! $$ BC!"4"<"<=166S===&&::AAGGIRXXZW > {"#\_a#abb%--c2883;S;SS"#knp#pqq34&&s+0&&s+11c6N6N5NN11   BC!"4"<"<=166S===&&::AAGGIRXXZW > {"#\_a#abb!))#.44s7P7PP"#mpr#rss34&&s+0&&s+11c6N6N5NN1&&s+11S5N5NN11 " CC!"4"<"<=166S===&&11S8 > {"#]`c#cdd%--c2883;T;TT"#loq#qrr34&&s+0&&s+11c6O6O5OO1   CC!"4"<"<=166S===&&11S8 > {"#]`c#cdd!))#.44s7Q7QQ"#nqs#stt34&&s+0&&s+11c6O6O5OO1&&s+11S5O5OO11 "	`&/&M&MlN\NhNhNQNnNnN`bc'e# 			?@$$%7)7)C)C)J)J0G 	% 	I	b

I-99@@I!*!J!J<KTKNKkKk"m 			>?$$%7)7)C)C)J)J 	% 	LG #I. f&'`cd'deef #I. g&'ade'effg(  	V((u6TUU	V  	]((u6[\\	]   _,,T5:]^^_
   \,,T5:Z[[\   h++E63Y3YZZ&'i'3(5 6 6 ++E63O3OPP&'i'3(5 6 6 ++E63P3PQQ&'i'3(5 6 6 ,,T5:fggh*   X,,T5:VWWX << W((u6UVVWz << W((u6UVVW   h,,T5:fggh  	f''x/W/WXX"#Y\b#bcc((u6dee		f"   _,,T5:]^^_
   \,,T5:Z[[\(   h,,T5:fggh   d,,T5:bccd  $ j00u>hiij(  	b((u6`aa	bF  	`((u6^__	`  	b((u6`aa	bsS  ;Ao.Ao7Ap ."Ap> /Aq#  Ar Ar- 2Au+ #%Av /Av? Aw. =Ax +Ay+ <Az 31Az5 %-A{ AA{? +AA|$ k-A}	 mAA}. oAo4o7App
Ap;p#Ap6p6Ap;p>
Aq qAqqAq q#
Arq-Ar r Arr
Ar*rAr%r%Ar*r-
Au(r7B,Au#u#Au(u+
Avu5AvvAvvAv<v$Av7v7Av<v?Aw+wAw&w&Aw+w.
Axw8AxxAxx
Ay(xAAy#y#Ay(y+
Azy5AzzAzz
Az2zAz-z-Az2z5
A{z?A{{A{{
A{<{$A{7{7A{<{?
A|!|	A||A|!|$
A}|.A}}A}}	
A}+}A}&}&A}+}.
A~}8A~~A~r"   )NNNNNFNNNNNNNNNNNNr  r"   r!   r   r  r  @  s   ))H ))--0 	{=/b		
 	~lW 	 	~hU 	 	xV!	 	~hW 	 	 ;Z#	 	}X_	 	~h` 	 	~hV$	 	xW%	 	!(Kl	 	$X{t 	 	!(Kq	 	$X{y 	m:Mx JMQ%*NRRVDH	}
r!   r  c                       \ rS rSrSr0 r\" 5       \S'   \" 5       \S'   \" 5       \S'   \	" 5       \S'   \
" 5       \S'   \" 5       \S'   \" 5       \S	'   S
rg)cmd_domain_trustiI	  z#Domain and forest trust management.r  showcreater  deleter  
namespacesr"   N)r$   r%   r&   r'   r  subcommandsr  r  r  r  r|  r  r  r(   r"   r!   r   r  r  I	  se    -K/1K/1K35K35K35K79K
 ; =Kr!   r  )*r9   r   r  samba.getoptgetoptr   samba.ntaclsr  r   r   r   
samba.authr   samba.dcerpcr   r	   r
   r   r   	samba.netr   samba.netcmdr   r   r   r   samba.samdbr   samba.lsa_utilsr   r   r   r   r*   r  r  r  r  r|  r  r  r  r"   r!   r   <module>r     s   2   
   1 1 % ? ?  D D  KS : : S
\ \~,. ,^i. iVw0 wrN0 NbX0 Xvr 2 rjF"4 FR
>| 
>r!   