AnonSec Shell
Server IP : 209.38.156.173  /  Your IP : 216.73.216.122   [ Reverse IP ]
Web Server : Apache/2.4.52 (Ubuntu)
System : Linux lakekumayuhotel 5.15.0-136-generic #147-Ubuntu SMP Sat Mar 15 15:53:30 UTC 2025 x86_64
User : root ( 0)
PHP Version : 8.1.2-1ubuntu2.22
Disable Function : NONE
Domains : 2 Domains
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /lib/python3/dist-packages/DistUpgrade/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     [ BACKUP SHELL ]     [ JUMPING ]     [ MASS DEFACE ]     [ SCAN ROOT ]     [ SYMLINK ]     

Current File : /lib/python3/dist-packages/DistUpgrade/__pycache__/apt_btrfs_snapshot.cpython-310.pyc
o

Z;�f�&�@s�ddlmZmZddlZddlZddlZddlZddlZddlZddl	m
Z
ddlmZGdd�de
�ZGdd�de�ZGd	d
�d
e�ZGdd�de�ZGd
d�de�ZGdd�de�ZGdd�de�ZdS)�)�print_function�unicode_literalsN)�find_executable)�gettextc@�eZdZdS)�AptBtrfsSnapshotErrorN��__name__�
__module__�__qualname__�rr�@/usr/lib/python3/dist-packages/DistUpgrade/apt_btrfs_snapshot.pyr!�rc@r)�AptBtrfsNotSupportedErrorNrrrrr
r%rrc@r)�AptBtrfsRootWithNoatimeErrorNrrrrr
r)rrc@s.eZdZdZedd��Zd
dd�Zdd�Zd	S)�
FstabEntryz a single fstab entry line cCs"|�d�d��}t|dd��S)N�#r�)�	partition�splitr)�cls�line�argsrrr
�	from_line/szFstabEntry.from_linercCs(||_||_||_||_||_||_dS�N��fs_spec�
mountpoint�fstype�options�dump�passno)�selfrrrrr r!rrr
�__init__7s
zFstabEntry.__init__cCs d|j|j|j|j|j|jfS)Nz*<FstabEntry '%s' '%s' '%s' '%s' '%s' '%s'>r�r"rrr
�__repr__@s�zFstabEntry.__repr__N)rr)r	r
r�__doc__�classmethodrr#r%rrrr
r-s

	rcs"eZdZdZd�fdd�	Z�ZS)�Fstabz a list of FstabEntry items �
/etc/fstabc
s�tt|���t|��3}dd�|D�D]"}|dks|�d�rqzt�|�}Wn	ty/Yqw|�|�qWd�dS1sAwYdS)Ncss�|]}|��VqdSr)�strip)�.0rrrr
�	<genexpr>Ls�z!Fstab.__init__.<locals>.<genexpr>�r)	�superr(r#�open�
startswithrr�
ValueError�append)r"�fstab�
fstab_file�
stripped_line�entry��	__class__rr
r#Hs
��"�zFstab.__init__�r))r	r
rr&r#�
__classcell__rrr7r
r(Fsr(c@s0eZdZdZdd�Zdd�Zdd�Zdd	�Zd
S)�LowLevelCommandszi lowlevel commands invoked to perform various tasks like
        interact with mount and btrfs tools
    cCst�d||g�}|dkS)N�mountr��
subprocess�call)r"rr�retrrr
r<ZszLowLevelCommands.mountcCst�d|g�}|dkS)N�umountrr=)r"rr@rrr
rA^szLowLevelCommands.umountcCst�ddd||g�}|dkS)N�btrfs�	subvolume�snapshotrr=)r"�source�destr@rrr
�btrfs_subvolume_snapshotbs
�z)LowLevelCommands.btrfs_subvolume_snapshotcCst�ddd|g�}|dkS)NrBrC�deleterr=)r"rDr@rrr
�btrfs_delete_snapshotgsz&LowLevelCommands.btrfs_delete_snapshotN)r	r
rr&r<rArGrIrrrr
r;Vsr;c@s�eZdZdZdZedZd)dd�Zdd�Zd	d
�Zd)dd�Z	d
d�Z
dd�Zdd�Zd*dd�Z
d+dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd,d$d%�Zd&d'�Zd(S)-�AptBtrfsSnapshotz? the high level object that interacts with the snapshot system z@apt-snapshot-z	old-root-r)cCst|�|_t�|_d|_dSr)r(r3r;�commands�_btrfs_root_mountpoint)r"r3rrr
r#ts

zAptBtrfsSnapshot.__init__cCstd�sdS|��}|duS)zx verify that the system supports apt btrfs snapshots
            by checking if the right fs layout is used etc
        rBFN)r�%_get_supported_btrfs_root_fstab_entry�r"r6rrr
