\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/DatabaseBackupMasterv3/
(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/DatabaseBackupMasterv3/export_data.py


import json
import os
from datetime import datetime
from app import app, db
from models import DatabaseConnection, StorageTarget, BackupJob, BackupLog, User, SmtpSettings

def export_to_json():
    """Veritabanındaki tüm verileri JSON formatında dışa aktarır."""
    with app.app_context():
        # Her bir modelin verilerini alıp JSON'a dönüştür
        data = {
            'database_connections': [
                {
                    'id': conn.id,
                    'name': conn.name,
                    'db_type': conn.db_type,
                    'host': conn.host,
                    'port': conn.port,
                    'username': conn.username,
                    'password': '******',  # Güvenlik nedeniyle şifreleri maskeliyoruz
                    'database': conn.database,
                    'created_at': conn.created_at.isoformat() if conn.created_at else None
                }
                for conn in DatabaseConnection.query.all()
            ],
            'storage_targets': [
                {
                    'id': storage.id,
                    'name': storage.name,
                    'storage_type': storage.storage_type,
                    'host': storage.host,
                    'port': storage.port,
                    'username': storage.username,
                    'password': '******' if storage.password else None,
                    'path': storage.path,
                    'created_at': storage.created_at.isoformat() if storage.created_at else None
                }
                for storage in StorageTarget.query.all()
            ],
            'backup_jobs': [
                {
                    'id': job.id,
                    'name': job.name,
                    'database_id': job.database_id,
                    'storage_id': job.storage_id,
                    'schedule_type': job.schedule_type,
                    'schedule_value': job.schedule_value,
                    'retention_days': job.retention_days,
                    'enabled': job.enabled,
                    'created_at': job.created_at.isoformat() if job.created_at else None,
                    'last_run': job.last_run.isoformat() if job.last_run else None
                }
                for job in BackupJob.query.all()
            ],
            'backup_logs': [
                {
                    'id': log.id,
                    'job_id': log.job_id,
                    'timestamp': log.timestamp.isoformat() if log.timestamp else None,
                    'status': log.status,
                    'message': log.message,
                    'backup_file': log.backup_file,
                    'backup_size': log.backup_size,
                    'duration': log.duration
                }
                for log in BackupLog.query.all()
            ],
            'users': [
                {
                    'id': user.id,
                    'username': user.username,
                    'email': user.email,
                    'is_admin': user.is_admin,
                    'created_at': user.created_at.isoformat() if user.created_at else None,
                    'last_login': user.last_login.isoformat() if user.last_login else None
                }
                for user in User.query.all()
            ],
            'smtp_settings': []
        }
        
        # SMTP ayarları (varsa)
        smtp_settings = SmtpSettings.query.first()
        if smtp_settings:
            data['smtp_settings'] = {
                'id': smtp_settings.id,
                'mail_server': smtp_settings.mail_server,
                'mail_port': smtp_settings.mail_port,
                'mail_use_tls': smtp_settings.mail_use_tls,
                'mail_use_ssl': smtp_settings.mail_use_ssl,
                'mail_username': smtp_settings.mail_username,
                'mail_password': '******',  # Güvenlik nedeniyle şifreleri maskeliyoruz
                'mail_default_sender': smtp_settings.mail_default_sender,
                'notification_emails': smtp_settings.notification_emails,
                'created_at': smtp_settings.created_at.isoformat() if smtp_settings.created_at else None,
                'updated_at': smtp_settings.updated_at.isoformat() if smtp_settings.updated_at else None
            }
        
        # Klasör yoksa oluştur
        os.makedirs('database_backups', exist_ok=True)
        
        # Tarih ve zaman damgası ile dosya adı oluştur
        timestamp = datetime.now().strftime('%Y%m%d_%H%M%S')
        filename = f'database_backups/data_export_{timestamp}.json'
        
        # JSON dosyasına kaydet
        with open(filename, 'w', encoding='utf-8') as f:
            json.dump(data, f, ensure_ascii=False, indent=2)
        
        return filename

if __name__ == '__main__':
    backup_file = export_to_json()
    print(f"Veritabanı verileri başarıyla dışa aktarıldı: {backup_file}")

© KUJUNTI.ID