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