
    Id                       d dl Z d dlmZ d dlZd dlmZ d dlZd dlmZm	Z	m
Z
mZ d dlmZ d dlmZmZmZmZmZ d dlmZ d dlmZmZmZmZ d dlmZ d d	lmZ  G d
 dej>                        Z  G d de      Z! G d de!      Z" G d de!      Z# G d de!      Z$ G d de!      Z% G d de!      Z& G d de!      Z' G d de!      Z( G d de      Z)y)    N)getpass)NTSTATUSErrorntstatusstring_to_byte_arraywerror)system_session)drsblobslsanbtnetlogonsecurity)Net)CommandCommandErrorOptionSuperCommand)SamDB)CreateTrustedDomainRelaxc                       e Zd Zd Zy)LocalDCCredentialsOptionsc                 H    t         j                  j                  | |d       y )Nzlocal-dc)special_name)optionsCredentialsOptions__init__)selfparsers     ;/usr/lib/python3/dist-packages/samba/netcmd/domain/trust.pyr   z"LocalDCCredentialsOptions.__init__)   s    ""++D&z+R    N__name__
__module____qualname__r    r   r   r   r   (   s    Sr   r   c                       e Zd ZdZd Zd Zd Z G d de      Z G d de      Z	 G d	 d
e      Z
d Zd Zd Zd Z	 	 d#dZd Zd Zd Zd Zd Zd Zd Zd Zd Zd$dZd$dZd Zd Zd Zd Zd Zd  Z d%d"Z!y!)&DomainTrustCommandList domain trusts.c                     t        j                  |        d | _        d | _        d | _        d | _        d | _        d | _        d | _        y N)	r   r   local_lplocal_serverlocal_binding_stringlocal_credsremote_serverremote_binding_stringremote_credsr   s    r   r   zDomainTrustCommand.__init__0   sG     $(!!%)" r   c                 @    t        j                  |      j                  S r)   )ctypesc_uint32value)r   vs     r   _uint32zDomainTrustCommand._uint32<   s    q!'''r   c                 R    |y| j                  |j                  d         }||k(  ryy)NFr   T)r7   args)r   runtimevalerr32s       r   check_runtime_errorz&DomainTrustCommand.check_runtime_error?   s-    ?W\\!_-C<r   c                       e Zd Zd Zy)$DomainTrustCommand.LocalRuntimeErrorc                     |j                  |j                  d         }|j                  d   }d|j                  |||fz  }t        j                  | |       y )Nr      z%LOCAL_DC[%s]: %s - ERROR(0x%08X) - %s)r7   r9   r+   r   r   exception_selfr   r:   messager<   errstrmsgs          r   r   z-DomainTrustCommand.LocalRuntimeError.__init__J   sS    LLa1E\\!_F9##WeV== =C!!.#6r   Nr    r$   r   r   LocalRuntimeErrorr?   I       	7r   rG   c                       e Zd Zd Zy)%DomainTrustCommand.RemoteRuntimeErrorc                     |j                  |j                  d         }|j                  d   }d|j                  |||fz  }t        j                  | |       y )Nr   rA   z&REMOTE_DC[%s]: %s - ERROR(0x%08X) - %s)r7   r9   r.   r   r   rB   s          r   r   z.DomainTrustCommand.RemoteRuntimeError.__init__R   sS    LLa1E\\!_F:$$guf>> >C!!.#6r   Nr    r$   r   r   RemoteRuntimeErrorrJ   Q   rH   r   rL   c                       e Zd Zd Zy) DomainTrustCommand.LocalLdbErrorc                     |j                   d   }|j                   d   }d|j                  |||fz  }t        j                  | |       y )Nr   rA   z!LOCAL_DC[%s]: %s - ERROR(%d) - %s)r9   r+   r   r   )rC   r   	ldb_errorrD   errvalrE   rF   s          r   r   z)DomainTrustCommand.LocalLdbError.__init__Z   sL    ^^A&F^^A&F5##Wff9> >C!!.#6r   Nr    r$   r   r   LocalLdbErrorrN   Y   rH   r   rR   c                    | j                   | j                   S |j                         }|j                  }|B|j                         }|dk7  rt	        d|z        |j                  d      }d}d}|dz  }d }d }	nd}d}d|z  }|j                  |      }	|| _        || _         |d	|d
|d| _        || _	        |	| _
        | j                   S )NROLE_ACTIVE_DIRECTORY_DCzInvalid server_role %sznetbios namencalrpc z,auth_type=ncalrpc_as_systemncacn_npz	ldap://%s:[])r+   get_loadparm	ipaddressserver_roler   getget_credentialsr*   r,   local_ldap_urlr-   )
r   	sambaoptslocaldcoptslpr+   r]   local_transportlocal_binding_optionsr`   r-   s
             r   setup_local_serverz%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   c                 l    t        j                  | j                  | j                  | j                        S r)   )r
   lsarpcr,   r*   r-   r1   s    r   new_local_lsa_connectionz+DomainTrustCommand.new_local_lsa_connection   s%    zz$33T]]DDTDTUUr   c                 l    t        j                   | j                  | j                  | j                        S r)   )r   r,   r*   r-   r1   s    r   new_local_netlogon_connectionz0DomainTrustCommand.new_local_netlogon_connection   s'      !:!:DMM4K[K[\\r   c                 l    t        | j                  t               | j                  | j                        S )N)urlsession_infocredentialsrc   )r   r`   r   r-   r*   r1   s    r   new_local_ldap_connectionz,DomainTrustCommand.new_local_ldap_connection   s-    ,,"0"2!%!1!1' 	'r   c           	         |r|sJ | j                   | j                   S d|z  | _         | j                  J |j                  | j                        }|j                  }d}	 t        || j                  |      }t        j                  t        j                  z  }	|r|	t        j                  z  }	|r|	t        j                  z  }	|j                  |	||      }
i t        j                  d	t        j                   d
t        j                  dt        j                  dt        j"                  dt        j$                  dt        j&                  dt        j                  dt        j(                  dt        j*                  dt        j,                  dt        j.                  dt        j0                  dt        j2                  dt        j4                  dt        j6                  dt        j8                  dt        j:                  dt        j<                  di}| j?                  ||
j@                  d      }| jB                  jE                  d|
jF                  d|
jH                  d |d!       |
jH                  | _         d"| j                   d#|d$| _%        || _&        | j                   S # t        $ r#}t        d|d|j                  d         d }~wt        $ r t        d|z        w xY w)%Nz__unknown__remote_server__.%srV   )server)flagsdomainaddressz*Failed to find a writeable DC for domain 'z': rA   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:rY   rZ   )'r.   r+   r_   r*   r\   r   r   NBT_SERVER_LDAPNBT_SERVER_DSNBT_SERVER_WRITABLENBT_SERVER_PDCfinddcr   r   r9   	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_namer/   r0   )r   credoptsrt   require_pdcrequire_writabler0   r.   remote_binding_options
remote_netremote_flagsremote_infoerrorflag_mapserver_type_strings                 r   setup_remote_serverz&DomainTrustCommand.setup_remote_server   s    ###)%%%<vE  ,,,//> **!#
	Y\4==OJ..1B1BBL 7 77 2 22$++,vWd+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   !A7J0 0	K29KK2c                 l    t        j                  | j                  | j                  | j                        S r)   )r
   rh   r/   r*   r0   r1   s    r   new_remote_lsa_connectionz,DomainTrustCommand.new_remote_lsa_connection   s%    zz$44dmmTEVEVWWr   c                 l    t        j                   | j                  | j                  | j                        S r)   )r   r/   r*   r0   r1   s    r   new_remote_netlogon_connectionz1DomainTrustCommand.new_remote_netlogon_connection   s'      !;!;T]]DL]L]^^r   c                     t        j                         }t        j                         |_        |j	                  dj                  d      ||      }|j                  |t         j                        }||fS )Nr   zutf-8)r
   ObjectAttributeQosInfosec_qosOpenPolicy2decodeQueryInfoPolicy2LSA_POLICY_INFO_DNS)r   connpolicy_access
