
    g                         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  S SKrS SKJrJr  S SKJr  S SKr " S S\5      r " S	 S
\5      r " S S\5      r " S S\5      r " S S\5      rg)    )CommandCommandErrorOptionSuperCommandN)SamDB)system_session)miscdrsuapi)drs_Replicatec                        \ rS rSrS rS rSrg)RODCException   c                     Xl         g )Nvalue)selfr   s     3/usr/lib/python3/dist-packages/samba/netcmd/rodc.py__init__RODCException.__init__   s    
    c                 P    U R                   R                  < SU R                  < 3$ )Nz: )	__class____name__r   )r   s    r   __str__RODCException.__str__!   s    >>22DJJ??r   r   N)r   
__module____qualname____firstlineno__r   r   __static_attributes__ r   r   r   r      s    @r   r   c                       \ rS rSrSrg)NamingError%   r    Nr   r   r   r   r   r    r   r   r"   r"   %       r   r"   c                       \ rS rSrSrg)ReplicationError)   r    Nr$   r    r   r   r'   r'   )   r%   r   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9/rS/rS rS rSrg)cmd_rodc_preload-   zBPreload accounts for an RODC.  Multiple accounts may be requested.z/%prog (<SID>|<DN>|<accountname>)+ ... [options])	sambaoptsversionoptscredoptsz--serverz	DC to use)helptypez--filez<Read account list from a file, or - for stdin (one per line)z--ignore-errorsz<When preloading multiple accounts, skip any failing accounts
store_true)r/   actionzaccount*c                    USS S:X  a$  UR                  SU-  S[        R                  / S9nOlUR                  S5      S:  a!  UR                  US[        R                  / S9nO6UR                  S[        R                  " U5      -  [        R
                  / S	9n[        U5      S
:w  a  [        SU-  5      e[        US   S   5      $ )zwork out what DN they meantr      zS-z<SID=%s>zobjectclass=user)base
expressionscopeattrs=z((&(samAccountName=%s)(objectclass=user)))r6   r7   r8      zFailed to find account '%s'dn)	searchldb
SCOPE_BASEfindbinary_encodeSCOPE_SUBTREElenr"   str)r   samdbaccountress       r   get_dncmd_rodc_preload.get_dn@   s     1Q<4,,J$8*<%(^^2  ?C \\#!#,,G*<%(^^2  ?C ,,*TWZWhWhipWq*q%(%6%6b  BCs8q=;gEFF3q6$<  r   c           	      d   UR                  S5      nUR                  S5      nUR                  S5      nUR                  S5      nUR                  S5      nUc  [        S5      eUbq  / nUS:X  a7  [        R                   H"  nUR	                  UR                  5       5        M$     O2[        US5       H"  nUR	                  UR                  5       5        M$     UR                  5       n	UR                  U	S	S
9n
[        SU-  [        5       XS9n[        S [        5       XS9n[        R                  " UR                  5       5      nSnU	R                  5       S:  a  US-  n[        SU< SU< S3XX5      n/ nU H  nUR!                  5       nUR#                  U[$        R&                  S/S9n[        R                  " UR)                  SUS   S   S   5      5      n U R+                  UU5      nU R2                  R5                  SU-  5        UR7                  5          UR9                  UUU[:        R<                  S	S9  URC                  5         M     [E        U5      S:  a/  U RG                  S5        U H  nU RG                  SU-  5        M     g g ! [,         a8  nU(       d  [/        [1        U5      5      eUR	                  U5         S nAGMU  S nAff = f! [         aN  nUR?                  5         U(       d  [/        SU-  5      eUR	                  [A        SU-  5      5         S nAGM  S nAff = f)Nr,   r.   serverfileignore_errorszYou must supply a server-rT)fallback_machinez	ldap://%s)urlsession_infocredentialslpseal	   z,printzncacn_ip_tcp:[]invocationId)r5   r7   r8   
objectGUIDr   zReplicating DN %s
)exoprodczError replicating DN %sz'
Preload encountered problematic users:z    %s)$get	Exceptionsysstdinappendstripopenget_loadparmget_credentialsr   r   r	   GUIDget_ntds_GUID	log_levelr   get_dsServiceNamer<   r=   r>   schema_format_valuerG   r   r   rC   outfwritetransaction_start	replicater
   DRSUAPI_EXOP_REPL_SECRETtransaction_cancelr'   transaction_commitrB   message)r   accountskwargsr,   r.   rJ   accounts_filerL   linerS   credsrD   local_samdbdestination_dsa_guidbinding_optionsreplerrorsrE   
dc_ntds_dnrF   source_dsa_invocation_idr;   eerrors                           r   runcmd_rodc_preload.runS   s   JJ{+	::j)H%

6*

?3>677$H#IIDOODJJL1 & !4DOODJJL1 5 ##%((d(C +.#1#3"'0 >3C(-6  $yy)B)B)DE <<>Qx'OfoN(@ G002J,,Jcnn^L\,]C'+yy1P1PQ]_bcd_eft_uvw_x1y'z$[[0 IIOO1B67))+r#;=Q$+$D$D4  Q **,7  : v;?LLCDX-.   + ! $&s1v..a 	  ..0$&'@2'EFF./H2/MNOs1   J!K
K,KK
L/!AL**L/r    N)r   r   r   r   __doc__synopsisoptionsSambaOptionsVersionOptionsCredentialsOptionstakes_optiongroupsr   rC   takes_options
takes_argsrG   r   r   r    r   r   r*   r*   -   su    L@H ))--.. 	z#6x\cfg 'enz{M J!&I/r   r*   c                   0    \ rS rSrSr0 r\" 5       \S'   Srg)cmd_rodc   z.Read-Only Domain Controller (RODC) management.preloadr    N)r   r   r   r   r   subcommandsr*   r   r    r   r   r   r      s    8K-/K	r   r   )samba.netcmdr   r   r   r   samba.getoptgetoptr   samba.samdbr   
samba.authr   r=   samba.dcerpcr	   r
   samba.drs_utilsr   r^   r]   r   r"   r'   r*   r   r    r   r   <module>r      sd   & E D   % 
 & ) 
@I @	- 		} 	o/w o/d0| 0r   