Fix: Added missing CREATE TABLE statements for audit_logs and scheduled_tasks

This commit is contained in:
root
2026-08-23 20:00:08 +02:00
parent 2208bb0ec7
commit 2d52ee6113
+30 -8
View File
@@ -1,10 +1,11 @@
<?php <?php
// /home/docker/pve_dashboard/src/db.php
session_start(); session_start();
try { try {
// Hier ist der Fix: Der Pfad zeigt wieder auf das ausgelagerte /data Verzeichnis!
$pdo = new PDO('sqlite:' . __DIR__ . '/../data/dashboard.sqlite'); $pdo = new PDO('sqlite:' . __DIR__ . '/../data/dashboard.sqlite');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// 1. User Tabelle
$pdo->exec("CREATE TABLE IF NOT EXISTS users ( $pdo->exec("CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT, id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT NOT NULL UNIQUE, username TEXT NOT NULL UNIQUE,
@@ -14,6 +15,7 @@ try {
created_at DATETIME DEFAULT CURRENT_TIMESTAMP created_at DATETIME DEFAULT CURRENT_TIMESTAMP
)"); )");
// 2. Nodes Tabelle
$pdo->exec("CREATE TABLE IF NOT EXISTS nodes ( $pdo->exec("CREATE TABLE IF NOT EXISTS nodes (
id INTEGER PRIMARY KEY AUTOINCREMENT, id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL, name TEXT NOT NULL,
@@ -23,19 +25,39 @@ try {
type TEXT DEFAULT 'pve' type TEXT DEFAULT 'pve'
)"); )");
// Automatisches Datenbank-Upgrade für den PBS! (Fügt Spalte 'type' hinzu, falls sie fehlt) // Automatisches Upgrade für ältere Versionen
try { try { $pdo->exec("ALTER TABLE nodes ADD COLUMN type TEXT DEFAULT 'pve'"); } catch (PDOException $e) {}
$pdo->exec("ALTER TABLE nodes ADD COLUMN type TEXT DEFAULT 'pve'");
} catch (PDOException $e) {
// Ignorieren, wenn die Spalte bereits existiert
}
// 3. NEU: Task Scheduler Tabelle
$pdo->exec("CREATE TABLE IF NOT EXISTS scheduled_tasks (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
node_id INTEGER NOT NULL,
action_type TEXT NOT NULL,
target_vmid TEXT,
cron_schedule TEXT NOT NULL,
last_run INTEGER DEFAULT 0,
is_active INTEGER DEFAULT 1,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
)");
// 4. NEU: Audit Logs Tabelle
$pdo->exec("CREATE TABLE IF NOT EXISTS audit_logs (
id INTEGER PRIMARY KEY AUTOINCREMENT,
user_id INTEGER,
username TEXT,
action TEXT,
target TEXT,
timestamp DATETIME DEFAULT CURRENT_TIMESTAMP
)");
// Standard-Admin anlegen, falls noch keine User existieren
$stmt = $pdo->query("SELECT COUNT(*) FROM users"); $stmt = $pdo->query("SELECT COUNT(*) FROM users");
if ($stmt->fetchColumn() == 0) { if ($stmt->fetchColumn() == 0) {
$hash = password_hash('admin', PASSWORD_DEFAULT); $hash = password_hash('admin', PASSWORD_DEFAULT);
$pdo->exec("INSERT INTO users (username, password_hash, role) VALUES ('admin', '$hash', 'admin')"); $pdo->exec("INSERT INTO users (username, password_hash, role) VALUES ('admin', '$hash', 'admin')");
} }
} catch (PDOException $e) { } catch (PDOException $e) {
die("Datenbank-Fehler: " . $e->getMessage()); die(json_encode(['success' => false, 'error' => "Datenbank-Fehler: " . $e->getMessage()]));
} }
?> ?>