objectAttrpolicyinfos         r   get_lsa_infozDomainTrustCommand.get_lsa_info   sb    ((*
 [[]
!!#**W"5",m= $$VS-D-DE~r   c           	          	 |j                  |d dd d d t        j                        }|j                  S # t        $ r |j                  ||      cY S w xY wNr   )netr_DsRGetDCNameEx2r   DS_RETURN_DNS_NAMEdc_uncRuntimeErrornetr_GetDcName)r   r   rr   rt   r   s        r   get_netlogon_dc_uncz&DomainTrustCommand.get_netlogon_dc_unc   s\    	7,,V-11dD$-5-H-HJD ;; 	7&&vv66	7s   03 AAc           	      P    |j                  |d dd d d t        j                        }|S r   )r   r   r   )r   r   rr   r   s       r   get_netlogon_dc_infoz'DomainTrustCommand.get_netlogon_dc_info   s0    (()-q$d)1)D)DF r   c                 l    |j                   t        j                  k(  r|j                  S |j                  S r)   )
trust_typer
   LSA_TRUST_TYPE_DOWNLEVELnetbios_namedns_namer   ts     r   netr_DomainTrust_to_namez+DomainTrustCommand.netr_DomainTrust_to_name   s(    <<3777>>!zzr   c                    d }d }|D ]O  }|j                   t        j                  z  s!|}|j                   t        j                  z  s||j                     } n |j                   t        j
                  z  r8||u ry|j                   t        j                  z  ry||j                     }||u ryy|j                  t        j                  z  ryy)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_typez+DomainTrustCommand.netr_DomainTrust_to_type   s     	B~~ @ @@~~(I(II%&r%7N	 ==8===N"}}x@@@!q~~&F  I IIr   c                     |j                   t        j                  z  ry|j                  t        j
                  z  ry|j                  t        j                  z  ryy)NYesNo)r   r   r   r   r
   "LSA_TRUST_ATTRIBUTE_NON_TRANSITIVEr   r   s     r   netr_DomainTrust_to_transitivez1DomainTrustCommand.netr_DomainTrust_to_transitive  sH    ==8=== F FF I IIr   c                     |j                   t        j                  z  r|j                   t        j                  z  ry|j                   t        j                  z  ry|j                   t        j                  z  ryy)NBOTHINCOMINGOUTGOINGINVALID)r   r   NETR_TRUST_FLAG_INBOUNDNETR_TRUST_FLAG_OUTBOUNDr   s     r   netr_DomainTrust_to_directionz0DomainTrustCommand.netr_DomainTrust_to_direction  sV    ==8;;;==8<<<==8;;;==8<<<r   c                 j    	 ||   }d||fz  }|S # t         $ r | j                  |      }d|z  }Y *w xY w)Nz__unknown__%08X__	0x%x (%s))KeyErrorr7   )r   e_dictr6   r   wv32rs          r   generic_enum_to_stringz)DomainTrustCommand.generic_enum_to_string)  sM    	*q	A
 1a&   	*,,q/C#c)A	*s    22c                     g }|}t        |j                               D ]  }||z  s	|| z  }|||   gz  } |dk7  r| j                  |      }|d|z  gz  }dj                  |      }|r|S d||fz  }	|	S )Nr   z__unknown_%08X__,r   )sortedkeysr7   join)
r   b_dictr6   r   scbc32r   r   s
             r   r   z+DomainTrustCommand.generic_bitmap_to_string3  s    & 	AE!GA&)A		 6,,q/C$s*++AHHQKH1a& r   c                     t         j                  dt         j                  dt         j                  dt         j                  di}| j                  ||      S )N	DOWNLEVELUPLEVELMITDCE)r
   r   LSA_TRUST_TYPE_UPLEVELLSA_TRUST_TYPE_MITLSA_TRUST_TYPE_DCEr   )r   r6   typess      r   trustType_stringz#DomainTrustCommand.trustType_stringH  sJ    ((+&&	""E""E	
 **5!44r   c                     t         j                  t         j                  z  dt         j                  dt         j                  di}| j                  ||      S )Nr   INBOUNDOUTBOUND)r
   LSA_TRUST_DIRECTION_INBOUNDLSA_TRUST_DIRECTION_OUTBOUNDr   )r   r6   
directionss      r   trustDirection_stringz(DomainTrustCommand.trustDirection_stringQ  sN    ++,,-.4++Y,,j	

 **:q99r   c                 *   t         j                  dt         j                  dt         j                  dt         j                  dt         j
                  dt         j                  dt         j                  dt         j                  di}| j                  ||      S )	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   r6   
attributess      r   trustAttributes_stringz)DomainTrustCommand.trustAttributes_stringZ  s|    224D00.668L557J668L11?557J779N	

 ,,Z;;r   c                 j   t         j                  dt         j                  dt         j                  dt         j                  dt         j
                  dt         j                  dt         j                  dt         j                  dt         j                  d	t         j                  d
i
}| j                  ||      S )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   r6   enctypess      r   kerb_EncTypes_stringz'DomainTrustCommand.kerb_EncTypes_stringg  s    --}--}..99;T99;T<<>Z002B==?\224FCCEh
 ,,Xq99r   c                     |dk(  ryt         j                  dt         j                  dt         j                  di}d| j	                  ||d      z  S )	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_flagsrs   s      r   entry_tln_statusz#DomainTrustCommand.entry_tln_statusv  sW    a<$ $$n&&
))+A

 d;;E7W[;\\\r   c                     |dk(  ryt         j                  dt         j                  dt         j                  dt         j                  di}d| j                  ||d	      z  S )
Nr   rC  zDisabled-SIDzDisabled-SID-ConflictingzDisabled-NBzDisabled-NB-ConflictingrE  Tr   )r
   LSA_SID_DISABLED_ADMINLSA_SID_DISABLED_CONFLICTLSA_NB_DISABLED_ADMINLSA_NB_DISABLED_CONFLICTr   rI  s      r   entry_dom_statusz#DomainTrustCommand.entry_dom_status  sc    a<$ &&))+E%%}((*C	
 d;;E7W[;\\\r   Nc                    |d|z  }nd}| j                   j                  dt        |j                        |fz         t	        |j                        D ]  \  }}|j
                  }d}|F|j                  D ]7  }	|	j                  |k7  r|	j
                  }d|	j                  j                  z  }9 |j                  }
|j                  t        j                  k(  r@| j                   j                  d| j                  |      dd|
j                  d|d	       |j                  t        j                  k(  r/| j                   j                  d
ddd|
j                  d       |j                  t        j                  k(  s1| j                   j                  d| j!                  |      dd|
j"                  j                  d|
j$                  j                  d|
j&                  d|d	        y )Nz TDO[%s]rV   zNamespaces[%d]%s:
z Collision[%s]TLN: 32 DNS[*.rZ   
zTLN_EX: 29r   zDOM: z DNS[z
] Netbios[] SID[)r   r   lenentries	enumeraters   indexnamestringforest_trust_datatyper
   LSA_FOREST_TRUST_TOP_LEVEL_NAMErK  "LSA_FOREST_TRUST_TOP_LEVEL_NAME_EXLSA_FOREST_TRUST_DOMAIN_INFOrQ  dns_domain_namenetbios_domain_name
domain_sid)r   ftitln
collisions
tln_stringiers   collision_stringr  ds              r   write_forest_trust_infoz*DomainTrustCommand.write_forest_trust_info  s   ?#c)JJ		-CKK(*16 6 	7 ckk* 	ADAqGGE!%#++ JAww!| GGE'7166=='I$	J ##Avv<<<		 $ 5 5e < !*:!< = 3AAA		 "AHH!. /3;;;		 $ 5 5e < ! 1 1 8 8 ! 5 5 < < !.>	!@ A+	A4 	r   )TT)F)NN)"r!   r"   r#   __doc__r   r7   r=   r   rG   rL   rR   rf   ri   rk   rp   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r+  rA  rK  rQ  ro  r$   r   r   r&   r&   -   s    
!(7L 77\ 77 7!>V]' )--1@"DX_	78
*5:<:	]
]#r   r&   c                   T    e Zd ZdZdZej                  ej                  edZ	g Z
ddZy)cmd_domain_trust_listr'   z%prog [options]ra   versionoptsrb   Nc                    | j                  ||      }	 | j                         }	 |j	                  |t
        j                  t
        j                  z  t
        j                  z        }|j                  }|D ]  }	|	j                  t
        j                  z  r!| j                   j#                  d| j%                  ||	      z  ddd| j'                  |	      z  ddd	| j)                  |	      z  d
