From: Giorgio Ravera Date: Fri, 29 May 2026 15:01:43 +0000 (+0200) Subject: Minor fixes about capital letters & includes X-Git-Url: http://git.giorgioravera.it/?a=commitdiff_plain;h=8ded7984bfdc29748c5fed29fb28c441ce7a2055;p=network-manager.git Minor fixes about capital letters & includes --- diff --git a/README.md b/README.md index bf769a0..1683fe3 100644 --- a/README.md +++ b/README.md @@ -71,7 +71,7 @@ ADMIN_PASSWORD=admin LOGIN_MAX_ATTEMPTS=5 LOGIN_WINDOW_SECONDS=600 # --- Log --- -LOG_LEVEL=INFO +LOG_LEVEL=info LOG_TO_FILE=false # --- Session secret (optional but recommended in production) --- # SESSION_SECRET=****ReplaceWithYourSecret***** @@ -94,7 +94,7 @@ services: DB_FILE: "/data/database.db" DB_RESET: "${DB_RESET:-false}" # Log - LOG_LEVEL: "${LOG_LEVEL:-INFO}" + LOG_LEVEL: "${LOG_LEVEL:-info}" LOG_TO_FILE: "${LOG_TO_FILE:-false}" LOG_FILE: "/data/app.log" LOG_ACCESS_FILE: "/data/access.log" diff --git a/backend/app.py b/backend/app.py index c9cfcad..f85da84 100644 --- a/backend/app.py +++ b/backend/app.py @@ -23,8 +23,9 @@ from backend.routes.dhcp import router as dhcp_router # Import Security from backend.security import is_logged_in, apply_session -# Import Settings & Logging +# Import Settings from backend.settings.settings import settings +# Import Logging from backend.log.log import get_logger # Logger initialization diff --git a/backend/backup.py b/backend/backup.py index 4495203..63eea9c 100644 --- a/backend/backup.py +++ b/backend/backup.py @@ -14,9 +14,9 @@ import zipfile from backend.db.hosts import get_hosts, add_host, reset_hosts_db from backend.db.aliases import get_aliases, add_alias, reset_aliases_db -# Import Settings & Logging +# Import Settings from backend.settings.settings import settings -from backend.settings import config +# Import Logging from backend.log.log import get_logger # Logger initialization @@ -24,9 +24,9 @@ logger = get_logger(__name__) # Backup files to include in the archive (must match metadata structure) backup_files = [ - config.BACKUP_METADATA_FILE, - config.BACKUP_HOSTS_FILE, - config.BACKUP_ALIASES_FILE, + settings.BACKUP_METADATA_FILE, + settings.BACKUP_HOSTS_FILE, + settings.BACKUP_ALIASES_FILE, ] # Set to True to remove individual backup files after creating the archive (optional, can be set to False for debugging) @@ -203,7 +203,7 @@ def store_hosts( # Initialization start_ns = time.monotonic_ns() filepath = Path(filepath or settings.BACKUP_PATH) - filename = filename or config.BACKUP_HOSTS_FILE + filename = filename or settings.BACKUP_HOSTS_FILE file = filepath / filename filepath.mkdir(parents=True, exist_ok=True) count_stored = 0 @@ -261,7 +261,7 @@ def restore_hosts( # Initialization start_ns = time.monotonic_ns() filepath = Path(filepath or settings.BACKUP_PATH) - filename = filename or config.BACKUP_HOSTS_FILE + filename = filename or settings.BACKUP_HOSTS_FILE file = filepath / filename count_restored = 0 count_loaded = 0 @@ -321,7 +321,7 @@ def store_aliases( start_ns = time.monotonic_ns() filepath = Path(filepath or settings.BACKUP_PATH) filepath.mkdir(parents=True, exist_ok=True) - filename = filename or config.BACKUP_ALIASES_FILE + filename = filename or settings.BACKUP_ALIASES_FILE file = filepath / filename count_stored = 0 count_loaded = 0 @@ -379,7 +379,7 @@ def restore_aliases( # Initialization start_ns = time.monotonic_ns() filepath = Path(filepath or settings.BACKUP_PATH) - filename = filename or config.BACKUP_ALIASES_FILE + filename = filename or settings.BACKUP_ALIASES_FILE file = filepath / filename count_restored = 0 count_loaded = 0 @@ -440,7 +440,7 @@ def store_metadata( start_ns = time.monotonic_ns() filepath = Path(filepath or settings.BACKUP_PATH) filepath.mkdir(parents=True, exist_ok=True) - filename = filename or config.BACKUP_METADATA_FILE + filename = filename or settings.BACKUP_METADATA_FILE file = filepath / filename errors: List[str] = [] @@ -448,19 +448,19 @@ def store_metadata( with open(file, "w", encoding="utf-8") as f: data = { "generated_at": timestamp, - "backup_version": config.BACKUP_VERSION, - "db_structure_version": config.BACKUP_DB_STRUCTURE_VERSION, + "backup_version": settings.BACKUP_VERSION, + "db_structure_version": settings.BACKUP_DB_STRUCTURE_VERSION, "file_count": 2, "files": [ { "name": "hosts", - "file": config.BACKUP_HOSTS_FILE, - "sha256": file_checksum(filepath / config.BACKUP_HOSTS_FILE), + "file": settings.BACKUP_HOSTS_FILE, + "sha256": file_checksum(filepath / settings.BACKUP_HOSTS_FILE), }, { "name": "aliases", - "file": config.BACKUP_ALIASES_FILE, - "sha256": file_checksum(filepath / config.BACKUP_ALIASES_FILE), + "file": settings.BACKUP_ALIASES_FILE, + "sha256": file_checksum(filepath / settings.BACKUP_ALIASES_FILE), }, ] } @@ -476,8 +476,8 @@ def store_metadata( result: Dict[str, Any] = { "status": "failure", "file": str(file), - "version": config.BACKUP_VERSION, - "db_structure_version": config.BACKUP_DB_STRUCTURE_VERSION, + "version": settings.BACKUP_VERSION, + "db_structure_version": settings.BACKUP_DB_STRUCTURE_VERSION, "errors": errors, "took_ms": took_ms, } @@ -485,8 +485,8 @@ def store_metadata( result: Dict[str, Any] = { "status": "success", "file": str(file), - "version": config.BACKUP_VERSION, - "db_structure_version": config.BACKUP_DB_STRUCTURE_VERSION, + "version": settings.BACKUP_VERSION, + "db_structure_version": settings.BACKUP_DB_STRUCTURE_VERSION, "file_count": 2, "took_ms": took_ms, } @@ -505,7 +505,7 @@ def check_metadata( # Initialization start_ns = time.monotonic_ns() filepath = Path(filepath or settings.BACKUP_PATH) - filename = filename or config.BACKUP_METADATA_FILE + filename = filename or settings.BACKUP_METADATA_FILE file = filepath / filename try: @@ -517,10 +517,10 @@ def check_metadata( raise ValueError("Invalid metadata: missing or invalid 'files'") # Validate versions - if metadata.get("backup_version") != config.BACKUP_VERSION: + if metadata.get("backup_version") != settings.BACKUP_VERSION: raise ValueError("Backup version mismatch") - if metadata.get("db_structure_version") != config.BACKUP_DB_STRUCTURE_VERSION: + if metadata.get("db_structure_version") != settings.BACKUP_DB_STRUCTURE_VERSION: raise ValueError("DB structure not compatible") # Validate files diff --git a/backend/bootstrap.py b/backend/bootstrap.py index 0520048..5befe2a 100644 --- a/backend/bootstrap.py +++ b/backend/bootstrap.py @@ -10,8 +10,10 @@ import backend.db.users import backend.db.hosts import backend.db.aliases -# Import Settings & Logging +# Import Settings & Config from backend.settings.settings import settings +from backend.db.config import get_config +# Import Logging from backend.log.log import setup_logging, get_logger # ------------------------------------------------------------------------------ diff --git a/backend/db/config.py b/backend/db/config.py index 8e292df..a623ebd 100644 --- a/backend/db/config.py +++ b/backend/db/config.py @@ -7,8 +7,9 @@ import sqlite3 # Import local modules from backend.db.db import get_db, register_init -# Import Settings & Logging +# Import Settings from backend.settings.settings import settings +# Import Logging from backend.log.log import get_logger # Logger initialization @@ -18,9 +19,9 @@ logger = get_logger(__name__) # Type mapping for config keys # --------------------------------------------------------- CONFIG_TYPES = { - "external_name": str, - "login_max_attempts": int, - "login_window_seconds": int, + "EXTERNAL_NAME": str, + "LOGIN_MAX_ATTEMPTS": int, + "LOGIN_WINDOW_SECONDS": int, } # --------------------------------------------------------- @@ -28,7 +29,10 @@ CONFIG_TYPES = { # --------------------------------------------------------- _config_cache = {} -def invalidate_config(key=None): +# --------------------------------------------------------- +# Clear cache +# --------------------------------------------------------- +def clear_cache(key=None): """Clear cached config entry (or full cache).""" if key: _config_cache.pop(key, None) diff --git a/backend/db/leases.py b/backend/db/leases.py index f7cdd44..6e82ea8 100644 --- a/backend/db/leases.py +++ b/backend/db/leases.py @@ -5,10 +5,13 @@ import csv from pathlib import Path from typing import Any, Dict, List, Optional -# Import Settings & Logging +# Import local modules +from backend.utils import to_bool, to_int + +# Import Settings from backend.settings.settings import settings +# Import Logging from backend.log.log import get_logger -from backend.utils import to_bool, to_int # ----------------------------- # Normalizes column names to expected keys diff --git a/backend/db/users.py b/backend/db/users.py index 87b9ba9..2aa8e30 100644 --- a/backend/db/users.py +++ b/backend/db/users.py @@ -9,8 +9,9 @@ import os # Import local modules from backend.db.db import get_db, register_init -# Import Settings & Logging +# Import Settings from backend.settings.settings import settings +# Import Logging from backend.log.log import get_logger # Logger initialization diff --git a/backend/routes/about.py b/backend/routes/about.py index 26ac077..058fbc1 100644 --- a/backend/routes/about.py +++ b/backend/routes/about.py @@ -4,11 +4,9 @@ from fastapi import APIRouter from datetime import datetime, timezone -# Import local modules -from backend.db.config import get_config - -# Import Settings +# Import Settings & Config from backend.settings.settings import settings +from backend.db.config import get_config # Create Router router = APIRouter() diff --git a/backend/routes/aliases.py b/backend/routes/aliases.py index d3106f7..797243e 100644 --- a/backend/routes/aliases.py +++ b/backend/routes/aliases.py @@ -15,8 +15,9 @@ from backend.db.aliases import ( delete_alias ) -# Import Settings & Logging +# Import Settings from backend.settings.settings import settings +# Import Logging from backend.log.log import get_logger # Logger initialization diff --git a/backend/routes/certificates.py b/backend/routes/certificates.py index a18e4d2..aff1cde 100644 --- a/backend/routes/certificates.py +++ b/backend/routes/certificates.py @@ -11,8 +11,9 @@ import os from backend.db.hosts import get_hosts_certificates from backend.db.aliases import get_aliases_certificates -# Import Settings & Logging +# Import Settings from backend.settings.settings import settings +# Import Logging from backend.log.log import get_logger # Logger initialization diff --git a/backend/routes/devices.py b/backend/routes/devices.py index 05793ae..d1f866c 100644 --- a/backend/routes/devices.py +++ b/backend/routes/devices.py @@ -11,8 +11,10 @@ import time from backend.db.hosts import get_hosts from backend.db.leases import get_leases -# Import Settings & Logging +# Import Settings & Config from backend.settings.settings import settings +from backend.db.config import get_config +# Import Logging from backend.log.log import get_logger from backend.utils import is_host_active diff --git a/backend/routes/dhcp.py b/backend/routes/dhcp.py index e777fe1..8a8a791 100644 --- a/backend/routes/dhcp.py +++ b/backend/routes/dhcp.py @@ -10,8 +10,9 @@ import time from backend.db.hosts import get_hosts from backend.db.leases import get_leases, get_lease, delete_lease -# Import Settings & Logging +# Import Settings from backend.settings.settings import settings +# Import Logging from backend.log.log import get_logger # Logger initialization diff --git a/backend/routes/dns.py b/backend/routes/dns.py index bd5bff8..55bb5d8 100644 --- a/backend/routes/dns.py +++ b/backend/routes/dns.py @@ -9,12 +9,13 @@ import ipaddress import time # Import local modules -from backend.db.config import get_config from backend.db.hosts import get_hosts from backend.db.aliases import get_aliases -# Import Settings & Logging +# Import Settings & Config from backend.settings.settings import settings +from backend.db.config import get_config +# Import Logging from backend.log.log import get_logger # Logger initialization @@ -77,7 +78,7 @@ async def api_dns_reload(request: Request): f.write(line) # Get Ext_Cname - ext_cname = get_config("external_name") + ext_cname = get_config("EXTERNAL_NAME") # Save DNS Host and Aliases for the EXT DNS path = settings.DNS_HOST_FILE.with_name( diff --git a/backend/routes/health.py b/backend/routes/health.py index 9de0de3..c1dd440 100644 --- a/backend/routes/health.py +++ b/backend/routes/health.py @@ -6,8 +6,9 @@ import sqlite3 import time import os -# Import Settings & Logging +# Import Settings from backend.settings.settings import settings +# Import Logging from backend.log.log import get_logger # Logger initialization diff --git a/backend/routes/hosts.py b/backend/routes/hosts.py index bbdf9e4..6137bcd 100644 --- a/backend/routes/hosts.py +++ b/backend/routes/hosts.py @@ -15,8 +15,9 @@ from backend.db.hosts import ( delete_host ) -# Import Settings & Logging +# Import Settings from backend.settings.settings import settings +# Import Logging from backend.log.log import get_logger # Logger initialization diff --git a/backend/routes/login.py b/backend/routes/login.py index baec3af..a15cf5b 100644 --- a/backend/routes/login.py +++ b/backend/routes/login.py @@ -6,11 +6,11 @@ from fastapi.responses import FileResponse import time # Import local modules -from backend.db.config import get_config from backend.security import verify_login, apply_session, close_session -# Import Settings & Logging +# Import Settings & Config from backend.settings.settings import settings +from backend.db.config import get_config # Create Router router = APIRouter() @@ -22,9 +22,9 @@ def check_rate_limit(ip: str): now = time.time() attempts = login_attempts.get(ip, []) # tieni solo tentativi negli ultimi LOGIN_WINDOW_SECONDS secondi - attempts = [t for t in attempts if now - t < int(get_config("login_window_seconds"))] + attempts = [t for t in attempts if now - t < get_config("LOGIN_WINDOW_SECONDS")] - if len(attempts) >= int(get_config("login_max_attempts")): + if len(attempts) >= get_config("LOGIN_MAX_ATTEMPTS"): raise HTTPException( status_code=status.HTTP_429_TOO_MANY_REQUESTS, detail={ diff --git a/backend/security.py b/backend/security.py index cf3aace..b364f26 100644 --- a/backend/security.py +++ b/backend/security.py @@ -9,8 +9,9 @@ from itsdangerous import TimestampSigner # Import local modules from backend.db.users import get_user_by_username -# Import Settings & Logging +# Import Settings from backend.settings.settings import settings +# Import Logging from backend.log.log import get_logger # Logger initialization diff --git a/backend/server.py b/backend/server.py index 3cbc267..e63a024 100644 --- a/backend/server.py +++ b/backend/server.py @@ -3,8 +3,10 @@ # import standard modules import uvicorn -# Import Settings & Logging +# Import Settings & Config from backend.settings.settings import settings +from backend.db.config import get_config +# Import Logging from backend.log.log import get_logger # Logger initialization diff --git a/backend/settings/default.py b/backend/settings/default.py index b7b40f0..8e2fe3a 100644 --- a/backend/settings/default.py +++ b/backend/settings/default.py @@ -19,7 +19,7 @@ DB_RESET = False # --------------------------------------------------------- # Log # --------------------------------------------------------- -LOG_LEVEL = "INFO" +LOG_LEVEL = "info" LOG_TO_FILE = False LOG_FILE = "app.log" LOG_ACCESS_FILE = "access.log" diff --git a/backend/settings/settings.py b/backend/settings/settings.py index e769f74..a5e05f0 100644 --- a/backend/settings/settings.py +++ b/backend/settings/settings.py @@ -114,6 +114,11 @@ class Settings(BaseModel): # Backup BACKUP_PATH: Path = Field(default_factory=lambda: Path(os.getenv("BACKUP_PATH", default.BACKUP_PATH))) + BACKUP_VERSION: str = Field(default_factory=lambda: config.BACKUP_VERSION) + BACKUP_DB_STRUCTURE_VERSION: str = Field(default_factory=lambda: config.BACKUP_DB_STRUCTURE_VERSION) + BACKUP_METADATA_FILE: str = Field(default_factory=lambda: config.BACKUP_METADATA_FILE) + BACKUP_HOSTS_FILE: str = Field(default_factory=lambda: config.BACKUP_HOSTS_FILE) + BACKUP_ALIASES_FILE: str = Field(default_factory=lambda: config.BACKUP_ALIASES_FILE) # APP Features PING_WORKERS: int = Field(default_factory=lambda: to_int(os.getenv("PING_WORKERS"), default.PING_WORKERS))