From 11d697e1bd1b7bc1319b0f1f4dbf6f828c4e2319 Mon Sep 17 00:00:00 2001 From: Giorgio Ravera Date: Mon, 16 Mar 2026 21:01:02 +0100 Subject: [PATCH] added backup for aliases --- backend/routes/backup.py | 51 ++++++++++++++++++++++++++++------------ 1 file changed, 36 insertions(+), 15 deletions(-) diff --git a/backend/routes/backup.py b/backend/routes/backup.py index b94badc..0e8986c 100644 --- a/backend/routes/backup.py +++ b/backend/routes/backup.py @@ -11,6 +11,7 @@ import time # Import local modules from backend.db.hosts import get_hosts +from backend.db.aliases import get_aliases # Import Settings & Logging from backend.settings.settings import settings @@ -22,30 +23,50 @@ logger = get_logger(__name__) # Create Router router = APIRouter() +# --------------------------------------------------------- +# Save Hosts DB +# --------------------------------------------------------- +def save_host(): + # Get Hosts List + hosts = get_hosts() + + # Backup Hosts DB + path = settings.DATA_PATH + "/hosts.json" + with open(path, "w", encoding="utf-8") as f: + for h in hosts: + f.write(json.dumps(h, ensure_ascii=False) + "\n") + +# --------------------------------------------------------- +# Save Aliases DB +# --------------------------------------------------------- +def save_aliases(): + # Get Aliases List + aliases = get_aliases() + + # Backup Aliases DB + path = settings.DATA_PATH + "/aliases.json" + with open(path, "w", encoding="utf-8") as f: + for a in aliases: + f.write(json.dumps(a, ensure_ascii=False) + "\n") + # --------------------------------------------------------- # API ENDPOINTS # --------------------------------------------------------- -@router.get("/api/backup") +@router.get("/api/backup", status_code=status.HTTP_200_OK, responses={ + 200: {"description": "Backup executed successfully"}, + 500: {"description": "Internal server error"}, +}) async def api_dns_reload(request: Request): - start_ns = time.monotonic_ns() # Inizializzazioni - error = False - message = None - code = None - status = None - dns_hosts = [] - dns_reverse = [] + start_ns = time.monotonic_ns() try: - # Get Hosts List - hosts = get_hosts() - # Backup Hosts DB - path = settings.DATA_PATH + "/hosts.json" - with open(path, "w", encoding="utf-8") as f: - for h in hosts: - f.write(json.dumps(h, ensure_ascii=False) + "\n") + save_host() + + # Backup Aliases DB + save_aliases() took_ms = (time.monotonic_ns() - start_ns) / 1_000_000 return JSONResponse( -- 2.47.3