dd| j+                  |	      z  d        y # t        $ r}| j                  | |d      d }~ww xY w# t        $ rF}| j                  |t        j                        rt        d|z        | j                  | |d      d }~ww xY w)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]rV  )rf   rk   r   rG   netr_DsrEnumerateDomainTrustsr   r   r   r   r=   r   WERR_RPC_S_PROCNUM_OUT_OF_RANGEr   arrayr   r   r   r   r   r   r   r   )
r   ra   rt  rb   r+   local_netlogonr   local_netlogon_trustsr   r   s
             r   runzcmd_domain_trust_list.run  s   ..y+F	[!??AN	^<<\=E=_=_=E=^=^>_=E=]=]>^_ " "'' 	LA}}x???IIOO&)F)Fq!)LL,t/R/RST/UU+d.P.PQR.SS&)F)Fq)II	K L	L 	3  	[((u6YZZ	[  	^''v/U/UV"#_#/$1 2 2((u6\]]	^s0   D AD0 	D-D((D-0	E?9AE::E?NNN)r!   r"   r#   rp  synopsisr   SambaOptionsVersionOptionsr   takes_optiongroupstakes_optionsr  r$   r   r   rr  rr    s5     H ))--0Mr   rr  c                   Z    e Zd ZdZdZej                  ej                  edZ	g Z
dgZddZy)cmd_domain_trust_showShow trusted domain details.%prog NAME [options]rs  rt   Nc           	      
   | j                  ||       	 | j                         }	 t        j
                  }| j                  ||      \  }}	| j                  j                  d|	j                  j                  d|	j                  j                  d|	j                  d       t	        j                         }
||
_
        	 |j                  ||
t        j                        }|j                   }|j"                  }	 |j                  ||
t        j.                        }	 d }|j8                  t        j:                  z  r!|j=                  ||
t        j>                        }| j                  j                  d       | j                  j                  d|jJ                  j                  z         |jJ                  j                  |jL                  j                  k7  r2| j                  j                  d|jL                  j                  z         | j                  j                  d|j                  z         | j                  j                  d| jO                  |jP                        z         | j                  j                  d| jS                  |jT                        z         | j                  j                  d| jW                  |j8                        z         tY        jZ                  |j"                        j\                  }tY        j^                  |j"                        j\                  }| j                  j                  d||fz         | j                  j                  d| ja                  |j6                        z         |j8                  t        j:                  z  r'| jc                  ||jL                  j                         y # t        $ r}| j                  | |d      d }~ww xY w# t        $ r}| j                  | |d      d }~ww xY w# t$        $ rF}| j'                  |t(        j*                        rt-        d|z        | j                  | |d      d }~ww xY w# t$        $ r}| j'                  |t(        j0                        rd }| j'                  |t(        j2                        rd }|| j                  | |d	      t	        j4                         }d
|_        Y d }~d }~ww xY w# t        $ r}| j'                  |t(        j@                        rd }| j'                  |t(        jB                        rd }|| j                  | |d      t	        jD                         }d
|_#        g |_$        Y d }~d }~ww xY w)Nfailed to connect lsa server#failed to query LSA_POLICY_INFO_DNSLocalDomain Netbios[r   rX  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
rh  )2rf   ri   r   rG   r
   !LSA_POLICY_VIEW_LOCAL_INFORMATIONr   r   r   r]  r^  
dns_domainsidStringQueryTrustedDomainInfoByName!LSA_TRUSTED_DOMAIN_INFO_FULL_INFOinfo_exposix_offsetr   r=   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   lsaRQueryForestTrustInformationrc  "NT_STATUS_RPC_PROCNUM_OUT_OF_RANGENT_STATUS_NOT_FOUNDForestTrustInformationcountrZ  r   domain_namer  r   r  trust_directionr+  r3   r4   r5   c_int32rA  ro  )r   rt   ra   rt  rb   	local_lsar   local_policy_accesslocal_policylocal_lsa_info	lsaStringlocal_tdo_fulllocal_tdo_infolocal_tdo_posixlocal_tdo_enctypeslocal_tdo_forestposix_offset_u32posix_offset_i32s                     r   r  zcmd_domain_trust_show.run  s   	;7	V557I	]"%"G"G-1->->yJ]-^*\> 			&++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 	g  	V((u6TUU	V  	]((u6[\\	]"  	h''x/W/WX"#Y\b#bcc((u6fgg		h  	-''x/S/ST''x/T/TU ,,T5-np p "%!E!E!G+,((	-(  
	*''x/Z/Z[''x/K/KL ,,T5:bcc"99;%&"')$$
	*sz   O  %O$ =9P 7!Q A S%  	O!	OO!$	P-P  P	QAQQ	S"#A4SS"%	U4.A;U//U4r  )r!   r"   r#   rp  r  r   r  r  r   r  r  
takes_argsr  r$   r   r   r  r    s?    &%H ))--0M JXr   r  c            	           e Zd ZdZdZej                  ej                  edZ	 e
ddddd	       e
d
dddd	       e
ddddd	      gZdgZ	 	 ddZy)cmd_domain_trust_modifyr  r  rs  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_enctypesrt   c           	         d}d}	||	dz  }	||	dz  }	||	dz  }	|	dkD  rt        d      |	dk(  r|dz  }|dk(  rt        d      | j                  ||       	 | j                         }
	 t
        j                  }|t
        j                  z  }| j                  |
|      \  }}| j                  j                  d|j                  j                  d|j                  j                  d	|j                  d
       |	dk(  rt        j                         }||_        	 |
j!                  ||t
        j"                        }| j                  j                  d| j3                  |j0                        z         t        j.                         }|t5        |d      |_        n^|9t6        j8                  |_        |xj0                  t6        j:                  z  c_        n#|t6        j<                  |_        nt        d      |j0                  |j0                  k7  r[	 |
j?                  ||t
        j"                  |      }| j                  j                  d| j3                  |j0                        z         y | j                  j                  d       y # t        $ r}| j	                  | |d      d }~ww xY w# t        $ r}| j	                  | |d      d }~ww xY w# t$        $ r}| j'                  |t(        j*                        rd }| j'                  |t(        j,                        rd }|| j	                  | |d      t        j.                         }d|_        Y d }~d }~ww xY w# t$        $ r}|| j	                  | |d      Y d }~y d }~ww xY w)Nr   rA   zL--no-aes-keys, --use-aes-keys and --raw-kerb-enctypes are mutually exclusivez/modification arguments are required, try --helpzfailed to connect to lsa serverr  r  r   rX  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   rf   ri   r   rG   r
   r  LSA_POLICY_TRUST_ADMINr   r   r   r]  r^  r  r  r  r  r  r   r=   r   r  r  r  r  rA  intr   r9  r:  r8  SetTrustedDomainInfoByName)r   rt   ra   rt  rb   r  r  r  num_modificationsenctype_argsr  r   r  r  r  r  r  r  s                     r   r  zcmd_domain_trust_modify.runh  s    $AL#AL'AL!mnn1"!PQQ	;7	Y557I	]"%"G"G3#=#==-1->->yJ]-^*\> 			&++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G  	Y((u6WXX	Y  	]((u6[\\	]" ! 1++E83W3WX E++E83X3XY E$00u1rt t &)%I%I%K"/0",,1H % v("44T55tv v ) 	vsb   J (8J, !K AM 	J)J$$J),	K5KK	MA4MM	N$M>>N)NNNNNNr!   r"   r#   rp  r  r   r  r  r   r  r   r  r  r  r$   r   r   r  r  L  s    &%H ))--0 	7"	 	|P&	 	$W3#	M JHLDHZr   r  c                   r   e Zd ZdZdZej                  ej                  ej                  e	dZ
 edddddgd	d
