Phase 2: Docker and OIDC auth
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
"""Logging helpers for the backend."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import logging
|
||||
import os
|
||||
from urllib.parse import urlsplit
|
||||
|
||||
|
||||
def configure_logging(level_name: str | None = None) -> int:
|
||||
"""Configure root logging once and return the numeric log level."""
|
||||
resolved_name = (level_name or os.getenv("LOG_LEVEL", "INFO")).upper()
|
||||
level = getattr(logging, resolved_name, logging.INFO)
|
||||
root = logging.getLogger()
|
||||
if not root.handlers:
|
||||
logging.basicConfig(
|
||||
level=level,
|
||||
format="%(asctime)s %(levelname)s %(name)s: %(message)s",
|
||||
)
|
||||
root.setLevel(level)
|
||||
logging.getLogger("media_library_viewer_api").setLevel(level)
|
||||
logging.getLogger("uvicorn").setLevel(level)
|
||||
logging.getLogger("uvicorn.error").setLevel(level)
|
||||
logging.getLogger("uvicorn.access").setLevel(level)
|
||||
logging.getLogger("paramiko").setLevel(logging.WARNING)
|
||||
logging.getLogger("urllib3").setLevel(logging.WARNING)
|
||||
return level
|
||||
|
||||
|
||||
def _sanitize_url(url: str | None) -> str:
|
||||
if not url:
|
||||
return "<unset>"
|
||||
parsed = urlsplit(url.strip())
|
||||
if not parsed.scheme or not parsed.netloc:
|
||||
return url.rstrip("/")
|
||||
return f"{parsed.scheme}://{parsed.netloc}"
|
||||
|
||||
|
||||
def describe_settings(settings: object) -> dict[str, str]:
|
||||
"""Return a secret-safe summary of the current backend settings."""
|
||||
return {
|
||||
"log_level": str(getattr(settings, "log_level", "INFO") or "INFO").upper(),
|
||||
"auth_enabled": str(bool(getattr(settings, "auth_enabled", True))),
|
||||
"oidc_issuer_url": _sanitize_url(getattr(settings, "oidc_issuer_url", "")),
|
||||
"oidc_audience": getattr(settings, "oidc_audience", "") or "<unset>",
|
||||
"oidc_jwks_url": _sanitize_url(getattr(settings, "oidc_jwks_url", "")),
|
||||
"jellyfin_url": _sanitize_url(getattr(settings, "jellyfin_url", "")),
|
||||
"jellyfin_api_key": "set" if getattr(settings, "jellyfin_api_key", "") else "missing",
|
||||
"jellyfin_user_id": getattr(settings, "jellyfin_user_id", "") or "<auto>",
|
||||
"jellyseerr_url": _sanitize_url(getattr(settings, "jellyseerr_url", "")),
|
||||
"jellyseerr_api_key": "set" if getattr(settings, "jellyseerr_api_key", "") else "missing",
|
||||
"ssh_host": getattr(settings, "ssh_host", "") or "<unset>",
|
||||
"ssh_username": getattr(settings, "ssh_username", "") or "<unset>",
|
||||
"ssh_port": str(getattr(settings, "ssh_port", 22) or 22),
|
||||
"ssh_key_filename": "set" if getattr(settings, "ssh_key_filename", "") else "missing",
|
||||
"ssh_password": "set" if getattr(settings, "ssh_password", "") else "missing",
|
||||
"smtp_host": _sanitize_url(getattr(settings, "smtp_host", "")),
|
||||
"smtp_port": str(getattr(settings, "smtp_port", 587) or 587),
|
||||
"smtp_username": "set" if getattr(settings, "smtp_username", "") else "missing",
|
||||
"smtp_from_address": getattr(settings, "smtp_from_address", "") or "<unset>",
|
||||
"smtp_from_name": getattr(settings, "smtp_from_name", "") or "<unset>",
|
||||
"smtp_use_tls": str(bool(getattr(settings, "smtp_use_tls", True))),
|
||||
"smtp_use_ssl": str(bool(getattr(settings, "smtp_use_ssl", False))),
|
||||
"remote_media_root": getattr(settings, "remote_media_root", "") or "<unset>",
|
||||
"remote_path_prefix": getattr(settings, "remote_path_prefix", "") or "<unset>",
|
||||
}
|
||||
Reference in New Issue
Block a user