�snapshots_supportedysz$AptBtrfsSnapshot.snapshots_supportedcCs6|jD]}|jdkr|jdkrd|jvr|SqdS)z4 return the supported btrfs root FstabEntry or None �/rBzsubvol=@N)r3rrrrNrrr
rM�s



�z6AptBtrfsSnapshot._get_supported_btrfs_root_fstab_entrycCs$|jD]}|j|kr|jSqdS)z4 return the device or UUID for the given mountpoint N)r3rr)r"rr3r6rrr
�_uuid_for_mountpoint�s



�z%AptBtrfsSnapshot._uuid_for_mountpointcCs4|�d�}tjdd�}|j�||�sdS||_|jS)NrPzapt-btrfs-snapshot-mp-)�prefix)rQ�tempfile�mkdtemprKr<rL)r"�uuidrrrr
�mount_btrfs_root_volume�s
z(AptBtrfsSnapshot.mount_btrfs_root_volumecCs$|j�|j�}t�|j�d|_|Sr)rKrArL�os�rmdir)r"�resrrr
�umount_btrfs_root_volume�sz)AptBtrfsSnapshot.umount_btrfs_root_volumecCstj��jdd��td��S)Nr)�microsecond�_)�datetime�now�replace�	isoformat�strr$rrr
�_get_now_str�s�zAptBtrfsSnapshot._get_now_strr-cCsr|��}|��}tj�|d�}tj�||j||�}tj�|�r,ttd�|f�dS|j	�
||�}|��|S)N�@zDINFO: snapshot directory '%s' already exists, not creating duplicateT)rVrbrW�path�join�SNAP_PREFIX�exists�printr\rKrGrZ)r"�additional_prefix�mp�snap_idrE�targetrYrrr
�create_btrfs_root_snapshot�s��z+AptBtrfsSnapshot.create_btrfs_root_snapshotrc	Cs�g}|dkr|��}|st��d|jvrt��|dkrt��}|��}t�|�D]}|�|j	�rFtj
�tj
�||dd��}||krF|�
|�q(|��|S)z� get the list of available snapshot
            If "older_then" is given (in unixtime format) it will only include
            snapshots that are older then the given date)
        r�noatime�etcr3)rMrrr�timerVrW�listdirr0rfrd�getatimerer2rZ)r"�
older_than�resultr6rj�e�atimerrr
�get_btrfs_root_snapshots_list�s$

�z.AptBtrfsSnapshot.get_btrfs_root_snapshots_listcCstd�td�|����dS)NzAvailable snapshots:�  
T)rhrerwr$rrr
�print_btrfs_root_snapshots�sz+AptBtrfsSnapshot.print_btrfs_root_snapshotscCs>t��}|�d�s
td��t|dd��}||dddS)N�dz&Please specify time in days (e.g. 10d)�����<)rp�endswith�	Exception�int)r"�timefmtr^�daysrrr
�_parse_older_than_to_unixtime�s

z.AptBtrfsSnapshot._parse_older_than_to_unixtimecCsT|�|�}ztd|�td�|j|d���WdSty)tj�d�YdSw)Nz$Available snapshots older than '%s':rx�rs�6Error: fstab option 'noatime' incompatible with optionFT)r�rhrerwr�sys�stderr�write)r"r��older_than_unixtimerrr
�%print_btrfs_root_snapshots_older_than�s

���z6AptBtrfsSnapshot.print_btrfs_root_snapshots_older_thancCsVd}|�|�}z|j|d�D]	}||�|�M}qW|Sty*tj�d�YdSw)NTr�r�F)r�rw�delete_snapshotrr�r�r�)r"r�rYr��snaprrr
�%clean_btrfs_root_snapshots_older_than�s

����z6AptBtrfsSnapshot.clean_btrfs_root_snapshots_older_thancCs|�|�}|Sr)�set_default)r"�
snapshot_namerYrrr
�command_set_default�s
z$AptBtrfsSnapshot.command_set_defaultTcCs�|��}tj�||�}tj�|�r@|�d�r@|dkr@tj�|d�}tj�||j|���}t�||�t�||�t	d|�nt	d�|�
�dS)z set new default rcz@Default changed to %s, please reboot for changes to take effect.z_You have selected an invalid snapshot. Please make sure that it exists, and that it is not "@".T)rVrWrdre�isdirr0�
BACKUP_PREFIXrb�renamerhrZ)r"r��backuprj�new_root�default_rootrrr
r��s"
���zAptBtrfsSnapshot.set_defaultcCs*|��}|j�tj�||��}|��|Sr)rVrKrIrWrdrerZ)r"r�rjrYrrr
r�s�z AptBtrfsSnapshot.delete_snapshotNr9)r-)r)T)r	r
rr&rfr�r#rOrMrQrVrZrbrmrwryr�r�r�r�r�r�rrrr
rJls(






rJ)�
__future__rrr]rWr>r�rprS�distutils.spawnrrr\rrrr�objectr�listr(r;rJrrrr
�<module>s 

Anon7 - 2022
AnonSec Team