This commit is contained in:
2026-03-05 02:22:18 +01:00
parent 8ee9b364ee
commit 2d4f53351a
2 changed files with 7 additions and 17 deletions

View File

@@ -32,8 +32,6 @@
{ "name": "db.user", "label": "DB User", "type": "text", "required": false },
{ "name": "db.password", "label": "DB Passwort", "type": "password", "required": false },
{ "name": "ttyd_url", "label": "ttyd URL", "type": "text", "required": false, "help": "z.B. https://staging.nexus.int.kusche.berlin/ttyd" },
{ "name": "wetty_url", "label": "WeTTY URL", "type": "text", "required": false, "help": "z.B. https://staging.nexus.int.kusche.berlin/wetty" },
{ "name": "terminal_default_provider", "label": "Standard-Konsole", "type": "text", "required": false, "help": "ttyd oder wetty" },
{ "name": "terminal_token_ttl", "label": "Token TTL (Minuten)", "type": "number", "required": false, "help": "Gültigkeit der Konsole-Token, z.B. 10" },
{ "name": "terminal_shared_secret", "label": "Terminal Shared Secret", "type": "password", "required": false, "help": "Zusätzliche Absicherung für terminal_info (Header X-Terminal-Secret)" }
]

View File

@@ -11,8 +11,7 @@ $terminalUrl = null;
$settings = modules()->settings('pi_control');
$ttydUrl = trim((string)($settings['ttyd_url'] ?? '/ttyd'));
$wettyUrl = trim((string)($settings['wetty_url'] ?? '/wetty'));
$defaultProvider = (string)($settings['terminal_default_provider'] ?? 'ttyd');
$defaultProvider = 'ttyd';
$tokenTtl = (int)($settings['terminal_token_ttl'] ?? 10);
$tokenTtl = $tokenTtl > 0 ? $tokenTtl : 10;
@@ -24,11 +23,12 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if ($action === 'open_console') {
$hostId = (int)($_POST['terminal_host_id'] ?? 0);
$provider = (string)($_POST['terminal_provider'] ?? $defaultProvider);
$provider = in_array($provider, ['ttyd', 'wetty'], true) ? $provider : 'ttyd';
$provider = 'ttyd';
if ($hostId <= 0) {
$terminalError = 'Bitte einen Host wählen.';
} elseif ($ttydUrl === '') {
$terminalError = 'ttyd URL fehlt. Bitte im Setup setzen.';
} else {
$driver = (string)$pdo->getAttribute(PDO::ATTR_DRIVER_NAME);
$expiresSql = $driver === 'pgsql'
@@ -47,13 +47,8 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
'created_by' => auth_display_name() ?: null,
]);
if ($provider === 'ttyd') {
$sep = str_contains($ttydUrl, '?') ? '&' : '?';
$terminalUrl = rtrim($ttydUrl, '/') . '/' . $sep . 'arg=' . rawurlencode($token);
} else {
$terminalUrl = $wettyUrl;
$terminalNotice = 'WeTTY nutzt den Standard-Host aus der Container-Konfiguration. Für Host-Auswahl bitte ttyd nutzen.';
}
$sep = str_contains($ttydUrl, '?') ? '&' : '?';
$terminalUrl = rtrim($ttydUrl, '/') . '/' . $sep . 'arg=' . rawurlencode($token);
}
} else {
$hostId = (int)($_POST['host_id'] ?? 0);
@@ -140,10 +135,7 @@ $runs = $pdo->query('SELECT * FROM ' . $table('runs') . ' ORDER BY id DESC LIMIT
</label>
<label class="form-field">
<span class="muted">Konsole</span>
<select name="terminal_provider" title="Wähle die Terminal-Engine.">
<option value="ttyd" <?= $defaultProvider === 'ttyd' ? 'selected' : '' ?>>ttyd (empfohlen)</option>
<option value="wetty" <?= $defaultProvider === 'wetty' ? 'selected' : '' ?>>WeTTY</option>
</select>
<input type="text" value="ttyd" disabled>
</label>
<button class="cta-button" type="submit">Konsole öffnen</button>
</form>