Files
proxmox-unified-console/src/db.php
T

63 lines
2.1 KiB
PHP

<?php
// /home/docker/pve_dashboard/src/db.php
session_start();
try {
$pdo = new PDO('sqlite:' . __DIR__ . '/../data/dashboard.sqlite');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// 1. User Tabelle
$pdo->exec("CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT NOT NULL UNIQUE,
password_hash TEXT NOT NULL,
role TEXT DEFAULT 'viewer',
permissions TEXT DEFAULT '{}',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
)");
// 2. Nodes Tabelle
$pdo->exec("CREATE TABLE IF NOT EXISTS nodes (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
ip_address TEXT NOT NULL,
token_id TEXT NOT NULL,
token_secret TEXT NOT NULL,
type TEXT DEFAULT 'pve'
)");
// Automatisches Upgrade für ältere Versionen
try { $pdo->exec("ALTER TABLE nodes ADD COLUMN type TEXT DEFAULT 'pve'"); } catch (PDOException $e) {}
// 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");
if ($stmt->fetchColumn() == 0) {
$hash = password_hash('admin', PASSWORD_DEFAULT);
$pdo->exec("INSERT INTO users (username, password_hash, role) VALUES ('admin', '$hash', 'admin')");
}
} catch (PDOException $e) {
die(json_encode(['success' => false, 'error' => "Datenbank-Fehler: " . $e->getMessage()]));
}
?>