d       edddg dddd       edddddgddd       eddddd       edddg dd d!d"       ed#dd$d%d       ed&dd'd(d       ed)d*d+d,d-       ed.d*d/d0d-      g	Zd1gZ	 	 	 	 	 d3d2Zy")4cmd_domain_trust_createz Create a domain or forest trust.%prog DOMAIN [options]ra   rt  r   rb   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.validatert   c           	      X&    t        j                         }d}|
|dk(  r
d}n|
dk(  rd}|dk7  r|rt        d      |rt        d      t        j                         }|r9t        j
                  |_        |xj                  t        j                  z  c_        nt        j                  |_        t         j                  }|t         j                  z  }|t         j                  z  }t        j                         }t         j                  |_        d|_        |d	k(  rG|xj                  t         j                   z  c_        |xj                  t         j"                  z  c_        nQ|d
k(  r$|xj                  t         j                   z  c_        n(|dk(  r#|xj                  t         j"                  z  c_        d|_        |	r#|xj$                  t         j&                  z  c_        |r#|xj$                  t         j(                  z  c_        |dk(  r#|xj$                  t         j*                  z  c_        |r#|xj$                  t         j,                  z  c_        |r#|xj$                  t         j.                  z  c_         fd}d }d }t         j                  }|dk(  r|j                  t         j                   z  r" |d      }t1        |j3                  d            }|j                  t         j"                  z  r" |d      }t1        |j3                  d            }d }nd }|j                  t         j                   z  r |d      }|j                  t         j"                  z  r |d      }|t         j                  z  }|t         j                  z  }t        j                         }t         j                  |_        d|_        |d	k(  rG|xj                  t         j                   z  c_        |xj                  t         j"                  z  c_        nQ|d
k(  r$|xj                  t         j"                  z  c_        n(|dk(  r#|xj                  t         j                   z  c_        d|_        |	r#|xj$                  t         j&                  z  c_        |r#|xj$                  t         j(                  z  c_        |dk(  r#|xj$                  t         j*                  z  c_        |r#|xj$                  t         j,                  z  c_        |r#|xj$                  t         j.                  z  c_         j5                  ||      }	  j7                         }	  j=                  ||      \  }}  j>                  jA                  d| jB                  jD                  d| jF                  jD                  d| jH                  d       	  jK                  ||      }!	  jO                         }"	  j=                  |"|      \  }#}$ j>                  jA                  d|$jB                  jD                  d|$jF                  jD                  d|$jH                  d       |$jF                  jD                  |jP                  _"        |$jB                  jD                  |jR                  _"        |$jH                  |_$        |r[| jF                  jD                  |jP                  _"        | jB                  jD                  |jR                  _"        | jH                  |_$        	 |jP                  jD                  |_"        |jU                  ||t         jV                         t        d|jD                  z        # t8        $ r} j;                   |d      d }~ww xY w# t8        $ r} j;                   |d      d }~ww xY w# t8        $ r} jM                   |d      d }~ww xY w# t8        $ r} jM                   |d      d }~ww xY w# t8        $ r} jM                   |d      d }~ww xY w# tX        $ rJ} j[                  |t\        j^                        s  j;                   |d|jD                  z        Y d }~nd }~ww xY w	 |jR                  jD                  |_"        |jU                  ||t         jV                         t        d|jD                  z        # tX        $ rJ} j[                  |t\        j^                        s  j;                   |d|jD                  z        Y d }~nd }~ww xY w|rV	 |jP                  jD                  |_"        |"jU                  |#|t         jV                         t        d|jD                  z        # tX        $ rJ} j[                  |t\        j^                        s  jM                   |d|jD                  z        Y d }~nd }~ww xY w	 |jR                  jD                  |_"        |"jU                  |#|t         jV                         t        d|jD                  z        # tX        $ rJ} j[                  |t\        j^                        s  jM                   |d|jD                  z        Y d }~nd }~ww xY w	  ja                         }%n$# t8        $ r} j;                   |d      d }~ww xY w	  jc                  |%|      }&n$# t8        $ r} j;                   |d      d }~ww xY w|ro	  je                         }'n$# t8        $ r} jM                   |d      d }~ww xY w	  jg                  |'|!|      }(n$# t8        $ r} jM                   |d      d }~ww xY wd })ti        jj                         }* |)||*      }+ |)||*      },d }-d }.	 |r j>                  jA                  d        d!d"d#}/tm        |"|#|t         jn                  |,|+      }. j>                  jA                  d$       |rA j>                  jA                  d%       d!d&d#}/|"jq                  |.t         jr                  |        j>                  jA                  d'       dd"d#}/tm        |||t         jn                  |+|,      }- j>                  jA                  d(       |rA j>                  jA                  d)       dd&d#}/|jq                  |-t         jr                  |       n# t8        $ r} j>                  jA                  d*/d+   d,|/d-   d.       |.r. j>                  jA                  d/       |"ju                  |.       d }.|-r. j>                  jA                  d0       |ju                  |-       d }-|/d-   d!k(  r jM                   |d1|/d+   z         j;                   |d1|/d+   z        d }~ww xY w|rU|j$                  t         j*                  z  r j>                  jA                  d2       	 |%jw                  |&jx                  |$jF                  jD                  tz        j|                        }0n$# t8        $ r} j;                   |d3      d }~ww xY w	 |j                  ||$jF                  t         j                  |0d      }1n$# t8        $ r} j;                   |d4      d }~ww xY w j                  |0|$jF                  jD                  |15       |r j>                  jA                  d6       	 'jw                  (| jF                  jD                  tz        j|                        }2n$# t8        $ r} jM                   |d3      d }~ww xY w	 |"j                  |#| jF                  t         j                  |2d      }3n$# t8        $ r} jM                   |d4      d }~ww xY w j                  |2| jF                  jD                  |35       |j                  t         j"                  z  r j>                  jA                  d7       	 |%j                  |&jx                  tz        j                  d8|$jF                  jD                        }4n$# t8        $ r} j;                   |d9      d }~ww xY w j                  |4j                  d         }5 j                  |4j                  d         }6|4j                  tz        j                  z  r1d:|4j                  d;|4j                  d<   d=|4j                  d<   d>}7n0d:|4j                  d;|4j                  d<   d=|4j                  d<   d?}7|5t        j                  k7  s|6t        j                  k7  rt        |7       j>                  jA                  d@|7z         |r|j                  t         j"                  z  r j>                  jA                  dA       	 'j                  (tz        j                  d8| jF                  jD                        }8n$# t8        $ r} jM                   |d9      d }~ww xY w j                  |8j                  d         }9 j                  |8j                  d         }:|8j                  tz        j                  z  r1dB|8j                  d;|8j                  d<   d=|8j                  d<   d>};n0dB|8j                  d;|8j                  d<   d=|8j                  d<   d?};|9t        j                  k7  s|:t        j                  k7  rt        |;       j>                  jA                  d@|;z         |.$	 |"j                  |.       n# t8        $ r Y nw xY wd }.|-$	 |j                  |-       n# t8        $ r Y nw xY wd }- j>                  jA                  dC       y )DNFr  Tr  r  z'--not-transitive requires --type=forestz*--treat-as-external requires --type=forestr   r  r  r  c                     d }	 ||dk7  r|S t        d| z        }t        d| z        }||k(  sd }j                  j                  d       H)NrV   zNew %s Password: zRetype %s Password: zSorry, passwords do not match.
)r   r   r   )r]  passwordpasswordverifyr   s      r   get_passwordz1cmd_domain_trust_create.run.<locals>.get_password7  s_    H'HN#O"#6#=>!()?$)F!G>1#HIIOO$FG r   r  zIncoming Trust	utf-16-lezOutgoing Trustc                 n    t        j                  | dz  | dz        }t        |j                  d            S )N   r  )samba generate_random_machine_passwordr   encode)lengthpws     r   random_trust_secretz8cmd_domain_trust_create.run.<locals>.random_trust_secretY  s1    ;;FaKSTU+BIIk,BCCr      r  r  r  r   rX  r   failed to locate remote serverRemoteDomain Netbios[zTrustedDomain %s already exist'z2QueryTrustedDomainInfoByName(%s, FULL_INFO) failedrv  failed to get netlogon dc infoc                    | t        j                         }d|_        |S t        j                         }t	        |       |_        | |_        t        j                         }t        j                  |      |_
        t        j                  |_        ||_        t        j                         }d|_        |g|_        t        j                         }d|_        ||_        |S )Nr   rA   )r	   trustAuthInOutBlobr  AuthInfoClearrY  sizer  AuthenticationInformationr  unix2nttimeLastUpdateTimer
   TRUST_AUTH_TYPE_CLEARAuthTypeAuthInfoAuthenticationInformationArrayr}  current)secretupdate_timeblobclearr   r}  s         r   generate_AuthInOutBlobz;cmd_domain_trust_create.run.<locals>.generate_AuthInOutBlob  s    ~224
