+
    4Ssi`                        ^ RI t ^ RIt^ RIt^ RIt^ RIHt ^ RIHt ^ RIH	t	 ^ RI
Ht ^ RIHtHtHtHtHt ^ RIHtHtHt ]P,                  ! R4      t ! R R	]4      t ! R
 R]4      t ! R R]4      t ! R R]4      t ! R R]4      tR# )    N)Ldb)
ndr_unpack)security)SCOPE_SUBTREESCOPE_ONELEVEL
SCOPE_BASEERR_NO_SUCH_OBJECTLdbError)CommandCommandErrorOptionz^([^;]+);range=(\d+)-(\d+|\*)$c                      a  ] tR t^+t o RRRRRRRR]P
                  ]P                  R3R ltR tR t	R	 t
R
 tR tR tR tR tR tR tRtV tR# )LDAPBaseFsection SUBTc                "   . pTpR V9  d9   \         P                  P                  V4      '       d   RV,          pM	RV,          pVP                  4       P	                  R4      '       d   R.pWn        Wn        \        VVVVR7      V n        Wn	        Wn
        W@n        WPn        W`n        Wpn        Wn        Wn        Wn        Wn        \'        V P                  P)                  4       4      V n        \'        V P                  P-                  4       4      V n        \'        V P                  P1                  4       4      V n        \'        V P                  P5                  4       4      V n        V P9                  4       V n        V P=                  4       V n        \@        PB                  ! RRV P*                  4      PE                  RR	4      V n#        V PI                  4       V n%        V PM                  4        V P                  '       Ed   V P                  '       g   V P
                  PO                  R
V P"                  ,          4       V P
                  PO                  RRV P*                  ,          ,           4       V P
                  PO                  RRV P:                  ,          ,           4       V P
                  PO                  RRV P>                  ,          ,           4       V P
                  PO                  RRV PF                  ,          ,           4       R# R# R# )z://ztdb://%sz	ldap://%szldap://zmodules:paged_searches)urlcredentialslpoptionsz	[Dd][Cc]=r   ,.z
* Place-holders for %s:
z${DOMAIN_DN}      => %s
z${DOMAIN_NETBIOS} => %s
z${SERVER_NAME}     => %s
z${DOMAIN_NAME}    => %s
N    )(ospathisfilelower
startswithoutferrfr   ldbsearch_basesearch_scopetwo_domainsquiet
descriptor	sort_acesviewverbosehostskip_missing_dnstrget_default_basednbase_dnget_root_basednroot_dnget_config_basedn	config_dnget_schema_basedn	schema_dnfind_netbiosdomain_netbiosfind_serversserver_namesresubreplacedomain_namefind_domain_sid
domain_sidget_sid_mapwrite)selfr+   credsr   twor&   r'   r(   r*   r)   basescoper    r!   r,   ldb_options	samdb_urls   &&&&&&&&&&&&&&&  6/usr/lib/python3/dist-packages/samba/netcmd/ldapcmp.py__init__LDAPBase.__init__-   sT    	ww~~d##&-	'$.	??''	2234K		9#(*,  !
$"		.48866894883356TXX779:TXX779:"//1 --/66+r4<<@HHcR..0 DJJJIIOO9DIIEFIIOOG&A LL') ) *IIOOG&A //'0 0 1IIOOG&B --'. . /IIOOG&A ,,'- - . %/    c                    V P                   P                  V P                  R \        R7      p\	        \
        P                  V^ ,          R,          ^ ,          4      # )z(objectClass=*))rE   
