ó
    cÛ–iŒ  ã                   ó¬  • S SK Jr  S SKrS SKrSSKJr  S SKrS SKJ	r	  S SK
JrJrJrJr  S SKJr  S SKJr  S SKJrJrJr  S S	KJrJr  S S
KJr  S SKJr  S SKJrJrJ r J!r!J"r"  S SK#J$r$  S SKJ%r%  S r&S r'S r(S r)Sr* " S S\5      r+ " S S\5      r, " S S\5      r- " S S\5      r. " S S\5      r/ " S S\5      r0 " S  S!\5      r1 " S" S#\5      r2g)$é    Né   )Úcommon)Úsystem_session)ÚCommandÚCommandErrorÚOptionÚSuperCommand)Úattr_default)ÚSamDB)Ú	drs_utilsÚnttime2stringÚdsdb)ÚdrsuapiÚmisc)Ú
join_clone)Úcolour)Úget_partition_mapsÚget_utdv_edgesÚget_utdv_distancesÚget_utdv_summaryÚget_kcc_and_dsas)Ú
get_string)Úget_default_backend_storec                 óî   •  [         R                  " U R                  U R                  U R                  5      u  U l        U l        U l        g! [         a  n[        SU R                  -  U5      eSnAff = f)z'make a DRSUAPI connection to the serverzDRS connection to %s failedN)
r   Údrsuapi_connectÚserverÚlpÚcredsr   Údrsuapi_handleÚbind_supported_extensionsÚ	Exceptionr   ©ÚctxÚes     Ú2/usr/lib/python3/dist-packages/samba/netcmd/drs.pyr   r   4   su   € ðJÜKT×KdÒKdÐeh×eoÑeoÐqt×qwÑqwÐy|÷  zCñ  zCó  LDÑHˆŒ�cÔ(¨#Õ*GøÜó JÜÐ8¸3¿:¹:ÑEÀqÓIÐIûðJús   ‚A	A Á
A4ÁA/Á/A4c                 óÐ   •  [        SU R                  -  [        5       U R                  U R                  S9U l        g! [         a  n[        SU R                  -  U5      eSnAff = f)z$make a ldap connection to the serverú	ldap://%s©ÚurlÚsession_infoÚcredentialsr   zLDAP connection to %s failedN)r   r   r   r   r   Úsamdbr!   r   r"   s     r%   Úsamdb_connectr-   <   s]   € ðKÜ˜k¨C¯J©JÑ6Ü'5Ó'7Ø&)§i¡i°C·F±Fñ<ˆ�	øô ó KÜÐ9¸C¿J¹JÑFÈÓJÐJûðKús   ‚:= ½
A%ÁA Á A%c                 ó$   • U u  pUS:X  a  gSX4-  $ )z*return "was successful" or an error stringr   zwas successfulzfailed, result %u (%s)© )ÚwerrÚecodeÚestrings      r%   Ú
drs_errmsgr3   F   s"   € àÑ€UØ�ƒzØØ# uÐ&6Ñ6Ð6ó    c                 óØ   • U R                  S5      nUS   S:w  d  US   S:w  d	  US   S:w  a  [        SU -  5      eUS	   R                  S
5      S	   nUS   R                  S
5      S	   nX24$ )z+parse a NTDS DN returning a site and serverÚ,r   zCN=NTDS Settingsé   z
CN=Serversé   zCN=Siteszbad NTDS DN %sr   Ú=é   )ÚsplitÚRuntimeError)Úntds_dnÚar   Úsites       r%   Údrs_parse_ntds_dnr@   N   sx   € à�‰�cÓ€AØˆ�tÐ!Ó! Q q¡T¨\Ó%9¸Q¸q¹TÀZÓ=OÜÐ+¨gÑ5Ó6Ð6Øˆq‰T�Z‰Z˜‹_˜QÑ€FØˆq‰T�Z‰Z˜‹_˜QÑ€DØˆ>Ðr4   Úclassicc                   ó,  • \ rS rSrSrSr\R                  \R                  \R                  S.r
\" SSSSS	S
9\" SSSSSS
9\" SSSSSS
9\" SSSSSS9\" SSSSS\S9\" SSSSS9/rS/rS rS  rS! rS"S"S"S"\S#4S$ jrS% rS& rS' rS( rS) rS* rS+ rS,rg")-Úcmd_drs_showreplé[   zShow replication status.ú%prog [<DC>] [options]©Ú	sambaoptsÚversionoptsÚcredoptsú--jsonz"replication details in JSON formatÚformatÚstore_constÚjson)ÚhelpÚdestÚactionÚconstz	--summaryz5summarize overall DRS health as seen from this serverÚsummaryz--pull-summaryz:Have we successfully replicated from all relevant servers?Úpull_summaryz--notify-summaryÚnotify_summaryzsHave we successfully notified all relevant servers of local changes, and did they say they successfully replicated?)rP   rQ   rO   rN   z	--classiczprint local replication detailsrA   )rN   rO   rP   rQ   Údefaultz-vz	--verbosez
Be verboseÚ
store_true©rN   rP   úDC?c           	      ó\  • [        UR                  5      nUR                  U[        UR                  5      [        UR                  5      UR                  [        UR                  5      [        UR                  5      SS.n U R                  R                  SU-  [        R                  / S9   [#        UR                  5      u  pxU< SU< 3US	'   U$ ! [        R                   a2  nUR                  u  pVU[        R                   :X  a
  SUS'    SnANfe SnAff = f! [$         a     U$ f = f)
z8Convert an ldb neighbour object into a python dictionaryF)úNC dnúDSA objectGUIDúlast attempt timeúlast attempt messageúconsecutive failuresúlast successúNTDS DNú
is deletedz	<GUID=%s>©ÚbaseÚscopeÚattrsTra   NÚ\ÚDSA)ÚstrÚsource_dsa_obj_guidÚnaming_context_dnr   Úlast_attemptr3   Úresult_last_attemptÚconsecutive_sync_failuresÚlast_successÚsource_dsa_obj_dnr,   ÚsearchÚldbÚ
SCOPE_BASEÚLdbErrorÚargsÚERR_NO_SUCH_OBJECTr@   r<   )	ÚselfÚnÚdsa_objectguidÚdr$   ÚerrnoÚ_r?   r   s	            r%   Úparse_neighbourÚ cmd_drs_showrepl.parse_neighbour|   s  € ä˜Q×2Ñ2Ó3ˆà×(Ñ(Ø,Ü!.¨q¯~©~Ó!>Ü$.¨q×/DÑ/DÓ$EØ$%×$?Ñ$?Ü)¨!¯.©.Ó9Ü˜1×.Ñ.Ó/Øñ	
ˆð		Ø�J‰J×Ñ ;°Ñ#?Ü$'§N¡NØ$&ð ñ (ð	Ü.¨q×/BÑ/BÓC‰NˆTÛ#'ªÐ0ˆAˆe‰Hð ˆøô �|‰|ó 	ØŸ™‰JˆUØœ×.Ñ.Ó.Ø"&��,–àûð	ûô ó 	ØØˆð	ús0   Â,C Â/#D ÃDÃ('DÄDÄDÄ
D+Ä*D+c                 ó†  • U R                  SUS   -  5        SU;   a  U R                  SUS   -  5        OU R                  SUS   -  5        U R                  SUS   -  5        U R                  S	US
   < SUS   < 35        U R                  SUS   -  5        U R                  SUS   -  5        U R                  S5        g)z&print one set of neighbour informationz%srZ   rg   z	%s via RPCz	NTDS DN: %sr`   z		DSA object GUID: %sr[   z		Last attempt @ r\   Ú r]   z		%u consecutive failure(s).r^   z		Last success @ %sr_   Ú N)Úmessage)rv   ry   s     r%   Úprint_neighbourÚ cmd_drs_showrepl.print_neighbour›   sÄ   € à�‰�T˜A˜g™JÑ&Ô'Ø�A‹:Ø�L‰L˜¨!¨E©(Ñ2Õ3à�L‰L˜¨1¨Y©<Ñ7Ô8Ø�‰Ð.°Ð3CÑ1DÑDÔEØ�Š°1Ð5HÔ3IØ34Ð5KÓ3LðNô 	Oà�‰Ð5ØÐ-Ñ.ñ/ô 	0à�‰Ð,¨q°Ñ/@Ñ@ÔAØ�‰�RÕr4   c                 ó0  • [         R                  " 5       nXl         U R                   R                  U R                  SU5      u  pUR                   Vs/ s H  oPR                  U5      PM     nnU$ ! [
         a  n[        SU-  U5      eS nAff = fs  snf )Nr   z"DsReplicaGetInfo of type %u failed)	r   ÚDsReplicaGetInfoRequest1Ú	info_typeÚDsReplicaGetInfor   r!   r   Úarrayr|   )rv   r†   Úreq1Úinfor$   rw   Úrepss          r%   Úget_neighboursÚcmd_drs_showrepl.get_neighboursª   s“   € Ü×/Ò/Ó1ˆØ"Œð	TØ $§¡× =Ñ =Ø×#Ñ# Q¨ó!.ÑˆYð
 26·²Ó<²¨A×$Ñ$ QÖ'±ˆÐ<Øˆøô	 ó 	TÜÐCÀiÑOÐQRÓSÐSûð	Tüò =s   �)A2 ÁBÁ2
BÁ<BÂBNFc                 óŠ  • UR                  5       U l        Uc   [        R                  " U R                  5      nXl        UR                  U R                  SS9U l        X`l        U R                  U R                  U R                  U R                  U R                  S.R                  U5      nUc  [        SU-  5      eU" 5       $ )NT©Úfallback_machine)rR   rT   rS   rM   rA   zunknown showrepl format %s)Úget_loadparmr   r   Únetcmd_dnsnamer   Úget_credentialsr   ÚverboseÚsummary_outputÚnotify_summary_outputÚpull_summary_outputÚjson_outputÚclassic_outputÚgetr   )rv   ÚDCrG   rI   rH   rK   r”   Úoutput_functions           r%   ÚrunÚcmd_drs_showrepl.run¶   s¸   € ð ×(Ñ(Ó*ˆŒØ‰:Ü×&Ò& t§w¡wÓ/ˆBØŒØ×-Ñ-¨d¯g©gÈÐ-ÐMˆŒ
ØŒð ×*Ñ*Ø"×8Ñ8Ø ×4Ñ4Ø×$Ñ$Ø×*Ñ*ñ
÷ ‰#ˆf‹+ð 	ð Ñ"ÜÐ;¸fÑDÓEÐEáÓ Ð r4   c                 ón   • U R                  5       nUS	 US	 [        R                  " XR                  SS9  g )Nr?   r   r7   ©Úindent)Úget_local_repl_datarM   ÚdumpÚoutf)rv   Údatas     r%   r˜   Úcmd_drs_showrepl.json_outputÍ   s0   € Ø×'Ñ'Ó)ˆØ�ˆLØ�ˆNÜ�	Š	�$Ÿ	™	¨!Ó,r4   c                 ó  • / n/ nU R                  5       nUS:w  a=  US    H4  nUS   (       a  M  US   S:w  d  US   S:X  d  M#  UR                  U5        M6     US:w  a=  US    H4  nUS   (       a  M  US   S:w  d  US   S:X  d  M#  UR                  U5        M6     U(       d  U(       a²  U R                  [        R                  " S	5      5        U(       a?  U R                  [        R                  " S
5      5        U H  nU R                  U5        M     U(       a?  U R                  [        R                  " S5      5        U H  nU R                  U5        M     gU R                  [        R                  " S5      5        g)z[Print a short message if every seems fine, but print details of any
links that seem broken.rS   ÚrepsTora   r^   r   r_   rT   ÚrepsFromzThere are failing connectionszFailing outbound connections:zFailing inbound connection:r   z
[ALL GOOD]N)r¢   Úappendr�   r   Úc_REDr‚   Úc_GREEN)rv   Útypeof_outputÚfailing_repstoÚfailing_repsfromÚ
local_dataÚreps         r%   Úsummary_output_handlerÚ'cmd_drs_showrepl.summary_output_handlerÓ   sN  € ð ˆØÐà×-Ñ-Ó/ˆ
à˜NÓ*Ø! (Ô+�Ø�|×$ÙØÐ-Ñ.°!Ó3°s¸>Ñ7JÈaÕ7OØ"×)Ñ)¨#Ö.ñ	 ,ð Ð,Ó,Ø! *Ô-�Ø�|×$ÙØÐ-Ñ.°!Ó3°s¸>Ñ7JÈaÕ7OØ$×+Ñ+¨CÖ0ñ	 .ö Ö-Ø�L‰LœŸšÐ&EÓFÔGÞØ—‘œVŸ\š\Ð*IÓJÔKÛ)�CØ×(Ñ(¨Ö-ñ *æØ—‘œVŸ\š\Ð*GÓHÔIÛ+�CØ×(Ñ(¨Ö-ñ ,ð à�‰”V—^’^ LÓ1Õ2r4   c                 ó$   • U R                  S5      $ )NrR   ©r²   ©rv   s    r%   r•   Úcmd_drs_showrepl.summary_outputø   s   € Ø×*Ñ*¨9Ó5Ð5r4   c                 ó$   • U R                  S5      $ )NrT   rµ   r¶   s    r%   r–   Ú&cmd_drs_showrepl.notify_summary_outputû   s   € Ø×*Ñ*Ð+;Ó<Ð<r4   c                 ó$   • U R                  S5      $ )NrS   rµ   r¶   s    r%   r—   Ú$cmd_drs_showrepl.pull_summary_outputþ   s   € Ø×*Ñ*¨>Ó:Ð:r4   c                 óê  • [        U 5        [        U 5        U R                  R                  5       n[	        U5      u  p# U R                  R                  U[        R                  / SQS9n[        [        US   SS5      5      [        U R                  R                  SUS   S   S   5      5      [        U R                  R                  SUS   S   S   5      5      S.nU R                  R                  USS	9nU R                  [        R                   5      nU R                  [        R"                  5      n	/ n
U GH2  n[%        US
   S   5      R'                  S5      u  pÍn[%        US   5      [%        US
   S   5      [        [        USS5      5      [        [        USS5      5      R)                  5       S:H  S.nU
R+                  U5         U R                  R                  U[        R                  S/S9n[%        US   S   S   5      US'   / US'   UR7                  S/ 5       HB  n[%        U5      R9                  S5      nUS   R+                  US   [        US   5      45        MD     GM5     UUU	U
UUS.$ ! [         a  n[        SU-  5      eS nAff = f! [        R,                   a2  nUR.                  u  nnU[        R0                  :X  a  SUS'    S nANÌS nAf[2        [4        4 a     Náf = f)N)ÚoptionsÚ
objectGUIDÚinvocationIdrb   zFailed to search NTDS DN %sr   r½   r¾   r¿   z(objectClass=nTDSConnection))rc   Ú
expressionÚ
fromServerr6   ÚnameÚenabledConnectionÚTRUE)rÂ   ú	remote DNr½   ÚenabledÚdnsHostNameúdns nameTra   úreplicates NCzmS-DS-ReplicatesNCReasonÚ:r:   r7   )Údsar©   r¨   ÚNTDSConnectionsr?   r   )r   r-   r,   Úget_dsServiceNamer@   rp   rq   rr   r!   r   Úintr
   r   Úschema_format_valuerŒ   r   Ú!DRSUAPI_DS_REPLICA_INFO_NEIGHBORSÚDRSUAPI_DS_REPLICA_INFO_REPSTOrh   Ú	partitionÚupperrª   rs   rt   ru   ÚKeyErrorÚ
IndexErrorrš   r;   )rv   r=   r?   r   Úntdsr$   Údsa_detailsÚconnÚrepsfromÚrepstoÚconn_detailsÚcÚc_rdnÚsepÚc_server_dnry   Úc_server_resrz   r{   Úrr>   s                        r%   r¢   Ú$cmd_drs_showrepl.get_local_repl_data  sä  € Ü˜ÔÜ�dÔð —*‘*×.Ñ.Ó0ˆä*¨7Ó3‰ˆð	HØ—:‘:×$Ñ$¨'¼¿¹ÒOxÐ$ÐyˆDô
 œ<¨¨Q©°¸AÓ>Ó?Ü$ T§Z¡Z×%CÑ%CØ˜d 1™g lÑ3°AÑ6ó&8ó 9ä& t§z¡z×'EÑ'EØ˜d 1™g nÑ5°aÑ8ó(:ó ;ñ	
ˆð �z‰z× Ñ  gÐ:XÐ ÐYˆØ×&Ñ&¤w×'PÑ'PÓQˆØ×$Ñ$¤W×%KÑ%KÓLˆàˆÜˆAÜ&)¨!¨L©/¸!Ñ*<Ó&=×&GÑ&GÈÓ&LÑ#ˆE˜ä˜A˜f™I›Ü   <¡°Ñ!3Ó4Üœ|¨A¨y¸!Ó<Ó=Ü&¤|°AÐ7JØ)/ó(1ó 2ß27±%³'¸VñDñ	ˆAð ×Ñ Ô"ð
Ø#Ÿz™z×0Ñ0°kÜ7:·~±~Ø8E°ð  1ð  H�ô !$ L°¡O°MÑ$BÀ1Ñ$EÓ F��*‘ð "$ˆAˆoÑØ—U‘UÐ5°rÖ:�Ü˜“F—L‘L Ó%�Ø�/Ñ"×)Ñ)¨1¨Q©4´°Q°q±T³Ð*;Ö<ô ;ñ1 ð: Ø ØØ+ØØñ
ð 	
øôY ó 	HÜÐ<¸wÑFÓGÐGûð	Hûô@ —<‘<ó +ØŸV™V‘
�˜ØœC×2Ñ2Ó2Ø&*�A�l‘OÿøÜœjÐ)ó Ùðús6   ¿+I; ÇAJÉ;
JÊJÊJÊK2Ê/(KËK2Ë1K2c                 óÜ  • U R                  5       nUS   nUS   nUS   nUS   nUS   nUS   nU R                  U< SU< 35        U R                  SUS	   -  5        U R                  S
US   -  5        U R                  SUS   -  5        U R                  S5        U H  nU R                  U5        M     U R                  S5        U H  nU R                  U5        M     / SQn	U R                  S5        U GHo  n
U R                  S5        U
R                  S5      (       a  U R                  S5        U R                  SU
S   -  5        U R                  S[	        U
S   5      R                  5       -  5        U R                  SU
R                  S5      -  5        U R                  SU
S   -  5        U R                  S5        U R                  SU
S	   -  5        U
S   (       aq  U
S    He  u  p¼U R                  S U-  5        U R                  S!U-  5        U	 H2  n[        [        US"5      U-  (       d  M  U R                  S#U-  5        M4     Mg     GM^  U R                  S$5        GMr     g )%NrË   r©   r¨   rÌ   r?   r   rf   zDSA Options: 0x%08xr½   zDSA object GUID: %sr¾   zDSA invocationId: %s
r¿   z==== INBOUND NEIGHBORS ====
z==== OUTBOUND NEIGHBORS ====
)
ÚNTDSCONN_KCC_GC_TOPOLOGYÚNTDSCONN_KCC_RING_TOPOLOGYÚ#NTDSCONN_KCC_MINIMIZE_HOPS_TOPOLOGYÚ#NTDSCONN_KCC_STALE_SERVERS_TOPOLOGYÚ,NTDSCONN_KCC_OSCILLATING_CONNECTION_TOPOLOGYÚ"NTDSCONN_KCC_INTERSITE_GC_TOPOLOGYÚNTDSCONN_KCC_INTERSITE_TOPOLOGYÚ%NTDSCONN_KCC_SERVER_FAILOVER_TOPOLOGYÚ#NTDSCONN_KCC_SITE_FAILOVER_TOPOLOGYÚ&NTDSCONN_KCC_REDUNDANT_SERVER_TOPOLOGYz!==== KCC CONNECTION OBJECTS ====
zConnection --ra   z'	WARNING: Connection to DELETED server!z	Connection name: %srÂ   z	Enabled        : %srÆ   z	Server DNS name : %srÈ   z	Server DN name  : %srÅ   z		TransportType: RPCz		options: 0x%08XrÉ   z		ReplicatesNC: %sz		Reason: 0x%08xr   z			%sz)Warning: No NC replicated for Connection!)r¢   r�   r‚   rš   rh   rÓ   Úgetattrr   )rv   r¥   r×   rÙ   rÚ   rÛ   r?   r   rw   Úreasonsry   ÚncÚreasonÚss                 r%   r™   Úcmd_drs_showrepl.classic_output@  s;  € Ø×'Ñ'Ó)ˆØ˜5‘kˆØ˜
Ñ#ˆØ�h‘ˆØÐ-Ñ.ˆØ�F‰|ˆØ�h‘ˆà�‰£¢vÐ.Ô/Ø�‰Ð*¨[¸Ñ-CÑCÔDØ�‰Ð*¨[¸Ñ-FÑFÔGØ�‰Ð-°¸NÑ0KÑKÔLà�‰Ð4Ô5ÛˆAØ× Ñ  Ö#ñ ð 	�‰Ð5Ô6ÛˆAØ× Ñ  Ö#ñ ò	=ˆð 	�‰Ð9Ô:ÜˆAØ�L‰L˜Ô)Ø�u‰u�\×"Ñ"Ø—‘ÐGÔHà�L‰LÐ0°1°V±9Ñ<Ô=Ø�L‰LÐ0´3°q¸±|Ó3D×3JÑ3JÓ3LÑLÔMØ�L‰LÐ1°A·E±E¸*Ó4EÑEÔFØ�L‰LÐ1°A°k±NÑBÔCØ�L‰LÐ1Ô2Ø�L‰LÐ.°°9±Ñ=Ô>à�×!Ø"# OÔ"4‘J�BØ—L‘LÐ!7¸"Ñ!<Ô=Ø—L‘LÐ!5¸Ñ!>Ô?Û$˜Ü"¤4¨¨AÓ.°×7Ñ7Ø ŸL™L¨°a©Ö8ó %ô #5ð —‘ÐH×Iò) r4   )r   r   r   r”   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Úsynopsisr½   ÚSambaOptionsÚVersionOptionsÚCredentialsOptionsÚtakes_optiongroupsr   ÚDEFAULT_SHOWREPL_FORMATÚtakes_optionsÚ
takes_argsr|   r‚   rŒ   r�   r˜   r²   r•   r–   r—   r¢   r™   Ú__static_attributes__r/   r4   r%   rC   rC   [   s  † Ù"à'€Hð ×)Ñ)Ø×-Ñ-Ø×.Ñ.ñÐñ 	ˆxÐBØ ]¸&ñ	Báˆ{ð #5à ]¸)ñ	Eñ 	Ðð (Dà ]¸.ñ	Jñ 	Ð!¨-Ø%¨Hð#ñ	%ñ
 	ˆ{Ð!BØ ]¸)Ø.ñ	0ñ 	ˆt�[ |¸LÑIð#€Mð( �€Jòò>ò
ð  TØ tØ*Øô!ò.-ò#3òJ6ò=ò;ò=
õ~6Jr4   rC   c                   óx   • \ rS rSrSrSr\R                  \R                  \R                  S.r
S/r  S	S jrSrg)
Úcmd_drs_kcciy  z)Trigger knowledge consistency center run.rE   rF   rX   Nc                 ó²  • UR                  5       U l        Uc   [        R                  " U R                  5      nXl        UR                  U R                  SS9U l        [        U 5        [        R                  " 5       n U R                  R                  U R                  SU5        U R                  SU-  5        g ! [         a  n[        SU5      eS nAff = f)NTr�   r   zDsExecuteKCC failedz#Consistency check on %s successful.)r‘   r   r   r’   r   r“   r   r   r   ÚDsExecuteKCC1ÚDsExecuteKCCr   r!   r   r�   )rv   r›   rG   rI   rH   r‰   r$   s          r%   r�   Úcmd_drs_kcc.run†  s¸   € ð ×(Ñ(Ó*ˆŒØ‰:Ü×&Ò& t§w¡wÓ/ˆBØŒà×-Ñ-¨d¯g©gÈÐ-ÐMˆŒ
ä˜Ôä×$Ò$Ó&ˆð	9Ø�L‰L×%Ñ% d×&9Ñ&9¸1¸dÔCð 	�‰Ð:¸RÑ?Õ@øô ó 	9ÜÐ4°aÓ8Ð8ûð	9ús   Á?'B; Â;
CÃCÃC©r   r   r   ©NNNN©rô   rõ   rö   r÷   rø   rù   r½   rú   rû   rü   rý   r   r�   r  r/   r4   r%   r  r  y  sD   † Ù3à'€Hð ×)Ñ)Ø×-Ñ-Ø×.Ñ.ñÐð �€Jà%)Ø'+÷Ar4   r  c                   ó   • \ rS rSrSrSr\R                  \R                  \R                  S.r
/ SQr\" SSSS	9\" S
SSS	9\" SSSS	9\" SSSS	9\" SSSS	9\" SSSS	9\" SSSS	9\" SSSS	9/r   SS jr   SS jrSrg)Úcmd_drs_replicateiš  z+Replicate a naming context between two DCs.z/%prog <destinationDC> <sourceDC> <NC> [options]rF   )ÚDEST_DCÚ	SOURCE_DCÚNCz	--add-refz&use ADD_REF to add to repsTo on sourcerV   rW   z--sync-forcedz,use SYNC_FORCED to force inbound replicationz
--sync-allz&use SYNC_ALL to replicate from all DCsz--full-synczresync all objectsz--localzIpull changes directly into the local database (destination DC is ignored)z--local-onlinez_pull changes into the local database (destination DC is ignored) as a normal online replicationz
--async-opz use ASYNC_OP for the replicationz--single-objectz\Replicate only the object specified, instead of the whole Naming Context (only with --local)c           
      óÄ  • Xl         [        U 5        [        [        5       SU R                  U R
                  SS9U l        [        SU R                   -  [        5       U R                  U R
                  S9U l        U R                  R                  S[        R                  S/S9nUS   S   S   U l        U R                  R                  U R                  [        R                  S	/S9n[        R                  " U R                  R                  S	US   S	   S   5      5      U l        [        R                  " U R                  R!                  5       5      n[        R                  " U R                  R!                  5       5      nU R                  n	["        R$                  n
U(       a  ["        R&                  n
S
nU R                  R)                  5         [*        R,                  " SU R                   -  U R
                  U R                  U R                  U5      nU R                  R/                  5       n UR1                  UUU	UUU
US9u  pÞU R                  R7                  5         U(       a,  U R9                  SXÞUU R                  R:                  4-  5        gU R9                  SXÞUU R                  R:                  4-  5        g! [2         a  n[5        SU-  U5      eSnAff = f)z+replicate from a source DC to the local SAMNr   )r*   r)   r+   r   Úflagsr'   r(   r€   ÚdsServiceNamerb   r¾   Tzncacn_ip_tcp:%s[seal])ÚrodcÚ	full_syncÚexopÚsync_forcedzError replicating DN %szMFull Replication of all %d objects and %d links from %s to %s was successful.zPIncremental replication of %d objects and %d links from %s to %s was successful.)r   r   r   r   r   r   Úlocal_samdbr,   rp   rq   rr   r=   r   ÚGUIDrÏ   Ú	ntds_guidÚget_invocation_idr   ÚDRSUAPI_EXOP_NONEÚDRSUAPI_EXOP_REPL_OBJÚtransaction_startr   Údrs_ReplicateÚam_rodcÚ	replicater!   r   Útransaction_commitr�   r)   )rv   r  r  r  Úsingle_objectr  ÚresÚsource_dsa_invocation_idÚdest_dsa_invocation_idÚdestination_dsa_guidr  Úreplr  Únum_objectsÚ	num_linksr$   s                   r%   Údrs_local_replicateÚ%cmd_drs_replicate.drs_local_replicate²  s’  € ð
  ŒÜ˜Ôô !¬nÓ.>ÀDØ-1¯Z©Z¸D¿G¹GØ'(ñ*ˆÔô ˜{¨T¯[©[Ñ8Ü(6Ó(8Ø'+§z¡z°d·g±gñ?ˆŒ
ð
 ×Ñ×%Ñ%¨2´S·^±^Ø-<Ð,=ð &ð ?ˆà˜1‘v˜oÑ.¨qÑ1ˆŒà×Ñ×%Ñ%¨4¯<©<¼s¿~¹~Ø-9¨Nð &ð <ˆäŸšØ�J‰J×*Ñ*¨<Ø+.¨q©6°,Ñ+?ÀÑ+BóDóEˆŒô $(§9¢9¨T¯Z©Z×-IÑ-IÓ-KÓ#LÐ Ü!%§¢¨4×+;Ñ+;×+MÑ+MÓ+OÓ!PÐØ#Ÿ~™~Ðä×(Ñ(ˆæÜ×0Ñ0ˆDØˆIà�
‰
×$Ñ$Ô&Ü×&Ò&Ð'>ÀÇÁÑ'LØ'+§w¡wØ'+§z¡z°4×3CÑ3CØ'=ó?ˆð ×Ñ×'Ñ'Ó)ˆð		BØ'+§~¡~°bØ6NØ6JØ;?Ø@IØ;?ØBMð (6ð (OÑ$ˆ[ð 	�
‰
×%Ñ%Ô'æØ�L‰Lð 9à%°)Ø×*Ñ*×.Ñ.ð0ñ0õ 1ð
 �L‰Lð 9à%°)Ø×*Ñ*×.Ñ.ð0ñ0õ 1øô ó 	BÜÐ8¸2Ñ=¸qÓAÐAûð	Bús   È1K Ë
KËKËKNc           	      óÞ  • Xl         UR                  5       U l        UR                  U R                  SS9U l        U(       a  U R                  X#UUUS9  g U	(       a5  [        R                  " SU R                  S9n[        R                  " 5       nO#[        U 5        U R                  nU R                  nU
(       d  SUl        [        U 5        U R                  R                  U R                  R                  5       S[         R"                  " U5      < S[         R"                  " U5      < S	3/ S
9n[%        U5      S:X  a  ['        SU-  5      eUS   S   nU R                  R                  U[         R(                  SSS/S9n[%        U5      S:X  a  ['        SU-  5      eUS   S   S   n[+        [-        USS5      5      nSnU[.        R0                  -  (       d  U[        R2                  -  nU(       a  U[        R4                  -  nU(       a  U[        R6                  -  nU(       a  U[        R8                  -  nU(       a  U[        R:                  -  nU
(       a  U[        R<                  -  n [>        R@                  " UUUUU5        U
(       a  U RE                  SU< SU< S35        g U RE                  SU< SU< S35        g ! [>        RB                   a  n['        SU5      eS nAff = f)NTr�   )r  r"  r  zirpc:dreplsrv)Úlp_ctxi,  z!(&(objectCategory=server)(|(name=z)(dNSHostName=z))))rc   rÀ   re   r   zFailed to find source DC %sÚdnz5(|(objectCategory=nTDSDSA)(objectCategory=nTDSDSARO))r¾   r½   )rc   rd   rÀ   re   z Failed to find source NTDS DN %szDsReplicaSync failedzReplicate from z to z was started.z was successful.)#r   r‘   r   r“   r   r*  r   r   Úpolicy_handler   r   Úrequest_timeoutr-   r,   rp   Úget_config_basednrq   Úbinary_encodeÚlenr   ÚSCOPE_ONELEVELrÎ   r
   r   Ú$DS_NTDSDSA_OPT_DISABLE_OUTBOUND_REPLÚDRSUAPI_DRS_WRIT_REPÚDRSUAPI_DRS_ADD_REFÚDRSUAPI_DRS_SYNC_FORCEDÚDRSUAPI_DRS_SYNC_ALLÚDRSUAPI_DRS_FULL_SYNC_NOWÚDRSUAPI_DRS_ASYNC_OPr   ÚsendDsReplicaSyncÚdrsExceptionr�   )rv   r  r  r  Úadd_refr  Úsync_allr  ÚlocalÚlocal_onlineÚasync_opr"  rG   rI   rH   Úserver_bindÚserver_bind_handleÚmsgÚ	server_dnÚsource_dsa_guidÚdsa_optionsÚreq_optionsÚestrs                          r%   r�   Úcmd_drs_replicate.runø  s‹  € ð
 ŒØ×(Ñ(Ó*ˆŒà×-Ñ-¨d¯g©gÈÐ-ÐMˆŒ
æØ×$Ñ$ Y¸iØ3@Ø1<ð %ñ >ð æÜ!Ÿ/š/¨/À$Ç'Á'ÑJˆKÜ!%×!3Ò!3Ó!5Ñä˜DÔ!ØŸ,™,ˆKØ!%×!4Ñ!4Ðæà*0ˆKÔ'ä�dÔð �j‰j×Ñ T§Z¡Z×%AÑ%AÔ%Cä×Ò˜iÖ(Ü×Ò˜iÖ(ð,*ð ')ð	  ð *ˆô
 ˆs‹8�q‹=ÜÐ<¸yÑHÓIÐIØ˜‘F˜4‘Lˆ	à�j‰j×Ñ Y´c×6HÑ6HØ+bØ'3°YÐ&?ð  ð Aˆô ˆs‹8�q‹=ÜÐAÀIÑMÓNÐNØ˜a™& Ñ.¨qÑ1ˆÜœ, s¨I°qÓ9Ó:ˆàˆØœd×GÑG×GØœ7×7Ñ7Ñ7ˆKÞØœ7×6Ñ6Ñ6ˆKÞØœ7×:Ñ:Ñ:ˆKÞØœ7×7Ñ7Ñ7ˆKÞØœ7×<Ñ<Ñ<ˆKÞØœ7×7Ñ7Ñ7ˆKð	=Ü×'Ò'¨Ð5GÈÐZ\Ð^iÔjö Ø�LŠLÃ9ËgÐVÕWà�LŠLÃiÓQXÐYÕZøô ×%Ñ%ó 	=ÜÐ5°tÓ<Ð<ûð	=ús   É0K ËK,ËK'Ë'K,)r   r  r   r=   r  r,   r   )FFF)FFFFFFFFNNN)rô   rõ   rö   r÷   rø   rù   r½   rú   rû   rü   rý   r   r   rÿ   r*  r�   r  r/   r4   r%   r  r  š  sí   † Ù5à@€Hð ×)Ñ)Ø×-Ñ-Ø×.Ñ.ñÐò 0€Jñ 	ˆ{Ð!IÐR^Ñ_ÙˆÐ%SÐ\hÑiÙˆ|Ð"JÐS_Ñ`Ùˆ}Ð#7ÀÑMÙˆyÐjÐsñ  	AÙÐð  'Hð  Q]ñ  	^Ùˆ|Ð"DÈ\ÑZÙÐ ð  (Fð  O[ñ  	\ð	€Mð <AØ*/Ø(-ôD1ðN INØKPØ7;÷E[r4   r  c                   óx   • \ rS rSrSrSr\R                  \R                  \R                  S.r
S/r  S	S jrSrg)
Úcmd_drs_bindi@  z"Show DRS capabilities of a server.rE   rF   rX   Nc           
      óJ  • UR                  5       U l        Uc   [        R                  " U R                  5      nXl        UR                  U R                  SS9U l        [        U 5        [        R                  " 5       nSUl
        [        R                  " 5       Ul        U R                  R                  [        R                  " [        R                   5      U5      u  pg/ SQn/ SQn	U R#                  SU-  5        U R#                  S5        U HX  u  p«[%        [        U
S5      nUR                  R&                  U-  (       a  S	nOS
nU R#                  SU
<S SU< SU< S35        MZ     [)        UR                  [        R*                  5      (       ao  U R#                  S5        U	 HX  u  p«[%        [        U
S5      nUR                  R,                  U-  (       a  S	nOS
nU R#                  SU
<S SU< SU< S35        MZ     U R#                  SUR                  R.                  -  5        U R#                  SUR                  R0                  -  5        [)        UR                  [        R*                  5      (       a)  U R#                  SUR                  R2                  -  5        g g )NTr�   é   )")Ú DRSUAPI_SUPPORTED_EXTENSION_BASEÚDRS_EXT_BASE)Ú-DRSUAPI_SUPPORTED_EXTENSION_ASYNC_REPLICATIONÚDRS_EXT_ASYNCREPL)Ú%DRSUAPI_SUPPORTED_EXTENSION_REMOVEAPIÚDRS_EXT_REMOVEAPI)Ú&DRSUAPI_SUPPORTED_EXTENSION_MOVEREQ_V2ÚDRS_EXT_MOVEREQ_V2)Ú+DRSUAPI_SUPPORTED_EXTENSION_GETCHG_COMPRESSÚDRS_EXT_GETCHG_DEFLATE)Ú%DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V1ÚDRS_EXT_DCINFO_V1)Ú4DRSUAPI_SUPPORTED_EXTENSION_RESTORE_USN_OPTIMIZATIONÚ DRS_EXT_RESTORE_USN_OPTIMIZATION)Ú$DRSUAPI_SUPPORTED_EXTENSION_ADDENTRYÚDRS_EXT_ADDENTRY)Ú'DRSUAPI_SUPPORTED_EXTENSION_KCC_EXECUTEÚDRS_EXT_KCC_EXECUTE)Ú'DRSUAPI_SUPPORTED_EXTENSION_ADDENTRY_V2ÚDRS_EXT_ADDENTRY_V2)Ú4DRSUAPI_SUPPORTED_EXTENSION_LINKED_VALUE_REPLICATIONÚ DRS_EXT_LINKED_VALUE_REPLICATION)Ú%DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V2ÚDRS_EXT_DCINFO_V2)Ú8DRSUAPI_SUPPORTED_EXTENSION_INSTANCE_TYPE_NOT_REQ_ON_MODÚ$DRS_EXT_INSTANCE_TYPE_NOT_REQ_ON_MOD)Ú'DRSUAPI_SUPPORTED_EXTENSION_CRYPTO_BINDÚDRS_EXT_CRYPTO_BIND)Ú)DRSUAPI_SUPPORTED_EXTENSION_GET_REPL_INFOÚDRS_EXT_GET_REPL_INFO)Ú-DRSUAPI_SUPPORTED_EXTENSION_STRONG_ENCRYPTIONÚDRS_EXT_STRONG_ENCRYPTION)Ú&DRSUAPI_SUPPORTED_EXTENSION_DCINFO_V01ÚDRS_EXT_DCINFO_VFFFFFFFF)Ú1DRSUAPI_SUPPORTED_EXTENSION_TRANSITIVE_MEMBERSHIPÚDRS_EXT_TRANSITIVE_MEMBERSHIP)Ú+DRSUAPI_SUPPORTED_EXTENSION_ADD_SID_HISTORYÚDRS_EXT_ADD_SID_HISTORY)Ú&DRSUAPI_SUPPORTED_EXTENSION_POST_BETA3ÚDRS_EXT_POST_BETA3)Ú(DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V5ÚDRS_EXT_GETCHGREQ_V5)Ú,DRSUAPI_SUPPORTED_EXTENSION_GET_MEMBERSHIPS2ÚDRS_EXT_GETMEMBERSHIPS2)Ú(DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V6ÚDRS_EXT_GETCHGREQ_V6)Ú)DRSUAPI_SUPPORTED_EXTENSION_NONDOMAIN_NCSÚDRS_EXT_NONDOMAIN_NCS)Ú(DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V8ÚDRS_EXT_GETCHGREQ_V8)Ú*DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V5ÚDRS_EXT_GETCHGREPLY_V5)Ú*DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V6ÚDRS_EXT_GETCHGREPLY_V6)Ú,DRSUAPI_SUPPORTED_EXTENSION_ADDENTRYREPLY_V3ÚDRS_EXT_WHISTLER_BETA3)Ú*DRSUAPI_SUPPORTED_EXTENSION_GETCHGREPLY_V7r‡  )Ú)DRSUAPI_SUPPORTED_EXTENSION_VERIFY_OBJECTr‡  )Ú+DRSUAPI_SUPPORTED_EXTENSION_XPRESS_COMPRESSÚDRS_EXT_W2K3_DEFLATE)Ú)DRSUAPI_SUPPORTED_EXTENSION_GETCHGREQ_V10ÚDRS_EXT_GETCHGREQ_V10)Ú*DRSUAPI_SUPPORTED_EXTENSION_RESERVED_PART2Ú*DRS_EXT_RESERVED_FOR_WIN2K_OR_DOTNET_PART2)Ú*DRSUAPI_SUPPORTED_EXTENSION_RESERVED_PART3Ú*DRS_EXT_RESERVED_FOR_WIN2K_OR_DOTNET_PART3))Ú DRSUAPI_SUPPORTED_EXTENSION_ADAMÚDRS_EXT_ADAM)Ú$DRSUAPI_SUPPORTED_EXTENSION_LH_BETA2ÚDRS_EXT_LH_BETA2)Ú'DRSUAPI_SUPPORTED_EXTENSION_RECYCLE_BINÚDRS_EXT_RECYCLE_BINzBind to %s succeeded.zExtensions supported:r   ÚYeszNo ú  Ú60ú: z (Ú)z
Extended Extensions supported:z
Site GUID: %szRepl epoch: %uzForest GUID: %s)r‘   r   r   r’   r   r“   r   r   r   ÚDsBindInfoCtrÚlengthÚDsBindInfo28rŠ   ÚDsBindr   r  ÚDRSUAPI_DS_BIND_GUIDr�   rî   Úsupported_extensionsÚ
isinstanceÚDsBindInfo48Úsupported_extensions_extÚ	site_guidÚ
repl_epochÚconfig_dn_guid)rv   r›   rG   rI   rH   Ú	bind_inforŠ   ÚhandleÚoptmapÚ
optmap_extÚoptrh   ÚoptvalÚyesnos                 r%   r�   Úcmd_drs_bind.runM  sþ  € ð ×(Ñ(Ó*ˆŒØ‰:Ü×&Ò& t§w¡wÓ/ˆBØŒØ×-Ñ-¨d¯g©gÈÐ-ÐMˆŒ
ä˜Ôä×)Ò)Ó+ˆ	Øˆ	ÔÜ ×-Ò-Ó/ˆ	ŒØŸ™×,Ñ,¬T¯YªY´w×7SÑ7SÓ-TÐV_Ó`‰ˆò#
ˆòJPˆ
ð
 	�‰Ð,¨rÑ1Ô2Ø�‰Ð,Ô-Û ‰JˆSÜœW c¨1Ó-ˆFØ�y‰y×-Ñ-°×6Ø‘à�Ø�LŠL¬s³E»3Ð?Ö@ñ !ô �d—i‘i¤×!5Ñ!5×6Ñ6Ø�L‰LÐ;Ô<Û(‘
�Ü ¤¨#¨qÓ1�Ø—9‘9×5Ñ5¸×>Ø!‘Eà!�EØ—’´3»»sÐCÖDñ )ð 	�‰Ð&¨¯©×)<Ñ)<Ñ<Ô=Ø�‰Ð%¨¯	©	×(<Ñ(<Ñ<Ô=Ü�d—i‘i¤×!5Ñ!5×6Ñ6Ø�L‰LÐ*¨T¯Y©Y×-EÑ-EÑEÕFð 7r4   r  r	  r
  r/   r4   r%   rM  rM  @  sE   † Ù,à'€Hð ×)Ñ)Ø×-Ñ-Ø×.Ñ.ñÐð �€Jà%)Ø'+÷QGr4   rM  c                   óš   • \ rS rSrSrSr\R                  \R                  \R                  S.r
S/r\" SSSS	S
9/rSSSSS.r  SS jrSrg)Úcmd_drs_optionsi¡  zJQuery or change 'options' for NTDS Settings object of a Domain Controller.rE   rF   rX   z--dsa-optionzDSA option to enable/disablerh   za{+|-}IS_GC | {+|-}DISABLE_INBOUND_REPL | {+|-}DISABLE_OUTBOUND_REPL | {+|-}DISABLE_NTDSCONN_XLATE)rN   ÚtypeÚmetavarr   r7   r8   é   )ÚIS_GCÚDISABLE_INBOUND_REPLÚDISABLE_OUTBOUND_REPLÚDISABLE_NTDSCONN_XLATENc                 óþ  • UR                  5       U l        Uc   [        R                  " U R                  5      nXl        UR                  U R                  SS9U l        [        U 5        U R                  R                  5       nU R                  R                  U[        R                  S/S9n[        US   S   S   5      nU R                   V	s/ s H  o�R                  U	   U-  (       d  M  U	PM     n
n	U R                  SSR!                  U
5      -   5        U(       GaT  US S S	;  a  [#        S
U-  5      eUSS  nX°R                  R%                  5       ;  a  [#        S
U-  5      eUS S S:X  a  X€R                  U   -  nOX€R                  U   ) -  n[        R&                  " 5       n[        R(                  " U R                  U5      Ul        [        R,                  " [/        U5      [        R0                  S5      US'   U R                  R3                  U5        U R                   V	s/ s H  o�R                  U	   U-  (       d  M  U	PM     n
n	U R                  SSR!                  U
5      -   5        g g s  sn	f s  sn	f )NTr�   r½   rb   r   zCurrent DSA options: z, r   )Ú+Ú-zUnknown option %sr»  zNew DSA options: )r‘   r   r   r’   r   r“   r   r-   r,   rÍ   rp   rq   rr   rÎ   Ú
option_mapr�   Újoinr   ÚkeysÚMessageÚDnr.  ÚMessageElementrh   ÚFLAG_MOD_REPLACEÚmodify)rv   r›   Ú
dsa_optionrG   rI   rH   r=   r#  Údsa_optsÚxÚcur_optsÚflagÚms                r%   r�   Úcmd_drs_options.run¸  s  € ð ×(Ñ(Ó*ˆŒØ‰:Ü×&Ò& t§w¡wÓ/ˆBØŒØ×-Ñ-¨d¯g©gÈÐ-ÐMˆŒ
ä�dÔà—*‘*×.Ñ.Ó0ˆØ�j‰j×Ñ W´C·N±NÈ9È+ÐÐVˆÜ�s˜1‘v˜iÑ(¨Ñ+Ó,ˆð  $ŸšÓPš˜!·/±/À!Ñ2DÀxÕ2O—A™ˆÐPØ�‰Ð,¨t¯y©y¸Ó/BÑBÔC÷ Ø˜"˜1ˆ~ ZÓ/Ü"Ð#6¸Ñ#CÓDÐDØ˜a˜b�>ˆDØŸ?™?×/Ñ/Ó1Ó1Ü"Ð#6¸Ñ#CÓDÐDØ˜"˜1ˆ~ Ó$ØŸO™O¨DÑ1Ñ1‘àŸ_™_¨TÑ2Ð2Ñ2�ä—’“ˆAÜ—6’6˜$Ÿ*™* gÓ.ˆAŒDÜ×-Ò-¬c°(«m¼S×=QÑ=QÐS\Ó]ˆAˆi‰LØ�J‰J×Ñ˜aÔ à#'§?¢?ÓT¢?˜a·o±oÀaÑ6HÈ8Õ6SŸ¡?ˆHÐTØ�L‰LÐ,¨t¯y©y¸Ó/BÑBÕCð# ùò	 Qùò( Us   ÃI5Ã-I5È*I:ÉI:r  )NNNNN)rô   rõ   rö   r÷   rø   rù   r½   rú   rû   rü   rý   r   r   rÿ   r½  r�   r  r/   r4   r%   r²  r²  ¡  sw   † ÙTà'€Hð ×)Ñ)Ø×-Ñ-Ø×.Ñ.ñÐð �€Jñ 	ˆ~Ð$BÈØzñ	|ð€Mð
 &Ø*4Ø+5Ø,6ñ8€Jð
 '+Ø7;÷%Dr4   r²  c                   óð   • \ rS rSrSrSr\R                  \R                  \R                  S.r
\" SS\S9\" SS	\S9\" S
SSSS9\" SSSS9\" SSSSS/S\" 5       -  S9\" SSSSS9/rS/r    S!S jrS rg)"Úcmd_drs_clone_dc_databaseià  z9Replicate an initial clone of domain, but DO NOT JOIN it.z%prog <dnsdomain> [options]rF   z--serverz
DC to join)rN   r³  z--targetdirz#where to store provision (required)z-qz--quietzBe quietrV   rW   z--include-secretszAlso replicate secret valuesz--backend-storeÚchoiceÚBACKENDSTOREÚtdbÚmdbz7Specify the database backend to be used (default is %s))r³  r´  ÚchoicesrN   z--backend-store-sizeÚbytesÚSIZEzeSpecify the size of the backend database, currentlyonly supported by lmdb backends (default is 8 Gb).)r³  r´  rN   ÚdomainNc                 óž   • UR                  5       nUR                  U5      nU R                  X‡S9nUc  [        S5      e[	        XåXÜUSXiU
US9
  g )N)r”   Úquietz$--targetdir option must be specifiedÚSAMBA_INTERNAL)
Úloggerr   r   r   rÕ  Údns_backendÚ	targetdirÚinclude_secretsÚbackend_storeÚbackend_store_size)r‘   r“   Ú
get_loggerr   r   )rv   rÕ  rG   rI   rH   r   rÛ  r×  r”   rÜ  rÝ  rÞ  r   r   rÙ  s                  r%   r�   Úcmd_drs_clone_dc_database.runû  s_   € ð ×#Ñ#Ó%ˆØ×(Ñ(¨Ó,ˆà—‘¨�Ð>ˆàÑÜÐEÓFÐFä˜&°uØ Ð.>Ø&Ø!.Ø&8ó		:r4   r/   )
NNNNNFFFNN)rô   rõ   rö   r÷   rø   rù   r½   rú   rû   rü   rý   r   rh   r   rÿ   r   r�   r  r/   r4   r%   rÍ  rÍ  à  sÈ   † ÙCà,€Hð ×)Ñ)Ø×-Ñ-Ø×.Ñ.ñÐñ 	ˆz °3Ñ7Ùˆ}Ð#HÈsÑSÙˆt�Y Z¸ÑEÙÐ"Ð)GÐP\Ñ]ÙÐ  x¸Ø˜u�~ð&Ù(AÓ(CñDñ	Eñ 	Ð%¨G¸VðIñ	Jð€Mð �€Jà37Ø59Ø8=Ø37÷:r4   rÍ  c                   óÞ   • \ rS rSrSrSr\R                  \R                  \R                  S.r
\" SSSSS	S
9\" SSSS9\" SSSS9\" SSSS9\" SSSS9\" SSSS9/rS rS r    SS jrSrg)Úcmd_drs_uptodatenessi  zShow uptodateness statusz%prog [options]rF   z-Hz--URLÚURLÚHz%LDB URL for database or target server)r´  rO   rN   z-pz--partitionzrestrict to this partition)rN   rJ   rV   zPrint data in json format)rP   rN   z	--maximumz#Print maximum out-of-date-ness onlyz--medianz"Print median out-of-date-ness onlyz--fullz Print full out-of-date-ness datac                 ó,   • [         R                  " USS9$ )Nr7   r    )rM   Údumps)rv   Úpartitions_summariess     r%   Úformat_as_jsonÚ#cmd_drs_uptodateness.format_as_json(  s   € Ü�zŠzÐ.°qÑ9Ð9r4   c                 ó  • / nUR                  5        HZ  u  p4UR                  5        VVs/ s H  u  pVU< SU< 3PM     nnnU<S SSR                  U5      < 3nUR                  U5        M\     SR                  U5      $ s  snnf )Nr›  Ú15r   r™  Ú
)Úitemsr¾  rª   )	rv   rç  ÚlinesÚ	part_namerR   ÚkÚvrí  Úlines	            r%   Úformat_as_textÚ#cmd_drs_uptodateness.format_as_text+  st   € ØˆØ"6×"<Ñ"<Ö">ÑˆIØ3:·=±=´?ÔC²?©4¨1£¢AÓ&±?ˆEÑCÜ!*¨D¯I©I°eÕ,<Ð=ˆDØ�L‰L˜Öñ #?ð �y‰y˜ÓÐùó Ds   «BNc                 ó†  • UR                  5       nUR                  USS9n[        XU5      u  pïUR                  n[	        U5      u  nnU(       a  UU;   a
  UU   nUU0nO[        SU-  5      e/ nU(       a  UR                  S5        U(       a  UR                  S5        0 n0 nUR                  5        H3  u  nn[        XïUXÍ5      n[        UU5      n[        UUS9nUUU'   UUU'   M5     U(       a  U R                  U5      nO*U(       a  U R                  U5      nOU R                  U5      n[        UU R                  S9  g )NTr�   zunknown partition %sÚmaximumÚmedian)Úfilters)Úfile)r‘   r“   r   r,   r   r   rª   rí  r   r   r   rè  ró  Úprintr¤   )rv   rä  rÒ   rM   rö  r÷  ÚfullrG   rI   rH   r×  r”   r   r   Ú	local_kccÚdsasr,   Úshort_partitionsr{   Úpart_dnrø  Úpartitions_distancesrç  rï  Ú
utdv_edgesÚ	distancesrR   Úoutputs                               r%   r�   Úcmd_drs_uptodateness.run3  sL  € ð
 ×#Ñ#Ó%ˆØ×(Ñ(¨¸dÐ(ÐCˆÜ*¨1°%Ó8‰ˆ	Ø—‘ˆÜ0°Ó7ÑÐ˜!ÞØÐ,Ó,Ø*¨9Ñ5�à$-¨wÐ#7Ñ ä"Ð#9¸IÑ#EÓFÐFàˆÞØ�N‰N˜9Ô%ÞØ�N‰N˜8Ô$à!ÐØ!ÐØ"2×"8Ñ"8Ö":ÑˆI�wÜ'¨	¸À"ÓLˆJÜ*¨:°tÓ<ˆIÜ& y¸'ÑBˆGØ.7Ð  Ñ+Ø.5Ð  Ó+ñ #;ö à×(Ñ(Ð)=Ó>‰FæØ×,Ñ,Ð-AÓB‘à×,Ñ,Ð-AÓB�äˆf˜4Ÿ9™9Ó%r4   r/   )NNFFFFNNNFF)rô   rõ   rö   r÷   rø   rù   r½   rú   rû   rü   rý   r   rÿ   rè  ró  r�   r  r/   r4   r%   râ  râ    s³   † Ù"à €Hð ×)Ñ)Ø×-Ñ-Ø×.Ñ.ñÐñ 	ˆt�W e°#Ø;ñ	=áˆt�]Ø0ñ	2áˆx Ø/ñ	1áˆ{ <Ø9ñ	;áˆz ,Ø8ñ	:áˆx Ø6ñ	8ð€Mò:ò ð %)Ø:?Ø7;Ø!&÷*&r4   râ  c                   ó¨   • \ rS rSrSr0 r\" 5       \S'   \" 5       \S'   \" 5       \S'   \	" 5       \S'   \
" 5       \S'   \" 5       \S'   \" 5       \S	'   S
rg)Úcmd_drsi`  z0Directory Replication Services (DRS) management.ÚbindÚkccr   Úshowreplr½   zclone-dc-databaseÚuptodatenessr/   N)rô   rõ   rö   r÷   rø   ÚsubcommandsrM  r  r  rC   r²  rÍ  râ  r  r/   r4   r%   r  r  `  sd   † Ù:à€KÙ&›.€K�ÑÙ$›€K�ÑÙ0Ó2€K�ÑÙ.Ó0€K�
ÑÙ,Ó.€K�	ÑÙ'@Ó'B€KÐ#Ñ$Ù"6Ó"8€K�Ôr4   r  )3Úsamba.getoptÚgetoptr½   rq   Úloggingr€   r   rM   Ú
samba.authr   Úsamba.netcmdr   r   r   r	   Úsamba.netcmd.commonr
   Úsamba.samdbr   Úsambar   r   r   Úsamba.dcerpcr   r   Ú
samba.joinr   r   Úsamba.uptodatenessr   r   r   r   r   Úsamba.commonr   r   r   r-   r3   r@   rþ   rC   r  r  rM  r²  rÍ  râ  r  r/   r4   r%   Ú<module>r     sã   ðõ, Û 
Û Ý Û å %÷ó õ -Ý ß 0Ñ 0ß &Ý !Ý ÷õ õ $Ý 1òJòKò7òð $Ð ô[J�wô [Jô|A�'ô AôBc[˜ô c[ôL^G�7ô ^GôB<D�gô <Dô~+: ô +:ô\O&˜7ô O&ôd
9ˆlõ 
9r4   