+
    4Ssi<                         ^ RI t ^ RIt^ RIHtHt ^ RIHtHt ^ RIH	t	 ^ RI
Ht ^ RIHt R tR tR	 tR
 tR tR tR tR tRR ltR# )    N)
SCOPE_BASELdbError)nttime2unixdsdb)CommandError)SamDB)KCCc                    \        \        P                  ! 4       4      p\        VRR7      pVP                  WV4       VP	                  4       p\        V4      p\        V4      \        V4      8w  d   \        R\        P                  R7       WF3# )z>Get a readonly KCC object and the list of DSAs it knows about.T)readonlyzThere seem to be duplicate dsasfile)
inttimer	   
load_samdb	list_dsassetlenprintsysstderr)urllpcredsunix_nowkccdsa_listdsass   &&&    4/usr/lib/python3/dist-packages/samba/uptodateness.pyget_kcc_and_dsasr      sg    499;H
h
&CNN3E"}}Hx=D
4yCM!/cjjA9    c                    V P                  4       pRVR\        V P                  4       4      RRV P                  4       ,          RRV,          RRV,          /p/ pVP                  4        F	  w  rEWCV&   K  	  W#3# )	zKGenerate dictionaries mapping short partition names to the
appropriate DNs.DOMAINCONFIGURATIONSCHEMAzCN=Schema,%s	DNSDOMAINzDC=DomainDnsZones,%s	DNSFORESTzDC=ForestDnsZones,%s)	domain_dnstrget_config_basednitems)samdbbase_dnshort_to_longlong_to_shortsls   &     r   get_partition_mapsr1   -   s     ooG'U4467.5#:#:#<<+g5+g5M M##%a & ''r    c                     VeF   \        V 4      w  r#VP                  VP                  4       V4      pW9  d   \        RV,          4      hV# )Nzunknown partition %s)r1   getupperr   )r+   partshort_partitionslong_partitionss   &&  r   get_partitionr8   @   sL     ,>u,E)##DJJL$7&5<==Kr    c           	        . pV P                  4       p\        P                  ! W4       F  p\        VP                  4      pV P                  VRV,          RR.R7      p \        V^ ,          R,          ^ ,          4      pVP                  R^4      w  rTR8w  d   \        RT,          4      hTP                  T	T\        TP                  4      \        TP                  4      34       K  	  V#   \         d   p
 Rp
?
K  Rp
?
ii ; i)	z3This finds the uptodateness vector in the database.z)(&(invocationId=%s)(objectClass=nTDSDSA))distinguishedNameinvocationId)base
expressionattrs,NzCN=NTDS Settingsz!Expected NTDS Settings DN, got %s)r)   r   _dsdb_load_udv_v2r(   source_dsa_invocation_idsearchsplit
IndexErrorr   appendr   highest_usnr   last_sync_success)r+   dncursors	config_dncinv_idressettings_dnprefixdsa_dnes   &&         r   get_utdvrR   K   s
   G'')I##E.Q//0ll	(@BH(I"5~!F  H	c!f%89!<=K(..sA6NF ''B* + , , 	AMM*#A$7$78: 	; /& N  		s   4C--D>Dc                     V P                  R \        R.R7      p\        V^ ,          R,          ^ ,          4      p\        \        P                  ! 4       4      pW#3# ) highestCommittedUSN)r<   scoper>   )rB   r   r   r   )r+   rM   usnnows   &   r   get_own_cursorrY   e   sS    
,,B'34  6C c!f*+A.
/C
diik
C:r    c           	         / pV F  pV P                   P                  V\        R .R7      pRV^ ,          R ,          ^ ,          ,          p \        WVR7      p	\	        W4      p
\        V	4      w  rWk/pV
 F  w  rppVW&   K  	  YT&   K  	  V#   \         d0   p\        RT: RT: R2\        P                  R7        Rp?K  Rp?ii ; i)	dNSHostName)rV   r>   z	ldap://%s)r   credentialsr   zCould not contact z ()r   N)
r+   rB   r   r   rR   rY   r   r   r   r   )	local_kccr   part_dnr   r   
utdv_edgesrP   rM   ldap_urlr+   rI   own_usnown_timeremotesrH   guidrW   trQ   s   &&&&&              r   get_utdv_edgesrg   n   s     Joo$$V+5,9? % < Q!6q!99
	hbAEu.G .u 5G'G$+ #q! %, %6! "   	1=zz#	s   
9BC$CCc                 v   / pV F  p W,          V,          p/ pWbV&   V Fw  pWp9   dM   W0V,          9   d   W@V,          V,          ,
          pWV&   K2  \        RV RV 2\        P                  R7       KU  \        RV,          \        P                  R7       Ky  	  K  	  V#   \          d   p^ p Rp?LRp?ii ; i)r   NzMissing dn z from UTD vector for dsa r   z"missing dn %s from UTD vector list)KeyErrorr   r   r   )	r`   r   	distancesdn1peakrQ   ddn2dists	   &&       r   get_utdv_distancesrp      s    I	?3'D #C S/)S/#"66D!cFKu,EcUK"zz+ :S@::'  $   	D	s   B!!B8,B33B8c                 |    ^ pV P                  4        F%  pVP                  4        F  p\        W4      pK  	  K'  	  V# )r   )valuesmax)rj   max_distancevectordistances   &   r   get_utdv_max_distancerw      s<    L""$H|6L ( % r    c                    ^ ;r#Rp. pV P                  4        F7  w  rgVP                  4        F  w  rWh8w  g   K  VP                  V	4       K   	  K9  	  V'       d   VP                  4        VR,          p\        V4      p
V
^,          ^ 8X  dA   V
^,          ^,
          pW[,          W[^,           ,          ,           R,          p\	        V^4      pM#V
^,
          ^,          pW[,          p\        V4      p\        V 4      \        V 4      ^,
          ,          pW,
          pRVRVRV/pV'       d   V Uu/ uF  qW,          bK  	  up# V# u upi )r   g        g       @maximummedianfailure)r*   rE   sortr   roundfloat)rj   filtersry   r{   rz   rr   dn_outerru   dn_innerrv   lengthindexexpected_lengthsummarykeys   &&             r   get_utdv_summaryr      s%   GFF%OO-"(,,.H#h' #1 .
 *VA:?AIMEmf1Wo5s:F61%FaZ!OE]F6]Fi.C	NQ,>?!* 	7&7G -45WcW\!W55 6s   .E)N)r   r   ldbr   r   sambar   r   samba.netcmdr   samba.samdbr   	samba.kccr	   r   r1   r8   rR   rY   rg   rp   rw   r    r    r   <module>r      sI   (   $ # %  (&42.#r    