
    bk                        d dl mZmZ d dlZd dlZd dlZd dlmZmZm	Z	m
Z
mZ d dlZd dlmZ d dlmZ d dl mZmZ d dlmZ d dlZd dl mZ d d	lmZ d
 Z G d de
          Z G d de          Z G d de          Z G d de          ZdS )    )	provisionparamN)env_loadparmcreate_test_ouBlackboxProcessErrorBlackboxTestCaseconnect_samdb)SamDB)system_session)Ldbdn_from_dns_name)get_fsmo_roleowner)sites)_dsdb_load_udv_v2c                     t          | t                      |          }|                    dg dt          j        d          S )N)session_infolpzCN=Primary Domains)objectClasssamAccountNamesecretzmsDS-KeyVersionNumberz(objectClass=kerberosSecret))baseattrsscope
expression)r   r   searchldbSCOPE_SUBTREE)secrets_pathr   secrets_ldbs      ;/usr/lib/python3/dist-packages/samba/tests/domain_backup.pyget_prim_domr!   !   sZ    l1A1AbIIIK#7%H %H %H$'$5)G	  I I I    c                        e Zd Z fdZd Zd Zd Zd ZddZd Z	d	 Z
ddZd Zd Zd Zd Zd Zd ZddZd Zd Zd Zd Zd ZddZddZ xZS )DomainBackupBasec                    t          t          |                                            t          j        d         }dt          j        d         dt          j        d         | _        t          d|z            | _        d| _        |	                                | _
        d | _        dd	g| _        t          j        d
         | _        t          j        d         | _        d | _        d S )N	DC_SERVERz-UDC_USERNAMEz%DC_PASSWORDz	ldap://%s
