
    bk                     v    d dl Z d dlZd dlmZ d dlmZ d dlmZ d dl	m
Z
mZmZ d dlmZ  G d de
          ZdS )    N)system_session)SamDB)CommandCommandErrorOption)dbcheckc                   
   e Zd ZdZdZej        ej        ej        dZ	d Z
dgZ edddd	
           eddddd           edde
d           eddddd           edddddd           eddddd            ed!d"d#d$
           ed%d&ddd'           ed(d)ddd*           ed+d,ddd-           ed.d/d0dd1           ed2d3d4ed5d67           ed8d9ddej                  gZd#d#ddddddd#d#d#d#dddddg fd:Zd#S );cmd_dbcheckz#Check local AD database for errors.z%prog [<DN>] [options])	sambaoptsversionoptscredoptsc                    |J |j         }|r|d         }|d d         dk    rt          |          dk    s-|d d         dk    r7t          |          dk    r$|d         dk    rt          |j        dd           d S t          |j        d|                                           |d= d S t          |j        dd           d S )	Nr      z--   -yesT	yes_rules)rargslensetattrvaluessplit)optionoptvalueparserr   args         6/usr/lib/python3/dist-packages/samba/netcmd/dbcheck.pyprocess_yeszcmd_dbcheck.process_yes*   s    }}} 		0(CRaRDSXX\\RaRCCHHqLLSVs]]ud33333{CIIKK@@@!HHHFM5$/////    zDN?z--scopescopeSUBz>Pass search scope that builds DN list. Options: SUB, ONE, BASE)destdefaulthelpz--fixfixF
store_truezFix any errors found)r#   r$   actionr%   z--yescallbackzrdon't confirm changes individually. Applies all as a single transaction (will not succeed if any errors are found))r(   r)   r%   z--cross-ncs	cross_ncszcross naming context boundariesz-vz	--verboseverbosezPrint more details of checking)r#   r(   r$   r%   z-qz--quietzdon't print details of checking)r(   r$   r%   z--attrsattrsNz-list of attributes to check (space separated)z	--reindexreindexzforce database re-indexz--force-modulesforce_moduleszVforce loading of Samba modules and ignore the @MODULES record (for very old databases)z--reset-well-known-aclsreset_well_known_aclszGreset ACLs on objects with well known default ACL values to the defaultz--quick-membership-checksquick_membership_checkszrSkips missing/orphaned memberOf backlinks checks, but speeds up dbcheck dramatically for domains with large groups)r#   r%   r$   r(   z-Hz--URLzFLDB URL for database or target server (defaults to local SAM database)URLH)r%   typemetavarr#   z#--selftest-check-expired-tombstones!selftest_check_expired_tombstonesc                    |
                                 }|d uo|                    d          }|r|	                    |d          }nd }|r"t          t	                      |||dg          }n8	 t          t	                      |||          }n#  t          d|z            xY w||s|}nt          t	                      d ||          }t          j        t          j        t          j	        d}|
                                }||vrt          d	|z            ||         }d
g}|r|                    d           |r|                    d           |sdg}n|                                }d}|r|r|                                 d}	 t          ||||||||||
  
        }|D ]5}t          ||          rt!          ||d           $t          d|z            |rK| j                            d           d}|                                r| j                            d           nf|rK| j                            d           d}|                                r| j                            d           n|                    ||||          }n#  |r|                                  xY w|r|                                 |dk    rt1          j        d           d S d S )NldapT)fallback_machinezmodules=samba_dsdb)session_infourlcredentialslpoptions)r9   r:   r;   r<   ztFailed to connect to DB at %s.  If this is a really old sam.ldb (before alpha9), then try again with --force-modules)r"   BASEONEzUnknown scope %szshow_deleted:1zpaged_results:1:1000zsearch_options:1:2*F)	samdb_schemar+   r&   r   quietin_transactionr0   r/   check_expired_tombstonesALLzInvalid fix rule %szRe-indexing...
r   zcompleted re-index OK
zResetting @MODULES...
zcompleted @MODULES reset OK
)DNr!   controlsr,   r   )get_loadparm
startswithget_credentialsr   r   r   ldbSCOPE_SUBTREE
SCOPE_BASESCOPE_ONELEVELupperappendr   transaction_startr   hasattrr   outfwritereindex_databasereset_modulescheck_databasetransaction_canceltransaction_commitsysexit)selfrF   r2   r+   r&   r   r*   rB   r!   r   r   r   r,   r-   r.   r0   r/   r5   r   r<   	over_ldapcredssamdbrA   	scope_mapsearch_scoperG   started_transactionchkr   error_counts                                  r   runzcmd_dbcheck.runW   s    ##%%TM:all6&:&:	 	,,R$,GGEEE 	_~'7'7Q&+=Q<RT T TEE_>+;+;*/B8 8 8_"  $Z  ]^  $^  _  _  _9I9 LL n.>.>D-2r; ; ;L  -s~cN`aa		!!1E9::: '$% 	4OO2333 	2OO0111 	"EEEKKMME# 	'3 	'##%%%"& 	%lG!s%)<2I0E3TV V VC $ G G3'' GC////&'<v'EFFF Q	 2333'')) ?IOO$=>>> Q	 9:::$$&& EIOO$CDDD "00Bl:B% 1 Q Q	" +((*** 	'$$&&&!HQKKKKK s   /B B#
DJ J()__name__
__module____qualname____doc__synopsisr=   SambaOptionsVersionOptionsCredentialsOptionsDoubletakes_optiongroupsr   
takes_argsr   strSUPPRESS_HELPtakes_optionsre    r    r   r
   r
       sY       --'H )-4 0 0 0 J 	ywT	V 	V 	VwUE,*	, 	, 	,wzK I	J 	J 	J};l5	7 	7 	7t[yu4	6 	6 	6tY|U5	7 	7 	7yw;jkkk{E,Unooo l  bz  	{  	{  	{(/FPU^j  r{  	|  	|  	|*1J$ \		3 	3 	3
 	tW#kS	2 	2 	247|(	* 	* 	*1M: T5e5$$DU$)"'.3] ] ] ] ] ]r    r
   )rK   rZ   samba.getoptgetoptr=   
samba.authr   samba.samdbr   samba.netcmdr   r   r   samba.dbcheckerr   r
   rs   r    r   <module>rz      s   & 


 



       % % % % % %               
 $ # # # # #T T T T T' T T T T Tr    