diff --git a/package/secubox/luci-app-system-hub/htdocs/luci-static/resources/system-hub/dev-status-widget.js b/package/secubox/luci-app-system-hub/htdocs/luci-static/resources/system-hub/dev-status-widget.js index 11e3f963..953da351 100644 --- a/package/secubox/luci-app-system-hub/htdocs/luci-static/resources/system-hub/dev-status-widget.js +++ b/package/secubox/luci-app-system-hub/htdocs/luci-static/resources/system-hub/dev-status-widget.js @@ -13,8 +13,8 @@ var DevStatusWidget = { targetVersion: '1.0.0', - lastUpdate: '2026-03-09', - totalPackages: 185, + lastUpdate: '2026-03-16', + totalPackages: 190, refreshInterval: null, refreshSeconds: 60, activeFilters: { @@ -31,7 +31,7 @@ var DevStatusWidget = { id: 'core', name: 'Couche 1: Core Mesh', description: 'Infrastructure fondamentale: reverse proxy, WAF, DNS, containers', - progress: 85, + progress: 98, icon: '🏗️', color: '#10b981', order: 1 @@ -40,7 +40,7 @@ var DevStatusWidget = { id: 'ai', name: 'Couche 2: AI Gateway', description: 'Intelligence artificielle: inference, agents, mémoire contextuelle', - progress: 60, + progress: 95, icon: '🤖', color: '#8b5cf6', order: 2 @@ -49,7 +49,7 @@ var DevStatusWidget = { id: 'mirrornet', name: 'Couche 3: MirrorNet P2P', description: 'Réseau maillé: identité, gossip, partage IOC, mirroring', - progress: 40, + progress: 90, icon: '🌐', color: '#06b6d4', order: 3 @@ -58,7 +58,7 @@ var DevStatusWidget = { id: 'certification', name: 'Couche 4: Certification', description: 'Conformité: ANSSI CSPN, CRA, audit sécurité', - progress: 20, + progress: 75, icon: '🏆', color: '#f59e0b', order: 4 @@ -266,8 +266,8 @@ var DevStatusWidget = { name: 'AI Security Agents', layer: 'ai', category: 'ai', - status: 'beta', - progress: 50, + status: 'production', + progress: 90, icon: '🤖', description: 'Threat analysis, DNS anomaly, network behavior', components: ['threat-analyst', 'dns-guard-ai', 'network-anomaly'], @@ -279,8 +279,8 @@ var DevStatusWidget = { name: 'AI Memory & Context', layer: 'ai', category: 'ai', - status: 'alpha', - progress: 30, + status: 'production', + progress: 85, icon: '💾', description: 'LocalRecall, RAG, conversation history', components: ['localrecall', 'mcp-server', 'embedding-store'], @@ -294,8 +294,8 @@ var DevStatusWidget = { name: 'Mesh Network', layer: 'mirrornet', category: 'p2p', - status: 'beta', - progress: 50, + status: 'production', + progress: 90, icon: '🕸️', description: 'P2P mesh, gossip protocol, service discovery', components: ['p2p-core', 'gossip', 'mesh-dns'], @@ -307,8 +307,8 @@ var DevStatusWidget = { name: 'Identity & Trust', layer: 'mirrornet', category: 'p2p', - status: 'alpha', - progress: 30, + status: 'production', + progress: 85, icon: '🪪', description: 'DID identity, reputation, trust hierarchy', components: ['identity-did', 'reputation', 'master-link'], @@ -320,8 +320,8 @@ var DevStatusWidget = { name: 'P2P Intelligence', layer: 'mirrornet', category: 'p2p', - status: 'alpha', - progress: 25, + status: 'production', + progress: 80, icon: '🔍', description: 'IOC sharing, signed alerts, collective defense', components: ['p2p-intel-core', 'ioc-signatures', 'alert-propagation'], @@ -402,11 +402,11 @@ var DevStatusWidget = { name: 'Configuration Management', layer: 'certification', category: 'admin', - status: 'beta', - progress: 60, + status: 'production', + progress: 95, icon: '⚙️', - description: 'Backup, restore, config advisor, cloning', - components: ['backup', 'config-advisor', 'cloner'], + description: 'Backup, restore, config vault, device provisioning', + components: ['backup', 'config-advisor', 'cloner', 'config-vault'], dependsOn: [], usedBy: [] }, @@ -415,8 +415,8 @@ var DevStatusWidget = { name: 'Compliance & Audit', layer: 'certification', category: 'admin', - status: 'alpha', - progress: 20, + status: 'beta', + progress: 60, icon: '📋', description: 'ANSSI CSPN, CRA, security audit', components: ['anssi-checker', 'sbom-generator', 'audit-log'], @@ -534,50 +534,50 @@ var DevStatusWidget = { // MILESTONES: Version targets // ============================================================ milestones: [ + { + version: '0.18', + name: 'MirrorBox Core', + target: '2026-02-06', + status: 'completed', + progress: 100, + features: ['localai', 'mcp-server', 'threat-analyst', 'dns-guard'], + highlights: ['LocalAI 3.9 upgrade', 'MCP Server for Claude Desktop', 'Threat Analyst agent'] + }, { version: '0.19', - name: 'Core Stability', - target: '2026-03-15', - status: 'in-progress', - progress: 85, - features: ['rtty-remote', 'dns-master', 'waf-memory-fix'], - highlights: ['RTTY Remote Web Terminal', 'DNS Master LuCI sync', 'WAF memory optimization'] - }, - { - version: '0.20', - name: 'AI Gateway Expansion', - target: '2026-03-30', - status: 'planned', - progress: 20, - features: ['ai-security', 'threat-analyst', 'localrecall'], - highlights: ['Threat Analyst auto-rules', 'DNS Guard AI', 'LocalRecall persistence'] - }, - { - version: '0.21', - name: 'MirrorNet Phase 1', - target: '2026-04-15', - status: 'planned', - progress: 10, - features: ['identity-trust', 'p2p-intel', 'mesh-network'], - highlights: ['DID Identity', 'Gossip protocol', 'IOC sharing'] - }, - { - version: '0.22', - name: 'Station Cloning', - target: '2026-04-30', - status: 'planned', - progress: 5, - features: ['cloner', 'master-link'], - highlights: ['Clone image builder', 'Auto-mesh join', 'First-boot provisioning'] + name: 'AI Expansion + MirrorNet', + target: '2026-02-07', + status: 'completed', + progress: 100, + features: ['cve-triage', 'network-anomaly', 'mirrornet', 'identity'], + highlights: ['CVE Triage agent', 'Network Anomaly detection', 'MirrorNet P2P mesh'] }, { version: '1.0', - name: 'Certification Ready', + name: 'Full Stack Release', + target: '2026-03-16', + status: 'completed', + progress: 100, + features: ['voip', 'matrix', 'factory', 'config-vault', 'smtp-relay'], + highlights: ['VoIP integration', 'Matrix federation', 'Device provisioning', 'Unified SMTP relay'] + }, + { + version: '1.1', + name: 'Extended Mesh', + target: '2026-04-01', + status: 'in-progress', + progress: 85, + features: ['yggdrasil', 'meshname-dns', 'extended-discovery'], + highlights: ['Yggdrasil IPv6 overlay', 'Meshname DNS resolution', 'Extended peer discovery'] + }, + { + version: '1.2', + name: 'Certification', target: '2026-06-01', status: 'planned', - progress: 0, - features: ['compliance'], - highlights: ['ANSSI CSPN', 'CRA Annex I SBOM', 'Security documentation'] + progress: 20, + features: ['compliance', 'sbom', 'anssi'], + highlights: ['ANSSI CSPN prep', 'CRA Annex I SBOM', 'Security documentation'] } ], @@ -585,18 +585,18 @@ var DevStatusWidget = { // PRODUCTION STATS (defaults, updated via RPCD) // ============================================================ stats: { - totalPackages: 185, - luciApps: 89, - backends: 96, + totalPackages: 190, + luciApps: 92, + backends: 98, lxcContainers: 18, - haproxyVhosts: 226, - sslCertificates: 92, + haproxyVhosts: 243, + sslCertificates: 95, dnsZones: 7, - dnsRecords: 78, - mitmproxyRoutes: 150, + dnsRecords: 82, + mitmproxyRoutes: 174, architectures: 13, - commits: 1700, - modulesCount: 89, + commits: 1850, + modulesCount: 92, lastLiveUpdate: null }, diff --git a/package/secubox/secubox-app-bonus/htdocs/luci-static/secubox/dev-status-widget.js b/package/secubox/secubox-app-bonus/htdocs/luci-static/secubox/dev-status-widget.js index 0f2e7551..953da351 100644 --- a/package/secubox/secubox-app-bonus/htdocs/luci-static/secubox/dev-status-widget.js +++ b/package/secubox/secubox-app-bonus/htdocs/luci-static/secubox/dev-status-widget.js @@ -1,1167 +1,1404 @@ +'use strict'; +'require baseclass'; /** - * SecuBox Development Status Widget - * Real-time development progress tracker + * SecuBox Development Status Widget v2.1 + * Dynamic + Interactive Architecture Dashboard + * Features → Components → Submodules + Interconnections + * - Live data from RPCD (no auth required for read-only) + * - LocalStorage for filter persistence + * - Auto-refresh capability + * - ES5 compatible for older browsers + * Generated from DEV-STATUS.md - 2026-03-09 */ -const DevStatusWidget = { +var DevStatusWidget = { targetVersion: '1.0.0', - // Development milestones and progress - milestones: { - 'modules-core': { - name: 'Core Modules', - progress: 95, - total: 15, - completed: 14, - icon: '📦', + lastUpdate: '2026-03-16', + totalPackages: 190, + refreshInterval: null, + refreshSeconds: 60, + activeFilters: { + layer: null, + status: null, + category: null + }, + + // ============================================================ + // ARCHITECTURE: 4 LAYERS + // ============================================================ + layers: { + 'core': { + id: 'core', + name: 'Couche 1: Core Mesh', + description: 'Infrastructure fondamentale: reverse proxy, WAF, DNS, containers', + progress: 98, + icon: '🏗️', color: '#10b981', - items: [ - { name: 'SecuBox Central Hub', status: 'completed' }, - { name: 'System Hub', status: 'completed' }, - { name: 'Traffic Shaper', status: 'completed' }, - { name: 'CrowdSec Dashboard', status: 'completed' }, - { name: 'Netdata Dashboard', status: 'completed' }, - { name: 'Netifyd Dashboard', status: 'completed' }, - { name: 'Network Modes (DMZ mode)', status: 'completed' }, - { name: 'WireGuard Dashboard', status: 'completed' }, - { name: 'Auth Guardian', status: 'completed' }, - { name: 'Client Guardian (Captive Portal v1.0.0)', status: 'completed' }, - { name: 'Bandwidth Manager', status: 'completed' }, - { name: 'Media Flow', status: 'completed' }, - { name: 'CDN Cache', status: 'completed' }, - { name: 'VHost Manager (UCI overhaul)', status: 'completed' }, - { name: 'KSM Manager', status: 'beta' } - ] + order: 1 }, - 'hardware-support': { - name: 'Hardware Support', - progress: 80, - total: 5, - completed: 4, - icon: '🔧', - color: '#f59e0b', - items: [ - { name: 'x86-64 Tier 1 (PC / VM)', status: 'completed' }, - { name: 'ARM Cortex-A72 Tier 1 (MOCHAbin / RPi4)', status: 'completed' }, - { name: 'ARM Cortex-A53 Tier 1 (ESPRESSObin / Sheeva64)', status: 'completed' }, - { name: 'Tier 2 ARM64 / ARM32 Targets', status: 'in-progress' }, - { name: 'Tier 2 MIPS Targets', status: 'planned' } - ] - }, - 'integration': { - name: 'Integration & Testing', - progress: 80, - total: 6, - completed: 4, - icon: '🧪', - color: '#3b82f6', - items: [ - { name: 'LuCI Integration', status: 'completed' }, - { name: 'RPCD Backends', status: 'completed' }, - { name: 'ubus APIs', status: 'completed' }, - { name: 'Multi-platform Build', status: 'completed' }, - { name: 'Documentation', status: 'in-progress' }, - { name: 'Hardware Beta Testing', status: 'planned' } - ] - }, - 'apps-store': { - name: 'App Store & Docker Apps', - progress: 70, - total: 4, - completed: 3, - icon: '🛒', - color: '#06b6d4', - items: [ - { name: 'Manifest + secubox-app CLI', status: 'completed' }, - { name: 'Zigbee2MQTT App (Docker)', status: 'completed' }, - { name: 'Lyrion Media Server App', status: 'completed' }, - { name: 'Domoticz Home Automation App', status: 'in-progress' } - ] - }, - 'campaign-prep': { - name: 'Campaign Preparation', - progress: 45, - total: 5, - completed: 2, - icon: '🚀', + 'ai': { + id: 'ai', + name: 'Couche 2: AI Gateway', + description: 'Intelligence artificielle: inference, agents, mémoire contextuelle', + progress: 95, + icon: '🤖', color: '#8b5cf6', - items: [ - { name: 'Website Multi-language', status: 'completed' }, - { name: 'Demo Pages', status: 'completed' }, - { name: 'Video Tutorials', status: 'planned' }, - { name: 'Marketing Materials', status: 'planned' }, - { name: 'Crowdfunding Setup', status: 'planned' } - ] + order: 2 + }, + 'mirrornet': { + id: 'mirrornet', + name: 'Couche 3: MirrorNet P2P', + description: 'Réseau maillé: identité, gossip, partage IOC, mirroring', + progress: 90, + icon: '🌐', + color: '#06b6d4', + order: 3 + }, + 'certification': { + id: 'certification', + name: 'Couche 4: Certification', + description: 'Conformité: ANSSI CSPN, CRA, audit sécurité', + progress: 75, + icon: '🏆', + color: '#f59e0b', + order: 4 } }, - // Per-module status overview - moduleStatus: [ - { name: 'SecuBox Central Hub', version: '0.5.1', note: 'luci-app-secubox — wizard, App Store, dashboards' }, - { name: 'System Hub', version: '0.5.1', note: 'luci-app-system-hub — remote control & diagnostics' }, - { name: 'Traffic Shaper', version: '0.2.2', note: 'luci-app-traffic-shaper — CAKE/fq_codel QoS' }, - { name: 'CrowdSec Dashboard', version: '0.2.2', note: 'luci-app-crowdsec-dashboard — threat intel + bans' }, - { name: 'Netdata Dashboard', version: '0.2.2', note: 'luci-app-netdata-dashboard — live metrics' }, - { name: 'Netifyd Dashboard', version: '0.2.2', note: 'luci-app-netifyd-dashboard — DPI insights' }, - { name: 'Network Modes', version: '0.5.0', note: 'luci-app-network-modes — Router/AP/DMZ profiles' }, - { name: 'WireGuard Dashboard', version: '0.2.2', note: 'luci-app-wireguard-dashboard — VPN management' }, - { name: 'Auth Guardian', version: '0.2.2', note: 'luci-app-auth-guardian — OAuth 2.0 & vouchers' }, - { name: 'Client Guardian', version: '0.2.2', note: 'luci-app-client-guardian — NAC + captive portal' }, - { name: 'Bandwidth Manager', version: '0.2.2', note: 'luci-app-bandwidth-manager — QoS + quotas' }, - { name: 'Media Flow', version: '0.2.2', note: 'luci-app-media-flow — streaming DPI' }, - { name: 'CDN Cache', version: '0.4.1', note: 'luci-app-cdn-cache — local caching proxy' }, - { name: 'VHost Manager', version: '0.4.1', note: 'luci-app-vhost-manager — reverse proxy & ACME' }, - { name: 'SecuBox Theme', version: '0.4.7', note: 'luci-theme-secubox — design system tokens' }, - { name: 'KSM Manager', version: '0.2.2', note: 'luci-app-ksm-manager — key & secret orchestration' }, - { name: 'MQTT Bridge', version: '0.1.0', note: 'luci-app-mqtt-bridge — USB dongle MQTT broker' }, - { name: 'Zigbee2MQTT App', version: '1.0.0', note: 'luci-app-zigbee2mqtt + secubox-app installer' }, - { name: 'Lyrion Media Server App', version: '1.0.0', note: 'secubox-app-lyrion — Docker media server' }, - { name: 'Domoticz App', version: '1.0.0', note: 'secubox-app-domoticz — home automation stack' } - ], + // ============================================================ + // FEATURES: Major functional areas + // ============================================================ + features: { + // === SECURITY === + 'intrusion-prevention': { + id: 'intrusion-prevention', + name: 'Intrusion Prevention', + layer: 'core', + category: 'security', + status: 'production', + progress: 95, + icon: '🛡️', + description: 'Détection et blocage des menaces en temps réel', + components: ['crowdsec', 'firewall-bouncer', 'wazuh'], + dependsOn: ['network-stack'], + usedBy: ['threat-intelligence', 'ai-security'] + }, + 'waf': { + id: 'waf', + name: 'Web Application Firewall', + layer: 'core', + category: 'security', + status: 'production', + progress: 90, + icon: '🔥', + description: 'Inspection HTTP/HTTPS, détection bots, analytics', + components: ['mitmproxy', 'haproxy-router', 'analytics'], + dependsOn: ['reverse-proxy'], + usedBy: ['session-analytics', 'threat-intelligence'] + }, + 'dns-firewall': { + id: 'dns-firewall', + name: 'DNS Firewall', + layer: 'core', + category: 'security', + status: 'production', + progress: 85, + icon: '🚫', + description: 'Blocage DNS (RPZ), threat feeds, mesh DNS', + components: ['vortex-dns', 'vortex-firewall', 'rpz-zones'], + dependsOn: ['dns-master'], + usedBy: ['ai-security', 'mesh-network'] + }, + 'access-control': { + id: 'access-control', + name: 'Access Control', + layer: 'core', + category: 'security', + status: 'production', + progress: 90, + icon: '🔐', + description: 'NAC, portail captif, OAuth2, vouchers', + components: ['auth-guardian', 'client-guardian', 'nodogsplash', 'mac-guardian'], + dependsOn: ['network-stack'], + usedBy: ['user-management'] + }, - // Overall project statistics (as of v0.16.0 - 2026-01-27) - stats: { - get modulesCount() { return DevStatusWidget.moduleStatus.length || 38; }, - languagesSupported: 12, - architectures: 13, - linesOfCode: 45000, - contributors: 6, - commits: 1500, - openIssues: 2, - closedIssues: 180 + // === NETWORK === + 'reverse-proxy': { + id: 'reverse-proxy', + name: 'Reverse Proxy & SSL', + layer: 'core', + category: 'network', + status: 'production', + progress: 95, + icon: '🔀', + description: 'HAProxy SNI routing, ACME SSL, 226 vhosts', + components: ['haproxy', 'acme', 'vhost-manager'], + dependsOn: ['dns-master'], + usedBy: ['waf', 'service-exposure'], + stats: { vhosts: 226, certificates: 92 } + }, + 'dns-master': { + id: 'dns-master', + name: 'DNS Master', + layer: 'core', + category: 'network', + status: 'production', + progress: 90, + icon: '🌍', + description: 'BIND9 authoritative, zone management, 7 zones', + components: ['bind9', 'dns-provider', 'zone-editor'], + dependsOn: [], + usedBy: ['reverse-proxy', 'dns-firewall', 'mesh-network'], + stats: { zones: 7, records: 78 } + }, + 'vpn-mesh': { + id: 'vpn-mesh', + name: 'VPN & Mesh', + layer: 'core', + category: 'network', + status: 'production', + progress: 85, + icon: '🔒', + description: 'WireGuard tunnels, QR codes, mesh topology', + components: ['wireguard', 'mesh-discovery', 'qr-generator'], + dependsOn: ['network-stack'], + usedBy: ['mirrornet-p2p', 'master-link'] + }, + 'bandwidth-qos': { + id: 'bandwidth-qos', + name: 'Bandwidth & QoS', + layer: 'core', + category: 'network', + status: 'production', + progress: 85, + icon: '📊', + description: 'SQM/CAKE, quotas, traffic shaping', + components: ['bandwidth-manager', 'traffic-shaper', 'sqm'], + dependsOn: ['network-stack'], + usedBy: ['media-services'] + }, + + // === SERVICES === + 'container-platform': { + id: 'container-platform', + name: 'Container Platform', + layer: 'core', + category: 'services', + status: 'production', + progress: 95, + icon: '📦', + description: 'LXC containers, 18 running, auto-start', + components: ['lxc-manager', 'container-networking', 'resource-limits'], + dependsOn: ['network-stack'], + usedBy: ['media-services', 'communication', 'cloud-services'], + stats: { running: 18, total: 25 } + }, + 'media-services': { + id: 'media-services', + name: 'Media Services', + layer: 'core', + category: 'services', + status: 'production', + progress: 90, + icon: '🎬', + description: 'Streaming, photos, musique', + components: ['jellyfin', 'photoprism', 'lyrion', 'peertube'], + dependsOn: ['container-platform', 'reverse-proxy'], + usedBy: [] + }, + 'communication': { + id: 'communication', + name: 'Communication', + layer: 'core', + category: 'services', + status: 'production', + progress: 85, + icon: '💬', + description: 'Chat, video, federation', + components: ['matrix', 'jitsi', 'jabber', 'gotosocial', 'simplex'], + dependsOn: ['container-platform', 'reverse-proxy'], + usedBy: [] + }, + 'cloud-services': { + id: 'cloud-services', + name: 'Cloud Services', + layer: 'core', + category: 'services', + status: 'production', + progress: 85, + icon: '☁️', + description: 'Files, email, git', + components: ['nextcloud', 'mailserver', 'gitea'], + dependsOn: ['container-platform', 'reverse-proxy'], + usedBy: [] + }, + 'remote-access': { + id: 'remote-access', + name: 'Remote Access', + layer: 'core', + category: 'services', + status: 'production', + progress: 80, + icon: '🖥️', + description: 'Terminal web, RDP, TURN/STUN', + components: ['rtty-remote', 'turn-server', 'rustdesk'], + dependsOn: ['reverse-proxy'], + usedBy: ['master-link'] + }, + + // === AI === + 'ai-inference': { + id: 'ai-inference', + name: 'AI Inference', + layer: 'ai', + category: 'ai', + status: 'production', + progress: 80, + icon: '🧠', + description: 'LocalAI, Ollama, embeddings, completions', + components: ['localai', 'ollama', 'model-manager'], + dependsOn: ['container-platform'], + usedBy: ['ai-security', 'ai-agents'] + }, + 'ai-security': { + id: 'ai-security', + name: 'AI Security Agents', + layer: 'ai', + category: 'ai', + status: 'production', + progress: 90, + icon: '🤖', + description: 'Threat analysis, DNS anomaly, network behavior', + components: ['threat-analyst', 'dns-guard-ai', 'network-anomaly'], + dependsOn: ['ai-inference', 'intrusion-prevention'], + usedBy: [] + }, + 'ai-memory': { + id: 'ai-memory', + name: 'AI Memory & Context', + layer: 'ai', + category: 'ai', + status: 'production', + progress: 85, + icon: '💾', + description: 'LocalRecall, RAG, conversation history', + components: ['localrecall', 'mcp-server', 'embedding-store'], + dependsOn: ['ai-inference'], + usedBy: ['ai-security'] + }, + + // === MIRRORNET === + 'mesh-network': { + id: 'mesh-network', + name: 'Mesh Network', + layer: 'mirrornet', + category: 'p2p', + status: 'production', + progress: 90, + icon: '🕸️', + description: 'P2P mesh, gossip protocol, service discovery', + components: ['p2p-core', 'gossip', 'mesh-dns'], + dependsOn: ['vpn-mesh', 'dns-master'], + usedBy: ['p2p-intel', 'service-mirroring'] + }, + 'identity-trust': { + id: 'identity-trust', + name: 'Identity & Trust', + layer: 'mirrornet', + category: 'p2p', + status: 'production', + progress: 85, + icon: '🪪', + description: 'DID identity, reputation, trust hierarchy', + components: ['identity-did', 'reputation', 'master-link'], + dependsOn: ['mesh-network'], + usedBy: ['p2p-intel'] + }, + 'p2p-intel': { + id: 'p2p-intel', + name: 'P2P Intelligence', + layer: 'mirrornet', + category: 'p2p', + status: 'production', + progress: 80, + icon: '🔍', + description: 'IOC sharing, signed alerts, collective defense', + components: ['p2p-intel-core', 'ioc-signatures', 'alert-propagation'], + dependsOn: ['identity-trust', 'intrusion-prevention'], + usedBy: [] + }, + 'service-exposure': { + id: 'service-exposure', + name: 'Service Exposure', + layer: 'core', + category: 'exposure', + status: 'production', + progress: 80, + icon: '🚀', + description: 'Peek/Poke/Emancipate, multi-channel exposure', + components: ['exposure-engine', 'tor-hidden', 'dns-ssl', 'mesh-publish'], + dependsOn: ['reverse-proxy', 'dns-master'], + usedBy: ['mesh-network'] + }, + + // === MONITORING === + 'system-monitoring': { + id: 'system-monitoring', + name: 'System Monitoring', + layer: 'core', + category: 'monitoring', + status: 'production', + progress: 90, + icon: '📈', + description: 'Glances, Netdata, system health', + components: ['glances', 'netdata', 'health-checks'], + dependsOn: [], + usedBy: ['ai-security'] + }, + 'network-analytics': { + id: 'network-analytics', + name: 'Network Analytics', + layer: 'core', + category: 'monitoring', + status: 'production', + progress: 85, + icon: '🔬', + description: 'DPI, flow analysis, application detection', + components: ['netifyd', 'ndpid', 'flow-analyzer'], + dependsOn: ['network-stack'], + usedBy: ['ai-security', 'bandwidth-qos'] + }, + 'session-analytics': { + id: 'session-analytics', + name: 'Session Analytics', + layer: 'core', + category: 'monitoring', + status: 'production', + progress: 85, + icon: '👁️', + description: 'Avatar-Tap recording, cookie tracking, replay', + components: ['avatar-tap', 'cookie-tracker', 'session-replay'], + dependsOn: ['waf'], + usedBy: ['threat-intelligence'] + }, + 'threat-intelligence': { + id: 'threat-intelligence', + name: 'Threat Intelligence', + layer: 'core', + category: 'monitoring', + status: 'production', + progress: 80, + icon: '🎯', + description: 'CVE triage, cyberfeed, device intel', + components: ['cve-triage', 'cyberfeed', 'device-intel'], + dependsOn: ['intrusion-prevention'], + usedBy: ['ai-security'] + }, + + // === ADMIN === + 'config-management': { + id: 'config-management', + name: 'Configuration Management', + layer: 'certification', + category: 'admin', + status: 'production', + progress: 95, + icon: '⚙️', + description: 'Backup, restore, config vault, device provisioning', + components: ['backup', 'config-advisor', 'cloner', 'config-vault'], + dependsOn: [], + usedBy: [] + }, + 'compliance': { + id: 'compliance', + name: 'Compliance & Audit', + layer: 'certification', + category: 'admin', + status: 'beta', + progress: 60, + icon: '📋', + description: 'ANSSI CSPN, CRA, security audit', + components: ['anssi-checker', 'sbom-generator', 'audit-log'], + dependsOn: ['config-management'], + usedBy: [] + } }, - // Timeline data (updated 2026-01-27) - timeline: [ + // ============================================================ + // COMPONENTS: Building blocks + // ============================================================ + components: { + // Security components + 'crowdsec': { name: 'CrowdSec', type: 'backend', status: 'production', packages: ['secubox-app-crowdsec', 'luci-app-crowdsec-dashboard'] }, + 'firewall-bouncer': { name: 'Firewall Bouncer', type: 'backend', status: 'production', packages: ['secubox-app-cs-firewall-bouncer'] }, + 'wazuh': { name: 'Wazuh SIEM', type: 'backend', status: 'production', packages: ['secubox-app-wazuh', 'luci-app-wazuh'] }, + 'mitmproxy': { name: 'Mitmproxy WAF', type: 'backend', status: 'production', packages: ['secubox-app-mitmproxy', 'luci-app-mitmproxy'] }, + 'haproxy-router': { name: 'HAProxy Router', type: 'addon', status: 'production', packages: [] }, + 'analytics': { name: 'SecuBox Analytics', type: 'addon', status: 'production', packages: [] }, + 'vortex-dns': { name: 'Vortex DNS', type: 'backend', status: 'production', packages: ['secubox-vortex-dns', 'luci-app-vortex-dns'] }, + 'vortex-firewall': { name: 'Vortex Firewall', type: 'backend', status: 'production', packages: ['secubox-vortex-firewall', 'luci-app-vortex-firewall'] }, + 'rpz-zones': { name: 'RPZ Zones', type: 'config', status: 'production', packages: [] }, + 'auth-guardian': { name: 'Auth Guardian', type: 'luci', status: 'production', packages: ['luci-app-auth-guardian'] }, + 'client-guardian': { name: 'Client Guardian', type: 'luci', status: 'production', packages: ['luci-app-client-guardian'] }, + 'nodogsplash': { name: 'Nodogsplash', type: 'backend', status: 'production', packages: ['secubox-app-nodogsplash'] }, + 'mac-guardian': { name: 'MAC Guardian', type: 'backend', status: 'production', packages: ['secubox-app-mac-guardian', 'luci-app-mac-guardian'] }, + + // Network components + 'haproxy': { name: 'HAProxy', type: 'backend', status: 'production', packages: ['secubox-app-haproxy', 'luci-app-haproxy'] }, + 'acme': { name: 'ACME SSL', type: 'backend', status: 'production', packages: [] }, + 'vhost-manager': { name: 'VHost Manager', type: 'luci', status: 'production', packages: ['secubox-app-vhost-manager', 'luci-app-vhost-manager'] }, + 'bind9': { name: 'BIND9', type: 'backend', status: 'production', packages: ['secubox-app-dns-master', 'luci-app-dns-master'] }, + 'dns-provider': { name: 'DNS Provider API', type: 'backend', status: 'beta', packages: ['secubox-app-dns-provider', 'luci-app-dns-provider'] }, + 'zone-editor': { name: 'Zone Editor', type: 'luci', status: 'production', packages: [] }, + 'wireguard': { name: 'WireGuard', type: 'backend', status: 'production', packages: ['luci-app-wireguard-dashboard'] }, + 'mesh-discovery': { name: 'Mesh Discovery', type: 'backend', status: 'beta', packages: ['secubox-app-meshname-dns'] }, + 'qr-generator': { name: 'QR Generator', type: 'addon', status: 'production', packages: [] }, + 'bandwidth-manager': { name: 'Bandwidth Manager', type: 'luci', status: 'production', packages: ['luci-app-bandwidth-manager'] }, + 'traffic-shaper': { name: 'Traffic Shaper', type: 'luci', status: 'production', packages: ['luci-app-traffic-shaper'] }, + 'sqm': { name: 'SQM/CAKE', type: 'backend', status: 'production', packages: [] }, + + // Service components + 'lxc-manager': { name: 'LXC Manager', type: 'luci', status: 'production', packages: ['luci-app-vm'] }, + 'container-networking': { name: 'Container Networking', type: 'backend', status: 'production', packages: [] }, + 'resource-limits': { name: 'Resource Limits', type: 'config', status: 'production', packages: [] }, + 'jellyfin': { name: 'Jellyfin', type: 'backend', status: 'production', packages: ['secubox-app-jellyfin', 'luci-app-jellyfin'] }, + 'photoprism': { name: 'PhotoPrism', type: 'backend', status: 'production', packages: ['secubox-app-photoprism', 'luci-app-photoprism'] }, + 'lyrion': { name: 'Lyrion Music', type: 'backend', status: 'production', packages: ['secubox-app-lyrion', 'luci-app-lyrion'] }, + 'peertube': { name: 'PeerTube', type: 'backend', status: 'beta', packages: ['secubox-app-peertube', 'luci-app-peertube'] }, + 'matrix': { name: 'Matrix', type: 'backend', status: 'production', packages: ['secubox-app-matrix', 'luci-app-matrix'] }, + 'jitsi': { name: 'Jitsi', type: 'backend', status: 'production', packages: ['secubox-app-jitsi', 'luci-app-jitsi'] }, + 'jabber': { name: 'Prosody XMPP', type: 'backend', status: 'production', packages: ['secubox-app-jabber', 'luci-app-jabber'] }, + 'gotosocial': { name: 'GoToSocial', type: 'backend', status: 'production', packages: ['secubox-app-gotosocial', 'luci-app-gotosocial'] }, + 'simplex': { name: 'SimpleX', type: 'backend', status: 'beta', packages: ['secubox-app-simplex', 'luci-app-simplex'] }, + 'nextcloud': { name: 'Nextcloud', type: 'backend', status: 'production', packages: ['secubox-app-nextcloud', 'luci-app-nextcloud'] }, + 'mailserver': { name: 'Mail Server', type: 'backend', status: 'production', packages: ['secubox-app-mailserver', 'luci-app-mailserver'] }, + 'gitea': { name: 'Gitea', type: 'backend', status: 'production', packages: ['secubox-app-gitea', 'luci-app-gitea'] }, + 'rtty-remote': { name: 'RTTY Remote', type: 'backend', status: 'production', packages: ['secubox-app-rtty-remote', 'luci-app-rtty-remote'] }, + 'turn-server': { name: 'TURN Server', type: 'backend', status: 'production', packages: ['secubox-app-turn', 'luci-app-turn'] }, + 'rustdesk': { name: 'RustDesk', type: 'backend', status: 'beta', packages: ['secubox-app-rustdesk'] }, + + // AI components + 'localai': { name: 'LocalAI', type: 'backend', status: 'production', packages: ['secubox-app-localai', 'luci-app-localai'] }, + 'ollama': { name: 'Ollama', type: 'backend', status: 'beta', packages: ['secubox-app-ollama', 'luci-app-ollama'] }, + 'model-manager': { name: 'Model Manager', type: 'luci', status: 'beta', packages: ['luci-app-ai-gateway'] }, + 'threat-analyst': { name: 'Threat Analyst', type: 'backend', status: 'beta', packages: ['secubox-threat-analyst', 'luci-app-threat-analyst'] }, + 'dns-guard-ai': { name: 'DNS Guard AI', type: 'backend', status: 'beta', packages: ['secubox-dns-guard', 'luci-app-dnsguard'] }, + 'network-anomaly': { name: 'Network Anomaly', type: 'backend', status: 'beta', packages: ['secubox-network-anomaly', 'luci-app-network-anomaly'] }, + 'localrecall': { name: 'LocalRecall', type: 'backend', status: 'alpha', packages: ['secubox-localrecall', 'luci-app-localrecall'] }, + 'mcp-server': { name: 'MCP Server', type: 'backend', status: 'beta', packages: ['secubox-mcp-server'] }, + 'embedding-store': { name: 'Embedding Store', type: 'backend', status: 'alpha', packages: [] }, + + // P2P components + 'p2p-core': { name: 'P2P Core', type: 'backend', status: 'beta', packages: ['secubox-p2p', 'luci-app-secubox-p2p'] }, + 'gossip': { name: 'Gossip Protocol', type: 'backend', status: 'beta', packages: [] }, + 'mesh-dns': { name: 'Mesh DNS', type: 'backend', status: 'beta', packages: ['secubox-app-meshname-dns', 'luci-app-meshname-dns'] }, + 'identity-did': { name: 'Identity DID', type: 'backend', status: 'alpha', packages: ['secubox-identity'] }, + 'reputation': { name: 'Reputation System', type: 'backend', status: 'alpha', packages: [] }, + 'master-link': { name: 'Master Link', type: 'backend', status: 'production', packages: ['secubox-master-link', 'luci-app-master-link'] }, + 'p2p-intel-core': { name: 'P2P Intel Core', type: 'backend', status: 'alpha', packages: ['secubox-p2p-intel'] }, + 'ioc-signatures': { name: 'IOC Signatures', type: 'backend', status: 'alpha', packages: [] }, + 'alert-propagation': { name: 'Alert Propagation', type: 'backend', status: 'alpha', packages: [] }, + 'exposure-engine': { name: 'Exposure Engine', type: 'backend', status: 'production', packages: ['secubox-app-exposure', 'luci-app-exposure'] }, + 'tor-hidden': { name: 'Tor Hidden Services', type: 'backend', status: 'production', packages: ['secubox-app-tor', 'luci-app-tor-shield'] }, + 'dns-ssl': { name: 'DNS/SSL Channel', type: 'backend', status: 'production', packages: [] }, + 'mesh-publish': { name: 'Mesh Publish', type: 'backend', status: 'beta', packages: [] }, + + // Monitoring components + 'glances': { name: 'Glances', type: 'backend', status: 'production', packages: ['secubox-app-glances', 'luci-app-glances'] }, + 'netdata': { name: 'Netdata', type: 'backend', status: 'production', packages: ['luci-app-netdata-dashboard'] }, + 'health-checks': { name: 'Health Checks', type: 'backend', status: 'production', packages: [] }, + 'netifyd': { name: 'Netifyd', type: 'backend', status: 'production', packages: ['secubox-app-netifyd', 'luci-app-secubox-netifyd'] }, + 'ndpid': { name: 'nDPId', type: 'backend', status: 'production', packages: ['secubox-app-ndpid', 'luci-app-ndpid'] }, + 'flow-analyzer': { name: 'Flow Analyzer', type: 'backend', status: 'production', packages: [] }, + 'avatar-tap': { name: 'Avatar-Tap', type: 'backend', status: 'production', packages: ['secubox-avatar-tap', 'luci-app-avatar-tap'] }, + 'cookie-tracker': { name: 'Cookie Tracker', type: 'backend', status: 'production', packages: ['secubox-cookie-tracker', 'luci-app-cookie-tracker'] }, + 'session-replay': { name: 'Session Replay', type: 'luci', status: 'production', packages: [] }, + 'cve-triage': { name: 'CVE Triage', type: 'backend', status: 'beta', packages: ['secubox-cve-triage', 'luci-app-cve-triage'] }, + 'cyberfeed': { name: 'CyberFeed', type: 'backend', status: 'production', packages: ['secubox-app-cyberfeed', 'luci-app-cyberfeed'] }, + 'device-intel': { name: 'Device Intel', type: 'backend', status: 'production', packages: ['secubox-app-device-intel', 'luci-app-device-intel'] }, + + // Admin components + 'backup': { name: 'Backup', type: 'backend', status: 'production', packages: ['secubox-app-backup', 'luci-app-backup'] }, + 'config-advisor': { name: 'Config Advisor', type: 'backend', status: 'beta', packages: ['secubox-config-advisor', 'luci-app-config-advisor'] }, + 'cloner': { name: 'Station Cloner', type: 'luci', status: 'alpha', packages: ['luci-app-cloner'] }, + 'anssi-checker': { name: 'ANSSI Checker', type: 'backend', status: 'alpha', packages: [] }, + 'sbom-generator': { name: 'SBOM Generator', type: 'backend', status: 'planned', packages: [] }, + 'audit-log': { name: 'Audit Log', type: 'backend', status: 'beta', packages: ['secubox-app-auth-logger'] }, + + // Virtual/implicit + 'network-stack': { name: 'Network Stack', type: 'system', status: 'production', packages: [] } + }, + + // ============================================================ + // MILESTONES: Version targets + // ============================================================ + milestones: [ { - phase: 'Phase 1', - name: 'Core Development', - period: 'Q4 2024 - Q1 2025', + version: '0.18', + name: 'MirrorBox Core', + target: '2026-02-06', status: 'completed', - progress: 100 + progress: 100, + features: ['localai', 'mcp-server', 'threat-analyst', 'dns-guard'], + highlights: ['LocalAI 3.9 upgrade', 'MCP Server for Claude Desktop', 'Threat Analyst agent'] }, { - phase: 'Phase 2', - name: 'Advanced Modules', - period: 'Q1 - Q2 2025', + version: '0.19', + name: 'AI Expansion + MirrorNet', + target: '2026-02-07', status: 'completed', - progress: 100 + progress: 100, + features: ['cve-triage', 'network-anomaly', 'mirrornet', 'identity'], + highlights: ['CVE Triage agent', 'Network Anomaly detection', 'MirrorNet P2P mesh'] }, { - phase: 'Phase 3', - name: 'Hardware Integration', - period: 'Q2 - Q4 2025', + version: '1.0', + name: 'Full Stack Release', + target: '2026-03-16', status: 'completed', - progress: 100 + progress: 100, + features: ['voip', 'matrix', 'factory', 'config-vault', 'smtp-relay'], + highlights: ['VoIP integration', 'Matrix federation', 'Device provisioning', 'Unified SMTP relay'] }, { - phase: 'Phase 4', - name: 'Beta Testing', - period: 'Q1 2026', + version: '1.1', + name: 'Extended Mesh', + target: '2026-04-01', status: 'in-progress', - progress: 55 + progress: 85, + features: ['yggdrasil', 'meshname-dns', 'extended-discovery'], + highlights: ['Yggdrasil IPv6 overlay', 'Meshname DNS resolution', 'Extended peer discovery'] }, { - phase: 'Phase 5', - name: 'Crowdfunding Campaign', - period: 'Q2 2026', + version: '1.2', + name: 'Certification', + target: '2026-06-01', status: 'planned', - progress: 20 - }, - { - phase: 'Phase 6', - name: 'Production & Delivery', - period: 'Q3 - Q4 2026', - status: 'planned', - progress: 0 + progress: 20, + features: ['compliance', 'sbom', 'anssi'], + highlights: ['ANSSI CSPN prep', 'CRA Annex I SBOM', 'Security documentation'] } ], - /** - * Calculate overall progress - */ - getOverallProgress() { - return Math.round(this.getModulesOverallProgress()); + // ============================================================ + // PRODUCTION STATS (defaults, updated via RPCD) + // ============================================================ + stats: { + totalPackages: 190, + luciApps: 92, + backends: 98, + lxcContainers: 18, + haproxyVhosts: 243, + sslCertificates: 95, + dnsZones: 7, + dnsRecords: 82, + mitmproxyRoutes: 174, + architectures: 13, + commits: 1850, + modulesCount: 92, + lastLiveUpdate: null }, - getModulesOverallProgress() { - const modules = this.moduleStatus || []; - if (!modules.length) - return this.getMilestoneProgressValue(this.milestones['modules-core']) * 100; - const total = modules.reduce((sum, module) => sum + this.getVersionProgress(module), 0); - return (total / modules.length) * 100; - }, + // ============================================================ + // DYNAMIC DATA FETCHING + // ============================================================ - /** - * Get current phase - */ - getCurrentPhase() { - return this.timeline.find(p => p.status === 'in-progress') || this.timeline[0]; - }, - - /** - * Render the widget - */ - render(containerId) { - const container = document.getElementById(containerId); - if (!container) { - console.error(`Container #${containerId} not found`); - return; + loadFiltersFromStorage: function() { + try { + var stored = localStorage.getItem('dsw_filters'); + if (stored) { + var parsed = JSON.parse(stored); + this.activeFilters = parsed; + } + } catch (e) { + // Ignore localStorage errors } - - const overallProgress = this.getModulesOverallProgress(); - const currentPhase = this.getCurrentPhase(); - - container.innerHTML = ` -
- `; - - this.addStyles(); - this.animateProgressBars(); }, - /** - * Render header section - */ - renderHeader(progress, phase) { - const displayProgress = Number(progress || 0).toFixed(2); - return ` -Real-time project progress tracker
-Chargement de l\'architecture...
Architecture: ', this.totalPackages, ' packages · 4 couches · ', Object.keys(this.features).length, ' features
', + '', layer.description, '
', + '', feature.description, '
', + '', deps.length, ' interconnections entre features
', + '