expressionrF   	objectSid)r"   searchr/   r   r   r   dom_sidrB   ress   & rI   r>   LDAPBase.find_domain_sidb   sA    hhoo4<<<MU_o`(**CF;,?,BCCrL   c                    V P                   P                  RV P                  ,          \        RR.R7      p\	        V4      ^ 8  g   Q hV Uu. uF  p\        VR,          ^ ,          4      NK  	  up# u upi )z	
        zOU=Domain Controllers,%sz(objectClass=computer)cn)rE   rF   rN   attrs)r"   rP   r/   r   lenr-   )rB   rS   xs   &  rI   r8   LDAPBase.find_serversf   sh     hhoo#=#L$1>V_c^d  f3x!||),-AAdGAJ---s   "A1c                b    V P                   P                  R V P                  ,          \        R.R7      p\        X4      ^ 8X  d   \        R4      hV F*  pRV9   g   K  VR,          ^ ,          P                  4       u # 	  R#   \         d!   pTw  r4TR9   d   \        YB4      h Rp?LsRp?ii ; i)zCN=Partitions,%snETBIOSNamerE   rF   rW   NzCould not find netbios name)z,Operation unavailable without authentication)r"   rP   r3   r   r
   r   rX   decode)rB   rS   eenumestrrY   s   &     rI   r6   LDAPBase.find_netbiosn   s    	,((//'9DNN'J(5m_ " NC s8q=<==A!'*1133   	,JDGG"4++ H	,s   4B B.B))B.c                    R p V P                   P                  V\        R7      p\        T4      ^8H  #   \         d&   pTP                  w  rET\
        8X  d    R p?R# h R p?ii ; i)N)rE   rF   F)r"   rP   r   r
   argsr	   rX   )rB   	object_dnrS   e2r`   ra   s   &&    rI   object_existsLDAPBase.object_exists~   s^    	((//y
/CC 3x1}  	77LT))		s   !3 A#AAA#c                     V P                   P                  V4       R#   \        P                   d   pR \	        T4      9   g   Q h Rp?R# Rp?ii ; i)zNo such objectN)r"   deleter   r
   r-   )rB   re   r_   s   && rI   delete_forceLDAPBase.delete_force   s=    	.HHOOI&|| 	.#s1v---	.s    AAAc                Z    \         P                  V4      pVf   V# VP                  ^4      # )zTReturns the real attribute name
It resolved ranged results e.g. member;range=0-1499
)RE_RANGED_RESULTmatchgroup)rB   keyms   && rI   get_attribute_nameLDAPBase.get_attribute_name   s,    
 ""3'9JwwqzrL   c                   \         P                  V4      pVf   V# VP                  ^4      p\        VP                  ^4      4      p RWV^,           3,          pV P                  P                  V\        V.R7      p\        V4      ^8X  g   Q h\        V^ ,          4      pVR Rp	Rp
V FI  p\         P                  V4      pVf   K  VP                  ^4      V8w  d   K6  Tp	\        W,          4      p
 M	  V	f    V# VP                  V
4       V	P                  ^4      R8X  d    V# \        V	P                  ^4      4      V^,           8X  g   Q h\        V	P                  ^4      4      pEK%  )z[Returns list with all attribute values
It resolved ranged results e.g. member;range=0-1499
Nz%s;range=%d-*r]   dn*)rn   ro   rp   intr"   rP   r   rX   dictlistextend)rB   re   rq   valsrr   attrhinrS   fmfvalss   &&&&       rI   get_attribute_valuesLDAPBase.get_attribute_values   sM   
 ""3'9Kwwqz_ 4a.0A((//y
1#/NCs8q= =s1v,CD	BE$**3/9771:%SX  z  KKxx{c!
  rxx{#rAv---RXXa[!BrL   c                0   V P                   P                  V\        R.R7      p\        V4      ^8X  g   Q h\	        V^ ,          4      pVR / pVP                  4        F5  w  rEV P                  V4      p\        V4      pV P                  WV4      W6&   K7  	  V# )z9Returns dict with all default visible attributes
        rw   r]   rv   )	r"   rP   r   rX   ry   itemsrs   sortedr   )rB   re   rS   
attributesrq   r|   names   &&     rI   get_attributesLDAPBase.get_attributes   s     hhoo9JseoL3x1}}3q6lI
IC**3/D$<D#88NJ	 % rL   c                    V P                   P                  V\        R .R7      pV^ ,          R ,          ^ ,          p\        \        P
                  V4      pVP                  V P                  4      # )nTSecurityDescriptorr]   )r"   rP   r   r   r   r'   as_sddlr?   )rB   re   rS   descs   &&  rI   get_descriptor_sddlLDAPBase.get_descriptor_sddl   sW    hhoo9JG]F^o_1v,-a0(--t4||DOO,,rL   c           	     P   / V n         V P                  P                  V P                  R\        RR.R7      pV FW  p \        VR,          ^ ,          4      V P                   R\        \        P                  VR,          ^ ,          4      ,          &   KY  	  R#   \         d     Kk  i ; i)z`Build dictionary that maps GUID to 'name' attribute found in Schema or Extended-Rights.
        z(objectSid=*)rO   sAMAccountName)rE   rN   rF   rW   %sN)
sid_mapr"   rP   r/   r   r-   r   r   rQ   KeyError)rB   rS   items   &  rI   r@   LDAPBase.get_sid_map   s     hhoo4<<)8VacsUt  vDZ]^bcs^tuv^wZxTJx/?/?kARSTAU$VVW   s   ABB%$B%)r/   r3   r'   r=   r7   r?   r!   r+   r"   r    r&   r1   r5   r#   r$   r9   r   r,   r(   r%   r*   r)   N)__name__
__module____qualname____firstlineno__sysstdoutstderrrJ   r>   r8   r6   rg   rk   rs   r   r   r   r@   __static_attributes____classdictcell____classdict__s   @rI   r   r   +   sh      %EUTYbjjszz43.jD.4 	.	2h$-
 
rL   r   c                   n   a  ] tR t^t o ]P
                  ]P                  3R ltR tR t	R t
R tRtV tR# )
Descriptorc                $   W0n         W@n        Wn        W n        V P                  P	                  V P                  4      V n        V P                  4       V n        V P                  P                  '       d   V P                  P                  4        R # R # N)
r    r!   conrv   r   sddlextract_dacl	dacl_listr(   sort)rB   
connectionrv   r    r!   s   &&&&&rI   rJ   Descriptor.__init__   se    		HH009	**,88NN! rL   c                >    RV P                   9   d2   \        P                  ! RV P                   4      P                  ^4      pM1\        P                  ! RV P                   4      P                  ^4      p \        P
                  ! RV4      #   \         d    . u # i ; i)zGExtracts the DACL as a list of ACE string (with the brackets).
        zS:zD:(.*?)(\(.*?\))S:zD:(.*?)(\(.*\))z	(\(.*?\)))r   r:   rP   rp   AttributeErrorfindallrR   s   & rI   r   Descriptor.extract_dacl   s|    	tyy ii 5tyyAGGJii 2DII>DDQG zz,,,  	I	s   AB 0B BBc                    R V,          p\         P                  ! RV4      p\        V4      ^ 8X  d   V# V F2  p V P                  P                  V,          pVP                  WE4      pK4  	  V#   \         d     KF  i ; i)r   z	S-[-0-9]+)r:   r   rX   r   r   r<   r   )rB   acerS   sidssidr   s   &&    rI   fix_sidDescriptor.fix_sid
  sw    Sjzz+s+t9>JCxx'',kk#,  
  s   .A--A<;A<c                   R p\        V P                  4      \        VP                  4      8w  d^   VR
