"feat: Implement Mercedes-Benz certificate generation"

This commit is contained in:
2025-05-26 11:24:36 +02:00
parent 7d4ec90d99
commit 8f416e441c
3 changed files with 283 additions and 95 deletions

View File

@@ -1,12 +1,27 @@
import os
import json
import secrets
from datetime import timedelta
from pathlib import Path
# Hardcodierte Konfiguration
SECRET_KEY = "7445630171969DFAC92C53CEC92E67A9CB2E00B3CB2F"
DATABASE_PATH = "../database/myp.db"
TAPO_USERNAME = "till.tomczak@mercedes-benz.com"
TAPO_PASSWORD = "744563017196A"
# Basisverzeichnis der Anwendung für relative Pfade
BASE_DIR = Path(__file__).resolve().parent.parent
PROJECT_ROOT = BASE_DIR.parent
# Laden von Umgebungsvariablen, falls vorhanden
def get_env_variable(var_name, default=None):
"""Umgebungsvariablen abrufen mit Fallback auf Default-Werte"""
return os.environ.get(var_name, default)
# Sichere Konfiguration - Verwende Umgebungsvariablen oder generiere Secret Key
SECRET_KEY = get_env_variable("MYP_SECRET_KEY", secrets.token_hex(24))
# Datenbankpfad mit korrekter relativer Pfadauflösung
DATABASE_PATH = os.path.join(PROJECT_ROOT, "database", "myp.db")
# Tapo-Zugangsdaten aus Umgebungsvariablen laden
TAPO_USERNAME = get_env_variable("MYP_TAPO_USERNAME", "")
TAPO_PASSWORD = get_env_variable("MYP_TAPO_PASSWORD", "")
# Drucker-Konfiguration
PRINTERS = {
@@ -19,28 +34,28 @@ PRINTERS = {
}
# Logging-Konfiguration
LOG_DIR = "logs"
LOG_DIR = os.path.join(PROJECT_ROOT, "logs")
LOG_SUBDIRS = ["app", "scheduler", "auth", "jobs", "printers", "errors"]
LOG_LEVEL = "INFO"
LOG_LEVEL = get_env_variable("MYP_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)
FLASK_HOST = get_env_variable("MYP_FLASK_HOST", "0.0.0.0")
FLASK_PORT = int(get_env_variable("MYP_FLASK_PORT", 443))
FLASK_FALLBACK_PORT = int(get_env_variable("MYP_FLASK_FALLBACK_PORT", 80))
FLASK_DEBUG = get_env_variable("MYP_FLASK_DEBUG", "True").lower() in ("true", "1", "yes")
SESSION_LIFETIME = timedelta(days=int(get_env_variable("MYP_SESSION_DAYS", 7)))
# SSL-Konfiguration
SSL_ENABLED = True
SSL_CERT_PATH = "../certs/myp.crt"
SSL_KEY_PATH = "../certs/myp.key"
SSL_HOSTNAME = "raspberrypi"
SSL_ENABLED = get_env_variable("MYP_SSL_ENABLED", "True").lower() in ("true", "1", "yes")
SSL_CERT_PATH = os.path.join(PROJECT_ROOT, "certs", "myp.crt")
SSL_KEY_PATH = os.path.join(PROJECT_ROOT, "certs", "myp.key")
SSL_HOSTNAME = get_env_variable("MYP_SSL_HOSTNAME", "raspberrypi")
# Scheduler-Konfiguration
SCHEDULER_INTERVAL = 60 # Sekunden
SCHEDULER_ENABLED = True
SCHEDULER_INTERVAL = int(get_env_variable("MYP_SCHEDULER_INTERVAL", 60)) # Sekunden
SCHEDULER_ENABLED = get_env_variable("MYP_SCHEDULER_ENABLED", "True").lower() in ("true", "1", "yes")
# Datenbank-Konfiguration
DB_ENGINE = f"sqlite:///{DATABASE_PATH}"