HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/samba/tests/__pycache__/domain_backup_offline.cpython-310.pyc
o

�/a(�@s�ddlZddlZddlZddlZddlmZmZddlmZddl	m
Z
ddlmZddl
mZddlmZGdd	�d	e�ZdS)
�N)�BlackboxTestCase�BlackboxProcessError)�CommandError)�LoadParm)�join_DC)�Credentials)�get_samba_loggerc@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zgfdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+S),�DomainBackupOfflineCmpcC�|�d�dS�N�tdb��nested_testcase��self�r�C/usr/lib/python3/dist-packages/samba/tests/domain_backup_offline.py�%test_domain_backup_offline_nested_tdb&�z<DomainBackupOfflineCmp.test_domain_backup_offline_nested_tdbcCr
�N�mdbr
rrrr�%test_domain_backup_offline_nested_mdb)rz<DomainBackupOfflineCmp.test_domain_backup_offline_nested_mdbc	Cs�|�|�|_d|_tj�|jd�}tj�|jdd�}t�||�tj�|jdd�}t|d�}|�	d|�|�
d|�|�|j�}t�
|�}|��}|�t|�tt	|���dS)N�private�state�etczsmb.conf)�filename_for_non_global_lpzprivate dirF)�	provision�prov_dir�extract_dir�os�path�join�shutil�mover�set�dump�backup�tarfile�open�getnames�assertEqual�len)	r�backend�src�dst�smbconf�lp�backup_file�tf�namesrrrr,s

