
    b                         d dl mZmZmZmZ d dlmZ d dlm	Z	 d dl
mZ d dlZd dlmZmZ d dlmZ d dlZ G d de          Z G d	 d
e          Z G d de          Z G d de          Z G d de          ZdS )    )CommandCommandErrorOptionSuperCommandN)SamDB)system_session)miscdrsuapi)drs_Replicatec                       e Zd Zd Zd ZdS )RODCExceptionc                     || _         d S )N)value)selfr   s     3/usr/lib/python3/dist-packages/samba/netcmd/rodc.py__init__zRODCException.__init__   s    


    c                 .    | j         j        d| j        S )Nz: )	__class____name__r   )r   s    r   __str__zRODCException.__str__!   s    >222DJJ??r   N)r   
__module____qualname__r   r    r   r   r   r      s7          @ @ @ @ @r   r   c                       e Zd ZdS )NamingErrorNr   r   r   r   r   r   r   r   %           Dr   r   c                       e Zd ZdS )ReplicationErrorNr   r   r   r   r    r    )   r   r   r    c                       e Zd ZdZdZej        ej        ej        dZ	 e
dde           e
dde           e
d	d
d          gZdgZd Zd ZdS )cmd_rodc_preloadzBPreload 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                    |dd         dk    r'|                     d|z  dt          j        g           }nt|                    d          dk    r$|                     |dt          j        g           }n7|                     dt          j        |          z  t          j        g 	          }t          |          d
k    rt          d|z            t          |d         d                   S )zwork out what DN they meantr      zS-z<SID=%s>zobjectclass=user)base
expressionscopeattrs=z((&(samAccountName=%s)(objectclass=user)))r-   r.   r/      zFailed to find account '%s'dn)	searchldb
SCOPE_BASEfindbinary_encodeSCOPE_SUBTREElenr   str)r   samdbaccountress       r   get_dnzcmd_rodc_preload.get_dn@   s     1Q3<4,,J$8*<%(^2  ? ?CC \\#!##,,G*<%(^2  ? ?CC ,,*TWZWhipWqWq*q%(%6b  B BCs88q==;gEFFF3q6$<   r   c                 l   |                     d          }|                     d          }|                     d          }|                     d          }|                     d          }|t          d          |yg }|dk    r7t          j        D ])}|                    |                                           *n:t          |d          D ])}|                    |                                           *|                                }	|                    |	d	
          }
t          d|z  t                      |
|	          }t          d t                      |
|	          }t          j        |                                          }d}|	                                dk    r|dz  }t          d|d|d|	|
||          }g }|D ]}|                                }|                    |t$          j        dg          }t          j        |                    d|d         d         d                             }	 |                     ||          }nJ# t,          $ r=}|st/          t1          |                    |                    |           Y d }~d }~ww xY w| j                            d|z             |                                 	 |                    |||t:          j        d	           ne# t          $ rX}|                                 |st/          d|z            |                    tA          d|z                       Y d }~d }~ww xY w|!                                 tE          |          dk    r2| #                    d           |D ]}| #                    d|z             d S d S )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)r,   r.   r/   
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_dsServiceNamer3   r4   r5   schema_format_valuer>   r   r   r:   outfwritetransaction_start	replicater
   DRSUAPI_EXOP_REPL_SECRETtransaction_cancelr    transaction_commitr9   message)r   accountskwargsr#   r%   r@   accounts_filerB   linerI   credsr;   local_samdbdestination_dsa_guidbinding_optionsreplerrorsr<   
dc_ntds_dnr=   source_dsa_invocation_idr2   eerrors                           r   runzcmd_rodc_preload.runS   s   JJ{++	::j))H%%

6**

?33>6777$H##I 2 2DOODJJLL11112 !44 2 2DOODJJLL1111##%%((d(CC +.#1#3#3"'B0 0 0 >3C3C(-"6 6 6  $y)B)B)D)DEE <<>>Qx'O}fffoooN(*>@ @  	- 	-G0022J,,Jcn^L\,]]C'+y1P1PQ]_bcd_eft_uvw_x1y1y'z'z$[[00    $ /&s1vv...a   	 IOO1B6777))+++r#;=Q$+$D4  Q Q Q Q   ..000$ G&'@2'EFFF./H2/MNNOOO **,,,,v;;??LLCDDD / /X-.... ?/ /s1   :I
J3JJ$K22
M<AMMN)r   r   r   __doc__synopsisoptionsSambaOptionsVersionOptionsCredentialsOptionstakes_optiongroupsr   r:   takes_options
takes_argsr>   rv   r   r   r   r"   r"   -   s        LL@H )-.  	z#666x\cfggg 'enz{{{M J! ! !&I/ I/ I/ I/ I/r   r"   c                   0    e Zd ZdZi Z e            ed<   dS )cmd_rodcz.Read-Only Domain Controller (RODC) management.preloadN)r   r   r   rw   subcommandsr"   r   r   r   r   r      s.        88K--//K	r   r   )samba.netcmdr   r   r   r   samba.getoptgetoptry   samba.samdbr   
samba.authr   r4   samba.dcerpcr	   r
   samba.drs_utilsr   rT   rS   r   r   r    r"   r   r   r   r   <module>r      s  & E D D D D D D D D D D D             % % % % % % 



 & & & & & & & & ) ) ) ) ) ) 



@ @ @ @ @I @ @ @	 	 	 	 	- 	 	 		 	 	 	 	} 	 	 	o/ o/ o/ o/ o/w o/ o/ o/d0 0 0 0 0| 0 0 0 0 0r   