**,EVEJ#EN557D"'"3"3K"@D55DM!DM;;=EEK&EK..0DDJ DL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rh  ri  z)Setup remote forest trust information...
zValidating outgoing trust...
r  !NETLOGON_CONTROL_TC_VERIFY failedLocalValidation: DC[] CONNECTION[rA   ] TRUST[] VERIFY_STATUS_RETURNEDrZ   OK: %s
zValidating incoming trust...
RemoteValidation: DC[z	Success.
)Mr
   r  r   r  r   r9  r  r:  r8  r  r  LSA_POLICY_CREATE_SECRETTrustDomainInfoInfoExr  r   r  r  r  r   r&  r%  r   r   r(  r   r  rf   ri   r   rG   r   r   r   r]  r^  r  r  r   rL   r   r  r   r  r  r   r=   r   r  rk   r   r   r   r  current_unix_timer   LSA_TRUSTED_DOMAIN_ALL_ACCESSr
  r  DeleteObject!netr_DsRGetForestTrustInformationr   r   DS_GFTI_UPDATE_TDOlsaRSetForestTrustInformationrc  ro  netr_LogonControl2ExNETLOGON_CONTROL_TC_VERIFYr7   pdc_connection_statustc_connection_statusrs   NETLOGON_VERIFY_STATUS_RETURNEDtrusted_dc_namer   WERR_SUCCESSClose)<r   rt   ra   rb   r   rt  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  r+   r  r   r  r  r.   
remote_lsaremote_policyremote_lsa_infor~  local_netlogon_inforemote_netlogonremote_netlogon_dc_uncr  r  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  z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!"67H7O7OP[7\"]//#2R2RR$01A$B!"67H7O7OP[7\"] $D  //#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	V557I	]-1->->yJ]-^*\> 			&++22&1188&**, 	-
	Y 44XvFM	W779J	^/3/@/@Ma/b,]O 			',,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T_  	V((u6TUU	V
  	]((u6[\\	]  	Y))$7WXX	Y
  	W))$7UVV	W
  	^))$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 0	C 		 89/7AY"Z$<Z=J=N=@=^=^=J=J%L! 		 78IIOO$YZ3;Eb&cO::;L;>;l;l;DF IIOO34+2<TUO7	8D8H8;8Y8Y8E8E G 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		 @Ac)7)L)LM`MgMgMUMpMpMNM\MgMgMnMn*p& $ c00u>abbc &*\\2D2Z2Z[\2]%^"$(LL1C1X1XYZ1[$\!%++h.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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'  (] 9]' &^ 9^/ 
_ /A_7 	]$]]$'	^0^^	^,^''^,/	_8__	_4_//_47	a
 A aa
Ab" "	c5+A c00c5<Ae 	f#A ff#'Ag; ;	iA i		ii# #	j,i??jj 	j<$j77j<k 	k4k//k48l 	l-l((l-D:r 	u)"Cu$$u))?w) )	x
2xx
-x< <	yyy&5{ 	{=%{88{=-|/ /	}8}}5A 6 6	A@?A@@A@E 6AF F	AF8F AF3F3AF8KAK K	AK%K$AK%K-AK? K?	ALL
AL)NNNNNNNFNFFFTr!   r"   r#   rp  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)-	Hr   r  c            	           e Zd ZdZdZej                  ej                  ej                  e	dZ
 edddddgd	d