,          pVRR\        V P                  4      ,          ,           ,          pVRR\        VP                  4      ,          ,           ,          p^ pRp RpRp RV P                  V,          ,          p RVP                  V,          ,          p\        V4      \        V4      ,           ^ 8X  d    WB3# RV P                  V4      ,          pRVP                  V4      ,          pWx8w  d   W':R RV: R2,          pRpMW':R R	V: R2,          pV^,          pK    \         d    R p Li ; i  \         d    R p Li ; i)r   => %s
TNr   z>60z * 
Fz |     Difference in ACE count:
        )rX   r   
IndexErrorr   )	rB   otherrS   iflagself_ace	other_aceself_ace_fixedother_ace_fixeds	   &&       rI   diff_1Descriptor.diff_1  sV   t~~#eoo"6699C7YT^^)<<<<C7YU__)====CHI$.."33 5??1#55	 8}s9~-2 { "DLL$::N"U]]9%==O0HHHHFA!  
  	s$   E 2E) E&%E&)E98E9c                   R p\        V P                  4      \        VP                  4      8w  d^   VR,          pVRR\        V P                  4      ,          ,           ,          pVRR\        VP                  4      ,          ,           ,          p. p. p. pV P                   Uu. uF  q`P                  V4      NK  	  ppVP                   Uu. uF  qaP                  V4      NK  	  ppV F&  p VP                  V4       VP	                  V4       K(  	  \        V4      p\        V4      ^ 8  dL   VRRV P                  P                  ,          ,           ,          pV F  pVRV,           R,           ,          pK  	  V F&  p VP                  V4       VP	                  V4       K(  	  \        V4      p\        V4      ^ 8  dL   VRRVP                  P                  ,          ,           ,          pV F  pVRV,           R,           ,          pK  	  \        \        \        V4      4      4      pV P                  P                  '       d*   VR,          pV F  pVRV,           R,           ,          pK  	  V. 8H  ;'       d    V. 8H  V3# u upi u upi   \
         d    TP	                  T4        EK  i ; i  \
         d    TP	                  T4        EKT  i ; i)r   r   zACEs found only in %s:
r   r   r   r   z    ACEs found in both:
)rX   r   r   indexappend
ValueErrorr   r   r+   rz   setr*   )	rB   r   rS   common_aces	self_aces
other_acesr   self_dacl_list_fixedother_dacl_list_fixeds	   &&       rI   diff_2Descriptor.diff_2:  sl   t~~#eoo"6699C7YT^^)<<<<C7YU__)====C	
=A^^L^cS 1^L?D Os!3 O'C(%++C0 ""3' ( 9%	y>A77$((--GGGC w}t++ ! )C($**3/ ""3' ) J'
z?Q77%))..HHHC!w}t++ " T#k"2348844C"w}t++ #R44J"$4c::C  M O  &  %%&  '!!#&&'s0   !I?
J+J	=J-	J*)J*-KK)r   r   rv   r!   r    r   N)r   r   r   r   r   r   r   rJ   r   r   r   r   r   r   r   s   @rI   r   r      s1     ,/JJSZZ "
-B+; +;rL   r   c                      a  ] tR tRt o ]P
                  ]P                  3R ltR tR t	R t
R tR tR tR	 tR
 tRtV tR# )
LDAPObjectih  c                <   WPn         W`n        Wn        V P                  P                  V n        V P                  P                  V n        V P                  P
                  V n        W0n        VP                  R V P                  P                  4      V n	        V P                  P                  RRV P                  P                  ,          4      V n	        V P                  P                   F+  pV P                  P                  RRV,          4      V n	        K-  	  V P                  P                  V P                  4      V n        . RNRNRNRNRNR	NR
NRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNR NR!NR"NR#NV n        V P                  V n        V ;P                  R$.,          un        V'       d   V ;P                  V,          un        . V n        . V n        . V n        . V n        . V n        V P                  '       Ed   V ;P                  . R%NR&NR'NR(NR#NR)NR!NR*NR
NR+NR,NR-NR.NR/NR0NR1NR2NR3NR4NRNR5NR6NR7NR8NR9NRNR:NR;NR<NR=NR>NR?NR@NRANRBNRCN,          un        . RDNRENRFNRGNRHNRINRJNRKNRLNRMNRNNRONRPNRQNRRNRSNRTNRUNRVNRWNRXNRYNRZNR[NR\NR]NR^NR_NR`NRaNRbNRcNRdNReNRfNRgNRhNRiNV n        V P                    Uu. uF  qwP+                  4       NK  	  upV n        . RmOV n        V P"                   Uu. uF  qwP+                  4       NK  	  upV n        . RnOV n        V P$                   Uu. uF  qwP+                  4       NK  	  upV n        . RoOV n        V P&                   Uu. uF  qwP+                  4       NK  	  upV n        RjRk.V n        V P(                   Uu. uF  qwP+                  4       NK  	  upV n        \-        V P                   Uu. uF  qwP+                  4       NK  	  up4      V n        Rl# u upi u upi u upi u upi u upi u upi )p${DOMAIN_DN}CN=${DOMAIN_NETBIOS}CN=%sCN=${SERVER_NAME}badPasswordTimebadPwdCountdSCorePropagationData
lastLogoff	lastLogon
logonCountmodifiedCountzmsDS-Cached-Membershipz!msDS-Cached-Membership-Time-StampzmsDS-EnabledFeatureBLzmsDS-ExecuteScriptPasswordzmsDS-NcTypezmsDS-ReplicationEpochzmsDS-RetiredReplNCSignatureszmsDS-USNLastSyncSuccesspartialAttributeDeletionListpartialAttributeSetpekList	prefixMapreplPropertyMetaDatareplUpToDateVectorrepsFromrepsTo
rIDNextRIDrIDPreviousAllocationPoolschemaUpdateserverStatesubRefs
uSNChanged
uSNCreateduSNLastObjRemwhenChangedmsExchServer1HighestUSNobjectCategory
objectGUIDrO   whenCreated
pwdLastSetcreationTimepriorSetTimerIDManagerReferencegPLinkipsecNFAReferencefRSPrimaryMemberfSMORoleOwner
masteredByipsecOwnersReferencewellKnownObjectsotherWellKnownObjectsipsecISAKMPReferenceipsecFilterReferencezmsDs-masteredBylastSetTimeipsecNegotiationPolicyReferencegPCFileSysPathaccountExpiresinvocationIdoperatingSystemoperatingSystemVersionoEMInformation
schemaInfotargetAddressmsExchMailboxGuidsiteFolderGUIDdistinguishedNamedefaultObjectCategorymembermemberOfsiteListnCNamehomeMDBhomeMTAinterSiteTopologyGeneratorserverReferencezmsDS-HasInstantiatedNCshasMasterNCszmsDS-hasMasterNCszmsDS-HasDomainNCsdMDLocationmsDS-IsDomainForrIDSetReferencesserverReferenceBLmsExchHomeRoutingGroupmsExchResponsibleMTAServersiteFolderServermsExchRoutingMasterDNmsExchRoutingGroupMembersBL	homeMDBBLmsExchHomePublicMDBmsExchOwningServertemplateRootsaddressBookRootsmsExchPolicyRootsglobalAddressListmsExchOwningPFTreemsExchResponsibleMTAServerBLmsExchOwningPFTreeBLz$msDS-MembersOfResourcePropertyListBLzmsDS-ValueTypeReferencez"msDS-MembersOfResourcePropertyListzmsDS-ValueTypeReferenceBLzmsDS-ClaimTypeAppliesToClassr   DCN)proxyAddressesmailuserPrincipalName"msExchSmtpFullyQualifiedDomainNamednsHostNamenetworkAddressdnsRootservicePrincipalName)r  r   CNr   dNSHostNamer6  r  r  r  r  r  )r6  r7  r  r\   r   )r    r!   r   r%   r&   r*   summaryr<   r/   rv   r7   r9   r   r   non_replicated_attributesignore_attributesdn_attributesdomain_attributesservername_attributesnetbios_attributesother_attributesupperr   )rB   r   rv   r9  filter_listr    r!   rY   s   &&&&&&& rI   rJ   LDAPObject.__init__i  s   		88//XX^^
xx''**^TXX-=-=>''//"8'DHHD[D[:[\&&Aggoo&97Q;GDG '((11$'':#*
!#*
#*
 (#*
 	#*

 #*
 #*
  #*
 )#*
 4#*
 (#*
 -#*
 #*
 (#*
 /#*
 *#*
$ /%#*
& &'#*
( )#*
* +#*
, '-#*
. %/#*
0 1#*
2 3#*
4 5#*
6 ,7#*
8 9#*
: ;#*
< =#*
> ?#*
@ A#*
B  C#*
D E#*
&H "&!?!?#<"==""k1"!#%'""$ " "" 'H 'H".'H0;'H=J'H'H+'H-9'H;I'H  'H "0'H 2G'H 	'H .	'H 0B	'H
  'H
 ".'H
 0F'H #'H %<'H >K'H ''H )?'H "'H $1'H 2'H 4='H ?O'H !'H #1'H "'H $<'H !'H #/'H  'H "5'H 7G'H H"""#"%<">F"HR"T^"`h""$"&B"DU" *" ,:" <O" Qd" fs" #	" %7	" 9L	" )" +G" I[" ]t" ." 0;" =R" Th" jy" #" %8" :M" Oc" /" 1G" 7" *" 5" ," /"D" 6:5G5G!H5G'')5G!HD&VD" :>9O9O%P9OAggi9O%PD"*^D& >B=W=W)X=W'')=W)XD&&rD#:>:Q:Q&R:QQwwy:Q&RD#%+T$4D!8<8M8M$N8M1WWY8M$ND!!$9O9O%P9OAggi9O%P!Q) "I &Q *Y 'S %O%Ps$   P P9P
