Fix: Added missing CREATE TABLE statements for audit_logs and scheduled_tasks
This commit is contained in:
+30
-8
@@ -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()]));
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
Reference in New Issue
Block a user