d      gZdgZ	 	 ddZy)cmd_domain_trust_deletez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  rt   Nc           	         t         j                  }|t         j                  z  }|t         j                  z  }|dk(  rd }n6t         j                  }|t         j                  z  }|t         j                  z  }| j	                  ||       	 | j                         }		 | j                  |	|      \  }}| j                  j                  d|j                  j                  d|j                  j                  d|j                  d       d }d }d }d }t        j                         }	 ||_        |	j!                  ||t         j"                        }|D	 | j1                  ||       	 | j3                         }	 | j                  ||      \  }}| j                  j                  d
|j                  j                  d|j                  j                  d|j                  d       |j                  |j                  k7  sZ|j                  j                  |j4                  j                  k7  s-|j                  j                  |j6                  j                  k7  rGt-        d|j4                  j                  d|j6                  j                  d|j                  d      	 |j                  j                  |_        |j!                  ||t         j"                        }||j                  |j                  k7  sZ|j                  j                  |j4                  j                  k7  s-|j                  j                  |j6                  j                  k7  rGt-        d|j4                  j                  d|j6                  j                  d|j                  d      |P	 |j6                  j                  |_        |	j9                  ||t:        j<                        }|	j?                  |       d }|=	 |j6                  j                  |_        j9                  |t:        j<                        }|0	 j?                  |       d }| j                  j                  d       y y # t        $ r}
| j                  | |
d      d }
~
ww xY w# t        $ r}
| j                  | |
d      d }
~
ww xY w# t$        $ rF}
| j'                  |
t(        j*                        rt-        d|z        | j/                  | |
d	      d }
~
ww xY w# t        $ r}
| j/                  | |
d	      d }
~
ww xY w# t        $ r}
| j/                  | |
d      d }
~
ww xY w# t        $ r}
| j/                  | |
d      d }
~
ww xY w# t$        $ rK}
| j'                  |
t(        j*                        s | j/                  | |
d|j                  z        Y d }
~
d }
~
ww xY w# t        $ r%}
| j                  | |
d|j                  z        d }
~
ww xY w# t        $ r%}
| j/                  | |
d|j                  z        d }
~
ww xY w# t        $ r9}
| j                  j                  d| j/                  | |
d      z         Y d }
~
y d }
~
ww xY w)Nr  r  r  r  r   rX  r   z$Failed to find trust for domain '%s'r  r  zLocalTDO inconsistent: Netbios[rZ   z QueryTrustedDomainInfoByName(%s)z RemoteTDO inconsistent: Netbios[zOpenTrustedDomainByName(%s)zRemoteTDO deleted.
z%s
zDeleteObject() failed) r
   r  r  r  rf   ri   r   rG   r   r   r   r]  r^  r  r  r  r  LSA_TRUSTED_DOMAIN_INFO_INFO_EXr   r=   r   r  r   rL   r   r   r   r  OpenTrustedDomainByNamer   SEC_STD_DELETEr  )r   rt   ra   rb   r   rt  rG  r  r)  r  r   r  r  r  r5  remote_tdo_infor6  r  r-  r.  r/  s                        r   r  zcmd_domain_trust_delete.run  s4    "CCs999s;;;g%#' #&#H#H  C$>$>>  C$@$@@ 	;7	V557I	]-1->->yJ]-^*\> 			&++22&1188&**, 	-
  JJL		Y%I&CCLDMsOrOrtN  +]((6:[!;;=
b373D3DZQe3f0 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 	]  	V((u6TUU	V
  	]((u6[\\	]$  	Y''x/W/WX"#IF#RSS))$7WXX	Y   ]--dE;[\\]
   [--dE;YZZ[
   b--dE;`aab, ! E//x7_7_`11$?a2;2B2B@D E E aE*   @,,T5:W-6-=-=;? @ @@   A--dE;X.7.>.><@ A AA   h		)@)@uNe)f fgghs   Q Q9 "(R S/ !T 2T7 <U <V2 &<W# %.X 	Q6Q11Q69	RRR	S,&AS''S,/	T8TT	T4T//T47	U UU	V/$A V**V/2	W ; WW #	X, XX	Y/YYNNNNNrD  r$   r   r   rF  rF    sp     'H ))--..0	 	":(S%		M JW[ r   rF  c            	           e Zd ZdZdZej                  ej                  ej                  e	dZ
 edddddgd	d
d      gZdgZ	 	 ddZy)cmd_domain_trust_validatez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  rt   Nc           	      b   t         j                  }| j                  ||      }	 | j                         }		 | j                  |	|      \  }}| j                  j                  d|j                  j                  d|j                  j                  d|j                  d       	 t        j                         }||_
        |	j                  ||t         j                        }| j                  j                  d	|j*                  j                  d|j,                  j                  d|j                  d       	 | j/                         }	 |j1                  |t2        j4                  d|j,                  j                        }| j7                  |j8                  d         }| j7                  |j:                  d         }|j<                  t2        j>                  z  r1d|j@                  d|j:                  d   d|j8                  d   d}n0d|j@                  d|j:                  d   d|j8                  d   d}|tB        jD                  k7  s|tB        jD                  k7  rt)        |      | j                  j                  d|z         	 |j@                  jG                  dd      }|j,                  j                  d|}|j1                  |t2        jH                  d|      }| j7                  |j:                  d         }d|j@                  d|j:                  d   d}|tB        jD                  k7  rt)        |      | j                  j                  d|z         |dk7  r:	 | jK                  ||d      }	 | jO                         }	 |j1                  |t2        j4                  d|j                  j                        }| j7                  |j8                  d         }| j7                  |j:                  d         }|j<                  t2        j>                  z  r1d|j@                  d|j:                  d   d|j8                  d   d}n0d|j@                  d|j:                  d   d|j8                  d   d}|tB        jD                  k7  s|tB        jD                  k7  rt)        |      | j                  j                  d|z         	 |j@                  jG                  dd      }|j                  j                  d|}|j1                  |t2        jH                  d|      }| j7                  |j:                  d         }d|j@                  d|j:                  d   d}|tB        jD                  k7  rt)        |      | j                  j                  d|z         y # t        $ r}
| j                  | |
d      d }
~
ww xY w# t        $ r}
| j                  | |
d      d }
~
ww xY w# t         $ rF}
| j#                  |
t$        j&                        rt)        d|z        | j                  | |
d      d }
~
ww xY w# t        $ r}
| j                  | |
d
      d }
~
ww xY w# t        $ r}
| j                  | |
d      d }
~
ww xY w# t        $ r}
| j                  | |
d      d }
~
ww xY w# t        $ r}
| jM                  | |
d      d }
~
ww xY w# t        $ r}
| jM                  | |
d
      d }
~
ww xY w# t        $ r}
| jM                  | |
d      d }
~
ww xY w# t        $ r}
| jM                  | |
d      d }
~
ww xY w)Nr  r  r  r   rX  r   r  ,QueryTrustedDomainInfoByName(INFO_EX) failedLocalTDO Netbios[rv  r  r  r   r  r  rA   r  r  rZ   r  \rV   z"NETLOGON_CONTROL_REDISCOVER failedzLocalRediscover: DC[r  F)r   r  r  zRemoteRediscover: DC[)(r
   r  rf   ri   r   rG   r   r   r   r]  r^  r  r  r  r  rI  r   r=   r   r  r   r   r  rk   r  r   r  r7   r  r   rs   r!  r"  r   r#  replaceNETLOGON_CONTROL_REDISCOVERr   rL   r   ) r   rt   ra   rt  r   rb   rP  r  r+   r  r   r  r  r  r  r~  r<  r=  r>  r?  rr   domain_and_serverlocal_trust_rediscoverlocal_rediscoverr.   r1  r@  rA  rB  rC  remote_trust_rediscoverremote_rediscovers                                    r   r  zcmd_domain_trust_validate.runx  s    "CC..y+F	V557I	]-1->->yJ]-^*\> 			&++22&1188&**, 	-
	f

