\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
| Path : /var/www/html/yedekledb24/DatabaseBackupMasterv6/ |
|
B-Con CMD Config cPanel C-Rdp D-Log Info Jump Mass Ransom Symlink vHost Zone-H |
| Current File : /var/www/html/yedekledb24/DatabaseBackupMasterv6/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)