/data and /tmp standarization

This commit is contained in:
Adam Outler
2025-11-04 22:26:35 +00:00
parent 90a07c61eb
commit 5b871865db
250 changed files with 7462 additions and 4940 deletions

109
server/config_paths.py Normal file
View File

@@ -0,0 +1,109 @@
"""Runtime path helpers for NetAlertX.
This module centralises path resolution so code can rely on the
Docker environment variables while still working during local
development and testing where those variables may not be set.
"""
from __future__ import annotations
import os
import sys
from pathlib import Path
__all__ = [
"APP_PATH",
"DATA_PATH",
"CONFIG_PATH",
"DB_PATH",
"TMP_PATH",
"API_PATH",
"LOG_PATH",
"FRONT_PATH",
"SERVER_PATH",
"BACK_PATH",
"PLUGINS_PATH",
"REPORT_TEMPLATES_PATH",
"API_PATH_WITH_TRAILING_SEP",
"LOG_PATH_WITH_TRAILING_SEP",
"CONFIG_PATH_WITH_TRAILING_SEP",
"DB_PATH_WITH_TRAILING_SEP",
"PLUGINS_PATH_WITH_TRAILING_SEP",
"REPORT_TEMPLATES_PATH_WITH_TRAILING_SEP",
"ensure_trailing_sep",
"APP_PATH_STR",
"DATA_PATH_STR",
"CONFIG_PATH_STR",
"DB_PATH_STR",
"TMP_PATH_STR",
"API_PATH_STR",
"LOG_PATH_STR",
"FRONT_PATH_STR",
"SERVER_PATH_STR",
"BACK_PATH_STR",
"PLUGINS_PATH_STR",
"REPORT_TEMPLATES_PATH_STR",
"ensure_in_syspath",
]
_DEFAULT_APP_PATH = Path("/app")
_DEFAULT_DATA_PATH = Path("/data")
_DEFAULT_TMP_PATH = Path("/tmp")
def _resolve_env_path(variable: str, default: Path) -> Path:
"""Return the path from the environment or fall back to *default*."""
value = os.getenv(variable)
if value:
return Path(value)
return default
def ensure_trailing_sep(path: Path) -> str:
"""Return *path* as a string that always ends with the OS separator."""
path_str = str(path)
return path_str if path_str.endswith(os.sep) else f"{path_str}{os.sep}"
APP_PATH = _resolve_env_path("NETALERTX_APP", _DEFAULT_APP_PATH)
DATA_PATH = _resolve_env_path("NETALERTX_DATA", _DEFAULT_DATA_PATH)
CONFIG_PATH = _resolve_env_path("NETALERTX_CONFIG", DATA_PATH / "config")
DB_PATH = _resolve_env_path("NETALERTX_DB", DATA_PATH / "db")
TMP_PATH = _resolve_env_path("NETALERTX_TMP", _DEFAULT_TMP_PATH)
API_PATH = _resolve_env_path("NETALERTX_API", TMP_PATH / "api")
LOG_PATH = _resolve_env_path("NETALERTX_LOG", TMP_PATH / "log")
FRONT_PATH = APP_PATH / "front"
SERVER_PATH = APP_PATH / "server"
BACK_PATH = APP_PATH / "back"
PLUGINS_PATH = FRONT_PATH / "plugins"
REPORT_TEMPLATES_PATH = FRONT_PATH / "report_templates"
API_PATH_WITH_TRAILING_SEP = ensure_trailing_sep(API_PATH)
LOG_PATH_WITH_TRAILING_SEP = ensure_trailing_sep(LOG_PATH)
CONFIG_PATH_WITH_TRAILING_SEP = ensure_trailing_sep(CONFIG_PATH)
DB_PATH_WITH_TRAILING_SEP = ensure_trailing_sep(DB_PATH)
PLUGINS_PATH_WITH_TRAILING_SEP = ensure_trailing_sep(PLUGINS_PATH)
REPORT_TEMPLATES_PATH_WITH_TRAILING_SEP = ensure_trailing_sep(REPORT_TEMPLATES_PATH)
APP_PATH_STR = str(APP_PATH)
DATA_PATH_STR = str(DATA_PATH)
CONFIG_PATH_STR = str(CONFIG_PATH)
DB_PATH_STR = str(DB_PATH)
TMP_PATH_STR = str(TMP_PATH)
API_PATH_STR = str(API_PATH)
LOG_PATH_STR = str(LOG_PATH)
FRONT_PATH_STR = str(FRONT_PATH)
SERVER_PATH_STR = str(SERVER_PATH)
BACK_PATH_STR = str(BACK_PATH)
PLUGINS_PATH_STR = str(PLUGINS_PATH)
REPORT_TEMPLATES_PATH_STR = str(REPORT_TEMPLATES_PATH)
def ensure_in_syspath(path: Path) -> str:
"""Add *path* to ``sys.path`` if missing and return the string value."""
path_str = str(path)
if path_str not in sys.path:
sys.path.append(path_str)
return path_str