I%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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6W\ 8 ]`"&"E"E"G`#889A9\9\9:9G9R9R9Y9Y[ $ #',,/B/X/XYZ/["\!%.A.V.VWX.Y!Z"((8+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		
-> >?e  	V((u6TUU	V
  	]((u6[\\	]  	f''x/W/WX"#Y\b#bcc((u6dee		f  	[((u6YZZ	[  	[((u6YZZ	[<  	\((u6Z[[	\    ]--dE;[\\]
   `--dE;^__`   `--dE;^__`<   a--dE;_``as   V V? "<W# 6X5 6Y AY= !Z! 6[ 6[) A\ 	V<$V77V<?	W WW #	X2,AX--X25	Y>YY	Y:"Y55Y:=	ZZZ!	[*Z==[	[&[!![&)	\
2\\
	\.\))\.rM  rD  r$   r   r   rO  rO  b  sp    "'H ))--..0	 	$8Z(U'		M JW["Zr   rO  c                      e Zd ZdZdZej                  ej                  edZ	 e
dddg ddd	d
       e
ddddd       e
dddddg        e
dddddg        e
dddddg        e
ddddd g        e
d!dd"d#d$g        e
d%dd"d&d'g        e
d(dd)d*d+g        e
d,dd)d-d.g        e
d/ddd0d1g        e
d2ddd3d4g        e
d5ddd6d7g        e
d8ddd9d:g       gZd;gZ	 	 	 	 	 d=d<Zy
)>cmd_domain_trust_namespaceszManage forest trust namespaces.z%prog [DOMAIN] [options]rs  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           	      <   |g }|g }|	g }	|
g }
|g }|g }|g }|g }|g }|g }|g }|g }d}|;|dk(  rt        d|z        |rt        d      t        |      dkD  rt        d      t        |      dkD  rt        d      t        |	      dkD  rt        d      t        |
      dkD  rt        d	      t        |      dkD  rt        d
      t        |      dkD  rt        d      t        |      dkD  rt        d      t        |      dkD  rt        d      t        |      dkD  r(|D ]!  }|j                  d      st        d|z         d}t        |      dkD  r(|D ]!  }|j                  d      st        d|z         d}|D ]8  }|D ]1  }|j                         |j                         k7  r%t        d|z         : t        |      dkD  r(|D ]!  }|j                  d      st        d|z         d}t        |      dkD  r(|D ]!  }|j                  d      st        d|z         d}|D ]8  }|D ]1  }|j                         |j                         k7  r%t        d|z         : ndt        |      dkD  rt        d      t        |      dkD  rt        d      t        |      dkD  rt        d      t        |      dkD  rt        d      ||dk(  rd}|r|dk7  rt        d|z        t        |      dkD  rt        d      t        |      dkD  rt        d      t        |	      dkD  rt        d      t        |
      dkD  rt        d      t        |      dkD  rt        d      t        |      dkD  rt        d       t        |      dkD  rt        d!      t        |      dkD  r^t        d"      |rMd}t        |      dkD  rt        d#      t        |      dkD  rt        d$      t        |      dkD  rt        d%      t        |      dkD  rd}t        |      dkD  rd}|D ]8  }|D ]1  }|j                         |j                         k7  r%t        d&|z         : t        |	      dkD  r(|	D ]!  }|j                  d      st        d'|z         d}t        |
      dkD  r(|
D ]!  }|j                  d      st        d(|z         d}|	D ]8  }|
D ]1  }|j                         |j                         k7  r%t        d)|z         : t        |      dkD  rd}t        |      dkD  rd}|D ]8  }|D ]1  }|j	                         |j	                         k7  r%t        d*|z         : g }|D ])  }	 t        j                  |      }|j                  |       + g }|D ])  }	 t        j                  |      }|j                  |       + t        |      dkD  rd}t        |      dkD  rd}|D ]  }|D ]  }||k7  r	t        d-|z          t        j                  }|r|t        j                  z  }| j                  ||      }	 | j                         }	 | j#                  ||      \  } }!| j$                  j'                  d0|!j(                  j*                  d1|!j,                  j*                  d2|!j.                  d3       |:	 | j1                         }"	 | j3                  |"|      }#|#j4                  |#j6                  k7  r&t        d6|#j4                  d7|#j6                  d8      	 |"j9                  |#j:                  d d      }$| j$                  j'                  d;       | jG                  |$|!j,                  j*                  <       	 | jI                         }%d>tK        |%jM                               z  }&d?d@g}'	 |%jO                  |&tP        jR                  dA|'B      }(|(d   })g }*d?|)v r|*jY                  |)d?          g }+d@|)v r|+jY                  |)d@          | j$                  j'                  dDt        |*      z         |*D ]%  },| j$                  j'                  dEdFdGdH|,d3       ' | j$                  j'                  dIt        |+      z         |+D ]%  },| j$                  j'                  dEdFdGdH|,d3       ' |sy d}-g }.|.jY                  |*       d}/g }0|0jY                  |+       |D ]T  }1|.D ]:  },tK        |,      j                         |1j                         k(  s.t        dJ|1z         |.j                  |1       d}-V |D ]h  }1d }2t[        |.      D ]3  \  }3},tK        |,      j                         |1j                         k7  r1|3}2 n |2t        dK|1z        |.j]                  |2       d}-j |D ]T  }4|0D ]:  },tK        |,      j                         |4j                         k(  s.t        dL|4z         |0j                  |4       d}/V |D ]h  }4d }2t[        |0      D ]3  \  }3},tK        |,      j                         |4j                         k7  r1|3}2 n |2t        dM|4z        |0j]                  |2       d}/j | j$                  j'                  dNt        |.      z         |.D ]%  },| j$                  j'                  dEdFdGdH|,d3       ' | j$                  j'                  dOt        |0      z         |0D ]%  },| j$                  j'                  dEdFdGdH|,d3       ' tQ        j^                         }5|)j`                  |5_0        |-r(tQ        jb                  |.tP        jd                  d?      |5d?<   |/r(tQ        jb                  |0tP        jd                  d@      |5d@<   	 |%jg                  |5       	 |"j9                  |#j:                  d d      }6| j$                  j'                  dQ       | jG                  |6|!j,                  j*                  <       y 	 t        jh                         }7||7_        |jk                  | |7t        jl                        }8| j$                  j'                  dT|8jt                  j*                  d1|8j4                  j*                  d2|8j.                  d3       |8jv                  t        jx                  z  st        dU|z        |~	 | j1                         }"	 | j3                  |"|      }#dV}9|dk(  rtz        j|                  }:|rd}9nd}:	 |"j9                  |#j:                  |8j4                  j*                  |:      };	 |j                  | |8j4                  t        j                  |;|9      }<| j$                  j'                  dX       | jG                  |;|8j4                  j*                  |<Y       |dk(  r	 t        jh                         }7|8j4                  j*                  |7_        |j                  | |7t        j                        }6| j$                  j'                  dQ       | jG                  |6|8j4                  j*                  <       y 	 t        jh                         }7|8j4                  j*                  |7_        |j                  | |7t        j                        }=| j$                  j'                  d[       | jG                  |=|8j4                  j*                  <       |sy g }>|>jY                  |=j                         t        j                         }?t        |>      |?_D        |>|?_B        |r|?j                  D ][  }@|@j                  t        j                  k7  r!@j                  dk(  r1d@_H        |@xj                  t        j                   z  c_G        ] |?j                  D ]  }@|@j                  t        j                  k7  r!@j                  dk(  r1d@_H        |@xj                  t        j                   z  c_G        |@xj                  t        j                   z  c_G         |D ]  }Ad }2t[        |?j                        D ]\  \  }3}@|@j                  t        j                  k7  r$@j                  j*                  j                         Aj                         k7  rZ|3}2 n |2t        d\Az        |?j                  |2   j                  t        j                  z  st        d]Az        d|?j                  |2   _H        |?j                  |2   xj                  t        j                   z  c_G        	 |D ]6  }Ad }2t[        |?j                        D ]\  \  }3}@|@j                  t        j                  k7  r$@j                  j*                  j                         Aj                         k7  rZ|3}2 n |2t        d^Az        |?j                  |2   j                  t        j                  z  rt        d_Az        d|?j                  |2   _H        |?j                  |2   xj                  t        j                   z  c_G        |?j                  |2   xj                  t        j                  z  c_G        9 |	D ]  }Bd }2t[        |?j                        D ]\  \  }3}@|@j                  t        j                  k7  r$@j                  j*                  j                         Bj                         k7  rZ|3}2 n |2t        d`Bz        daBj                         z  }Cd }2t[        |?j                        D ]r  \  }3}@|@j                  t        j                  k7  r$da@j                  j*                  j                         z  }DC|Dk(  rt        dbBz        Cj                  D      sp|3}2 n |2t        dcBz        t        j                         }@t        j                  |@_E        d|@_G        d|@_H        B|@j                  _        g }>|>jY                  |?j                         |>j                  |2dVz   |@       t        |>      |?_D        |>|?_B         |
D ]  }Bd }2t[        |?j                        D ]\  \  }3}@|@j                  t        j                  k7  r$@j                  j*                  j                         Bj                         k7  rZ|3}2 n |2t        ddBz        g }>|>jY                  |?j                         |>j]                  |2       t        |>      |?_D        |>|?_B         |D ]  }Ed }2t[        |?j                        D ]f  \  }3}@|@j                  t        j                  k7  r$@j                  j                  j*                  j	                         Ej	                         k7  rd|3}2 n |2t        deEz        |?j                  |2   j                  t        j                  z  st        dfEz        d|?j                  |2   _H        |?j                  |2   xj                  t        j                   z  c_G         |D ]@  }Ed }2t[        |?j                        D ]f  \  }3}@|@j                  t        j                  k7  r$@j                  j                  j*                  j	                         Ej	                         k7  rd|3}2 n |2t        dgEz        |?j                  |2   j                  t        j                  z  rt        dhEz        d|?j                  |2   _H        |?j                  |2   xj                  t        j                   z  c_G        |?j                  |2   xj                  t        j                  z  c_G        C D ]  }d }2t[        |?j                        D ]@  \  }3}@|@j                  t        j                  k7  r$@j                  j                  |k7  r>|3}2 n |2t        di|z        |?j                  |2   j                  t        j                  z  st        djEz        d|?j                  |2   _H        |?j                  |2   xj                  t        j                   z  c_G         D ]  }d }2t[        |?j                        D ]@  \  }3}@|@j                  t        j                  k7  r$@j                  j                  |k7  r>|3}2 n |2t        dk|z        |?j                  |2   j                  t        j                  z  rt        dlEz        d|?j                  |2   _H        |?j                  |2   xj                  t        j                   z  c_G        |?j                  |2   xj                  t        j                  z  c_G         	 |j                  | |8j4                  t        j                  |?d      }F| j$                  j'                  dm       | jG                  |?|8j4                  j*                  FY       	 t        jh                         }7|8j4                  j*                  |7_        |j                  | |7t        j                        }6| j$                  j'                  dQ       | jG                  |6|8j4                  j*                  <       y # t        t        f$ r t        d+|z        w xY w# t        t        f$ r t        d,|z        w xY w# t        $ r}| j!                  | |d.      d }~ww xY w# t        $ r}| j!                  | |d/      d }~ww xY w# t        $ r}| j!                  | |d4      d }~ww xY w# t        $ r}| j!                  | |d5      d }~ww xY w# t        $ r}| j=                  |t>        j@                        rt        d9|z        | j=                  |t>        jB                        rt        d9|z        | j=                  |t>        jD                        rt        d9|z        | j!                  | |d:      d }~ww xY w# t        $ r}| j!                  | |d=      d }~ww xY w# tP        jT                  $ r}| jW                  | |dC      d }~ww xY w# tP        jT                  $ r}| jW                  | |dP      d }~ww xY w# t        $ r}| j!                  | |d:      d }~ww xY w# tn        $ rF}| j=                  |tp        jr                        rt        dR|z        | j!                  | |dS      d }~ww xY w# t        $ r}| j!                  | |d4      d }~ww xY w# t        $ r}| j!                  | |d5      d }~ww xY w# t        $ r}| j!                  | |d:      d }~ww xY w# t        $ r}| j!                  | |dW      d }~ww xY w# t        $ r}| j!                  | |dZ      d }~ww xY w# t        $ r}| j!                  | |dZ      d }~ww xY w# t        $ r}| j!                  | |dW      d }~ww xY w# t        $ r}| j!                  | |dZ      d }~ww xY w)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-sidr  r  r  r   rX  r   rv  r  zThe local domain [z] is not the forest root [rZ   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]:
rS  rV   rT  rU  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  rR  rS  zItrusted domain object for domain [%s] is not marked as FOREST_TRANSITIVE.rA   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   rY  
startswithlowerupperr   dom_sid
ValueError	TypeErrorra  r
   r  r  rf   ri   r   rG   r   r   r   r]  r^  r  r  rk   r   r  forest_namer  r   r=   r   r|  WERR_INVALID_FUNCTIONWERR_NERR_ACFNOTLOADEDro  rp   strget_config_basednsearchldb
