from __future__ import annotations import os from pathlib import Path BASE_DIR = Path(__file__).resolve().parents[2] SECRET_KEY = os.getenv("POBSYNC_DJANGO_SECRET_KEY", "dev-only-change-me") DEBUG = os.getenv("POBSYNC_DJANGO_DEBUG", "0").lower() in {"1", "true", "yes", "on"} _allowed_hosts = os.getenv("POBSYNC_DJANGO_ALLOWED_HOSTS", "localhost,127.0.0.1") ALLOWED_HOSTS = [host.strip() for host in _allowed_hosts.split(",") if host.strip()] _csrf_trusted_origins = os.getenv("POBSYNC_DJANGO_CSRF_TRUSTED_ORIGINS", "") CSRF_TRUSTED_ORIGINS = [origin.strip() for origin in _csrf_trusted_origins.split(",") if origin.strip()] INSTALLED_APPS = [ "django.contrib.admin", "django.contrib.auth", "django.contrib.contenttypes", "django.contrib.sessions", "django.contrib.messages", "django.contrib.staticfiles", "pobsync_backend.apps.PobsyncBackendConfig", ] MIDDLEWARE = [ "django.middleware.security.SecurityMiddleware", "whitenoise.middleware.WhiteNoiseMiddleware", "django.contrib.sessions.middleware.SessionMiddleware", "django.middleware.common.CommonMiddleware", "django.middleware.csrf.CsrfViewMiddleware", "django.contrib.auth.middleware.AuthenticationMiddleware", "django.contrib.messages.middleware.MessageMiddleware", "django.middleware.clickjacking.XFrameOptionsMiddleware", ] ROOT_URLCONF = "pobsync_server.urls" TEMPLATES = [ { "BACKEND": "django.template.backends.django.DjangoTemplates", "DIRS": [], "APP_DIRS": True, "OPTIONS": { "context_processors": [ "django.template.context_processors.request", "django.contrib.auth.context_processors.auth", "django.contrib.messages.context_processors.messages", "pobsync_backend.context_processors.pobsync_access", ], }, }, ] WSGI_APPLICATION = "pobsync_server.wsgi.application" LOGIN_URL = "/admin/login/" def _database_config() -> dict[str, object]: engine = os.getenv("POBSYNC_DB_ENGINE", "sqlite").strip().lower() if engine in {"mariadb", "mysql"}: return { "ENGINE": "django.db.backends.mysql", "NAME": os.getenv("POBSYNC_DB_NAME", "pobsync"), "USER": os.getenv("POBSYNC_DB_USER", "pobsync"), "PASSWORD": os.getenv("POBSYNC_DB_PASSWORD", "pobsync"), "HOST": os.getenv("POBSYNC_DB_HOST", "db"), "PORT": os.getenv("POBSYNC_DB_PORT", "3306"), "OPTIONS": { "charset": "utf8mb4", }, } sqlite_path = os.getenv("POBSYNC_SQLITE_PATH", str(BASE_DIR / "var" / "pobsync.sqlite3")) return { "ENGINE": "django.db.backends.sqlite3", "NAME": sqlite_path, } DATABASES = { "default": _database_config(), } LANGUAGE_CODE = "en-us" TIME_ZONE = os.getenv("POBSYNC_TIME_ZONE", "UTC") USE_I18N = True USE_TZ = True STATIC_URL = "static/" STATIC_ROOT = os.getenv("POBSYNC_STATIC_ROOT", str(BASE_DIR / "var" / "static")) STORAGES = { "staticfiles": { "BACKEND": "whitenoise.storage.CompressedManifestStaticFilesStorage", }, } DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField" POBSYNC_HOME = os.getenv("POBSYNC_HOME", "/opt/pobsync") POBSYNC_BACKUP_ROOT = os.getenv("POBSYNC_BACKUP_ROOT", "/backups") POBSYNC_ENV_FILE = os.getenv("POBSYNC_ENV_FILE", "/etc/pobsync/pobsync.env") POBSYNC_SERVICE_USER = os.getenv("POBSYNC_SERVICE_USER", "pobsync") POBSYNC_SERVICE_GROUP = os.getenv("POBSYNC_SERVICE_GROUP", "pobsync") POBSYNC_UPDATE_RELEASES_URL = os.getenv("POBSYNC_UPDATE_RELEASES_URL", "") POBSYNC_UPDATE_RELEASES_TOKEN = os.getenv("POBSYNC_UPDATE_RELEASES_TOKEN", "") POBSYNC_UPDATE_GIT_REMOTE = os.getenv("POBSYNC_UPDATE_GIT_REMOTE", "origin") POBSYNC_UPDATE_COMMAND = os.getenv("POBSYNC_UPDATE_COMMAND", "sudo -n scripts/update-systemd")