Commit Graph

11 Commits

Author SHA1 Message Date
8ffd693a85 refactor: Remove debug features from NetIfyd dashboard
Removed Features:
- Debug mode toggle button
- Debug panel and log display
- Update indicator (count and time since last update)
- Debug logging functions (debug, toggleDebug)
- Debug state variables (debugMode, updateCount, errorCount, lastUpdate)
- REFRESH-DEBUG.md documentation

Preserved Features:
 Race condition fix (containers created before poll.add)
 Auto-refresh functionality (5-second polling)
 Data caching (latestDashboardData, latestTopApps, latestTopProtocols)
 Application aggregation function
 All core rendering functions
 Service control and statistics display

Benefits:
- Cleaner, production-ready code
- Reduced code complexity (~120 lines removed)
- Maintains all critical functionality
- Better performance (no debug overhead)

The dashboard now provides a streamlined interface focused on
displaying network intelligence data without development debug features.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-06 18:38:50 +01:00
8d5e4275f6 fix: CrowdSec CAPI registration and enable threat intelligence
CrowdSec Central API (CAPI) Fixed:
- Removed code that disabled online_client on install
- Added proper CAPI registration in crowdsec.defaults
- Registration now works (previous 403 errors were transient)
- Graceful fallback if CAPI registration fails

CAPI Features Now Working:
- Threat intelligence sharing enabled
- Pulling community blocklist (14,997+ IPs)
- Hub updates working without 403 errors
- SSH bruteforce: 12,388 bans from CAPI
- Generic scans: 1,176 bans from CAPI
- SSH exploits: 1,433 bans from CAPI

Registration Flow:
1. Create /etc/machine-id if missing
2. Register local API machine
3. Register with Central API (CAPI)
4. On CAPI failure, create minimal credentials file
5. Update hub index
6. Install default collections

Benefits of CAPI Integration:
- Real-time threat intelligence from global network
- Community-contributed IP blocklists
- Automatic updates for detection scenarios
- Signal sharing to help protect others
- Enhanced protection without manual IP list management

NetIfyd Dashboard Improvements:
- Added data caching for smoother updates
- Application aggregation function
- Fallback stats when data temporarily unavailable
- Better handling of undefined values

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-06 18:33:23 +01:00
5d847319e9 feat: Add comprehensive debug mode and fix refresh race condition
Dashboard Refresh Problem Fixed:
- Race condition where poll.add() was called before containers existed
- Containers were undefined during first poll callback
- DOM updates failed silently with no error logging
- Fixed by creating containers BEFORE setting up polling

Debug Features Added:
- Toggle debug mode with button in header
- Visual debug panel showing last 20 log entries
- Browser console logging with timestamps
- Live update indicator (count + time since last update)
- Error tracking and counting
- Detailed logging of all RPC calls and responses

Debug Panel Features:
- Timestamps for all events
- JSON data preview for API responses
- Auto-scroll with newest entries at top
- Max 20 entries to prevent memory issues
- Hidden by default, shown when debug enabled

Update Indicator:
- Shows "Updates: N | Last: Xs ago" in header
- Updates every second
- Visual feedback that polling is working
- Easy to spot stalled/broken polling

Error Handling:
- Try/catch around all poll callbacks
- Errors logged to debug panel and console
- Error counting for diagnostics
- Polling continues even after errors

Code Improvements:
- Proper container creation order
- Better error handling in load() and polling
- Debug logging throughout lifecycle
- Performance metrics tracking

Documentation:
- Complete analysis in REFRESH-DEBUG.md
- Troubleshooting guide
- Debug mode usage instructions
- Performance considerations

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-06 18:27:34 +01:00
e1c7c79104 feat: Enhanced netifyd metrics and fixed directory structure
Network Intelligence Dashboard Enhancements:
- Add detailed protocol breakdown (TCP/UDP/ICMP) with visual bars
- Display flow metrics (active, expired, purged)
- Show CPU and memory usage for netifyd process
- Add IP bytes vs wire bytes differentiation
- Enhanced stat cards with subtitles and better formatting

RPC Backend Improvements:
- Add tcp_packets, udp_packets, icmp_packets metrics
- Add ip_bytes (payload without ethernet overhead)
- Add flows_active, flows_expired, flows_purged counters
- Add cpu_usage and memory_kb from netifyd status
- Calculate CPU total from user + system time

Directory Structure Fix:
- Create /etc/netify.d/plugins.d on package install
- Create /etc/netify.d/address-groups.d
- Generate minimal netify-categories.json to prevent errors
- Auto-initialize UCI config for secubox-netifyd
- Auto-restart netifyd after directory creation

UCI Configuration:
- Settings: auto_refresh, socket configuration
- Analytics: limits for top apps/protocols/devices
- Data retention configuration

Issue Resolved:
- Netifyd was running but showing 0 flows due to missing directories
- Service now properly captures and analyzes network traffic
- All metrics displaying correctly in dashboard

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-06 18:18:35 +01:00
0a43993f8d feat: Enable CrowdSec in firmware build & cleanup netifyd config
Build Configuration Updates:
- Enable CONFIG_PACKAGE_crowdsec=y
- Enable CONFIG_PACKAGE_secubox-app-crowdsec=y
- Enable CONFIG_PACKAGE_luci-app-secubox-admin=y
- Remove obsolete comment about Go 1.23+ compilation failure

