clusev/app/Livewire
boban 05f8ce49b4 feat: add-server, apt updates, fail2ban config; clean modals; drop storage internals
Operator feedback: no way to add servers; irrelevant storage-internals text; fail2ban
only on/off; raw shell commands shown; no apt update/upgrade.

- Add server: CreateServer modal (name, IP/host, SSH port, user, password|key, optional
  label) on the Servers index → creates server + encrypted credential ATOMICALLY (DB
  transaction). Strict IP/hostname validation (filter_var + hostname; rejects 999.x, ':').
- System updates (Debian/Ubuntu only): MaintenanceService + SystemUpdate modal — shows the
  pending-update count (or "unbekannt" when undeterminable) and runs apt update && upgrade
  as root; gated to apt hosts.
- fail2ban configuration: Fail2banConfig modal — Sperrdauer / Max. Fehlversuche / Zeitfenster,
  written to a Clusev-owned jail.d drop-in (zz-clusev.local, last-wins; never touches the
  operator's jail.local/jails). Durations kept verbatim in fail2ban's native grammar
  (600, 10m, 1h 30m, -1). Reads the EFFECTIVE [DEFAULT] across files; refuses to save when the
  current policy couldn't be read (no overwrite with unseen defaults); reloads fail2ban only
  when already active (never starts it).
- Modals: removed the raw "Befehle (als root)" preview + raw stdout dumps from the hardening
  modal — clean German description + result only.
- System page: dropped the .env/Datenbank storage-internals callout (irrelevant to the user).

R15 — Codex gate: `codex review --uncommitted` run iteratively; fixed every finding across 9
rounds (fail2ban jail clobbering, section/precedence, composite/-1 durations, reload-starting-
inactive, read-failure propagation, glob exit code, apt-count failure, atomic server create,
IP validation) until clean — 0 security issues throughout. Live-verified on 10.10.90.162;
R12: Servers/Detail/System 200 / 0 console errors, modals open, hardening modal shows no commands.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-13 12:19:55 +02:00
..
Audit feat: v1 pages — servers (index + details), services, files, audit + SSH layer 2026-06-12 06:33:59 +02:00
Auth feat(security): dashboard hardening, credential mgmt, system domain/TLS + channel, self-hardening 2026-06-13 02:25:23 +02:00
Concerns feat(ssh): wire real fleet data over SSH (FleetService + live poller) 2026-06-12 21:34:13 +02:00
Files fix(ux): editor click bug (@js→index), self-hosted fonts, split-brand auth, R14 2026-06-13 01:16:31 +02:00
Modals feat: add-server, apt updates, fail2ban config; clean modals; drop storage internals 2026-06-13 12:19:55 +02:00
Servers feat: add-server, apt updates, fail2ban config; clean modals; drop storage internals 2026-06-13 12:19:55 +02:00
Services fix(ux): editor click bug (@js→index), self-hosted fonts, split-brand auth, R14 2026-06-13 01:16:31 +02:00
Settings feat(ux): real metrics+context, working file manager, settings redesign, EN routes 2026-06-13 00:32:05 +02:00
System feat: add-server, apt updates, fail2ban config; clean modals; drop storage internals 2026-06-13 12:19:55 +02:00
Versions fix+feat(release/security): apt timeout, real version/release model, domain in DB not .env, R15 2026-06-13 03:06:35 +02:00
Dashboard.php feat(versions)+fix: password-sudo service control, honest login, real versions page 2026-06-13 01:43:48 +02:00
ServerSwitcher.php feat: multi-server switcher + fleet context 2026-06-12 13:45:40 +02:00