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


#!/usr/bin/env python
"""
yedekleDB24 veritabanı şemasını güncelleyen script.
Bu script, veritabanına şifreleme özellikleri için gerekli tabloları ve alanları ekler.
"""

import os
import sys
import logging
import datetime

# Log yapılandırması
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)
logger = logging.getLogger('schema_update')

# Veritabanı URL'sini çevre değişkeninden al
def get_database_url():
    """
    Veritabanı URL'sini çevre değişkeninden alır.
    
    Returns:
        str: Veritabanı URL'si
    """
    return os.environ.get('DATABASE_URL')

def update_schema():
    """
    Veritabanı şemasını günceller.
    
    Returns:
        bool: Başarılı ise True, değilse False
    """
    db_url = get_database_url()
    
    if not db_url:
        logger.error("DATABASE_URL çevre değişkeni bulunamadı!")
        return False
    
    # SQL dosyasının yolunu belirle
    sql_file = os.path.join('database_backups', 'add_encryption_tables.sql')
    
    if not os.path.exists(sql_file):
        logger.error(f"SQL dosyası bulunamadı: {sql_file}")
        return False
    
    logger.info(f"Veritabanı şeması güncelleniyor: {sql_file}")
    
    try:
        # SQL dosyasını doğrudan çalıştırmak için psql komutunu oluştur
        # Çevre değişkenlerini kullanarak bağlan (DATABASE_URL zaten mevcut)
        # Bu durumda URL'yi ayrıştırmaya gerek yok, psql doğrudan çevre değişkenini kullanabilir
        
        # SQL dosyasını çalıştır
        command = f"psql $DATABASE_URL -f {sql_file}"
        
        logger.info("Şema güncelleme komutu çalıştırılıyor...")
        result = os.system(command)
        
        if result == 0:
            logger.info("Veritabanı şeması başarıyla güncellendi!")
            return True
        else:
            logger.error(f"Şema güncellemesi başarısız! Hata kodu: {result}")
            return False
    
    except Exception as e:
        logger.error(f"Şema güncellemesi sırasında hata oluştu: {str(e)}")
        return False

def main():
    """Ana fonksiyon"""
    print("yedekleDB24 Veritabanı Şema Güncelleme Aracı")
    print("============================================")
    print()
    
    # Kullanıcı onayı sor - etkileşimli olmayan ortamda çalışırken bu adımı atlıyoruz
    # confirm = input("Veritabanı şemasını güncellemek istediğinizden emin misiniz? (e/h): ")
    # 
    # if confirm.lower() not in ['e', 'evet', 'y', 'yes']:
    #     print("İşlem iptal edildi.")
    #     return
    
    print("Veritabanı şeması güncelleniyor...")
    
    # Şemayı güncelle
    result = update_schema()
    
    if result:
        print("\nVeritabanı şeması başarıyla güncellendi!")
        print("\nŞimdi models.py dosyasındaki yorum satırı haline getirilmiş şifreleme alanlarını etkinleştirmelisiniz.")
        print("1. models.py dosyasını açın")
        print("2. BackupJob sınıfındaki şifreleme alanlarının başındaki # işaretlerini kaldırın")
        print("3. BackupLog sınıfındaki şifreleme alanlarının başındaki # işaretlerini kaldırın")
        print("4. Uygulamayı yeniden başlatın")
    else:
        print("\nVeritabanı şeması güncellenemedi! Lütfen hata mesajlarını kontrol edin.")

if __name__ == "__main__":
    main()

© KUJUNTI.ID