Commit Graph

3 Commits

Author SHA1 Message Date
e67df835e2 fix: remove UCI dependencies from menu definitions
Removes mandatory UCI config dependencies from dashboard modules to allow
LuCI menus to display even when backend services are not installed.

This fixes 'Permission denied' errors when accessing dashboards for services
that haven't been installed yet (crowdsec, netdata, netifyd, etc.).

Changes:
- Remove uci dependency: crowdsec-dashboard, netdata-dashboard
- Remove uci dependency: netifyd-dashboard, wireguard-dashboard
- Remove uci dependency: client-guardian, media-flow
- Remove uci dependency: network-modes, traffic-shaper

Dashboards will now gracefully handle missing backend services and can
guide users to install required packages.

Related: SecuBox menu organization (v0.1.2-alpha)
2025-12-25 16:23:30 +01:00
6200167434 feat: implement Media Flow streaming detection and monitoring module
Complete implementation of Media Flow module for real-time detection and
monitoring of streaming services with quality estimation and alerts.

Features:
---------

1. Streaming Service Detection
   - Video: Netflix, YouTube, Disney+, Prime Video, Twitch, HBO, Hulu, Vimeo
   - Audio: Spotify, Apple Music, Deezer, SoundCloud, Tidal, Pandora
   - Visio: Zoom, Teams, Google Meet, Discord, Skype, WebEx

2. Quality Estimation
   - SD (< 1 Mbps), HD (1-3 Mbps), FHD (3-8 Mbps), 4K (> 8 Mbps)
   - Based on real-time bandwidth analysis

3. Real-time Monitoring
   - Active streams dashboard with 5-second auto-refresh
   - Bandwidth consumption per stream
   - Client IP tracking
   - Service categorization (video/audio/visio)

4. Historical Data
   - Session history with timestamps
   - Usage statistics per service
   - Usage statistics per client
   - Configurable retention (last 1000 entries)

5. Configurable Alerts
   - Service-specific usage thresholds
   - Actions: notify, limit, block
   - UCI-based alert configuration

RPCD Backend:
-------------

Script: root/usr/libexec/rpcd/luci.media-flow

Methods implemented:
- status: Module status and netifyd integration check
- get_active_streams: Currently active streaming sessions
- get_stream_history: Historical sessions (configurable timeframe)
- get_stats_by_service: Aggregated stats per service
- get_stats_by_client: Aggregated stats per client IP
- get_service_details: Detailed info for specific service
- set_alert: Configure usage alerts
- list_alerts: List all configured alerts

Integration with netifyd DPI for application detection.

Views:
------

1. dashboard.js - Main overview with active streams and service stats
2. services.js - Detailed per-service statistics and details modal
3. clients.js - Per-client streaming activity
4. history.js - Chronological session list with filters
5. alerts.js - Alert configuration interface

All views follow naming conventions:
- Menu paths match view file locations (media-flow/*)
- RPC object: 'luci.media-flow' matches RPCD script name
- All views use 'use strict'
- All RPC methods exist in RPCD implementation

Files Structure:
----------------

✓ Makefile: Complete with all required fields
✓ RPCD: luci.media-flow (matches ubus object)
✓ ACL: All 8 RPCD methods covered (read/write separated)
✓ Menu: 5 views with correct paths
✓ Views: All menu paths have corresponding .js files
✓ UCI Config: media_flow with global settings and alerts
✓ README: Complete documentation with API reference

Validation:
-----------

✓ RPCD script name matches ubus object (luci.media-flow)
✓ Menu paths match view file locations
✓ ACL permissions cover all RPCD methods
✓ RPCD script is executable
✓ JSON files have valid syntax
✓ All views use strict mode
✓ RPC method calls match RPCD implementations

Dependencies:
-------------

- netifyd: Deep Packet Inspection for application detection
- luci-app-netifyd-dashboard: Integration with Netifyd dashboard
- jq: JSON processing for historical data aggregation

Usage:
------

# View status
ubus call luci.media-flow status

# Get active streaming sessions
ubus call luci.media-flow get_active_streams

# Get 24h history
ubus call luci.media-flow get_stream_history '{"hours": 24}'

# Set alert for Netflix
ubus call luci.media-flow set_alert '{"service": "Netflix", "threshold_hours": 4, "action": "notify"}'

Data Storage:
-------------

- History: /tmp/media-flow-history.json (last 1000 entries)
- Stats: /tmp/media-flow-stats/ (aggregated data)
- Alerts: /etc/config/media_flow (UCI persistence)

All data stored locally, no external telemetry.

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-24 10:20:28 +01:00
ef240b650b Initial commit: SecuBox v1.0.0-try2 2025-12-22 10:43:52 +01:00