From c3e014fdd6026002f263237a8ddf19582fbaa9ee Mon Sep 17 00:00:00 2001 From: Giorgio Ravera Date: Thu, 12 Mar 2026 17:36:00 +0100 Subject: [PATCH] Updated log and settings module & created config table in db --- Dockerfile | 2 -- backend/app.py | 4 +-- backend/bootstrap.py | 7 ++-- backend/db/aliases.py | 7 ++-- backend/db/config.py | 42 ++++++++++++++++++++++ backend/db/db.py | 5 +-- backend/db/hosts.py | 17 +++------ backend/db/users.py | 6 ++-- {log => backend/log}/__init__.py | 0 {log => backend/log}/log.py | 2 +- backend/main.py | 1 + {settings => backend/routes}/__init__.py | 0 backend/routes/about.py | 10 ++++-- backend/routes/aliases.py | 6 ++-- backend/routes/backup.py | 6 ++-- backend/routes/dhcp.py | 6 ++-- backend/routes/dns.py | 14 +++++--- backend/routes/health.py | 5 +-- backend/routes/hosts.py | 6 ++-- backend/routes/login.py | 6 ++-- backend/security.py | 6 ++-- backend/server.py | 4 +-- backend/settings/__init__.py | 0 {settings => backend/settings}/config.py | 2 +- {settings => backend/settings}/default.py | 2 +- {settings => backend/settings}/settings.py | 3 +- 26 files changed, 116 insertions(+), 53 deletions(-) create mode 100644 backend/db/config.py rename {log => backend/log}/__init__.py (100%) rename {log => backend/log}/log.py (99%) rename {settings => backend/routes}/__init__.py (100%) create mode 100644 backend/settings/__init__.py rename {settings => backend/settings}/config.py (85%) rename {settings => backend/settings}/default.py (98%) rename {settings => backend/settings}/settings.py (99%) diff --git a/Dockerfile b/Dockerfile index db0c261..c31cacb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -15,8 +15,6 @@ RUN pip wheel --no-cache-dir --wheel-dir /wheels -r requirements.txt # Copy full application COPY backend backend COPY frontend frontend -COPY log log -COPY settings settings # ---------- STAGE 2: Alpine Runtime ---------- FROM python:3.12-alpine diff --git a/backend/app.py b/backend/app.py index 41eef47..99b4c4a 100644 --- a/backend/app.py +++ b/backend/app.py @@ -23,8 +23,8 @@ from backend.routes.dhcp import router as dhcp_router from backend.security import is_logged_in, apply_session # Import Settings & Logging -from settings.settings import settings -from log.log import get_logger +from backend.settings.settings import settings +from backend.log.log import get_logger # Logger initialization logger = get_logger(__name__) diff --git a/backend/bootstrap.py b/backend/bootstrap.py index ca3261e..4515acb 100644 --- a/backend/bootstrap.py +++ b/backend/bootstrap.py @@ -3,14 +3,17 @@ # Import standard modules import logging import os + # Import backend modules from backend.db.db import init_db +import backend.db.config import backend.db.users import backend.db.hosts import backend.db.aliases + # Import Settings & Logging -from settings.settings import settings -from log.log import setup_logging, get_logger +from backend.settings.settings import settings +from backend.log.log import setup_logging, get_logger # ------------------------------------------------------------------------------ # Welcome log diff --git a/backend/db/aliases.py b/backend/db/aliases.py index 038a770..cd2950c 100644 --- a/backend/db/aliases.py +++ b/backend/db/aliases.py @@ -6,11 +6,12 @@ import logging import os import re import sqlite3 + # Import local modules from backend.db.db import get_db, register_init -# Import Settings & Logging -from settings.settings import settings -from log.log import get_logger + +# Import Logging +from backend.log.log import setup_logging, get_logger # Logger initialization logger = get_logger(__name__) diff --git a/backend/db/config.py b/backend/db/config.py new file mode 100644 index 0000000..add67e2 --- /dev/null +++ b/backend/db/config.py @@ -0,0 +1,42 @@ +# backend/db/config.py + +# Import standard modules +import os +import sqlite3 + +# Import local modules +from backend.db.db import get_db, register_init + +# Import Settings & Logging +from backend.settings.settings import settings +from backend.log.log import setup_logging, get_logger + +# Logger initialization +logger = get_logger(__name__) + +# ----------------------------- +# Return a specific config value +# ----------------------------- +def get_config(key): + conn = get_db() + cur = conn.execute("SELECT value FROM config WHERE key = ?", (key,)) + row = cur.fetchone() + return row["value"] if row else None + +# ----------------------------- +# Initialize Config DB Table +# ----------------------------- +@register_init +def init_db_hosts_table(cur): + + # SETTINGS TABLE + cur.execute(""" + CREATE TABLE config ( + key TEXT PRIMARY KEY, + value TEXT + ); + """) + cur.execute("INSERT INTO config (key, value) VALUES (?, ?)", ("domain", settings.DOMAIN)) + cur.execute("INSERT INTO config (key, value) VALUES (?, ?)", ("external_name", settings.EXTERNAL_NAME)) + + logger.info("CONFIG DB: Tables initialized successfully") diff --git a/backend/db/db.py b/backend/db/db.py index 99257fe..8697f14 100644 --- a/backend/db/db.py +++ b/backend/db/db.py @@ -3,9 +3,10 @@ # Import standard modules import os import sqlite3 + # Import Settings & Logging -from settings.settings import settings -from log.log import get_logger +from backend.settings.settings import settings +from backend.log.log import setup_logging, get_logger # Logger initialization logger = get_logger(__name__) diff --git a/backend/db/hosts.py b/backend/db/hosts.py index 92c861c..b44d84a 100644 --- a/backend/db/hosts.py +++ b/backend/db/hosts.py @@ -6,11 +6,12 @@ import logging import os import re import sqlite3 + # Import local modules from backend.db.db import get_db, register_init -# Import Settings & Logging -from settings.settings import settings -from log.log import get_logger + +# Import Logging +from backend.log.log import setup_logging, get_logger # Logger initialization logger = get_logger(__name__) @@ -197,16 +198,6 @@ def delete_host(host_id: int) -> bool: @register_init def init_db_hosts_table(cur): - # SETTINGS TABLE - cur.execute(""" - CREATE TABLE settings ( - key TEXT PRIMARY KEY, - value TEXT - ); - """) - cur.execute("INSERT INTO settings (key, value) VALUES (?, ?)", ("domain", settings.DOMAIN)) - cur.execute("INSERT INTO settings (key, value) VALUES (?, ?)", ("external_name", settings.EXTERNAL_NAME)) - # HOSTS TABLE cur.execute(""" CREATE TABLE hosts ( diff --git a/backend/db/users.py b/backend/db/users.py index ffc6825..1a116b4 100644 --- a/backend/db/users.py +++ b/backend/db/users.py @@ -5,11 +5,13 @@ import bcrypt import json import logging import os + # Import local modules from backend.db.db import get_db, register_init + # Import Settings & Logging -from settings.settings import settings -from log.log import get_logger +from backend.settings.settings import settings +from backend.log.log import setup_logging, get_logger # Logger initialization logger = get_logger(__name__) diff --git a/log/__init__.py b/backend/log/__init__.py similarity index 100% rename from log/__init__.py rename to backend/log/__init__.py diff --git a/log/log.py b/backend/log/log.py similarity index 99% rename from log/log.py rename to backend/log/log.py index 899b179..18f43ab 100644 --- a/log/log.py +++ b/backend/log/log.py @@ -1,4 +1,4 @@ -# log/log.py +# backend/log/log.py from __future__ import annotations diff --git a/backend/main.py b/backend/main.py index 67d407a..21c5818 100644 --- a/backend/main.py +++ b/backend/main.py @@ -2,6 +2,7 @@ # Import standard modules import os + # Import backend modules from backend.bootstrap import bootstrap from backend.app import create_app diff --git a/settings/__init__.py b/backend/routes/__init__.py similarity index 100% rename from settings/__init__.py rename to backend/routes/__init__.py diff --git a/backend/routes/about.py b/backend/routes/about.py index 2cdf606..1f7a1ca 100644 --- a/backend/routes/about.py +++ b/backend/routes/about.py @@ -2,8 +2,12 @@ # Import standard modules from fastapi import APIRouter + +# Import local modules +from backend.db.config import get_config + # Import Settings -from settings.settings import settings +from backend.settings.settings import settings # Create Router router = APIRouter() @@ -13,10 +17,10 @@ router = APIRouter() # --------------------------------------------------------- @router.get("/about") def about(): + domain = get_config("domain") return { "app": { "version": settings.APP_VERSION, }, - "domain": settings.DOMAIN, - "admin_hash_loaded": settings.ADMIN_PASSWORD_HASH is not None, + "domain": domain, } diff --git a/backend/routes/aliases.py b/backend/routes/aliases.py index cd0f686..98bbd7d 100644 --- a/backend/routes/aliases.py +++ b/backend/routes/aliases.py @@ -6,6 +6,7 @@ from fastapi.responses import FileResponse, JSONResponse, RedirectResponse import ipaddress import time import os + # Import local modules from backend.db.aliases import ( get_aliases, @@ -14,9 +15,10 @@ from backend.db.aliases import ( update_alias, delete_alias ) + # Import Settings & Logging -from settings.settings import settings -from log.log import get_logger +from backend.settings.settings import settings +from backend.log.log import setup_logging, get_logger # Logger initialization logger = get_logger(__name__) diff --git a/backend/routes/backup.py b/backend/routes/backup.py index 31d86e9..ae70764 100644 --- a/backend/routes/backup.py +++ b/backend/routes/backup.py @@ -8,11 +8,13 @@ import json import os import ipaddress import time + # Import local modules from backend.db.hosts import get_hosts + # Import Settings & Logging -from settings.settings import settings -from log.log import get_logger +from backend.settings.settings import settings +from backend.log.log import setup_logging, get_logger # Logger initialization logger = get_logger(__name__) diff --git a/backend/routes/dhcp.py b/backend/routes/dhcp.py index 73fe0e8..72755a8 100644 --- a/backend/routes/dhcp.py +++ b/backend/routes/dhcp.py @@ -10,11 +10,13 @@ import os import ipaddress from pathlib import Path import time + # Import local modules from backend.db.hosts import get_hosts + # Import Settings & Logging -from settings.settings import settings -from log.log import get_logger +from backend.settings.settings import settings +from backend.log.log import setup_logging, get_logger # Logger initialization logger = get_logger(__name__) diff --git a/backend/routes/dns.py b/backend/routes/dns.py index c260865..3b06526 100644 --- a/backend/routes/dns.py +++ b/backend/routes/dns.py @@ -8,12 +8,15 @@ import json import os 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 -from settings.settings import settings -from log.log import get_logger +from backend.settings.settings import settings +from backend.log.log import setup_logging, get_logger # Logger initialization logger = get_logger(__name__) @@ -41,6 +44,9 @@ async def api_dns_reload(request: Request): line = f"{h.get('name')}\t\t IN\tA\t{h.get('ipv4')}\n" f.write(line) + # Get Domain + domain = get_config("domain") + # Save DNS Reverse Configuration path = settings.DNS_REVERSE_FILE with open(path, "w", encoding="utf-8") as f: @@ -49,11 +55,11 @@ async def api_dns_reload(request: Request): if ip: parts = ip.split(".") rev = f"{parts[-1]}.{parts[-2]}" - line = f"{rev}\t\t IN PTR\t{h.get('name')}.{settings.DOMAIN}\n" + line = f"{rev}\t\t IN PTR\t{h.get('name')}.{domain}\n" f.write(line) # Get Aliases List - hosts = get_aliases() + aliases = get_aliases() # Save DNS Aliases Configuration path = settings.DNS_ALIAS_FILE diff --git a/backend/routes/health.py b/backend/routes/health.py index bf9cc3f..c357520 100644 --- a/backend/routes/health.py +++ b/backend/routes/health.py @@ -5,9 +5,10 @@ from fastapi import APIRouter import sqlite3 import time import os + # Import Settings & Logging -from settings.settings import settings -from log.log import get_logger +from backend.settings.settings import settings +from backend.log.log import setup_logging, get_logger # Logger initialization logger = get_logger(__name__) diff --git a/backend/routes/hosts.py b/backend/routes/hosts.py index bcb26d0..4864830 100644 --- a/backend/routes/hosts.py +++ b/backend/routes/hosts.py @@ -6,6 +6,7 @@ from fastapi.responses import FileResponse, JSONResponse, RedirectResponse import ipaddress import time import os + # Import local modules from backend.db.hosts import ( get_hosts, @@ -14,9 +15,10 @@ from backend.db.hosts import ( update_host, delete_host ) + # Import Settings & Logging -from settings.settings import settings -from log.log import get_logger +from backend.settings.settings import settings +from backend.log.log import setup_logging, get_logger # Logger initialization logger = get_logger(__name__) diff --git a/backend/routes/login.py b/backend/routes/login.py index 42ff197..608ba85 100644 --- a/backend/routes/login.py +++ b/backend/routes/login.py @@ -5,10 +5,12 @@ from fastapi import APIRouter, Request, Response, HTTPException, status from fastapi.responses import FileResponse, RedirectResponse import os import time + # Import local modules from backend.security import verify_login, apply_session, close_session -# Import Settings -from settings.settings import settings + +# Import Settings & Logging +from backend.settings.settings import settings # Create Router router = APIRouter() diff --git a/backend/security.py b/backend/security.py index 69b49ce..99f8db6 100644 --- a/backend/security.py +++ b/backend/security.py @@ -5,11 +5,13 @@ import bcrypt import os from fastapi import Request, HTTPException from itsdangerous import TimestampSigner + # Import local modules from backend.db.users import get_user_by_username + # Import Settings & Logging -from settings.settings import settings -from log.log import get_logger +from backend.settings.settings import settings +from backend.log.log import setup_logging, get_logger # Logger initialization logger = get_logger(__name__) diff --git a/backend/server.py b/backend/server.py index 3b73281..d69eaf3 100644 --- a/backend/server.py +++ b/backend/server.py @@ -4,8 +4,8 @@ import uvicorn # Import Settings & Logging -from settings.settings import settings -from log.log import get_logger +from backend.settings.settings import settings +from backend.log.log import setup_logging, get_logger # Logger initialization logger = get_logger(__name__) diff --git a/backend/settings/__init__.py b/backend/settings/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/settings/config.py b/backend/settings/config.py similarity index 85% rename from settings/config.py rename to backend/settings/config.py index 052f689..e5aea1a 100644 --- a/settings/config.py +++ b/backend/settings/config.py @@ -1,4 +1,4 @@ -# backend/config.py +# backend/settings/config.py # --------------------------------------------------------- # APP diff --git a/settings/default.py b/backend/settings/default.py similarity index 98% rename from settings/default.py rename to backend/settings/default.py index 2caf0e9..906e1a2 100644 --- a/settings/default.py +++ b/backend/settings/default.py @@ -1,4 +1,4 @@ -# backend/default.py +# backend/settings/default.py # --------------------------------------------------------- # Frontend diff --git a/settings/settings.py b/backend/settings/settings.py similarity index 99% rename from settings/settings.py rename to backend/settings/settings.py index 69e5e76..aacb5da 100644 --- a/settings/settings.py +++ b/backend/settings/settings.py @@ -1,4 +1,4 @@ -# backend/settings.py +# backend/settings/settings.py from __future__ import annotations @@ -9,6 +9,7 @@ import datetime from pathlib import Path from typing import Optional from pydantic import BaseModel, Field, field_validator + # Import Parameters from . import config, default -- 2.47.3