From 8617ba20834fbdf4e86079b68504571721c57410 Mon Sep 17 00:00:00 2001 From: CyberMind-FR Date: Thu, 16 Jul 2026 15:42:15 +0200 Subject: [PATCH] feat(waf): rework sbxwaf dashboard to cyan hybrid-skin look MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Restyle-only rework of the WAF webui to the guidelined /certs/ cyan hybrid-skin (shared hybrid-skin.css, body.hybrid-dark, emoji cards, live pulse dot, reactive 30s/10s refresh), dropping the old crt-light/crt-engine/sidebar-light includes. Every loader/action + its endpoint/method/payload preserved verbatim (alerts, bans, categories, stats, status, category toggle, bans/history, visits, mode, bans/clear, export, ban, unban). 1354 β†’ 1028 lines. Co-Authored-By: Gerald KERMA --- packages/secubox-waf/www/waf/index.html | 773 +++++++----------------- 1 file changed, 224 insertions(+), 549 deletions(-) diff --git a/packages/secubox-waf/www/waf/index.html b/packages/secubox-waf/www/waf/index.html index cdf8ff60..d01e2dd7 100644 --- a/packages/secubox-waf/www/waf/index.html +++ b/packages/secubox-waf/www/waf/index.html @@ -1,534 +1,190 @@ - + - SecuBox - Web Application Firewall - - + SecuBox β€” Web Application Firewall + + + -
- -
-
-
- LIVE -
-
- βœ… - All Clear - No recent attacks -
-
+
+

πŸ›‘οΈ Web Application Firewall

+
+
+ + +
+
+
+ LIVE +
+
+ βœ… + All Clear + No recent attacks +
@@ -568,22 +237,10 @@
-
-
+

πŸ›‘οΈ Security Events

@@ -591,14 +248,14 @@ - +
Type🌍IP/TargetCategorySeverityAction
Loading...
Loading...
-
+

πŸ“ Protection Categories

Loading...
@@ -606,19 +263,19 @@
-
+

πŸ“Š By Severity

Loading...
-
+

🏷️ By Category

Loading...
-
+

🎯 Top Attacked Sites

Loading...
@@ -627,7 +284,7 @@
-
+

πŸ‘οΈ Attack Origin

@@ -651,7 +308,7 @@
-
+

πŸ‘€ Visitors

@@ -675,7 +332,7 @@
-
+

🎯 Target Vhosts

@@ -699,7 +356,7 @@
-
+

🎯 Tracked Attackers β€” silenced, still tracked (24 h)

@@ -722,14 +379,14 @@ -
+

πŸ‘οΈ Visites β€” trafic lΓ©gitime β€” total β€” requΓͺtes vues par le WAF

-

🧭 Type de client

…
-

πŸ’» SystΓ¨me

…
-

🌍 Pays

…
-

πŸ“Š Statut

…
-

🎯 Sites les plus visités

…
+

🧭 Type de client

…
+

πŸ’» SystΓ¨me

…
+

🌍 Pays

…
+

πŸ“Š Statut

…
+

🎯 Sites les plus visités

…
@@ -741,15 +398,25 @@ const token = () => localStorage.getItem('sbx_token'); const headers = () => ({ 'Content-Type': 'application/json', ...(token() ? { 'Authorization': 'Bearer ' + token() } : {}) }); - // Category Emojis + // Category Emojis (substring-matched by getCatEmoji, exact-matched by loadTrackedAttackers) const CAT_EMOJI = { - 'sqli': 'πŸ’‰', 'xss': 'πŸ”₯', 'rce': 'πŸ’€', 'lfi': 'πŸ“‚', 'rfi': '🌐', - 'scanner': 'πŸ”', 'bot': 'πŸ€–', 'router': 'πŸ“‘', 'cve': 'πŸ›', 'dos': 'πŸ’₯', - 'traversal': 'πŸ”—', 'injection': 'πŸ’‰', 'command': '⌨️', 'default': '⚠️' + 'sqli': 'πŸ’‰', 'sql': 'πŸ’‰', 'injection': 'πŸ’‰', + 'xss': 'πŸ”₯', + 'rce': 'πŸ’₯', 'command': 'πŸ’₯', 'dos': 'πŸ’₯', + 'lfi': 'πŸ“‚', 'rfi': '🌐', 'traversal': 'πŸ“‚', 'path': 'πŸ“‚', + 'recon_crawler': 'πŸ•·οΈ', 'recon': 'πŸ•·οΈ', 'crawler': 'πŸ•·οΈ', 'scanner': 'πŸ•·οΈ', 'scan': 'πŸ•·οΈ', 'bot': 'πŸ€–', + 'honeypot': '🍯', + 'credential_harvest': 'πŸ”“', 'credential': 'πŸ”“', 'brute': 'πŸ”“', + 'api_abuse': '🎣', 'api': '🎣', + 'waf_fingerprint': 'πŸ–οΈ', 'fingerprint': 'πŸ–οΈ', + 'cve_2024': '🧬', 'cve': '🧬', + 'webmail': 'πŸ“§', 'mail': 'πŸ“§', + 'router': 'πŸ“‘', + 'default': '⚠️' }; - const SEV_COLORS = { critical: '#ef4444', high: '#f97316', medium: '#eab308', low: '#22c55e' }; - const SEV_EMOJI = { critical: 'πŸ”΄', high: '🟠', medium: '🟑', low: '🟒' }; + const SEV_COLORS = { critical: '#ff4466', high: '#ff9944', medium: '#ffcc00', low: '#4488ff' }; + const SEV_EMOJI = { critical: 'πŸ”΄', high: '🟠', medium: '🟑', low: 'πŸ”΅' }; const CAT_COLORS = ['#6366f1', '#8b5cf6', '#a855f7', '#d946ef', '#ec4899', '#f43f5e', '#0ea5e9', '#14b8a6']; const ARC_COLORS = ['#ff0044', '#ff4400', '#ff8800', '#ffcc00', '#88ff00', '#00ff44', '#00ffcc', '#0088ff', '#4400ff', '#cc00ff']; @@ -1016,8 +683,8 @@ const typeLabel = e.type === 'ban' ? '🚫 BAN' : (e.type === 'blocked' ? 'πŸ›‘οΈ BLOCK' : '⚠️ ALERT'); const sevClass = (e.severity || 'medium').toLowerCase(); const actionBtn = e.type === 'ban' - ? '' - : ''; + ? '' + : ''; return '
' + '' + '' + @@ -1275,6 +942,12 @@ if (name === 'attackers') loadTrackedAttackers(); } + // Reflect WAF on/off on the header live-dot (presentational only) + function setLiveDot(active) { + const d = document.getElementById('live-dot'); + if (d) d.className = 'live-dot' + (active ? '' : ' paused'); + } + // WAF Toggle let wafActive = true; async function toggleWaf() { @@ -1297,6 +970,7 @@ btn.classList.add('paused'); tooltip.textContent = 'WAF Paused'; } + setLiveDot(wafActive); } // Clear All Bans @@ -1344,6 +1018,7 @@ } switchTab('overview'); + setLiveDot(wafActive); refresh(); setInterval(refresh, 30000); // More frequent live updates
' + typeLabel + '' + countryToFlag(e.country) + '