0P'PPc                r    V P                   '       g%   V P                  P                  VR,           4       R# R# z5
Log on the screen if there is no --quiet option set
r   Nr&   r    rA   rB   msgs   &&rI   logLDAPObject.log  s&     zzzIIOOCI& rL   c                @   R V,          pV P                   '       g   V# VP                  4       P                  V P                  P                  P                  4       4      '       d:   VR\        V4      \        V P                  P                  4      ,
           R,           pV# )r   Nr   )r%   rA  endswithr   r/   rX   rB   srS   s   && rI   fix_dnLDAPObject.fix_dn  su    QhJ99; 0 0 6 6 8997s3x#dhh&6&6"778>IC
rL   c                T   R V,          pV P                   '       g   V# VP                  V P                  P                  P	                  4       V P                  P                  P                  4       4      pVP                  V P                  P                  P                  4       R4      pV# )r   z${DOMAIN_NAME})r%   r<   r   r=   r   rA  rM  s   && rI   fix_domain_nameLDAPObject.fix_domain_name  s{    QhJkk$((..4468L8L8R8R8TUkk$((..4468HI
rL   c                T   R V,          pV P                   '       g   V# VP                  V P                  P                  P	                  4       V P                  P                  P                  4       4      pVP                  V P                  P                  P                  4       R4      pV# )r   z${DOMAIN_NETBIOS})r%   r<   r   r7   r   rA  rM  s   && rI   fix_domain_netbiosLDAPObject.fix_domain_netbios  s{    QhJkk$((11779488;R;R;X;X;Z[kk$((11779;NO
rL   c                   R V,          pV P                   '       d%   \        V P                  P                  4      ^8  d   V# V P                  P                   F#  pVP	                  4       P                  VR4      pK%  	  V# )r   z${SERVER_NAME})r%   rX   r   r9   rA  r<   )rB   rN  rS   rY   s   &&  rI   fix_server_nameLDAPObject.fix_server_name	  sd    Qh3txx'<'<#=#AJ&&A))+%%a)9:C '
rL   c                ~    V P                   P                  '       d   V P                  V4      # V P                  V4      # r   )r   r'   cmp_desc	cmp_attrs)rB   r   s   &&rI   __eq__LDAPObject.__eq__  s0    88==''~~e$$rL   c                    \        V P                  V P                  V P                  V P                  R 7      p\        VP                  VP                  V P                  V P                  R 7      pV P                  P
                  R8X  d   VP                  V4      pMOV P                  P
                  R8X  d   VP                  V4      pM"\        RV P                  P
                   24      hV^,          V n	        V^,          Vn	        V^ ,          # ))r    r!   r   	collisionzUnknown --view option value: )
r   r   rv   r    r!   r)   r   r   r   screen_output)rB   r   d1d2rS   s   &&   rI   r[  LDAPObject.cmp_desc  s    $''				J		588$))$))L88==I%))B-CXX]]k)))B-C<TXX]]OLMM V!!f1vrL   c                x   R p. V n         \        V P                   Uu. uF  q3P                  4       NK  	  up4      p\        VP                   Uu. uF  q3P                  4       NK  	  up4      pWE,
          VP                  ,
          pV'       dL   VRRV P
                  P                  ,          ,           ,          pV F  pVR	V,           R,           ,          pK  	  WT,
          V P                  ,
          pV'       dL   VRRVP
                  P                  ,          ,           ,          pV F  pVR	V,           R,           ,          pK  	  Wh,          p	R
p
V P                   EF  pVP                  4       V P                  9   g   VP                  4       V	9   d   K:  V P                  V,          pVP                  P                  V4      p\        V\        4      '       d-   \        V\        4      '       d   \        V4      p\        V4      pW8w  g   K  RpRpRpRpVP                  4       V P                  9   d   V Uu. uF2  pV P
                  P                  P                  R4      ^ ,          V8H  NK4  	  ppV Uu. uF2  pVP
                  P                  P                  R4      ^ ,          V8H  NK4  	  ppW8X  d   EK^  MlVP                  4       V P                  9   dN   TpTpV Uu. uF  pV P                  V4      NK  	  ppV Uu. uF  pVP                  V4      NK  	  ppW8X  d   EK  VP                  4       V P                   9   db   TpTpV'       g   V'       g   TpTpV Uu. uF  pV P#                  V4      NK  	  ppV Uu. uF  pVP#                  V4      NK  	  ppW8X  d   EKK  VP                  4       V P$                  9   db   TpTpV'       g   V'       g   TpTpV Uu. uF  pV P'                  V4      NK  	  ppV Uu. uF  pVP'                  V4      NK  	  ppW8X  d   EK  VP                  4       V P(                  9   db   TpTpV'       g   V'       g   TpTpV Uu. uF  pV P+                  V4      NK  	  ppV Uu. uF  pVP+                  V4      NK  	  ppW8X  d   EKK  V
