From 286ad6eb1542a2bc99dbfb70b6a8b0d0ed5b29ab Mon Sep 17 00:00:00 2001 From: Till Tomczak Date: Mon, 26 May 2025 09:05:19 +0200 Subject: [PATCH] "feat: Add settings copy for backend configuration" --- backend/app/config/settings_copy.py | 116 ++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 backend/app/config/settings_copy.py diff --git a/backend/app/config/settings_copy.py b/backend/app/config/settings_copy.py new file mode 100644 index 00000000..f464fd57 --- /dev/null +++ b/backend/app/config/settings_copy.py @@ -0,0 +1,116 @@ +import os +import json +from datetime import timedelta + +# Hardcodierte Konfiguration +SECRET_KEY = "7445630171969DFAC92C53CEC92E67A9CB2E00B3CB2F" +DATABASE_PATH = "database/myp.db" +TAPO_USERNAME = "till.tomczak@mercedes-benz.com" +TAPO_PASSWORD = "744563017196A" + +# Drucker-Konfiguration +PRINTERS = { + "Printer 1": {"ip": "192.168.0.100"}, + "Printer 2": {"ip": "192.168.0.101"}, + "Printer 3": {"ip": "192.168.0.102"}, + "Printer 4": {"ip": "192.168.0.103"}, + "Printer 5": {"ip": "192.168.0.104"}, + "Printer 6": {"ip": "192.168.0.106"} +} + +# Logging-Konfiguration +LOG_DIR = "logs" +LOG_SUBDIRS = ["app", "scheduler", "auth", "jobs", "printers", "errors"] +LOG_LEVEL = "INFO" +LOG_FORMAT = "%(asctime)s - %(name)s - %(levelname)s - %(message)s" +LOG_DATE_FORMAT = "%Y-%m-%d %H:%M:%S" + +# Flask-Konfiguration +FLASK_HOST = "0.0.0.0" +FLASK_PORT = 443 +FLASK_FALLBACK_PORT = 80 +FLASK_DEBUG = True +SESSION_LIFETIME = timedelta(days=7) + +# SSL-Konfiguration +SSL_ENABLED = True +SSL_CERT_PATH = "instance/ssl/myp.crt" +SSL_KEY_PATH = "instance/ssl/myp.key" +SSL_HOSTNAME = "raspberrypi" + +# Scheduler-Konfiguration +SCHEDULER_INTERVAL = 60 # Sekunden +SCHEDULER_ENABLED = True + +# Datenbank-Konfiguration +DB_ENGINE = f"sqlite:///{DATABASE_PATH}" + +def get_log_file(category: str) -> str: + """ + Gibt den Pfad zur Log-Datei für eine bestimmte Kategorie zurück. + + Args: + category: Log-Kategorie (app, scheduler, auth, jobs, printers, errors) + + Returns: + str: Pfad zur Log-Datei + """ + if category not in LOG_SUBDIRS: + category = "app" + + return os.path.join(LOG_DIR, category, f"{category}.log") + +def ensure_log_directories(): + """Erstellt alle erforderlichen Log-Verzeichnisse.""" + os.makedirs(LOG_DIR, exist_ok=True) + for subdir in LOG_SUBDIRS: + os.makedirs(os.path.join(LOG_DIR, subdir), exist_ok=True) + +def ensure_database_directory(): + """Erstellt das Datenbank-Verzeichnis.""" + db_dir = os.path.dirname(DATABASE_PATH) + if db_dir: + os.makedirs(db_dir, exist_ok=True) + +def ensure_ssl_directory(): + """Erstellt das SSL-Verzeichnis, falls es nicht existiert.""" + ssl_dir = os.path.dirname(SSL_CERT_PATH) + if ssl_dir and not os.path.exists(ssl_dir): + os.makedirs(ssl_dir, exist_ok=True) + +def get_ssl_context(): + """ + Gibt den SSL-Kontext für Flask zurück, wenn SSL aktiviert ist. + + Returns: + tuple oder None: Tuple mit Zertifikat- und Schlüsselpfad, wenn SSL aktiviert ist, sonst None + """ + if not SSL_ENABLED: + return None + + # Wenn Zertifikate nicht existieren, diese automatisch erstellen + if not os.path.exists(SSL_CERT_PATH) or not os.path.exists(SSL_KEY_PATH): + ensure_ssl_directory() + + # Prüfen, ob wir uns im Entwicklungsmodus befinden + if FLASK_DEBUG: + print("SSL-Zertifikate nicht gefunden. Erstelle selbstsignierte Zertifikate...") + + # Pfad zum create_ssl_cert.sh-Skript ermitteln + script_path = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))), + "install", "create_ssl_cert.sh") + + # Ausführungsrechte setzen + if os.path.exists(script_path): + os.system(f"chmod +x {script_path}") + + # Zertifikate erstellen mit spezifischem Hostnamen + os.system(f"{script_path} -c {SSL_CERT_PATH} -k {SSL_KEY_PATH} -h {SSL_HOSTNAME}") + else: + print(f"WARNUNG: SSL-Zertifikat-Generator nicht gefunden: {script_path}") + return None + else: + print("WARNUNG: SSL-Zertifikate nicht gefunden und Nicht-Debug-Modus. SSL wird deaktiviert.") + return None + + return (SSL_CERT_PATH, SSL_KEY_PATH) \ No newline at end of file