module_fn('pi_control', 'table', $name); $notice = null; $error = null; $hosts = $pdo->query('SELECT * FROM ' . $table('hosts') . ' ORDER BY name ASC')->fetchAll(PDO::FETCH_ASSOC); $commands = $pdo->query('SELECT * FROM ' . $table('commands') . ' ORDER BY label ASC')->fetchAll(PDO::FETCH_ASSOC); if ($_SERVER['REQUEST_METHOD'] === 'POST') { $hostId = (int)($_POST['host_id'] ?? 0); $commandId = (int)($_POST['command_id'] ?? 0); $rawCommand = trim((string)($_POST['command_text'] ?? '')); if ($hostId <= 0) { $error = 'Bitte einen Host wählen.'; } elseif ($commandId <= 0 && $rawCommand === '') { $error = 'Bitte einen Befehl wählen oder einen Befehl eingeben.'; } else { $selectedCommand = ''; if ($commandId > 0) { foreach ($commands as $c) { if ((int)$c['id'] === $commandId) { if (!auth_is_admin() && !empty($c['admin_only'])) { $error = 'Dieser Befehl ist nur für Admins.'; } else { $selectedCommand = (string)$c['command']; } break; } } } if (!$error) { $commandText = $selectedCommand !== '' ? $selectedCommand : $rawCommand; $stmt = $pdo->prepare( 'INSERT INTO ' . $table('runs') . ' (host_id, command_id, command_text, status, created_by) VALUES (:host_id, :command_id, :command_text, :status, :created_by)' ); $stmt->execute([ 'host_id' => $hostId, 'command_id' => $commandId > 0 ? $commandId : null, 'command_text' => $commandText, 'status' => 'pending', 'created_by' => auth_display_name() ?: null, ]); $notice = 'Befehl wurde erfasst. (Execution-Backend folgt)'; } } } $runs = $pdo->query('SELECT * FROM ' . $table('runs') . ' ORDER BY id DESC LIMIT 20')->fetchAll(PDO::FETCH_ASSOC); ?>
Wähle einen Host und führe einen Befehl aus.
Hinweis: Execution-Backend wird im nächsten Schritt ergänzt.
| ID | Status | Command | Von |
|---|---|---|---|
| Noch keine Runs. | |||
| = e((string)$r['id']) ?> | = e($r['status'] ?? '') ?> | = e($r['command_text'] ?? '') ?> |
= e($r['created_by'] ?? '') ?> |