'       d   W*R,           ,          pRp
V'       d0   V'       d(   VR	V,           RV: RV: 2,           R,           ,          pM&VR	V,           RV: RV: 2,           R,           ,          pV P                   P-                  V4       EK  	  V	'       d	   Wh8w  g   Q hV P.                  R;;,          \        V4      ,          uu&   V P.                  R;;,          V P                   ,          uu&   VP.                  R;;,          \        V4      ,          uu&   VP.                  R;;,          V P                   ,          uu&   W n        W!n        VR 8H  # u upi u upi u upi u upi u upi u upi u upi u upi u upi u upi u upi u upi )r   zAttributes found only in %s:r   Nr   z => 
unique_attrsdf_value_attrsr   r   z#    Difference in attribute values:)rg  r   r   rA  r;  r   r+   get
isinstancerz   r   r@  r=   splitr<  rO  r=  rR  r>  rX  r?  rU  r   r9  ra  )rB   r   rS   r}   
self_attrsother_attrsself_unique_attrsrY   other_unique_attrsmissing_attrstitleourstheirspqrr   r   js   &&                rI   r\  LDAPObject.cmp_attrs%  s    4??C?4**,?CD
E4D4DE4DD::<4DEF&4u7N7NN7;dhhmmKKKC&w{T)) ' )58N8NN7;eiinnLLLC'w{T)) ( *>;AwwyD222aggi=6P??1%D%%))!,F$%%*VT*B*Bd|~ 779 5 55JNO$Q--33C8;q@$AOKQR6a..44S9!<A6ARv   WWY$"4"44AA123AQA3234!Qa!A4v 779 6 66AAQ ":;<!Q--a0!A<;<=1a..q11A=v 779 : ::AAQ ":;<!Q--a0!A<;<=1a..q11A=v 779 7 77AAQ "=>?Q003QA?>?@a11!4aA@v 4<'C E7Q;1a)@@4GGC7Q;4)HH4OOC##**1-S !V $:::^$->(??$%&$*=*==&n%.@)AA%&'4+>+>>' !byM DED PR 44 == == @@sG   X X98X
78X"XX"XX#"X(X-"X2X7)r   r   rg  rv   r<  r=  r!   r;  r?  r:  r@  r    r&   ra  r>  r9  r%   r*   N)r   r   r   r   r   r   r   rJ   rI  rO  rR  rU  rX  r]  r[  r\  r   r   r   s   @rI   r   r   h  sI     jjszzRB'%
j jrL   r   c                   x   a  ] tR tRt o RR]P
                  ]P                  3R ltR tR t	R t
R tR tR	tV tR# )