BACKUPSERVsidForRestore
backupDateDOMAINREALM)superr$   setUposenviron	user_authr	   r   
new_serverupperserverbase_cmdbackup_markersrestore_domainrestore_realmbackend)selfr5   	__class__s     r    r/   zDomainBackupBase.setUp2   s    %%++---K(')z-'@'@'@')z-'@'@B !v!566&llnn.= j2Z0r"   c                 <    || _         | xj        d|z   gz  c_        dS )z8Explicitly set the DB backend that the backup should usez--backend-store=N)r:   r6   )r;   r:   s     r    use_backendzDomainBackupBase.use_backendC   s&    ,w677r"   c                 n    t          |                                          }d|z  }||d|z  d|z  d|z  gS )NzCN=Configuration,%szCN=Schema,%szDC=DomainDnsZones,%szDC=ForestDnsZones,%s)strget_default_basedn)r;   samdbbasedn	config_dns       r    get_expected_partitionsz(DomainBackupBase.get_expected_partitionsH   sK    U--//00)F2		>I#=&/&/1 	1r"   c           	         |                     dt          j        dg          }d |d                             d          D             }|                     |          }|D ],}|                     ||v |dt          |                     -dS )z?Asserts all expected partitions are present in the backup samdb namingContextsr   r   r   c                 ,    g | ]}t          |          S  r@   ).0rs     r    
<listcomp>z>DomainBackupBase.assert_partitions_present.<locals>.<listcomp>S   s    CCCc!ffCCCr"   r   z not in N)r   r   
SCOPE_BASEgetrE   
assertTruer@   )r;   rB   res
actual_ncsexpected_ncsncs         r    assert_partitions_presentz*DomainBackupBase.assert_partitions_presentO   s    ll#."2!3  5 5CCc!fjj1A&B&BCCC
33E:: 	D 	DBOOB*,.0bb#j///BD D D D	D 	Dr"   c                     | j                                         }|                     |          }|D ]I}d}t          ||          D ]}|t	          |j                  k    rd} n|                     |d           JdS )z>Asserts an replUpToDateVector entry exists for the original DCFTz"Couldn't find UDTV for original DCN)r   get_invocation_idrE   r   r@   source_dsa_invocation_idrR   )r;   rB   orig_invoc_idrU   rV   foundcursors          r    assert_repl_uptodate_vectorz,DomainBackupBase.assert_repl_uptodate_vector[   s    224433E::  	I 	IBE+E266   C(G$H$HHH EE I OOE#GHHHH	I 	Ir"   Nc                 6   d}|                     |                                t          j        |          }d}|D ]}|t	          |j                  v rd}|                     |d|z             |r(|                     t          |          |k               dS dS )z=Checks that the expected server is present in the restored DBz*(&(objectClass=Server)(serverReference=*))r   r   FTzCould not find %s serverN)r   get_config_basednr   r   r@   dnrR   len)r;   rB   expected_serverexpected_countsearch_exprrS   server_foundmsgs           r    assert_dcs_presentz#DomainBackupBase.assert_dcs_presenti   s    Bll52244!$!2&1  3 3  	$ 	$C#cf++--#2_D	F 	F 	F  	8OOCHH677777	8 	8r"   c                     t           j                            | j        d          }t           j                            |          s4t          j        |           |                     t          j        |           |S )Ntree)	r0   pathjointempdirexistsmkdir
addCleanupshutilrmtree)r;   extract_dirs     r    restore_dirzDomainBackupBase.restore_dirz   s[    gll4<88w~~k** 	8H[!!!OOFM;777r"   c                     |                                  }t          j        |          5 }|                    |           ddd           dS # 1 swxY w Y   dS )z@Untar the backup file's raw contents (i.e. not a proper restore)N)ru   tarfileopen
extractall)r;   backup_filert   tfs       r    untar_backupzDomainBackupBase.untar_backup   s    &&((\+&& 	'"MM+&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's   AAAr   c                 V   |                                  }|                     |           t          j                            |                                 d          }t          j                            |d          }t                      }t          |t                      |          }|	                    t          j        |d          t          j        | j                  }|                     t          |          d           | j        D ]4}|                     |d                             |          d|z             5t          j                            |d	          }	t%          |	|          }|                     t          |          |           |                     |           d
S )z@Creates a backup, untars the raw files, and sanity-checks the DBprivatezsam.ldb)urlr   r   @SAMBA_DSDBrI      r   z%s backup marker missingzsecrets.ldbN)create_backupr|   r0   rl   rm   ru   r   r
   r   r   r   DnrP   r7   assertEqualrc   assertIsNotNonerQ   r!   rW   )
r;   primary_domain_secretsrz   private_dir
samdb_pathr   rB   rS   markerr   s
             r    _test_backup_untarz#DomainBackupBase._test_backup_untar   s   ((**+&&&gll4#3#3#5#5yAAW\\+y99
^^*>3C3CKKK llum < <!$!%!4  6 6 	S1%%%) 	F 	FF  QF!3!3!;f!DF F F F
 w||K??<,,S#9::: 	&&u-----r"   c                     |                                  }|                     |           |                                 }|                     |           dS )z?Does a backup/restore, with specific checks of the resulting DBNr   restore_backupcheck_restored_smbconfcheck_restored_databaser;   rz   r   s      r    _test_backup_restorez%DomainBackupBase._test_backup_restore   sR    ((**K(((((**$$R(((((r"   c                     |                      dg          }|                     |           |                                 }|                     |d           dS )zADoes a backup/restore with secrets excluded from the resulting DBz--no-secrets)
