import os from pathlib import Path class Config: SECRET_KEY = os.environ.get("SECRET_KEY", "dev-secret-change-in-production") SQLALCHEMY_DATABASE_URI = os.environ.get( "DATABASE_URL", f"sqlite:///{Path(os.environ.get('DATA_DIR', 'data')).resolve() / 'mirror.db'}", ) SQLALCHEMY_TRACK_MODIFICATIONS = False ADMIN_USERNAME = os.environ.get("ADMIN_USERNAME", "admin") ADMIN_PASSWORD = os.environ.get("ADMIN_PASSWORD", "admin") DATA_DIR = Path(os.environ.get("DATA_DIR", "data")) BACKUP_DIR = DATA_DIR / "backups" HOST_ROOT = os.environ.get("HOST_ROOT", "") ROLLBACK_MINUTES = int(os.environ.get("ROLLBACK_MINUTES", "15")) AUTO_TEST_INTERVAL_MINUTES = int(os.environ.get("AUTO_TEST_INTERVAL_MINUTES", "30")) RESOLVED_DROPIN = "mirror-manager.conf" RESOLVED_DROPIN_DIR = "resolved.conf.d" GIT_CONFIG_GLOBAL = Path.home() / ".gitconfig" @classmethod def host_path(cls, *parts: str) -> Path: return Path(cls.HOST_ROOT).joinpath(*parts) @classmethod def ensure_dirs(cls) -> None: cls.DATA_DIR.mkdir(parents=True, exist_ok=True) cls.BACKUP_DIR.mkdir(parents=True, exist_ok=True)