Netifyd Configuration:
- Remove conflicting /etc/config/netifyd from luci-app-secubox-netifyd
- Add automatic removal in local-build.sh copy process
- Prevents UCI config conflicts with netifyd package defaults

CrowdSec Status:
- v1.7.4-r2 successfully built (81MB)
- Local API operational on 127.0.0.1:8080
- SSH brute-force detection enabled
- Dashboard accessible via LuCI

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-06 16:47:50 +01:00
7df75ad5d1 chore(luci-app-secubox-netifyd): Remove unnecessary collector
Netifyd crée nativement /var/run/netifyd/status.json avec toutes
les stats nécessaires. Le collecteur custom n'est plus nécessaire.

Supprimé:
- /usr/sbin/netifyd-collector
- /etc/cron.d/netifyd-collector
- Installation dans Makefile

Le backend RPC lit maintenant directement le fichier natif de netifyd.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-05 18:52:19 +01:00
d3e8e51043 fix(luci-app-secubox-netifyd): Read netifyd native status.json
Netifyd crée automatiquement /var/run/netifyd/status.json avec toutes
les stats. Pas besoin de collecteur custom !

Changements:
- Lit flow_count directement depuis le fichier natif
- Compte unique_devices depuis la table ARP (ip neigh)
- Lit dns_hint_cache.cache_size pour applications
- Calcule total_bytes depuis stats.*.wire_bytes

Fix testé sur routeur:
- active_flows: 16 ✓
- unique_devices: 4 ✓
- unique_applications: 5 ✓
- total_bytes: 48302 ✓

Le collecteur n'est plus nécessaire - netifyd gère tout !

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-05 18:51:42 +01:00
2b695b475e fix(luci-app-secubox-netifyd): Collector sans socket v1.0.2
Modifié le collecteur pour fonctionner sans socket Unix.
Parse netifyd -s + table ARP + stats réseau.

- Supprimé dépendance socat
- Parse netifyd -s pour metrics
- Utilise ARP pour device count
- Calcule bytes depuis /sys/class/net
- Mis à jour RPC pour device_count et total_bytes

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-05 18:38:36 +01:00
82d2e8575d feat(luci-app-secubox-netifyd): Add data collector for metrics v1.0.2
Added netifyd-collector daemon to aggregate real-time statistics from
netifyd and populate the dashboard with actual data.

New Features:
- Added /usr/sbin/netifyd-collector script
  - Queries netifyd socket for flow data
  - Aggregates devices, applications, protocols
  - Writes /var/run/netifyd/status.json
  - Runs every minute via cron

- Added /etc/cron.d/netifyd-collector cron job

- Added socat dependency for socket communication

Changes:
- Bumped version to 1.0.2
- Updated Makefile to install collector and cron job
- Fixed dashboard empty metrics issue:
  * Unique Devices will now show count
  * Applications will now show count
  * Total Traffic will now show bytes

This fixes the "0" values issue in dashboard Network Statistics.
Dashboard will now show real metrics after 1 minute of netifyd running.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-05 18:29:16 +01:00
e70f18bdf9 fix(luci-app-secubox-netifyd): Fix empty metrics in dashboard
Fixed critical bug in get_top_applications() and get_top_protocols()
RPC methods where data was extracted with jq but never added to the
JSON output. The functions were using jshn arrays but only echoing
data instead of adding it to the array.

Changes:
- Rewrote get_top_applications() to output complete JSON via jq
- Rewrote get_top_protocols() to output complete JSON via jq
- Removed broken jshn array manipulation
- Added proper fallback to empty arrays when no data available

This fixes the "metrics vides" (empty metrics) issue in LuCI dashboard.
The dashboard will now properly display:
- Top applications with traffic stats
- Top protocols with bandwidth usage
- Flow counts and bytes transferred

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-05 18:21:12 +01:00
8fcd34abd0 feat: Netifyd Integration & Build System Improvements (v0.9.1)
Major updates:
- Replace luci-app-netifyd-dashboard with enhanced luci-app-secubox-netifyd
- Add netifyd 5.2.1 package with GCC 13.3/C++17 build fixes
- Fix nd-risks.cpp compilation errors via inline static maps patch
- Enhance local-build.sh with improved package building workflow
- Update secubox-core scripts version to v0.9.1

New Features:
- Complete netifyd dashboard with flows, devices, applications, and settings
- Local data collection with netifyd-collector
- Automated cron-based data aggregation
- RPCd integration for real-time statistics

Build Fixes:
- Patch 001: Fix C++17 inline static maps in nd-risks.hpp and nd-protos.hpp
- Patch 003: Skip ndpi tests to resolve roaring_v2 dependency issues
- Add libatomic dependency
- Include libnetifyd shared libraries in package

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-05 17:35:11 +01:00