LDAPBundlei  Nc                   WPn         W`n        Wn        V P                  P                  V n        V P                  P                  V n        V P                  P
                  V n        V P                  P                  V n        V P                  P                  V n        V P                  P                  V n        / V n	        . V P                  R &   . V P                  R&   . V P                  R&   . V P                  R&   W@n
        V'       d   W0n        MLVP                  4       R
9   d-   VP                  4       V n        V P                  V4      V n        M\        R4      h^ pV\!        V P                  4      8  Ed    V P                  '       d   V P                  V,          pVR\!        V4      \!        V P                  P"                  4      ,
           R,           pVP%                  RV P                  P&                  ,          R4      p\!        V P                  P(                  4      ^8X  d7   V P                  P(                   F  p	VP%                  RV	,          R	4      pK  	  WP                  V&   V^,          pEK  \+        \-        V P                  4      4      V n        \/        V P                  4      V n        \!        V P                  4      V n        R# )rf  rg  known_ignored_dnabnormal_ignored_dnz-Unknown initialization data for LDAPBundle().Nr   r   r   r   DOMAINCONFIGURATIONSCHEMA	DNSDOMAIN	DNSFOREST)r    r!   r   r%   r&   r*   r#   r$   r,   r9  rB  dn_listrA  contextget_dn_list	ExceptionrX   r/   r<   r7   r9   rz   r   r   size)
rB   r   r  r  rB  r    r!   countertmprY   s
   &&&&&&&   rI   rJ   LDAPBundle.__init__  s   		88//XX^^
xx''88// HH11#xx77')^$)+%&+-'(.0*+&"L]]_ __"==?DL++G4DLKLLDLL))d.>.>.>,,w'C7s3x#dhh&6&6"778>IC++g(?(??AWXC488(()Q...A++gk3FGC /$'LL!qLGC-.dll+%	rL   c                r    V P                   '       g%   V P                  P                  VR,           4       R# R# rE  rF  rG  s   &&rI   rI  LDAPBundle.log  s&     zzzIIOOC$J' rL   c                n    \        V P                  4      V n        \        V P                  4      V n        R # r   )rX   r  r  r   )rB   s   &rI   update_sizeLDAPBundle.update_size  s"    %	dll+rL   c           
        R pV P                   VP                   8w  dB   V P                  RV P                   : RVP                   : 24       V P                  '       g   Rp\        V P                   Uu. uF  q3P                  4       NK  	  up4      p\        VP                   Uu. uF  q3P                  4       NK  	  up4      pV P                  \        8w  d   V P                  '       g   WE,
          pV'       dY   RpV P                  RV P                  P                  ,          4       \        V4       F  pV P                  RV,           4       K  	  WT,
          pV'       dY   RpV P                  RVP                  P                  ,          4       \        V4       F  pV P                  RV,           4       K  	  WE,          p	V P                  R\        V	4      ,          4       V	 EF  p
 \        V P                  V
V P                  V P                  V P                  V P                   R7      p \        TP                  T
TP                  T P                  T P                  T P                   R7      pY8X  d   T P                  P$                  '       d   T P                  R
4       T P                  RTP&                  : RTP                  P                  : R24       T P                  RTP&                  : RTP                  P                  : R24       T P                  R4       MT P                  R
4       T P                  RTP&                  : RTP                  P                  : R24       T P                  RTP&                  : RTP                  P                  : R24       T P                  TP(                  4       T P                  R4       RpTP                  T n        TP                  Tn        EK  	  V# u upi u upi   \"         d&   pT P                  RT
: RT: 24        R	p?EKN  R	p?ii ; i  \"         d&   pT P                  RT
: RT: 24        R	p?EK  R	p?ii ; i)Tz!
* DN lists have different size: z != Fz
* DNs found only in %s:z
* Objects to be compared: %d)r   rv   r9  rB  r    r!   zLdbError for dn z: Nz
Comparing:'z' []r   z    OKz
    FAILED)r  rI  r,   r   r  rA  r$   r   r   r+   r   rX   r   r9  rB  r    r!   r
   r*   rv   ra  )rB   r   rS   rt  self_dns	other_dns	self_onlyrY   
other_only
common_dnsrv   object1r_   object2s   &&            rI   diffLDAPBundle.diff  s   99

"HHTYYPUPZPZ[\'''4<<8<a	<89EMM:MqM:;	 
*43G3G3G ,I4txx}}DE	*AHHWq[) + #-J4uyy~~EF
+AHHWq[) , )
1C
OCDB$(*-1\\151A1A*.))$))	E$		(*-2]]151A1A*.))$))	E !88###HH^,HHGJJ8H8HIJHHGJJ8H8HIJHH^,(

GKK4D4DEF

GKK4D4DEF../+,"??DL#OOEMI L 
A 9:B  R;<  R;<s>   2O>$P*AP.AP;P8P33P8;Q+Q&&Q+c                   VP                  4       R8X  d   V P                  P                  pMVP                  4       R8X  d   V P                  P                  pMVP                  4       R8X  d   V P                  P                  pMeVP                  4       R8X  d   RV P                  P                  ,          pM2VP                  4       R8X  d   RV P                  P
                  ,          p. pV P                  '       g   XV n        V P                  P                  4       V n        V P                  R8X  d   \        V n        MEV P                  R	8X  d   \        V n        M(V P                  R
8X  d   \        V n        M\        R4      h V P                  P                  P                  V P                  V P                  R.R7      pT F)  pTP%                  TR,          P'                  4       4       K+  	  T#   \         dA   pTP                  w  rgT P                   P#                  RT P                  ,          4       h Rp?ii ; i)zQuery LDAP server about the DNs of certain naming self.con.ext Domain (or Default), Configuration, Schema.
Parse all DNs and filter those that are 'strange' or abnormal.
r}  r~  r  r  zDC=DomainDnsZones,%sr  zDC=ForestDnsZones,%sr   BASEONEz0Wrong 'scope' given. Choose from: SUB, ONE, BASErv   r]   zFailed search of base=%s
N)rA  r   r/   r3   r5   r1   r#   r$   r   r   r   r   r"   rP   r
   rd   r    rA   r   get_linearized)	rB   r  r#   r  rS   e3r`   ra   rY   s	   &&       rI   r  LDAPBundle.get_dn_list  s    ==?h&((**K]]_/((,,K]]_(((,,K]]_+04883C3CCK]]_+04883C3CCK*D --335% -D&( *D%' .DOPP	((,,%%4+;+;4CTCT]a\b%cC
 ANN1T71134   	77LTIIOO84;K;KKL	s   =G5 5I  ;H;;I c                &   \        \        V P                  R ,          4      4      V P                  R &   \        \        V P                  R,          4      4      V P                  R&   V P                  R ,          '       d~   V P                  RV P                  P
                  ,          4       T P                  RP                  V P                  R ,           Uu. uF  p\        RV,           4      NK  	  up4      4       V P                  R,          '       dt   V P                  R4       T P                  RP                  V P                  R,           Uu. uF  p\        RV,           4      NK  	  up4      4       . V P                  R&   R# R# u upi u upi )rf  rg  z
Attributes found only in %s:r   z"
Attributes with different values:Nz
    )rz   r   r9  rI  r   r+   joinr-   )rB   rY   s   & rI   print_summaryLDAPBundle.print_summary4  s   '+C^0L,M'N^$)-c$,,?O2P.Q)R%&<<''HH5EFHHRWWt||N?[\?[!c.1"45?[\]^<<())HH:;HHRWWt||L\?]^?]!c.1"45?]^_`-/DLL)* * ] _s   F	F)r   r  r  r!   rB  r    r&   r#   r$   r  r,   r9  r%   r*   )r   r   r   r   r   r   r   rJ   rI  r  r  r  r  r   r   r   s   @rI   rx  rx    s>     48djjszz%&N(,GR#J0 0rL   rx  c                     a  ] tR tRt o RtRtR]P                  R]P                  R]P                  /t
. R7Ot]! RRR	R
RRR7      ]! RRRR
RRR7      ]! RRRR
RRR7      ]! RRR
RRR7      ]! RRR
RRR7      ]! RRRRR.R R!7      ]! R"R#R$R%R&7      ]! R'R(R$R)R&7      ]! R*R+R,. R8OR-R!7      ]! R.R/R$R0R&7      ]! R1R2R
RR3R7      .tR9R5 ltR6tV tR4# ):cmd_ldapcmpiB  zCompare two ldap databases.zO%prog <URL1> <URL2> (domain|configuration|schema|dnsdomain|dnsforest) [options]	sambaoptsversionoptscredoptsz-wz--tworD   
store_trueFz"Hosts are in two different domains)destactiondefaulthelpz-qz--quietr&   z1Do not print anything but relay on just exit codez-vz	--verboser*   z*Print all DN pairs that have been comparedz--sdr'   z,Compare nTSecurityDescriptor attributes onlyz--sort-acesr(   z=Sort ACEs before comparison of nTSecurityDescriptor attributez--viewr)   r   r`  zUDisplay mode for nTSecurityDescriptor results. Possible values: section or collision.)r  r  choicesr  z--baserE   r   z:Pass search base that will build DN list for the first DC.)r  r  r  z--base2base2znPass search base that will build DN list for the second DC. Used when --two or when compare two different DNs.z--scoperF   r   z>Pass search scope that builds DN list. Options: SUB, ONE, BASEz--filterfilterz>List of comma separated attributes to ignore in the comparisonz--skip-missing-dnr,   zCSkip report and failure due to missing DNs in one server or anotherNc                   VP                  4       pVP                  R 4      ;'       g    VP                  R 4      pV'       d   VP                  VRR7      pMRpVP                  VRR7      pVP	                  4       '       d   TpM"VP                  R4       VP                  R4       V'       d"   VP                  4       '       g   \        R4      h. pVf   V'       d   V'       d   R.pM]. ROpMXW4WVV3 FO  pVf   K	  VP                  4       R9   g   \        R	V,          4      hVP                  VP                  4       4       KQ  	  V
'       d   V	'       d   \        R
4      hV'       g	   V'       g   V'       d   V'       g   \        R4      h\        VVVWWWVVV P                  V P                  VR7      p\        VP                  4      ^ 8  g   Q h\        VVVWWWVVV P                  V P                  VR7      p\        VP                  4      ^ 8  g   Q hVP!                  R4      p^ pV EF  p V	'       g#   V P                  P#                  RV ,          4       \%        VV VV P                  V P                  R7      p!\%        VV VV P                  V P                  R7      p"V!P'                  V"4      '       d/   V	'       g%   V P                  P#                  RV ,          4       K  K  V	'       g   V P                  P#                  RV ,          4       V'       g   \        V!P(                  R,          4      \        V"P(                  R,          4      8X  g   Q h. V"P(                  R&   V P                  P#                  R4       V P                  P#                  R4       V!P+                  4        V"P+                  4        RpEK  	  V^ 8w  d   \        RV,          4      hR# )ldapT)fallback_machineNF)guessr   z3You must supply at least one username/password pairr}  zIncorrect argument: %sz-You cannot set --verbose and --quiet togetherz<You need to specify both --base and --base2 at the same time)rD   r&   r'   r(   r*   r)   rE   rF   r    r!   r,   r   z
* Comparing [%s] context...
)r  rB  r    r!   z
* Result for [%s]: SUCCESS
z
* Result for [%s]: FAILURE
rg  z	
SUMMARY
z
---------
zCompare failed: %dr|  )get_loadparmr   get_credentialsget_credentials2is_anonymous
set_domainset_workstationauthentication_requestedr   rA  r   r   r    r!   rX   r/   rj  rA   rx  r  r9  r  )#rB   URL1URL2context1context2context3context4context5rD   r&   r*   r'   r(   r)   rE   r  rF   r  r  r  r  r,   r   
using_ldaprC   creds2contextsccon1con2rB  statusr  b1b2s#   &&&&&&&&&&&&&&&&&&&&&&             rI   runcmd_ldapcmp.rung  s(    ##%__V,GG0G
,,R$,GEE**2U*;  Fb!""2&e<<>>TUU  %: [(hG9wwy$cc&'?!'CDD	* H uNOOD]^^eR 'U!YYTYYY 4<< 1$$$fb 'e!YYTYYY 4<< 1$$$ll3'G		 AG KLD'{!%<BD'{!%<B wwr{{IIOO$D$+%, -  IIOO$Dw$NO%"2::.>#?@C

ScHdDeeee79

#34		6		6((*((*1  2 Q;3f<== rL    )r  r  z	context1?z	context2?z	context3?z	context4?z	context5?)r   r  r  )NNNNNFFFFFr   r   r   r   r   NNNF)r   r   r   r   __doc__synopsisr   SambaOptionsVersionOptionsCredentialsOptionsDoubletakes_optiongroups
takes_argsr   takes_optionsr  r   r   r   s   @rI   r  r  B  s<    %`H 	W))w--G44 cJ 	tW5u8	:tYW\5G	It[yu@	BvLuB	D};|US	Uxfi)[AYk	mxfbP	Ryw E	Fyw?UT	Vz"T	V"):<Y^Y	[+M2W> W>rL   r  )r   r:   r   sambasamba.getoptgetoptr   r   	samba.ndrr   samba.dcerpcr   r"   r   r   r   r	   r
   samba.netcmdr   r   r   compilern   objectr   r   r   rx  r  r  rL   rI   <module>r     s   0 
 	 
      ! W W  ::?@ Ev EPr; r;jg gT	m0 m0`|>' |>rL   