\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/DatabaseBackupMasterv8/DatabaseBackupMaster/ |
|
B-Con CMD Config cPanel C-Rdp D-Log Info Jump Mass Ransom Symlink vHost Zone-H |
| Current File : /var/www/html/yedekledb24/DatabaseBackupMasterv8/DatabaseBackupMaster/reset_database.py |
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
yedekleDB24 için veritabanı şemasını sıfırlama ve yeniden oluşturma scripti.
Bu script, mevcut veritabanı şemasını tamamen kaldırıp yeniden oluşturur.
DİKKAT: Tüm veriler silinecektir!
"""
import os
import sys
import logging
from dotenv import load_dotenv
# Logging ayarları
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)
# Uygulama ortamını yükle
load_dotenv()
def confirm_reset():
"""Kullanıcıdan onay ister."""
print("⚠️ UYARI: Bu işlem veritabanındaki TÜM VERİLERİ SİLECEKTİR! ⚠️")
print("Mevcut veritabanı şeması silinip yeniden oluşturulacak.")
print("Bu işlem geri alınamaz.")
# Replit ortamında çalıştığında otomatik olarak onay ver
return True
def reset_database():
"""Veritabanını sıfırlar ve yeniden oluşturur."""
try:
# Uygulama modüllerini içe aktar (burada çağrılması gerekiyor çünkü app.py'nin çalışması gerekiyor)
logger.info("Uygulama modülleri içe aktarılıyor...")
# Ana proje dizinine geçiş yapmak için
from pathlib import Path
project_dir = str(Path(__file__).parent.absolute())
sys.path.append(project_dir)
# Flask uygulamasını ve modelleri içe aktar
from app import app, db
import models # Tüm modellerin tanımlanması için gerekli
with app.app_context():
# Mevcut veritabanını sıfırla
logger.info("Veritabanı tabloları siliniyor...")
db.drop_all()
logger.info("Veritabanı tabloları silindi.")
# Yeni şemayı oluştur
logger.info("Yeni veritabanı şeması oluşturuluyor...")
db.create_all()
logger.info("Yeni veritabanı şeması oluşturuldu.")
# Admin kullanıcısı oluştur
logger.info("Admin kullanıcısı oluşturuluyor...")
from models import User
from werkzeug.security import generate_password_hash
admin_user = User(
username="admin",
email="admin@example.com",
password_hash=generate_password_hash("Ainahv5aVaw2EeP"), # Varsayılan şifre
is_admin=True
)
db.session.add(admin_user)
db.session.commit()
logger.info("Admin kullanıcısı oluşturuldu.")
# Default SMTP ayarları ekle
logger.info("Varsayılan SMTP ayarları oluşturuluyor...")
from models import SmtpSettings
smtp_settings = SmtpSettings(
mail_server="smtp.example.com",
mail_port=587,
mail_use_tls=True,
mail_use_ssl=False,
mail_username="user@example.com",
mail_password="password",
mail_default_sender="noreply@example.com",
notification_emails="admin@example.com"
)
db.session.add(smtp_settings)
db.session.commit()
logger.info("Varsayılan SMTP ayarları oluşturuldu.")
logger.info("Veritabanı başarıyla sıfırlandı ve yeniden oluşturuldu.")
except Exception as e:
logger.error(f"Veritabanı sıfırlama işlemi sırasında hata oluştu: {str(e)}")
return False
return True
def main():
"""Ana fonksiyon"""
logger.info("Veritabanı sıfırlama scripti başlatılıyor...")
if not confirm_reset():
logger.info("İşlem kullanıcı tarafından iptal edildi.")
return
if reset_database():
logger.info("Veritabanı başarıyla sıfırlandı ve yeniden yapılandırıldı.")
logger.info("Admin kullanıcısı: admin / Ainahv5aVaw2EeP")
else:
logger.error("Veritabanı sıfırlanamadı!")
sys.exit(1)
if __name__ == "__main__":
main()