From cb59c58617c625323baf5d74c07e6accfe0a97e7 Mon Sep 17 00:00:00 2001 From: CyberMind-FR Date: Tue, 17 Mar 2026 12:43:48 +0100 Subject: [PATCH] docs: Update tracking for Metrics Dashboard v2 + caching Co-Authored-By: Claude Opus 4.5 --- .claude/HISTORY.md | 31 +++++++++++++++++-------------- .claude/WIP.md | 16 +++++++++------- 2 files changed, 26 insertions(+), 21 deletions(-) diff --git a/.claude/HISTORY.md b/.claude/HISTORY.md index b38229eb..e42451d7 100644 --- a/.claude/HISTORY.md +++ b/.claude/HISTORY.md @@ -1,20 +1,23 @@ # SecuBox UI & Theme History -_Last updated: 2026-03-17 (LuCI Metrics Dashboard + WAF hot-reload)_ +_Last updated: 2026-03-17 (Metrics Dashboard KISS UI + double-buffer caching)_ -0. **LuCI Metrics Dashboard + WAF Hot-Reload (2026-03-17)** - - NEW: `luci-app-metrics-dashboard` package - Real-time system metrics dashboard - - RPCD backend: `luci.metrics` with 9 methods (overview, certs, vhosts, metablogs, streamlits, waf_stats, connections, firewall_stats, all) - - Shows: uptime, memory, load, vHosts, certificates, MetaBlogs, Streamlits, LXC containers - - WAF stats: active bans, alerts today, threats detected, blocked requests - - Connections: HTTP, HTTPS, SSH, total TCP (live counts) - - Service status: HAProxy, mitmproxy, CrowdSec running indicators - - Auto-refresh every 5 seconds via poll.add() - - Menu: Status → Metrics Dashboard - - WAF Filters page: Stats layout changed from 3 boxes to single compact line - - Discovered mitmproxy haproxy_router.py already has hot-reload (checks file mtime every request) - - Updated metablogizerctl to use hot-reload instead of restart for faster publishing - - Fixed HAProxy 503 errors: Disabled health check on mitmproxy backend (mitmproxy returns 404 without valid Host) +0. **LuCI Metrics Dashboard v2 (2026-03-17)** + - NEW: `luci-app-metrics-dashboard` package - Real-time system metrics + - **KISS-styled UI**: + - Card grid with colored stat values (green, cyan, purple, orange) + - Services status bar with glowing dots (HAProxy, WAF, CrowdSec) + - Two-panel layout for WAF/Security and Connections + - Live clock with pulsing indicator, auto-refresh every 5s + - **Double-buffer caching** (per CLAUDE.md pattern): + - Cache: `/tmp/secubox/metrics-cache.json` with 30s TTL + - Cron job refreshes every 30 seconds + - RPCD reads from cache instantly (eliminates XHR timeouts) + - Stats: Uptime, Memory%, vHosts (274), Certs (92), MetaBlogs (127), Streamlits (27), LXC (21) + - WAF Blocked: Counts CrowdSec mitmproxy decisions (1031 blocks) + - WAF Filters page: Stats layout changed to single compact line + - Discovered mitmproxy hot-reload (checks routes file every request) + - Fixed HAProxy 503: Disabled health check on mitmproxy backend - Cleaned up test sites (testsite, lblstest) 0. **HAProxy/mitmproxy WAF Routing Fix (2026-03-17)** diff --git a/.claude/WIP.md b/.claude/WIP.md index 90213540..1bc8ed81 100644 --- a/.claude/WIP.md +++ b/.claude/WIP.md @@ -1,6 +1,6 @@ # Work In Progress (Claude) -_Last updated: 2026-03-17 (LuCI Metrics Dashboard + WAF hot-reload)_ +_Last updated: 2026-03-17 (Metrics Dashboard KISS UI + double-buffer caching)_ > **Architecture Reference**: SecuBox Fanzine v3 — Les 4 Couches @@ -10,13 +10,15 @@ _Last updated: 2026-03-17 (LuCI Metrics Dashboard + WAF hot-reload)_ ### 2026-03-17 -- **LuCI Metrics Dashboard (Complete)** +- **LuCI Metrics Dashboard v2 (Complete)** - New `luci-app-metrics-dashboard` package with real-time system metrics - - RPCD backend: `luci.metrics` with 9 methods (overview, certs, vhosts, metablogs, streamlits, waf_stats, connections, firewall_stats, all) - - Dashboard shows: uptime, memory, load, vHosts, certificates, MetaBlogs, Streamlits, LXC containers - - WAF stats: active bans, alerts today, threats detected, blocked requests - - Connections: HTTP, HTTPS, SSH, total TCP (live counts) - - Service status: HAProxy, mitmproxy, CrowdSec running indicators + - **KISS-styled UI**: Card grid, colored stat values, services status bar with glowing dots + - **Double-buffer caching**: Cache at `/tmp/secubox/metrics-cache.json` with 30s TTL + - Cron job refreshes cache every 30 seconds (no computation on request) + - Stats: Uptime, Memory%, vHosts (274), SSL Certs (92), MetaBlogs (127), Streamlits (27), LXC (21), TCP Conns + - WAF panel: Active Bans (43), Alerts 24h (44), WAF Blocked (1031 from CrowdSec mitmproxy decisions) + - Connections panel: HTTPS, HTTP, SSH, Total TCP + - Service status: HAProxy, mitmproxy WAF, CrowdSec with live indicators - Auto-refresh every 5 seconds via poll.add() - Menu: Status → Metrics Dashboard