\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/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__/restore_database.cpython-310.pyc


o

���g5�@sFdZddlZddlZddlZddlZddlZddlmZddlmZm	Z	ddl
mZmZz
ddl
mZdZWneyFe�d�d	ZYnwejejd
d�e�e�Zdd
�Zdd�Zddd�Zedkr�eej�dkrued�e�d�eejd�Zee�Z e dr�ee d�e�d�dSede d���e�d�dSdS)u}
yedekleDB24 için veritabanı geri yükleme scripti.
Bu script, yedeklenmiş veritabanını orijinal konumuna geri yükler.
�N)�datetime)�current_app�request)�	BackupLog�db��decrypt_fileTzDGPG decryption support not available - encryption_utils.py not foundFz4%(asctime)s - %(name)s - %(levelname)s - %(message)s)�level�formatcCs�z�d}d|vr7|dr7d|d�d�}tj�|�r)|}t�d|d�d|���nt�d|d�d|�d��|d	d
ddd
|ddt|d�d|dd|d|g}tj��}|d|d<t�d|d���t	j
|t	jt	j|d�}|��\}}|j
dkr�|��}	t�d|	���d|	vr�d|	vr�t�d�WdSt�d|d���Wd Sty�}
zt�dt|
����WYd!}
~
dSd!}
~
ww)"u 
    PostgreSQL veritabanını geri yükler.
    
    Args:
        db_conn (dict): Veritabanı bağlantı bilgileri (host, port, username, password, database)
        backup_file (str): Yedek dosyasının yolu
        
    Returns:
        bool: Başarılı ise True, değilse False
    �
pg_restore�
pg_versionz/usr/lib/postgresql/z/bin/pg_restorezPostgreSQL u% spesifik pg_restore kullanılıyor: u  pg_restore komutu bulunamadı: u, varsayılana dönülüyorz--cleanz--if-existsz
--no-ownerz--no-privilegesz-h�hostz-p�portz-U�usernamez-d�database�password�
PGPASSWORDu)PostgreSQL veritabanı geri yükleniyor: )�stdout�stderr�envr�#Veritabanı geri yükleme hatası: zserver versionzclient versionuaPostgreSQL sürüm uyumsuzluğu tespit edildi. Lütfen doğru PostgreSQL sürümünü ayarlayın.F�(Veritabanı başarıyla geri yüklendi: TN)�os�path�exists�logger�info�warning�str�environ�copy�
subprocess�Popen�PIPE�communicate�
returncode�decode�error�	Exception)�db_conn�backup_file�pg_restore_cmd_base�version_specific_cmd�pg_restore_cmdr�processrr�	error_msg�e�r1�B/var/www/html/yedekledb24/DatabaseBackupMaster/restore_database.py�restore_postgresql_database"sT�
�

��r3c
Cszkdd|ddt|d�d|dd|d	|d
g}t�d|d
���t|d��}tj||tjtjd
�}|��\}}Wd�n1sHwY|jdkr_t�	d|�
����WdSt�d|d
���WdSty�}zt�	dt|����WYd}~dSd}~ww)u#
    MySQL/MariaDB veritabanını geri yükler.
    
    Args:
        db_conn (dict): Veritabanı bağlantı bilgileri (host, port, username, password, database)
        backup_file (str): Yedek dosyasının yolu
        
    Returns:
        bool: Başarılı ise True, değilse False
    �mysqlz--host=r
z--port=rz--user=rz--password=rru$MySQL veritabanı geri yükleniyor: �rb)�stdinrrNrrFrT)rrr�openr!r"r#r$r%r'r&r()r)r*�	mysql_cmd�fr.rrr0r1r1r2�restore_mysql_databaseis8


�
��

��r:c
Cs��z�tj�|�}|sdd|�d�d�WS|j}|j}|js#ddd�WS|j}tj�|�s5dd|��d�WS|j	|j
|j|j|j|j
d�}|j
dkrVt|d	�rV|jrV|j|d	<d}d
}z
ddlm}	d
}
Wntytt�d�d}
Ynw|
�rZ|�d��rZd
}t�d|���t|d��r|j�r|j}zEtjdd�}|dkr�|s�ddd
d�WWS|	|||�}n|dkr�|	||�}n
dd|��d�WWS|r�t�d|���|}nddd�WWSWnt�y}zt�dt|����ddt|���d�WYd
}~WSd
}~wwz.|�sddd
d�WWStjdd�}|	|||�}|�r)t�d|���|}nddd�WWSWn(t�yY}zt�dt|����ddt|���d�WYd
}~WSd
}~wwzL|j
dk�rgt||�}
n|j
dv�rst||�}
ndd|j
��d�WWS|�r�tj�|��r�zt� |�WnY|
d|
�r�dnd �d!|j!��d�WWSt�y�}z|�r�tj�|��r�zt� |�W|�Y|�|�d
}~wwt�y�}zt�d"t|����dd"t|���d�WYd
}~Sd
}~ww)#u
    Bir yedekten veritabanını geri yükler.
    
    Args:
        log_id (int): Yedekleme kaydının ID'si
        passphrase (str, optional): Şifreli yedekler için şifre
        
    Returns:
        dict: İşlem sonucu (success: bool, message: str)
    FuYedek kaydı bulunamadı (ID: �))�success�messageuYedek dosyası bulunamadıuYedek dosyası bulunamadı: )r
rrrr�db_type�
postgresqlrNrrTzDGPG encryption support not available - encryption_utils.py not foundz.gpgu*Şifrelenmiş yedek dosyası algılandı: �	encrypted�
_decrypted)�suffix�	symmetricu,Şifreli yedek dosyası için şifre gerekli)r<r=�needs_passphrase�
asymmetricu"Desteklenmeyen şifreleme türü: u5Yedek dosyasının şifresi başarıyla çözüldü: u/Dosya şifresi çözülemedi. Şifre doğru mu?u"Dosya şifresini çözme hatası: )r4�mariadbu!Desteklenmeyen veritabanı tipi: uVeritabanı ubaşarıyla geri yüklendiugeri yükleme başarısız olduz: uGeri yükleme hatası: )"r�query�get�jobrr*rrrr
rrrr>�hasattrr�encryption_utilsr�ImportErrorrr�endswithrr@�encryption_type�tempfile�mktempr(r'rr3r:�remove�name)�log_id�
passphrase�
backup_log�
backup_jobr)r*�
db_connection�is_encrypted�temp_decrypted_filer�encryption_supportrNr0r<r1r1r2�restore_from_backup�s�
����

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

�
����
���r[�__main__�u.Kullanım: python restore_database.py <log_id>�r<r=zHata: )N)!�__doc__r�sys�loggingrOr!r�flaskrr�modelsrrrKrrZrLr�basicConfig�INFO�	getLogger�__name__rr3r:r[�len�argv�print�exit�intrS�resultr1r1r1r2�<module>sJ
��
G
.;
�

© KUJUNTI.ID