z&DomainBackupOfflineCmp.nested_testcasecCr
r��join_restore_testcaserrrr�+test_domain_backup_offline_join_restore_tdbDrzBDomainBackupOfflineCmp.test_domain_backup_offline_join_restore_tdbcCr
rr4rrrr�+test_domain_backup_offline_join_restore_mdbGrzBDomainBackupOfflineCmp.test_domain_backup_offline_join_restore_mdbc
Csb|�|�|_d|_z|�|j�}Wnty(}z|�|�WYd}~nd}~ww|�|�|_dS�N)r!rrr&r�fail�restore)rr,r1�errrr5Js��z,DomainBackupOfflineCmp.join_restore_testcasecCr
r��hard_link_testcaserrrr�(test_domain_backup_offline_hard_link_tdbUrz?DomainBackupOfflineCmp.test_domain_backup_offline_hard_link_tdbcCr
rr<rrrr�(test_domain_backup_offline_hard_link_mdbXrz?DomainBackupOfflineCmp.test_domain_backup_offline_hard_link_mdbc	Cs�|�|�|_d|_t�tj�|jdd�tj�|jdd��|�|j�}tj	|j
d�|_t�|�}|�
|j�|�tj�tj�|jdd���|�tj�tj�|jdd���dS)Nrz	krb5.confr��dir�statedir)rrrr�linkr r!r&�tempfile�mkdtemp�tempdirr'r(�
extractall�
assertTrue�exists�assertFalse�rr,r1r2rrrr=[s�
��z)DomainBackupOfflineCmp.hard_link_testcasecCr
r��untar_testcaserrrr�$test_domain_backup_offline_untar_tdbqrz;DomainBackupOfflineCmp.test_domain_backup_offline_untar_tdbcCr
rrLrrrr�$test_domain_backup_offline_untar_mdbtrz;DomainBackupOfflineCmp.test_domain_backup_offline_untar_mdbcCr
r��restore_testcaserrrr�&test_domain_backup_offline_restore_tdbwrz=DomainBackupOfflineCmp.test_domain_backup_offline_restore_tdbcCr
rrPrrrr�&test_domain_backup_offline_restore_mdbzrz=DomainBackupOfflineCmp.test_domain_backup_offline_restore_mdbcCs^|�|�|_d|_|�|j�}|�|�|_gd�}dd�|�}d|g}|�|j|j|�dS)N)
�servicePrincipalName�lastLogonTimestamp�rIDAllocationPool�rIDAvailablePool�rIDUsedPool�localPolicyFlags�operatingSystem�displayName�	dnsRecord�
dNSTombstonedzmsDS-NC-Replica-LocationszmsDS-HasInstantiatedNCs�interSiteTopologyGeneratorz	--filter=�,z--two)rrrr&r:r!�ldapcmp)rr,r1�ignore_attrs�
filter_arg�argsrrrrQ}sz'DomainBackupOfflineCmp.restore_testcasecCsX|�|�|_d|_|�|j�}tj|jd�|_t�|�}|�	|j�|�
|j|j�dS)Nr@)rrrr&rDrErFr'r(rGr`rKrrrrM�s
z%DomainBackupOfflineCmp.untar_testcasec	Csrtj�dd�}dtj�tj�|�|�}dtj�tj�|�|�}dD]}dd�|||g|�}|�|�q#dS)Nrzsam.ldbztdb://)�domain�
configuration�schema�	dnsdomain�	dnsforestzsamba-tool ldapcmp � )rr r!�realpath�check_output)	rr�ex_dirrc�sam_fn�url1�url2�	partition�cmdrrrr`�s�zDomainBackupOfflineCmp.ldapcmpcCs.tj|jd�}d}|j||d�}|�|�|S)Nr@z�samba-tool domain provision --domain FOO --realm foo.example.com --targetdir {target} --backend-store {backend} --host-name OLDSERVER --option="vfs objects=dfs_samba4 acl_xattr fake_acls xattr_tdb")�targetr,�rDrErF�formatrk)rr,rr�prov_cmdrrrr�s

z DomainBackupOfflineCmp.provisionc
Cs�tj|jd�}d}d}|jtjdtjdtjdtjdtjd|||d	�}|�|�d
}|jtjdtjdtjd|d�}|�|�|S)Nr@�offlinebackupdcz�samba-tool domain join {domain} DC --server {server} --realm {realm} --username {username}%{password} --targetdir {target} --backend-store {backend} --option='netbios name = {new_dc_name}' --option="vfs objects=dfs_samba4 acl_xattr fake_acls xattr_tdb"�	DC_SERVER�DOMAIN�REALM�USERNAME�PASSWORD)�serverrd�realm�username�passwordrrr,�new_dc_nameztsamba-tool domain demote --server {server} --username {username}%{password} --remove-other-dead-server={new_dc_name})r|r~rr�)rDrErFrtr�environrk)rr,rrr��join_cmd�
demote_cmdrrrr!�s*�
�
zDomainBackupOfflineCmp.joincCsbdj|d�}|�|�dd�t�|�D�}t|�dkr&tdd�t|����tj�||d�}|S)	Nz\samba-tool domain backup offline --targetdir={prov_dir} --configfile={prov_dir}/etc/smb.conf)rcSs$g|]}|�d�r|�d�r|�qS)z
samba-backup-z.tar.bz2)�
startswith�endswith)�.0�fnrrr�
<listcomp>�s
�
�z1DomainBackupOfflineCmp.backup.<locals>.<listcomp>�z(expected domain backup to create one tarz file but got {0}r)rtrkr�listdirr+rr r!)rrrq�	tar_filesr1rrrr&�s�
�zDomainBackupOfflineCmp.backupcCs*tj|jd�}dj||d�}|�|�|S)Nr@z\samba-tool domain backup restore --backup-file={f} --targetdir={d} --newservername=NEWSERVER)�f�drs)rr1rrqrrrr:�s�
zDomainBackupOfflineCmp.restorecCs&t�|j�|jrt�|j�dSdSr8)r"�rmtreerrrrrr�tearDown�s�zDomainBackupOfflineCmp.tearDownN)�__name__�
__module__�__qualname__rrrr6r7r5r>r?r=rNrOrRrSrQrMr`rr!r&r:r�rrrrr	$s,$r	)r'rr"rD�samba.testsrr�samba.netcmdr�samba.paramr�
samba.joinr�samba.credentialsr�samba.loggerrr	rrrr�<module>s