# Initialize Aliases DB Table
# -----------------------------
@register_init
-def init_db_alias_table(cur: sqlite3.Cursor) -> None:
+def init_db_aliases_table(cur: sqlite3.Cursor) -> None:
# ALIASES TABLE
cur.execute(
"""
- CREATE TABLE aliases (
+ CREATE TABLE IF NOT EXISTS aliases (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL UNIQUE,
target TEXT NOT NULL,
);
"""
)
- cur.execute("CREATE INDEX idx_aliases_name ON aliases(name);")
-
- logger.info("ALIASES DB: Database initialized successfully")
+ cur.execute("CREATE INDEX IF NOT EXISTS idx_aliases_name ON aliases(name);")
# -----------------------------
# Reset Aliases DB Table
# backend/db/config.py
-# Import standard modules
-import os
-import sqlite3
-
# Import local modules
from backend.db.db import get_db, register_init
"LOGIN_WINDOW_SECONDS": int,
}
+# ---------------------------------------------------------
+# Default Values
+# ---------------------------------------------------------
+CONFIG_DEFAULTS = {
+ "EXTERNAL_NAME": settings.EXTERNAL_NAME,
+ "LOGIN_MAX_ATTEMPTS": settings.LOGIN_MAX_ATTEMPTS,
+ "LOGIN_WINDOW_SECONDS": settings.LOGIN_WINDOW_SECONDS,
+}
+
# ---------------------------------------------------------
# Runtime cache to avoid repeated DB queries
# ---------------------------------------------------------
return value
# ---------------------------------------------------------
-# Initialize Config DB Table
+# Create Config DB Tables
# ---------------------------------------------------------
@register_init
-def init_db_hosts_table(cur):
+def init_db_config_table(cur):
# CONFIG TABLE
cur.execute("""
- CREATE TABLE config (
+ CREATE TABLE IF NOT EXISTS config (
key TEXT PRIMARY KEY,
value TEXT
);
""")
- # Initial values from settings (as strings in DB)
- cur.execute("INSERT INTO config (key, value) VALUES (?, ?)", ("external_name", settings.EXTERNAL_NAME))
- cur.execute("INSERT INTO config (key, value) VALUES (?, ?)", ("login_max_attempts", str(settings.LOGIN_MAX_ATTEMPTS)))
- cur.execute("INSERT INTO config (key, value) VALUES (?, ?)", ("login_window_seconds", str(settings.LOGIN_WINDOW_SECONDS)))
+# ---------------------------------------------------------
+# Initialize Config DB Tables
+# ---------------------------------------------------------
+@register_init
+def init_db_config_defaults(cur):
- logger.info("CONFIG DB: Tables initialized successfully")
+ # Add configuration parameters
+ for key, value in CONFIG_DEFAULTS.items():
+ cur.execute("INSERT OR IGNORE INTO config VALUES (?, ?)", (key, str(value)))
# HOSTS TABLE
cur.execute(
"""
- CREATE TABLE hosts (
+ CREATE TABLE IF NOT EXISTS hosts (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL UNIQUE,
ipv4 TEXT,
);
"""
)
- cur.execute("CREATE INDEX idx_hosts_name ON hosts(name);")
+ cur.execute("CREATE INDEX IF NOT EXISTS idx_hosts_name ON hosts(name);")
# TXT TABLE
cur.execute(
"""
- CREATE TABLE txt_records (
+ CREATE TABLE IF NOT EXISTS txt_records (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
value TEXT NOT NULL,
);
"""
)
- cur.execute("CREATE INDEX idx_txt_host ON txt_records(host_id);")
-
- logger.info("HOSTS DB: Tables initialized successfully")
+ cur.execute("CREATE INDEX IF NOT EXISTS idx_txt_host ON txt_records(host_id);")
# -----------------------------
# Reset Hosts DB Table
updated_at INTEGER NOT NULL
);
""")
- cur.execute("CREATE INDEX idx_users_username ON users(username);")
+ cur.execute("CREATE INDEX IF NOT EXISTS idx_users_username ON users(username);")
+
+# -----------------------------
+# Populate Users Tables
+# -----------------------------
+@register_init
+def init_db_users_defaults(cur):
# Insert default admin user
- if not settings.ADMIN_PASSWORD_HASH:
- settings.ADMIN_PASSWORD_HASH = hash_password(settings.ADMIN_PASSWORD)
+ if settings.ADMIN_PASSWORD_HASH:
+ password_hash = settings.ADMIN_PASSWORD_HASH
else:
- settings.ADMIN_PASSWORD = "(hidden)"
+ password_hash = hash_password(settings.ADMIN_PASSWORD)
cur.execute("""
- INSERT INTO users (
+ INSERT or IGNORE INTO users (
username, password_hash, email, is_admin, modules, status,
created_at, updated_at, password_changed_at
) VALUES (?, ?, ?, ?, ?, ?, strftime('%s','now'), strftime('%s','now'), strftime('%s','now'));
""", (
settings.ADMIN_USER,
- settings.ADMIN_PASSWORD_HASH,
+ password_hash,
"admin@example.com",
1,
'["dns","dhcp"]',
"active"
))
-
- logger.info("USERS DB: Tables initialized successfully")