SCOPE_BASELdbErrorrR   extendr[  popMessagednMessageElementFLAG_MOD_REPLACEmodifyr  r  rI  r   r   r  r   r   r   r   r  r  rc  r  rZ  r  r  r`  ra  rs   timeLSA_TLN_DISABLED_MASKLSA_NB_DISABLED_MASKLSA_SID_DISABLED_MASKr_  rG  rb  endswithForestTrustRecordinsertre  rO  rf  rM  )Gr   rt   ra   rb   rt  r_  r`  rc  rd  re  rf  rk  rl  rh  ri  rm  rn  ro  rp  require_updatenr   rn  rl  
enable_sidr  r  disable_sidr  r+   r  r   r  r  r~  r0  own_forest_infolocal_samdblocal_partitions_dnru  msgs
stored_msgstored_upn_valsstored_spn_valsr6   replace_upnupdate_upn_valsreplace_spnupdate_spn_valsupnidxrk  spn
update_msgstored_forest_infor  r  lsa_update_checknetlogon_update_tdofresh_forest_infofresh_forest_collisionr8  rZ  update_forest_infor   rh  tln_extln_dotr_dotnbupdate_forest_collisionsG                                                                          r   r  z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  tA<<- &'nqr'rsst "&:"# wA<<- &'qtu'uvvw "& o# oAwwyAGGI- &'ilm'mnnoo 7|a  tA<<- &'nqr'rsst "&:"# wA<<- &'qtu'uvvw "& o# oAwwyAGGI- &'ilm'mnnoo 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%&'[\\~&*&'\]]:"!%;!#!% e$ eAwwyAGGI- &'_bc'cddee :"# pA<<- &'jmn'noop "&=!A%& sA<<- &'mpq'qrrs "& g& gAwwyAGGI- &'ade'effgg 9~!!%:"!% c# cAwwyAGGI- &']`a'abbcc J# 'f"**1-C !!#&' K$ (g"**1-C ""3'( :"!%;!#!% e$ eAAv &'_bc'cddee "CC3#=#==..y+F	V557I	]-1->->yJ]-^*\> 			&++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$ D		B BCDIIOOG#oJ^^_$ D		B BCD "K O""?3K O""?3 #( EA1v||~4* ,>@C,D E EE
  &&s+"# " #%o6 DAq1v||~4 C	
 ;&'hkn'noo##C("#  #( EA1v||~4* ,>@C,D E EE
  &&s+"# " #%o6 DAq1v||~4 C	
 ;&'hkn'noo##C("# IIOOBSEYYZ$ D		B BCDIIOOG#oJ^^_$ D		B BCD 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< %,"'// 666S@@@77a<C55556 (// 666S===77a<C4444C55556  	P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	P   	P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	P" ! &	1F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&	1P $ 	1FC!"4"<"<= 166SCCC&&--335G {"#`ci#ijjGNN-556KK'*7|$)0&!	1$  	O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	O   	O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	O"  	P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	P   	P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	P"	`&/&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{ #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&'i'3(5 6 6 ++E63O3OP&'i'3(5 6 6 ++E63P3P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"#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  6Ai1&AjAj3 Ak Ak; Al +Am Ao1 <(Ap Aq !Aq1 <Ar As' At 1At/ 8-Au .AAu7 AAv e--Av? gAAw# i1AjjAj0j3	Akj<AkkAkk	Ak8k Ak3k3Ak8k;	AllAllAll	Am l(Al;l;Am m	Ao.mBAo)o)Ao.o1	Apo:AppAppAq p(Ap;p;Aq qAq.qAq)q)Aq.q1	Arq:ArrArr	As$rAAssAs$s'	Ats0AttAtt	At,tAt't'At,t/	Aut8AuuAuu	Au4uAu/u/Au4u7	Avv AvvAvv	Av<v$Av7v7Av<v?	Aw wAwwAw w#	Axw,Aw?w?Ax)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	w
r   r]  c                       e Zd ZdZi Z e       ed<    e       ed<    e       ed<    e       ed<    e	       ed<    e
       ed<    e       ed<   y	)
cmd_domain_trustz#Domain and forest trust management.listshowcreater  deleter  
namespacesN)r!   r"   r#   rp  subcommandsrr  r  r  r  rF  rO  r]  r$   r   r   r  r  	  se    -K/1K/1K35K35K35K79K
 ; =Kr   r  )*r3   r   r  samba.getoptgetoptr   samba.ntaclsr  r   r   r   r   
samba.authr   samba.dcerpcr	   r
   r   r   r   	samba.netr   samba.netcmdr   r   r   r   samba.samdbr   samba.trust_utilsr   r   r   r&   rr  r  r  r  rF  rO  r]  r  r$   r   r   <module>r     s   2   
   G G % ? ?  D D  6S : : S
C CL,. ,^h. hTv0 vpC0 CLU0 Upp 2 pf@"4 @F
>| 
>r   