diff --git a/.claude/context.md b/.claude/context.md new file mode 100644 index 0000000..a86cdfe --- /dev/null +++ b/.claude/context.md @@ -0,0 +1,407 @@ +# SecuBox Project Context for Claude AI + +## 🎯 Project Identity + +**Name**: SecuBox +**Type**: Modular security suite for OpenWrt routers +**Version**: 2.0.0 +**Author**: CyberMind.fr (Gandalf) +**License**: Apache-2.0 + +## đŸ—ïž Architecture Overview + +``` +┌─────────────────────────────────────────────────────────────┐ +│ LuCI Web Interface │ +│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ +│ │ View.js │ │ View.js │ │ View.js │ │ View.js │ ... │ +│ └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘ │ +│ │ │ │ │ │ +│ └───────────┮─────┬─────┮───────────┘ │ +│ │ JSON-RPC │ +├─────────────────────────┌──────────────────────────────────── +│ RPCD Daemon │ +│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ +│ │ Script │ │ Script │ │ Script │ │ Script │ ... │ +│ └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘ │ +│ │ │ │ │ │ +├───────┌───────────┌───────────┌───────────┌────────────────── +│ │ UCI │ Shell │ System │ │ +│ │ Config │ Commands │ Services │ │ +└───────┮───────────┮───────────┮───────────┮─────────────────┘ +``` + +## 📁 Module Structure Template + +``` +luci-app-{module-name}/ +├── Makefile # OpenWrt package definition +├── README.md # Module documentation +├── htdocs/ +│ └── luci-static/ +│ └── resources/ +│ └── view/ +│ └── {module_name}/ # Underscore version +│ ├── main.js # Main view +│ └── {subview}.js # Optional subviews +└── root/ + ├── etc/ + │ ├── config/ + │ │ └── {module_name} # UCI configuration + │ ├── init.d/ + │ │ └── {module_name} # Service init script (optional) + │ └── uci-defaults/ + │ └── 99-{module_name} # First-run setup + └── usr/ + ├── libexec/ + │ └── rpcd/ + │ └── {module-name} # Hyphen version - RPCD backend + └── share/ + ├── luci/ + │ └── menu.d/ + │ └── luci-app-{module-name}.json + └── rpcd/ + └── acl.d/ + └── luci-app-{module-name}.json +``` + +## 📋 Naming Conventions + +| Context | Format | Example | +|---------|--------|---------| +| Package name | luci-app-{module-name} | luci-app-vhost-manager | +| RPCD script | {module-name} | vhost-manager | +| UCI config | {module_name} | vhost_manager | +| View path | {module_name}/ | vhost_manager/ | +| ubus object | luci.{module-name} | luci.vhost-manager | +| Menu path | admin/services/{module_name} | admin/services/vhost_manager | + +## 🔧 Code Standards + +### Makefile Template + +```makefile +include $(TOPDIR)/rules.mk + +PKG_NAME:=luci-app-{module-name} +PKG_VERSION:=2.0.0 +PKG_RELEASE:=1 +PKG_LICENSE:=Apache-2.0 +PKG_MAINTAINER:=CyberMind + +LUCI_TITLE:=LuCI - {Module Title} +LUCI_DESCRIPTION:={Description} +LUCI_DEPENDS:=+luci-base +rpcd {+other-deps} +LUCI_PKGARCH:=all + +include $(TOPDIR)/feeds/luci/luci.mk +``` + +### RPCD Script Template + +```sh +#!/bin/sh +# RPCD backend for {module-name} + +. /lib/functions.sh +. /usr/share/libubox/jshn.sh + +json_init + +case "$1" in + list) + # MUST list all available methods + json_add_object "status" + json_close_object + json_add_object "get_config" + json_close_object + json_add_object "set_config" + json_add_string "config" "object" + json_close_object + # Add more methods here + json_dump + ;; + + call) + case "$2" in + status) + # MUST implement status method + json_add_string "module" "{module-name}" + json_add_string "version" "2.0.0" + json_add_boolean "enabled" 1 + json_add_string "status" "running" + json_dump + ;; + + get_config) + # Read from UCI + json_add_object "config" + # config_load "{module_name}" + json_close_object + json_dump + ;; + + set_config) + read -r input + json_load "$input" + # Apply to UCI + json_init + json_add_boolean "success" 1 + json_dump + ;; + + *) + json_add_int "error" -32601 + json_add_string "message" "Method not found" + json_dump + ;; + esac + ;; +esac +``` + +### ACL File Template + +```json +{ + "luci-app-{module-name}": { + "description": "Grant access to {Module Name}", + "read": { + "ubus": { + "luci.{module-name}": ["status", "get_config", "get_stats"] + }, + "uci": ["{module_name}"] + }, + "write": { + "ubus": { + "luci.{module-name}": ["set_config", "apply"] + }, + "uci": ["{module_name}"] + } + } +} +``` + +### Menu File Template + +```json +{ + "admin/services/{module_name}": { + "title": "{Module Title}", + "order": 50, + "action": { + "type": "view", + "path": "{module_name}/main" + }, + "depends": { + "acl": ["luci-app-{module-name}"], + "uci": { + "{module_name}": true + } + } + } +} +``` + +### View JavaScript Template + +```javascript +'use strict'; +'require view'; +'require rpc'; +'require ui'; +'require form'; +'require poll'; + +var callStatus = rpc.declare({ + object: 'luci.{module-name}', + method: 'status', + expect: {} +}); + +var callGetConfig = rpc.declare({ + object: 'luci.{module-name}', + method: 'get_config', + expect: {} +}); + +var callSetConfig = rpc.declare({ + object: 'luci.{module-name}', + method: 'set_config', + params: ['config'] +}); + +return view.extend({ + load: function() { + return Promise.all([ + callStatus(), + callGetConfig() + ]); + }, + + render: function(data) { + var status = data[0] || {}; + var config = data[1] || {}; + + var m, s, o; + + m = new form.Map('{module_name}', _('Module Title'), + _('Module description')); + + // Status section + s = m.section(form.NamedSection, 'global', 'global', _('Status')); + s.anonymous = true; + + o = s.option(form.DummyValue, '_status', _('Status')); + o.rawhtml = true; + o.cfgvalue = function() { + return '● ' + (status.status || 'Unknown') + ''; + }; + + // Configuration section + s = m.section(form.NamedSection, 'global', 'global', _('Configuration')); + + o = s.option(form.Flag, 'enabled', _('Enabled')); + o.rmempty = false; + + return m.render(); + }, + + handleSaveApply: null, + handleSave: null, + handleReset: null +}); +``` + +## 📩 Current Modules Specification + +### 1. secubox (Hub) +**Purpose**: Central dashboard aggregating all modules +**Key Methods**: get_modules_status, get_system_health, get_quick_actions +**Dependencies**: +luci-base +rpcd +curl +jq + +### 2. crowdsec-dashboard +**Purpose**: CrowdSec threat intelligence visualization +**Key Methods**: get_decisions, get_alerts, get_bouncers, add_decision, delete_decision +**Dependencies**: +luci-base +rpcd +crowdsec +crowdsec-firewall-bouncer + +### 3. netdata-dashboard +**Purpose**: Embedded Netdata monitoring +**Key Methods**: get_status, get_metrics, restart_service +**Dependencies**: +luci-base +rpcd +netdata + +### 4. netifyd-dashboard +**Purpose**: Deep packet inspection stats +**Key Methods**: get_flows, get_applications, get_protocols, get_hosts +**Dependencies**: +luci-base +rpcd +netifyd + +### 5. wireguard-dashboard +**Purpose**: WireGuard VPN management with QR codes +**Key Methods**: list_interfaces, list_peers, add_peer, delete_peer, generate_qr +**Dependencies**: +luci-base +rpcd +wireguard-tools +qrencode + +### 6. network-modes +**Purpose**: Network topology switcher (Router/AP/Bridge/Repeater) +**Key Methods**: get_current_mode, set_mode, get_available_modes, apply_mode +**Dependencies**: +luci-base +rpcd + +### 7. client-guardian +**Purpose**: Network access control, captive portal +**Key Methods**: list_clients, authorize_client, block_client, get_sessions, set_policy +**Dependencies**: +luci-base +rpcd +nodogsplash + +### 8. system-hub +**Purpose**: System health and control center +**Key Methods**: get_system_info, get_services, restart_service, get_logs, backup_config +**Dependencies**: +luci-base +rpcd + +### 9. bandwidth-manager +**Purpose**: QoS, quotas, traffic scheduling +**Key Methods**: list_rules, add_rule, delete_rule, get_usage, list_quotas, set_quota +**Dependencies**: +luci-base +rpcd +tc-full +kmod-sched-cake +sqm-scripts + +### 10. auth-guardian +**Purpose**: OAuth2 authentication, voucher system +**Key Methods**: get_providers, set_provider, validate_token, list_vouchers, create_voucher +**Dependencies**: +luci-base +rpcd +curl +nodogsplash + +### 11. media-flow +**Purpose**: Streaming service detection and monitoring +**Key Methods**: get_active_streams, get_history, get_stats_by_service, get_stats_by_client +**Dependencies**: +luci-base +rpcd +netifyd + +### 12. vhost-manager +**Purpose**: Reverse proxy and SSL certificate management +**Key Methods**: list_vhosts, add_vhost, delete_vhost, request_cert, list_certs, reload_nginx +**Dependencies**: +luci-base +rpcd +nginx-ssl +acme + +### 13. cdn-cache +**Purpose**: Local content caching +**Key Methods**: get_status, get_stats, clear_cache, set_rules, get_cached_objects +**Dependencies**: +luci-base +rpcd +nginx + +### 14. traffic-shaper +**Purpose**: Advanced traffic control +**Key Methods**: list_classes, add_class, set_priority, get_stats, apply_rules +**Dependencies**: +luci-base +rpcd +tc-full +kmod-sched-cake + +## đŸ§Ș Testing Commands + +```bash +# Test RPCD script locally +echo '{"method":"list"}' | /usr/libexec/rpcd/{module} +echo '{"method":"call","params":["status"]}' | /usr/libexec/rpcd/{module} + +# Test via ubus +ubus list | grep luci +ubus call luci.{module} status +ubus -v list luci.{module} + +# Validate JSON +jq . /usr/share/rpcd/acl.d/luci-app-{module}.json +jq . /usr/share/luci/menu.d/luci-app-{module}.json + +# Validate JavaScript +node --check htdocs/luci-static/resources/view/{module}/main.js + +# Check permissions +ls -la /usr/libexec/rpcd/{module} # Should be -rwxr-xr-x + +# Restart RPCD after changes +/etc/init.d/rpcd restart +rm -rf /tmp/luci-* +``` + +## 📝 Important Notes + +1. **RPCD scripts MUST**: + - Start with `#!/bin/sh` + - Source jshn.sh for JSON handling + - Implement `list` and `call` commands + - Always call `json_dump` at the end + - Be executable (chmod +x) + +2. **Views MUST**: + - Start with `'use strict';` + - Use `require('view')` pattern + - Declare RPC calls with `rpc.declare` + - Return `view.extend({...})` + +3. **ACL files MUST**: + - List ALL RPCD methods + - Separate read and write permissions + - Use correct ubus object name (luci.{module-name}) + +4. **Menu files MUST**: + - Use correct view path ({module_name}/main) + - Reference correct ACL name + - Set appropriate order for menu position + +## 🌐 Links + +- Website: https://secubox.cybermood.eu +- Documentation: https://cybermind.fr/docs/secubox +- GitHub: https://github.com/cybermood-eu/secubox +- Campaign: https://cybermood.eu (redirects to cybermind.fr/secubox) diff --git a/.claude/module-prompts.md b/.claude/module-prompts.md new file mode 100644 index 0000000..897cd22 --- /dev/null +++ b/.claude/module-prompts.md @@ -0,0 +1,642 @@ +# 🚀 Prompts d'ImplĂ©mentation SecuBox + +Copie-colle ces prompts dans Claude pour implĂ©menter chaque module. + +--- + +## 📊 1. SecuBox Hub (secubox) + +``` +ImplĂ©mente le module central SecuBox Hub qui agrĂšge tous les autres modules. + +**FonctionnalitĂ©s**: +1. Dashboard avec statut de tous les modules installĂ©s +2. Indicateurs de santĂ© systĂšme (CPU, RAM, Disk, Network) +3. Actions rapides (redĂ©marrer services, vider cache, backup) +4. Notifications/alertes agrĂ©gĂ©es +5. DĂ©tection automatique des modules installĂ©s + +**MĂ©thodes RPCD** (script: /usr/libexec/rpcd/secubox): +- status: État du hub +- get_modules: Liste des modules SecuBox installĂ©s avec leur statut +- get_system_health: CPU%, RAM%, Disk%, Uptime, Load +- get_alerts: Alertes agrĂ©gĂ©es de tous les modules +- quick_action: ExĂ©cuter une action rapide (restart_rpcd, clear_cache, etc.) +- get_dashboard_data: Toutes les donnĂ©es dashboard en un appel + +**DĂ©tection des modules**: +Parcourir /usr/libexec/rpcd/ pour trouver les scripts SecuBox: +crowdsec-dashboard, netdata-dashboard, netifyd-dashboard, wireguard-dashboard, +network-modes, client-guardian, system-hub, bandwidth-manager, auth-guardian, +media-flow, vhost-manager, cdn-cache, traffic-shaper + +Pour chaque module trouvĂ©, appeler sa mĂ©thode "status" via ubus. + +**View JS**: +- Grid de cards pour chaque module (icĂŽne, nom, statut, lien) +- Section santĂ© systĂšme avec gauges +- Liste des alertes rĂ©centes +- Boutons actions rapides + +GĂ©nĂšre tous les fichiers complets: Makefile, RPCD, ACL, Menu, View, UCI config. +``` + +--- + +## đŸ›Ąïž 2. CrowdSec Dashboard (crowdsec-dashboard) + +``` +ImplĂ©mente le dashboard CrowdSec pour la visualisation des menaces. + +**FonctionnalitĂ©s**: +1. Afficher les dĂ©cisions actives (bans IP) +2. Afficher les alertes rĂ©centes +3. Statistiques de blocage (par pays, par scĂ©nario) +4. Gestion des bouncers +5. Ajouter/supprimer manuellement des dĂ©cisions +6. Configuration de l'agent CrowdSec + +**MĂ©thodes RPCD** (script: /usr/libexec/rpcd/crowdsec-dashboard): +- status: État de CrowdSec et du bouncer +- get_decisions: Liste des dĂ©cisions actives (cscli decisions list -o json) +- get_alerts: Alertes rĂ©centes (cscli alerts list -o json) +- get_bouncers: Liste des bouncers (cscli bouncers list -o json) +- get_metrics: MĂ©triques Prometheus de CrowdSec +- add_decision: Ajouter un ban (cscli decisions add -i IP -d DURATION) +- delete_decision: Supprimer un ban (cscli decisions delete -i IP) +- get_scenarios: ScĂ©narios actifs + +**Parsing**: +- Utiliser cscli avec -o json pour avoir du JSON +- Parser les mĂ©triques Prometheus pour les stats + +**View JS**: +- Tableau des dĂ©cisions avec actions (delete) +- Carte du monde avec IPs bloquĂ©es (optionnel) +- Graphique temporel des alertes +- Formulaire pour ajouter une dĂ©cision manuelle +- Liste des scĂ©narios actifs + +GĂ©nĂšre tous les fichiers complets. +``` + +--- + +## 📈 3. Netdata Dashboard (netdata-dashboard) + +``` +ImplĂ©mente l'intĂ©gration du dashboard Netdata. + +**FonctionnalitĂ©s**: +1. Iframe intĂ©grĂ© du dashboard Netdata local +2. ContrĂŽle du service (start/stop/restart) +3. Configuration basique (port, retention) +4. Alertes Netdata rĂ©centes +5. MĂ©triques clĂ©s en preview + +**MĂ©thodes RPCD** (script: /usr/libexec/rpcd/netdata-dashboard): +- status: État du service Netdata, port, version +- get_config: Configuration actuelle +- set_config: Modifier la configuration +- restart: RedĂ©marrer le service +- get_alarms: Alertes actives (via API Netdata /api/v1/alarms) +- get_info: Infos systĂšme (via API Netdata /api/v1/info) + +**Configuration UCI** (/etc/config/netdata_dashboard): +config global + option enabled '1' + option port '19999' + option bind '127.0.0.1' + +**View JS**: +- Iframe pleine largeur vers http://127.0.0.1:19999 +- Panneau de contrĂŽle du service +- Indicateurs d'alertes +- Configuration port/bind + +GĂ©nĂšre tous les fichiers complets. +``` + +--- + +## 🔍 4. Netifyd Dashboard (netifyd-dashboard) + +``` +ImplĂ©mente le dashboard DPI Netifyd. + +**FonctionnalitĂ©s**: +1. Flux rĂ©seau en temps rĂ©el +2. Applications dĂ©tectĂ©es (Netflix, YouTube, etc.) +3. Protocoles utilisĂ©s +4. Statistiques par client +5. Historique des connexions + +**MĂ©thodes RPCD** (script: /usr/libexec/rpcd/netifyd-dashboard): +- status: État du service netifyd +- get_flows: Flux actifs (parser /var/run/netifyd/status.json ou socket) +- get_applications: Applications dĂ©tectĂ©es avec bande passante +- get_protocols: Protocoles dĂ©tectĂ©s +- get_hosts: Liste des hosts avec leurs apps +- get_stats: Statistiques globales + +**Parsing netifyd**: +Le fichier status peut ĂȘtre Ă  /var/run/netifyd/status.json +Ou via socket: echo "status" | nc -U /var/run/netifyd/netifyd.sock + +**View JS**: +- Tableau des flux en temps rĂ©el (polling 5s) +- Graphique donut par application +- Liste des clients avec leur trafic +- Filtres par app/protocole/client + +GĂ©nĂšre tous les fichiers complets. +``` + +--- + +## 🔐 5. WireGuard Dashboard (wireguard-dashboard) + +``` +ImplĂ©mente le gestionnaire WireGuard avec QR codes. + +**FonctionnalitĂ©s**: +1. Liste des interfaces WireGuard +2. Liste des peers avec statut (online/offline, last handshake) +3. Ajouter/modifier/supprimer des peers +4. GĂ©nĂ©rer QR code pour configuration client +5. Statistiques de transfert +6. Export de configuration + +**MĂ©thodes RPCD** (script: /usr/libexec/rpcd/wireguard-dashboard): +- status: État global WireGuard +- list_interfaces: Toutes les interfaces wg (wg show interfaces) +- get_interface: DĂ©tails d'une interface (wg show wg0 dump) +- list_peers: Peers d'une interface avec stats +- add_peer: Ajouter un peer (gĂ©nĂ©rer clĂ©s, configurer UCI) +- delete_peer: Supprimer un peer +- generate_config: GĂ©nĂ©rer config client (.conf) +- generate_qr: GĂ©nĂ©rer QR code PNG (base64) avec qrencode + +**GĂ©nĂ©ration de peer**: +1. wg genkey | tee privatekey | wg pubkey > publickey +2. Allouer une IP dans le range +3. CrĂ©er section UCI +4. GĂ©nĂ©rer config client avec endpoint, clĂ©s, allowed IPs + +**QR Code**: +qrencode -t PNG -o - "config_content" | base64 + +**View JS**: +- Liste des interfaces avec toggle +- Tableau des peers avec statut temps rĂ©el +- Modal crĂ©ation peer avec formulaire +- Affichage QR code dans modal +- Bouton tĂ©lĂ©charger .conf +- Stats transfert (rx/tx) par peer + +GĂ©nĂšre tous les fichiers complets. +``` + +--- + +## 🔄 6. Network Modes (network-modes) + +``` +ImplĂ©mente le switcher de mode rĂ©seau. + +**Modes supportĂ©s**: +1. Router (dĂ©faut) - NAT, DHCP server, firewall +2. Access Point - Bridge, pas de NAT +3. Repeater - Client WiFi + AP +4. Bridge - Pur bridge L2 + +**MĂ©thodes RPCD** (script: /usr/libexec/rpcd/network-modes): +- status: Mode actuel et Ă©tat +- get_current_mode: DĂ©tails du mode actif +- get_available_modes: Liste des modes avec description +- set_mode: Changer de mode (reconfigure network/wireless/firewall) +- preview_changes: PrĂ©visualiser les changements avant application +- apply_mode: Appliquer la configuration +- rollback: Revenir au mode prĂ©cĂ©dent (si Ă©chec) + +**Logique par mode**: +Router: wan=dhcp, lan=static+dhcp_server, firewall zones +AP: br-lan bridge wan+lan, pas de dhcp, pas de firewall +Repeater: sta0 client, ap0 rĂ©pĂ©teur, relay +Bridge: tout en bridge, dhcp client + +**SĂ©curitĂ©**: +- Backup config avant changement +- Timer de rollback automatique (2 min) si pas de confirmation +- Confirmation via nouvelle IP + +**View JS**: +- Cards pour chaque mode (icĂŽne, description) +- Mode actuel surlignĂ© +- Bouton "Switch to..." avec confirmation +- Progress bar pendant application +- Instructions post-switch + +GĂ©nĂšre tous les fichiers complets. +``` + +--- + +## đŸ‘„ 7. Client Guardian (client-guardian) + +``` +ImplĂ©mente le contrĂŽle d'accĂšs rĂ©seau avec portail captif. + +**FonctionnalitĂ©s**: +1. Liste des clients connectĂ©s (MAC, IP, hostname) +2. Autoriser/bloquer des clients +3. Sessions actives du portail captif +4. Politiques d'accĂšs par dĂ©faut +5. IntĂ©gration nodogsplash +6. Temps de session configurable + +**MĂ©thodes RPCD** (script: /usr/libexec/rpcd/client-guardian): +- status: État du service +- list_clients: Tous les clients DHCP/ARP avec statut auth +- get_client: DĂ©tails d'un client (MAC) +- authorize_client: Autoriser via ndsctl (ndsctl auth MAC) +- deauthorize_client: RĂ©voquer (ndsctl deauth MAC) +- block_client: Bloquer dĂ©finitivement (firewall) +- unblock_client: DĂ©bloquer +- list_sessions: Sessions captive portal actives +- get_policy: Politique par dĂ©faut +- set_policy: DĂ©finir politique (open/captive/whitelist) + +**Sources de donnĂ©es**: +- /tmp/dhcp.leases pour DHCP +- ip neigh pour ARP +- ndsctl status pour sessions nodogsplash +- iptables/nftables pour blocks + +**View JS**: +- Tableau des clients avec badges (authorized/blocked/pending) +- Actions inline (authorize/block) +- Filtres par statut +- Compteur de sessions actives +- Configuration politique + +GĂ©nĂšre tous les fichiers complets. +``` + +--- + +## ⚙ 8. System Hub (system-hub) + +``` +ImplĂ©mente le centre de contrĂŽle systĂšme. + +**FonctionnalitĂ©s**: +1. Informations systĂšme (hostname, version, uptime, etc.) +2. SantĂ© systĂšme (CPU, RAM, disk, tempĂ©rature) +3. Gestion des services (start/stop/restart/enable) +4. Logs systĂšme filtrĂ©s +5. Backup/restore configuration +6. Reboot/shutdown + +**MĂ©thodes RPCD** (script: /usr/libexec/rpcd/system-hub): +- status: Vue d'ensemble systĂšme +- get_system_info: Hostname, model, version OpenWrt, kernel +- get_health: CPU%, RAM%, Disk%, Temp, Load +- list_services: Services avec statut (enabled/running) +- service_action: start/stop/restart/enable/disable un service +- get_logs: DerniĂšres lignes de logread avec filtre +- backup_config: CrĂ©er backup sysupgrade (base64) +- restore_config: Restaurer backup +- reboot: RedĂ©marrer le routeur +- get_storage: Espace disque par mount point + +**DonnĂ©es systĂšme**: +- /proc/cpuinfo, /proc/meminfo, /proc/loadavg +- df -h pour disk +- cat /sys/class/thermal/thermal_zone*/temp pour temp +- /etc/init.d/* pour services + +**View JS**: +- Dashboard avec gauges (CPU, RAM, Disk) +- Info systĂšme en cards +- Tableau des services avec actions +- Console de logs avec filtre +- Boutons backup/restore/reboot + +GĂ©nĂšre tous les fichiers complets. +``` + +--- + +## đŸ“¶ 9. Bandwidth Manager (bandwidth-manager) + +``` +ImplĂ©mente la gestion de bande passante et QoS. + +**FonctionnalitĂ©s**: +1. RĂšgles QoS par application/port/IP +2. Quotas mensuels par client (MAC) +3. Scheduling (horaires de limitation) +4. Stats de consommation temps rĂ©el +5. Alertes de dĂ©passement +6. IntĂ©gration SQM/CAKE + +**MĂ©thodes RPCD** (script: /usr/libexec/rpcd/bandwidth-manager): +- status: État QoS et stats globales +- list_rules: RĂšgles QoS actives +- add_rule: Ajouter rĂšgle (type, target, limit_down, limit_up, priority) +- delete_rule: Supprimer rĂšgle +- list_quotas: Quotas par MAC +- get_quota: Quota + usage d'un client +- set_quota: CrĂ©er/modifier quota +- reset_quota: Reset compteur +- get_usage_realtime: Usage temps rĂ©el par client +- get_usage_history: Historique de consommation + +**Tracking usage**: +iptables avec compteurs par MAC dans chain dĂ©diĂ©e +ou nftables avec sets/maps + +**Configuration UCI**: +config rule 'rule1' + option name 'Limit YouTube' + option type 'application' + option target 'youtube' + option limit_down '5000' + option limit_up '1000' + option priority 'low' + +config quota 'quota1' + option mac 'AA:BB:CC:DD:EE:FF' + option name 'iPhone Jean' + option limit_mb '10240' + option action 'throttle' + option reset_day '1' + +**View JS**: +- Tableau des rĂšgles avec CRUD +- Tableau des quotas avec barres de progression +- Graphique usage temps rĂ©el +- Configuration SQM intĂ©grĂ©e + +GĂ©nĂšre tous les fichiers complets. +``` + +--- + +## 🔑 10. Auth Guardian (auth-guardian) + +``` +ImplĂ©mente l'authentification OAuth et systĂšme de vouchers. + +**FonctionnalitĂ©s**: +1. OAuth2 avec Google, GitHub, Microsoft +2. SystĂšme de vouchers (codes d'accĂšs temporaires) +3. Portail captif personnalisable +4. Gestion des sessions authentifiĂ©es +5. Logs d'authentification + +**MĂ©thodes RPCD** (script: /usr/libexec/rpcd/auth-guardian): +- status: État du systĂšme d'auth +- list_providers: Providers OAuth configurĂ©s +- set_provider: Configurer un provider (client_id, secret, etc.) +- delete_provider: Supprimer un provider +- list_vouchers: Tous les vouchers +- create_voucher: CrĂ©er voucher (durĂ©e, data_limit, note) +- delete_voucher: Supprimer voucher +- validate_voucher: VĂ©rifier un code voucher +- list_sessions: Sessions auth actives +- revoke_session: RĂ©voquer une session +- get_logs: Logs d'authentification + +**OAuth Flow**: +1. Redirect vers provider avec callback URL +2. CGI script reçoit le token +3. Valide avec API provider +4. Si OK, autorise le MAC via nodogsplash + +**Vouchers**: +config voucher 'v_abc123' + option code 'ABC-123-XYZ' + option duration_hours '24' + option data_limit_mb '1000' + option created '2024-01-15T10:00:00Z' + option used '0' + option note 'Visiteur Jean' + +**View JS**: +- Onglets: OAuth | Vouchers | Sessions | Logs +- Config providers OAuth avec test +- GĂ©nĂ©rateur de vouchers avec QR code +- Tableau des sessions actives +- Timeline des authentifications + +GĂ©nĂšre tous les fichiers complets. +``` + +--- + +## đŸ“ș 11. Media Flow (media-flow) + +``` +ImplĂ©mente la dĂ©tection et monitoring des services de streaming. + +**Services dĂ©tectĂ©s**: +- Video: Netflix, YouTube, Disney+, Prime Video, Twitch +- Audio: Spotify, Apple Music, Deezer +- Visio: Zoom, Teams, Meet, Discord + +**FonctionnalitĂ©s**: +1. Flux streaming actifs en temps rĂ©el +2. Historique des sessions +3. Stats par service et par client +4. QualitĂ© estimĂ©e (SD/HD/4K) +5. Alertes configurables + +**MĂ©thodes RPCD** (script: /usr/libexec/rpcd/media-flow): +- status: Vue d'ensemble +- get_active_streams: Streams en cours (via netifyd) +- get_stream_history: DerniĂšres 24h +- get_stats_by_service: AgrĂ©gĂ© par service +- get_stats_by_client: AgrĂ©gĂ© par client +- get_service_details: DĂ©tails d'un service +- set_alert: Configurer alerte (ex: si Netflix > 2h) +- list_alerts: Alertes configurĂ©es + +**Parsing netifyd**: +Identifier les applications streaming dans les flux netifyd: +- detected_application contient le nom +- Calculer la bande passante pour estimer la qualitĂ© + +**View JS**: +- Dashboard temps rĂ©el avec icĂŽnes services +- Graphique donut rĂ©partition par service +- Timeline des sessions du jour +- Top clients par consommation +- Configuration alertes + +GĂ©nĂšre tous les fichiers complets. +``` + +--- + +## 🌐 12. VHost Manager (vhost-manager) + +``` +ImplĂ©mente le gestionnaire de reverse proxy et SSL. + +**FonctionnalitĂ©s**: +1. CrĂ©er des vhosts nginx +2. Certificats SSL via Let's Encrypt (ACME) +3. Authentification basique optionnelle +4. Support WebSocket +5. Test de connectivitĂ© backend + +**MĂ©thodes RPCD** (script: /usr/libexec/rpcd/vhost-manager): +- status: État nginx et stats +- list_vhosts: Tous les vhosts configurĂ©s +- get_vhost: DĂ©tails d'un vhost +- add_vhost: CrĂ©er vhost (domain, backend, ssl, auth) +- update_vhost: Modifier vhost +- delete_vhost: Supprimer vhost +- test_backend: Tester connectivitĂ© backend +- request_cert: Demander certificat Let's Encrypt +- list_certs: Certificats avec dates expiration +- reload_nginx: Recharger configuration + +**GĂ©nĂ©ration nginx** (/etc/nginx/conf.d/{domain}.conf): +server { + listen 80; + server_name example.com; + location / { + proxy_pass http://192.168.1.100:8080; + proxy_http_version 1.1; + proxy_set_header Host $host; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + } +} + +**ACME**: +Utiliser acme.sh ou uacme pour les certificats + +**View JS**: +- Tableau des vhosts avec status (up/down/ssl) +- Modal crĂ©ation/Ă©dition vhost +- Indicateur expiration SSL +- Bouton test backend +- Logs d'accĂšs rĂ©cents + +GĂ©nĂšre tous les fichiers complets. +``` + +--- + +## đŸ’Ÿ 13. CDN Cache (cdn-cache) + +``` +ImplĂ©mente le cache local de contenu. + +**FonctionnalitĂ©s**: +1. Cache nginx pour contenu statique +2. Stats de cache (hit/miss ratio) +3. RĂšgles de cache par domaine/type +4. Purge manuelle +5. Limite de taille configurable + +**MĂ©thodes RPCD** (script: /usr/libexec/rpcd/cdn-cache): +- status: État du cache, taille utilisĂ©e +- get_stats: Hit ratio, requĂȘtes, Ă©conomies bande passante +- list_rules: RĂšgles de cache +- add_rule: Ajouter rĂšgle (domain pattern, ttl, types) +- delete_rule: Supprimer rĂšgle +- get_cached_objects: Liste objets en cache +- purge_cache: Vider le cache (tout ou pattern) +- set_limits: Configurer limites (max_size, inactive) + +**Configuration nginx**: +proxy_cache_path /tmp/nginx-cache levels=1:2 keys_zone=cdn:10m max_size=1g; + +**View JS**: +- Dashboard avec stats (hit ratio gauge, taille) +- Tableau des rĂšgles de cache +- Liste des domaines cachĂ©s +- Bouton purge avec confirmation +- Configuration taille max + +GĂ©nĂšre tous les fichiers complets. +``` + +--- + +## 🚩 14. Traffic Shaper (traffic-shaper) + +``` +ImplĂ©mente le contrĂŽle de trafic avancĂ©. + +**FonctionnalitĂ©s**: +1. Classes de trafic avec prioritĂ©s +2. RĂšgles de classification (port, IP, DSCP) +3. Limites par classe +4. Stats temps rĂ©el par classe +5. Presets (Gaming, Streaming, Work from Home) + +**MĂ©thodes RPCD** (script: /usr/libexec/rpcd/traffic-shaper): +- status: État global TC +- list_classes: Classes de trafic +- add_class: CrĂ©er classe (name, priority, rate, ceil) +- update_class: Modifier classe +- delete_class: Supprimer classe +- list_rules: RĂšgles de classification +- add_rule: Ajouter rĂšgle (match, class) +- delete_rule: Supprimer rĂšgle +- get_stats: Stats par classe (packets, bytes, drops) +- apply_preset: Appliquer un preset +- list_presets: Presets disponibles + +**TC/CAKE**: +Utiliser tc avec qdisc CAKE ou HTB +tc qdisc add dev eth0 root cake bandwidth 100mbit + +**View JS**: +- Diagramme des classes avec flux +- Tableau CRUD classes +- Tableau CRUD rĂšgles +- Stats temps rĂ©el par classe +- Boutons presets rapides + +GĂ©nĂšre tous les fichiers complets. +``` + +--- + +## 🔄 Prompt de Continuation + +AprĂšs avoir gĂ©nĂ©rĂ© un module, utilise ce prompt pour continuer : + +``` +Le module {MODULE} est gĂ©nĂ©rĂ©. Maintenant: + +1. VĂ©rifie la cohĂ©rence entre tous les fichiers +2. Assure-toi que toutes les mĂ©thodes RPCD sont dans l'ACL +3. VĂ©rifie que les appels RPC dans le JS correspondent aux mĂ©thodes RPCD +4. GĂ©nĂšre un script de test pour valider le module +5. Liste les dĂ©pendances systĂšme Ă  installer +``` + +--- + +## ✅ Prompt de Validation Finale + +``` +Pour le module {MODULE}, fais une revue complĂšte: + +1. **Makefile**: PKG_NAME, LUCI_DEPENDS corrects? +2. **RPCD**: Toutes les mĂ©thodes ont json_dump? Erreurs gĂ©rĂ©es? +3. **ACL**: Toutes les mĂ©thodes listĂ©es? Read/write sĂ©parĂ©s? +4. **Menu**: Chemin view correct? ACL rĂ©fĂ©rencĂ©? +5. **View**: RPC declares matchent RPCD? Gestion erreurs? +6. **Config UCI**: Structure valide? Valeurs par dĂ©faut? + +Corrige les problĂšmes trouvĂ©s et gĂ©nĂšre les fichiers finaux. +```