clusev/app/Services
boban 65b92bc65c feat(uptime): HTTP/TCP health checks + status board (feature 8/8)
Uptime monitoring for the services the fleet hosts: HTTP and TCP probes with a live up/down status
board. Completes the monitoring trio (alerts, certs, uptime).

- HealthService::probe(check): native — Laravel HTTP client (withoutRedirecting; reports only the
  status code + latency, never the response body → no internal-content exfil) for http, a PHP TCP
  stream for tcp. No SSH, no shell, so the target is never interpolated into a command. 2xx/3xx = up;
  a 4xx/5xx means "answered but unhealthy"; a connect error = down.
- Health\Index page (route /health, `operate`-gated: route + mount + per-method). Add/remove checks
  (http target validated as a real http(s) URL; tcp target as a hostname/IP + a required port). Lazy
  per-check probe, each guarded. Up/total summary. Delete via signed ConfirmToken + R5 modal.
  Add/delete audited.
- lang/{de,en}/health.php + audit.php health.check_* + shell.nav_health (de/en parity). No emoji.

11 new tests: service (http 2xx up / 5xx down / connection-error down, tcp refused-port down),
component (route gating, add http + audit, reject non-url http target, tcp requires host+port,
reject missing port, scan probes each check, delete via confirmed token). 742 tests green, Pint,
lang parity, self-reviewed. A PUBLIC (unauthenticated) status page is a documented future.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 21:04:14 +02:00
..
.gitkeep feat: scaffold — Dockerized Laravel 13 + Livewire 3 + Tailwind 4 + Reverb 2026-06-12 00:31:50 +02:00
AlertEvaluator.php feat(alerts): threshold alerting + notifications (feature 2/8) 2026-07-05 20:07:54 +02:00
AlertNotifier.php feat(alerts): threshold alerting + notifications (feature 2/8) 2026-07-05 20:07:54 +02:00
BruteforceGuard.php fix(security): close file-read RBAC gap + fail2ban arg-injection + update/HMAC hardening 2026-07-05 16:05:16 +02:00
CertService.php feat(security): TLS certificate expiry monitoring (feature 7/8) 2026-07-05 20:57:53 +02:00
CommandRunner.php feat(commands): ad-hoc fleet commands + runbooks (feature 4/8) 2026-07-05 20:38:09 +02:00
DeploymentService.php fix(security): harden the update path — signed sentinel, symlink-safe root writes, .env 0600 2026-07-04 10:25:10 +02:00
DockerService.php feat(docker): container management over SSH (feature 3/8) 2026-07-05 20:23:56 +02:00
Fail2banService.php fix(security): close file-read RBAC gap + fail2ban arg-injection + update/HMAC hardening 2026-07-05 16:05:16 +02:00
FirewallService.php i18n: complete DE/EN localization (modals, shell, backend) + v0.3.0 2026-06-13 23:27:42 +02:00
FleetService.php fix(security): keep internal IPs out of shipped code and docs/ out of the public image 2026-07-04 10:25:10 +02:00
HardeningService.php fix(hardening): fail2ban — pin the sshd jail to the systemd backend 2026-06-25 01:14:06 +02:00
HealthService.php feat(uptime): HTTP/TCP health checks + status board (feature 8/8) 2026-07-05 21:04:14 +02:00
MaintenanceService.php feat(patch): fleet patch view + security-update awareness (feature 6/8) 2026-07-05 20:51:17 +02:00
MetricHistory.php refactor(metrics): interactive history chart — smooth, area, tooltip, instant ranges 2026-06-25 01:51:24 +02:00
PipelineStatus.php refactor(release): single stable channel — cut internal release candidates (-rc), remove all beta wording 2026-07-05 13:13:09 +02:00
PostureService.php feat(security): fleet security-posture score (feature 5/8) 2026-07-05 20:43:56 +02:00
PromotionService.php refactor(release): single stable channel — cut internal release candidates (-rc), remove all beta wording 2026-07-05 13:13:09 +02:00
ReleaseBridge.php feat(release): ReleaseBridge — write staging request, read host result 2026-06-22 23:14:34 +02:00
ReleaseChecker.php feat(release): collapse to a single stable channel 2026-07-03 20:00:50 +02:00
ReleasePlanner.php refactor(release): single stable channel — cut internal release candidates (-rc), remove all beta wording 2026-07-05 13:13:09 +02:00
SessionService.php feat(sessions): database sessions + list/revoke (other devices, per-user, global) with remember-token rotation 2026-06-14 23:34:00 +02:00
SshKeyProvisioner.php fix(ssh): best-effort audit + exception-safe switch/verify and modal run(); lock serverId 2026-06-14 22:16:54 +02:00
WebauthnService.php fix(webauthn): add security-key hint so passkey managers defer 2026-06-19 21:30:52 +02:00
WgBridge.php feat(wg): configurable DNS + Server/Peers tabs + faster offline (v0.9.45) 2026-06-21 22:48:46 +02:00
WgStatus.php feat(wg): configurable DNS + Server/Peers tabs + faster offline (v0.9.45) 2026-06-21 22:48:46 +02:00
WgTraffic.php refactor(wireguard): remove dead code + DRY the WG surface (no behavior change) 2026-06-21 16:33:41 +02:00