extra_argsFexpect_secretsNr   r   s      r    _test_backup_restore_no_secretsz0DomainBackupBase._test_backup_restore_no_secrets   sc     ((^4D(EEK(((((** 	$$R$>>>>>r"   c                    d}t          j        | j        | j                                        |           |                     t           j        | j        | j                                        |           |                                 }|                     |d|z   g           |                                 }| 	                    |          }d
                    ||                                          }d
                    | j                  }|                    |t          j        |          }|                     t          |          dk    d           dS )	z2Does a backup and restores into a non-default sitezTest-Site-For-Backupsz--site=zCN={0},CN=Sites,{1}z(&(objectClass=server)(cn={0}))r`   r   z Failed to find new DC under siteN)r   create_siter   ra   rq   delete_siter   r   r   r   formatr3   r   r   rR   rc   )r;   sitenamerz   r   restored_ldbsite_dnmatch_serverrS   s           r    _test_backup_restore_into_sitez/DomainBackupBase._test_backup_restore_into_site   sJ    +$(DH$>$>$@$@(KKK)482244h	@ 	@ 	@ ((**K)h*>)?@@@((**33B77 (..x/;/M/M/O/OQ Q8??PP!!'1B-9 " ; ;CA:	< 	< 	< 	< 	<r"   c                 j   t           j        d         }t          j        |          }|                                D ]\  }}|                    ||           t           j                            | j        d          }|	                    d|           | 
                    t           j        |           |S )z9Creates a very basic smb.conf to pass to the restore toolSMB_CONF_PATHfilename_for_non_global_lpsmb.confF)r0   r1   r   LoadParmitemssetrl   rm   rn   dumprq   remove)r;   settingstestenv_conflocal_lpkeyvalnew_smbconfs          r    create_smbconfzDomainBackupBase.create_smbconf   s     z/2>\JJJ !(( 	# 	#HCLLc""""gll4<<<e[)))	;///r"   c                    |                                  }ddddd}ddd}|                    |           |                     |          }|                     |d	|z   g           |                                 }|                     |           |                                D ]V\  }}|                     t          |	                    |                    |d
|d|	                    |          d           WdS )z9Checks smb.conf values passed to the restore are retainedz/var/runFOOBARNOTMYDOMAINzNOT.MY.REALM)state directorynetbios name	workgrouprealm2757)zdrs: max link synczprefork childrenz--configfile='z' was 'z' in smb.confN)
r   updater   r   r   r   r   r   r@   rQ   )r;   rz   r   assert_settingssmbconfr   r   r   s           r    _test_backup_restore_with_confz/DomainBackupBase._test_backup_restore_with_conf   s-   ((**
 (2$,!.+- - 27/24 4(((%%h//K/G*C)DEEE ((**$$R((( (--// 	O 	OHCS--ss<?CCMO O O O	O 	Or"   c                 :   t           j                            |                                 dd          }t	          j        |          }|                     |                    d          | j                   |                     |                    d          | j	                   |                     |                    d          | j
                                                   t           j                            |                                 d          }|                     |                    d          |           t           j                            |                                 d	          }|                     |                    d
          |           |S )z=Sanity-check important smb.conf values are restored correctlyetcr   r   r   r   r   r~   zprivate dirstater   )r0   rl   rm   ru   r   r   r   rQ   r3   r8   r9   r4   )r;   r   bkp_lpr   	state_dirs        r    r   z'DomainBackupBase.check_restored_smbconf   s?   ',,t//115*EE7CCCN33T_EEEK00$2EFFFG,,d.@.F.F.H.HIII gll4#3#3#5#5yAAM22K@@@GLL!1!1!3!3W==	$566	BBBr"   Tc                 .   t          j        ||                    d                    }t          |j        |          }|                     t          |          d           |d                             d          }|                     |           |                     t          |d                   | j	        dz              |                     |d                             d                     t          |j        t                      ||                                           }|                    t          j        |d          t          j        | j        	          }|                     t          |          d           | j        D ]4}|                     |d                             |          d
|z             5|                    |                                t          j        ddg	          }|                     t          |          d           |                     |d                             d                     |                     |d                             d                     |                    |                                t          j        ddg	          }|                     t          |          d           |                     |d                             d                     |                     |d                             d                     | j        rf|                    dt          j        dg	          }t          |d                             d                    }	|                     |	| j                   |                     |           |                     || j	        d           |                     || j	        | j                   |                     ||           |                     |           |S )Nr   r   r   r   $r   )r   r   r   credentialsr   rI   z%s backup-marker left behindrepsFromrepsToz
@PARTITIONbackendStore)re   r   )r   provision_paths_from_lprQ   r!   secretsr   rc   r   r@   r3   r
   rB   r   get_credentialsr   r   r   rP   r7   assertIsNonerA   ra   r:   rW   ri   assert_fsmo_rolesr5   assert_secretsr^   )
r;   r   r   pathsbkp_pdacnrB   rS   r   r:   s
             r    r   z(DomainBackupBase.check_restored_database  s   1&&**W:M:MNNemV44Va(((Qimm,--S!!!SVdo&;<<<VAY]]844555%+N4D4DT-A-A-C-CE E E llum < <!$!%!4  6 6 	S1%%%) 	G 	GFc!fjj00<vEG G G G
 ll 8 8 : :!$",h!7  9 9 	S1%%%#a&**Z00111#a&**X..///ll 7 7 9 9!$",h!7  9 9 	S1%%%#a&**Z00111#a&**X../// < 	4,,L&4%5  7 7C#a&**^4455GWdl333 	&&u---tqIIIudot{CCCE.AAA 	((///r"   c                     t          |                                          }d|d|}|r+|                     |                    d|                     dS |                     t
          |j        d|           dS )z8Asserts that a user has/doesn't have secrets as expectedCN=z
,CN=users,
unicodePwdN)r@   rA   r   	searchoneassertRaisesKeyError)r;   rB   usernamer   rC   user_dns         r    assert_user_secretsz$DomainBackupBase.assert_user_secretsF  s    U--//00)166: 	P  w!G!GHHHHH hwOOOOOr"   c                 F    g d}|D ]}|                      |||           dS )z?Check the user secrets in the restored DB match what's expected)alicebobjaneN)r   )r;   rB   r   
test_usersusers        r    r   zDomainBackupBase.assert_secretsR  sG     .--
 	B 	BD$$UD.AAAA	B 	Br"   c                    |                                 }t          |                                          }d|z   d|                                z  t	          |                                          d|z   |d|z   d|z   d}|                                D ]\  }}t          |t          j	        ||          |          }	| 
                    d                    |          |	                                v d|d	|           | 
                    d                    |          |	                                v|d
|d           dS )z2Asserts the expected server is the FSMO role ownerzCN=Infrastructure,zCN=Partitions,%szCN=RID Manager$,CN=System,z$CN=Infrastructure,DC=DomainDnsZones,z$CN=Infrastructure,DC=ForestDnsZones,)infrastructurenamingschemaridpdc	domaindns	forestdnszCN={0},z	Expected z to own FSMO role z found as FSMO z role ownerN)	domain_dnr   forest_dns_namera   r@   get_schema_basednr   r   r   r   rR   r   extended_str)
r;   rB   r5   exclude_serverr   	forest_dnfsmosrolerb   owners
             r    r   z"DomainBackupBase.assert_fsmo_rolesZ  sl   OO%%	$U%:%:%<%<==	#7)#C-0G0G0I0IIu6688994y@!;iG;iGI I  	O 	OHD"&ucfUB.?.?FFEOOI,,V448J8J8L8LLLAGNP P POOI,,^<<#(#5#5#7#78@FMO O O O		O 	Or"   c                     t          j        | j                  D ];}t           j                            | j        |          }t          j        |           <d S N)r0   listdirrn   rl   rm   rr   rs   )r;   filenamefilepaths      r    cleanup_tempdirz DomainBackupBase.cleanup_tempdiro  sQ    
4<00 	$ 	$Hw||DL(;;HM(####	$ 	$r"   c                 ,   d                     |          }t          d|z             	 |                     d|z             }nC# t          $ r6}|                                  |                     d|z             Y d}~nd}~ww xY wt          |           dS )z,Executes a samba-tool backup/restore command zExecuting: samba-tool %szsamba-tool zError calling samba-tool: %sN)rm   printcheck_outputr   r   fail)r;   argscmdoutes        r    run_cmdzDomainBackupBase.run_cmdt  s     hhtnn(3.///	:##MC$788CC# 	: 	: 	:   """II4q899999999	: 	c




s   A 
B,A==Bc                 "   | j         d| j        z   gz   }|r||z  }|                     |           g }t          j        | j                  D ]A}|                    d          r*|                    d          r|                    |           B|                     t          |          dk    dt          |          z             t          j
                            | j        |d                   }|                     t          j        |           |S )z?Runs the backup cmd to produce a backup file for the testenv DC--targetdir=zsamba-backup-z.tar.bz2r   z"Domain backup created %u tar filesr   )r6   rn   r  r0   r   
startswithendswithappendrR   rc   rl   rm   rq   r   )r;   r   r   	tar_filesfnrz   s         r    r   zDomainBackupBase.create_backup  s	    } =>> 	JDT 	*T\** 	% 	%Bo.. %2;;z3J3J %  $$$I!+<s9~~M	O 	O 	O gll4<1>>	;///r"   c                 R   |                                  }dddd|z   d|z   d| j        z   g}|r||z  }|                     |           |                     | j                   |                     | j        | j                   |                     | j        | j        | j                   dS )z6Restores the samba directory files from a given backupdomainbackuprestorez--backup-file=r  z--newservername=N)ru   r3   r  rW   r   ri   r5   r   )r;   rz   r   rt   r   s        r    r   zDomainBackupBase.restore_backup  s     &&(((I/?+/M,"T_46  	JDT 	&&tx000$+666txdoFFFFFr"   r   )r   T)__name__
__module____qualname__r/   r>   rE   rW   r^   ri   ru   r|   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   __classcell__r<   s   @r    r$   r$   0   s           "8 8 8
1 1 1
D 
D 
DI I I8 8 8 8"  ' ' '. . . .8) ) )	? 	? 	?< < <4  *O O O6   5 5 5 5n
P 
P 
PB B BO O O*$ $ $
      .G G G G G G G Gr"   r$   c                   <     e Zd Z fdZd Zd Zd Zd Zd Z xZ	S )DomainBackupOnlinec                     t          t          |                                            dddd| j        z   | j        g| _        d S )Nr  r  online	--server=)r.   r  r/   r5   r2   r6   r;   r<   s    r    r/   zDomainBackupOnline.setUp  sC     $''--///!8X$t{2DNDr"   c                 .    |                                   d S r   r   r;   s    r    test_backup_untarz$DomainBackupOnline.test_backup_untar      !!!!!r"   c                 X    |                      d           |                                  d S Ntdbr>   r   r  s    r    test_backup_restorez&DomainBackupOnline.test_backup_restore  .    !!#####r"   c                 X    |                      d           |                                  d S Nmdbr>   r   r  s    r    test_backup_restore_with_confz0DomainBackupOnline.test_backup_restore_with_conf  .    ++-----r"   c                 X    |                      d           |                                  d S r   r>   r   r  s    r    test_backup_restore_no_secretsz1DomainBackupOnline.test_backup_restore_no_secrets  .    ,,.....r"   c                 X    |                      d           |                                  d S r&  r>   r   r  s    r    test_backup_restore_into_sitez0DomainBackupOnline.test_backup_restore_into_site  r*  r"   )
r  r  r  r/   r  r#  r)  r-  r1  r  r  s   @r    r  r    s        D D D D D" " "$ $ $. . ./ / /. . . . . . .r"   r  c                   Z     e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd fd	Z xZS )DomainBackupRenamec                     t          t          |                                            d| _        d| _        d| _        d| _        ddd| j        | j        d| j        z   | j        g| _	        | xj
        d	gz  c_
        d S )
N
RENAMESERV	NEWDOMAINzrename.test.netzDC=rename,DC=test,DC=netr  r  renamer  backupRename)r.   r3  r/   r3   r8   r9   
new_basednr5   r2   r6   r7   r  s    r    r/   zDomainBackupRename.setUp  s     $''--///&).4!8Xt7J+[4;-F) 	//r"   c                 .    |                                   d S r   r  r  s    r    r  z$DomainBackupRename.test_backup_untar  r  r"   c                 X    |                      d           |                                  d S r&  r"  r  s    r    r#  z&DomainBackupRename.test_backup_restore  r$  r"   c                 X    |                      d           |                                  d S r   r(  r  s    r    r)  z0DomainBackupRename.test_backup_restore_with_conf  r*  r"   c                 X    |                      d           |                                  d S r&  r,  r  s    r    r-  z1DomainBackupRename.test_backup_restore_no_secrets  r.  r"   c                 X    |                      d           |                                  d S r   r0  r  s    r    r1  z0DomainBackupRename.test_backup_restore_into_site  r*  r"   c                 B   d}d                     || j        t          j        d                   }|                     t
          | j        |           d                     |t          j        d         | j                  }|                     t
          | j        |           dS )z:Checks that rename commands with invalid args are rejectedz samba-tool domain backup rename z{cmd} {domain} {realm}r-   )r   r  r   r,   N)r   r8   r0   r1   r   r   r   r9   )r;   
rename_cmdbad_cmds      r    test_backup_invalid_argsz+DomainBackupRename.test_backup_invalid_args  s     8
*11j9=9L8:
78K 2 M M 	.0A7KKK +11j9;H9M8<8J 2 L L 	.0A7KKKKKr"   c                     t          j                    }t          j        | j         |          |_        t          j        |t           j        |          ||<   | j                             |           d S r   )r   Messager   rb   MessageElementFLAG_MOD_ADDmodify)r;   attrsourcetargetms        r    add_linkzDomainBackupRename.add_link  sW    KMMvdh''$VS-=tDD$r"   c                 "   t          | j        d          }|                     | j        j        |dg           d|z  }| j                            |dd           d|z  }| j                            |dd           d}|                     |||           d	t          | j                                                  z  }| j                            |d
d           |                     | j        j        |           |                     |||           |                                 }| 	                    |           | 
                                }|                     |          }t          | j                                                  }	t          j        |	dz   | j        |          }
t          j        |	dz   | j        |          }t          j        |	dz   | j        |          }|                    |t          j        |g          }|                     t'          |          dd           |                     ||d         v d           d |d         |         D             }|                     |
|v            |                     ||v            dS )z:Sanity-check that a rename handles one-way links correctlyrename_testztree_delete:1zCN=link_src,%smsExchConfigurationContainer)rb   objectclasszOU=link_tgt,%sorganizationalunitaddressBookRoots2z?CN=testrename,CN=Servers,CN=Default-First-Site-Name,CN=Sites,%sr5   r   rI   r   z)Failed to find renamed link source objectr   zMissing link attributec                 ,    g | ]}t          |          S rK   rL   )rM   xs     r    rO   z9DomainBackupRename.test_one_way_links.<locals>.<listcomp>,  s    999!s1vv999r"   N)r   r   rq   deleteaddrL  r@   ra   r   r   r   r   rA   resubr9  r   rP   r   rc   rR   )r;   test_ousrc_dn	target_dn	link_attr	server_dnrz   r   r   
old_basednnew_target_dn
new_src_dnnew_server_dnrS   link_valuess                  r    test_one_way_linksz%DomainBackupRename.test_one_way_links  s   
 !=99?2CDDD "G+F%CE E 	F 	F 	F$w.	I6JKKLLL'	i333#%()C)C)E)E%F%FG	Ih??@@@333i333 ((**K(((((**33B77 446677
zC/)LLVJ,dovFF
zC/)LL !!z)2 " 5 5S1D	F 	F 	F	SV+-EFFF99s1vi'89994555455555r"   Tc                    t          t          |           }|                    ||          }t          |                                          }|                     || j                   |                                }t          j	        t          |                    }|
                    |t          j        ddgd|z            }|                     t          |          dd           |                     t          |d                             d                    | j                   |                     t          |d                             d                    | j                   | j        }	d| j        d	| j        }
|
                    |
t          j        d
g          }|                     t          |          dd           | j                                        d|	}|                     t          |d                             d
                    |           d|	d|}
|
                    |
t          j                  }|                     t          |          dd           |                                                                }d|	d|}
|
                    |
t          j                  }|                     t          |          dd           |S )NnETBIOSNamecnz	ncName=%s)r   r   r   r   r   z*Looking up partition's NetBIOS name failedr   r   z,OU=Domain Controllers,dNSHostNamerI   z&Looking up new DC's dnsHostname failed.zDC=z#,CN=MicrosoftDNS,DC=DomainDnsZones,)r   r   z&Lookup of new domain's DNS zone failedz
DC=_msdcs.z#,CN=MicrosoftDNS,DC=ForestDnsZones,)r.   r3  r   r@   rA   r   r9  get_partitions_dnr   binary_encoder   SCOPE_ONELEVELrc   rQ   r8   r9   r3   rP   lowerget_root_basednget_linearized)r;   r   r   common_testrB   rC   partitions_dnnc_namerS   r   rb   expected_valforestdnr<   s                r    r   z*DomainBackupRename.check_restored_database1  s   .5533BGG U--//00111 //11#CKK00llS5G"/!6&1G&;  = = 	S1E	G 	G 	GSVZZ66779LMMMSVZZ--..0CDDD "1515Bll#."/  2 2S1A	C 	C 	C"&/"7"7"9"9"9"955ASVZZ6677FFFF >CUUFFKll#.l99S1&NOOO((**99;;DIEEDLHNll#.l99S1&NOOOr"   r  )r  r  r  r/   r  r#  r)  r-  r1  rB  rL  rc  r   r  r  s   @r    r3  r3    s        	0 	0 	0 	0 	0" " "$ $ $. . ./ / /. . .L L L   -6 -6 -6`) ) ) ) ) ) ) ) ) )r"   r3  c                   6     e Zd Z fdZd Zd Zd Zd Z xZS )DomainBackupOfflinec                 h    t          t          |                                            g d| _        d S )N)r  r  offline)r.   ru  r/   r6   r  s    r    r/   zDomainBackupOffline.setUp_  s1    !4((..000777r"   c                 2    |                      d           d S )Nr   )r   r  r  s    r    r  z%DomainBackupOffline.test_backup_untarc  s    q99999r"   c                 .    |                                   d S r   )r   r  s    r    r)  z1DomainBackupOffline.test_backup_restore_with_conff      ++-----r"   c                 .    |                                   d S r   )r   r  s    r    r#  z'DomainBackupOffline.test_backup_restorei  s    !!#####r"   c                 .    |                                   d S r   )r   r  s    r    r1  z1DomainBackupOffline.test_backup_restore_into_sitel  rz  r"   )	r  r  r  r/   r  r)  r#  r1  r  r  s   @r    ru  ru  ]  st        8 8 8 8 8: : :. . .$ $ $. . . . . . .r"   ru  )sambar   r   rw   r0   rr   samba.testsr   r   r   r   r	   r   samba.samdbr
   
samba.authr   r   r   samba.netcmd.fsmor   rW  r   
samba.dsdbr   r!   r$   r  r3  ru  rK   r"   r    <module>r     s  " # " " " " " " "  				 : : : : : : : : : : : : : : 



       % % % % % % ' ' ' ' ' ' ' ' 0 0 0 0 0 0 				       ( ( ( ( ( (I I IzG zG zG zG zG' zG zG zGz. . . . .) . . .8Q Q Q Q Q) Q Q Qh. . . . .* . . . . .r"   