secubox-openwrt/luci-app-system-hub/README.md
CyberMind-FR 34fe2dc26a feat: complete System Hub implementation - central control dashboard
Implements comprehensive system control and monitoring dashboard with health
metrics, service management, system logs, and backup/restore functionality.

Features:
- Real-time system monitoring with visual gauges (CPU, RAM, Disk)
- Comprehensive system information (hostname, model, uptime, kernel)
- Health metrics with temperature monitoring and storage breakdown
- Service management with start/stop/restart/enable/disable actions
- System log viewer with filtering and configurable line count
- Configuration backup creation and download (base64 encoded)
- Configuration restore from backup file
- System reboot functionality with confirmation

Components:
- RPCD backend (luci.system-hub): 10 ubus methods
  * status, get_system_info, get_health
  * list_services, service_action
  * get_logs, backup_config, restore_config
  * reboot, get_storage
- 4 JavaScript views: overview, services, logs, backup
- ACL with read/write permissions segregation
- Comprehensive README with API documentation

Technical implementation:
- System info from /proc filesystem and sysinfo
- Health metrics: CPU load, memory breakdown, disk usage, temperature
- Service control via /etc/init.d scripts
- Log retrieval via logread with filtering
- Backup/restore using sysupgrade with base64 encoding
- Visual gauges with SVG circular progress indicators
- Color-coded health status (green/orange/red)

Dashboard Features:
- Circular gauges for CPU, Memory, Disk (120px with 10px stroke)
- System information cards with detailed metrics
- Temperature monitoring with thermal zone detection
- Storage table for all mount points with progress bars
- Service table with inline action buttons
- Terminal-style log display (black bg, green text)
- File upload for backup restore
- Modal confirmations for destructive actions

Architecture follows SecuBox standards:
- RPCD naming convention (luci. prefix)
- Menu paths match view file structure
- All JavaScript in strict mode
- Form-based configuration management
- Comprehensive error handling

Dependencies: coreutils, coreutils-base64

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-24 11:02:07 +01:00

446 lines
8.2 KiB
Markdown

# System Hub - Central Control Dashboard
Central system control and monitoring dashboard for OpenWrt with comprehensive system management capabilities.
## Features
### System Monitoring
- Real-time system information (hostname, model, uptime, kernel version)
- System health metrics with visual gauges (CPU, RAM, Disk)
- CPU load average (1min, 5min, 15min)
- Memory usage detailed breakdown
- Storage monitoring for all mount points
- Temperature monitoring (thermal zones)
### Service Management
- List all system services with status
- Start/Stop/Restart services
- Enable/Disable service autostart
- Real-time service status (running/stopped)
- Batch service management
### System Logs
- View system logs with configurable line count (50-1000 lines)
- Real-time log filtering
- Search logs by keyword
- Terminal-style log display
### Backup & Restore
- Create system configuration backup (tar.gz)
- Download backup archive
- Restore configuration from backup
- System reboot functionality
## Installation
```bash
opkg update
opkg install luci-app-system-hub
/etc/init.d/rpcd restart
/etc/init.d/uhttpd restart
```
## Dependencies
- **luci-base**: LuCI framework
- **rpcd**: RPC daemon
- **coreutils**: Core utilities
- **coreutils-base64**: Base64 encoding/decoding
## Usage
### Web Interface
Navigate to **System → System Hub** in LuCI.
#### Overview Tab
- System information cards
- Health metrics with visual gauges:
- CPU Load (percentage based on cores)
- Memory Usage (percentage with MB breakdown)
- Disk Usage (percentage with size info)
- CPU details (model, cores, load average)
- Temperature monitoring (color-coded: green < 60°C, orange < 80°C, red 80°C)
- Storage details for all mount points
#### Services Tab
- List of all system services
- Status indicators (running/stopped)
- Autostart status (enabled/disabled)
- Action buttons:
- Start (for stopped services)
- Stop (for running services)
- Restart (for all services)
- Enable/Disable autostart
#### System Logs Tab
- Log viewer with filter controls
- Configurable line count (50, 100, 200, 500, 1000)
- Keyword filtering
- Refresh logs on demand
- Terminal-style display (black background, green text)
#### Backup & Restore Tab
- Create and download configuration backup
- Upload and restore backup file
- System reboot with confirmation
### Command Line
#### Get System Status
```bash
ubus call luci.system-hub status
```
#### Get System Information
```bash
ubus call luci.system-hub get_system_info
```
Output:
```json
{
"hostname": "openwrt",
"model": "Raspberry Pi 4 Model B",
"board": "rpi-4",
"openwrt_version": "OpenWrt 23.05.0",
"kernel": "5.15.134",
"architecture": "aarch64",
"uptime_seconds": 86400,
"uptime_formatted": "1d 0h 0m",
"local_time": "2025-12-24 10:30:00"
}
```
#### Get System Health
```bash
ubus call luci.system-hub get_health
```
Output:
```json
{
"cpu": {
"model": "ARM Cortex-A72",
"cores": 4
},
"load": {
"1min": "0.25",
"5min": "0.30",
"15min": "0.28"
},
"memory": {
"total_kb": 4096000,
"free_kb": 2048000,
"available_kb": 3072000,
"used_kb": 1024000,
"buffers_kb": 512000,
"cached_kb": 1536000,
"percent": 25
},
"storage": [
{
"filesystem": "/dev/mmcblk0p2",
"size": "29G",
"used": "5.2G",
"available": "22G",
"percent": 19,
"mountpoint": "/"
}
],
"temperatures": [
{
"zone": "thermal_zone0",
"celsius": 45
}
]
}
```
#### List Services
```bash
ubus call luci.system-hub list_services
```
#### Manage Service
```bash
# Start a service
ubus call luci.system-hub service_action '{"service":"network","action":"start"}'
# Stop a service
ubus call luci.system-hub service_action '{"service":"network","action":"stop"}'
# Restart a service
ubus call luci.system-hub service_action '{"service":"network","action":"restart"}'
# Enable autostart
ubus call luci.system-hub service_action '{"service":"network","action":"enable"}'
# Disable autostart
ubus call luci.system-hub service_action '{"service":"network","action":"disable"}'
```
#### Get Logs
```bash
# Get last 100 lines
ubus call luci.system-hub get_logs '{"lines":100,"filter":""}'
# Get last 500 lines with filter
ubus call luci.system-hub get_logs '{"lines":500,"filter":"error"}'
```
#### Create Backup
```bash
ubus call luci.system-hub backup_config
```
Returns backup data in base64 format with size and filename.
#### Restore Configuration
```bash
# Encode backup file to base64
DATA=$(base64 < backup.tar.gz | tr -d '\n')
# Restore
ubus call luci.system-hub restore_config "{\"data\":\"$DATA\"}"
```
#### Reboot System
```bash
ubus call luci.system-hub reboot
```
System will reboot after 3 seconds.
#### Get Storage Details
```bash
ubus call luci.system-hub get_storage
```
## ubus API Reference
### status()
Get comprehensive system status overview.
**Returns:**
```json
{
"hostname": "openwrt",
"model": "Device Model",
"uptime": 86400,
"health": {
"cpu_load": "0.25",
"mem_total_kb": 4096000,
"mem_used_kb": 1024000,
"mem_percent": 25
},
"disk_percent": 19,
"service_count": 42
}
```
### get_system_info()
Get detailed system information.
### get_health()
Get comprehensive health metrics including CPU, memory, storage, and temperature.
### list_services()
List all system services with status.
**Returns:**
```json
{
"services": [
{
"name": "network",
"enabled": true,
"running": true
},
{
"name": "firewall",
"enabled": true,
"running": true
}
]
}
```
### service_action(service, action)
Perform action on a service.
**Parameters:**
- `service`: Service name (required)
- `action`: Action to perform (start|stop|restart|enable|disable)
**Returns:**
```json
{
"success": true,
"message": "Service network start successful"
}
```
### get_logs(lines, filter)
Get system logs.
**Parameters:**
- `lines`: Number of lines to retrieve (default: 100)
- `filter`: Filter logs by keyword (optional)
**Returns:**
```json
{
"logs": [
"Dec 24 10:30:00 kernel: ...",
"Dec 24 10:30:01 daemon.info dnsmasq[123]: ..."
]
}
```
### backup_config()
Create system configuration backup.
**Returns:**
```json
{
"success": true,
"data": "H4sIAAAAAAAAA...",
"size": 12345,
"filename": "backup-20251224-103000.tar.gz"
}
```
### restore_config(data)
Restore system configuration from backup.
**Parameters:**
- `data`: Base64-encoded backup data
**Returns:**
```json
{
"success": true,
"message": "Configuration restored successfully. Reboot required."
}
```
### reboot()
Reboot the system (3-second delay).
**Returns:**
```json
{
"success": true,
"message": "System reboot initiated"
}
```
### get_storage()
Get detailed storage information for all mount points.
## System Information Sources
- Hostname: `/proc/sys/kernel/hostname`
- Model: `/tmp/sysinfo/model`, `/proc/device-tree/model`
- Uptime: `/proc/uptime`
- OpenWrt version: `/etc/openwrt_release`
- Kernel: `uname -r`
- CPU info: `/proc/cpuinfo`
- Load average: `/proc/loadavg`
- Memory: `/proc/meminfo`
- Storage: `df -h`
- Temperature: `/sys/class/thermal/thermal_zone*/temp`
- Services: `/etc/init.d/*`
## Gauge Visualization
The overview page displays three circular gauges:
### CPU Load Gauge
- Percentage calculated from 1-minute load average divided by core count
- Green: < 75%
- Orange: 75-90%
- Red: > 90%
### Memory Gauge
- Percentage of memory used
- Shows "Used MB / Total MB"
- Color-coded like CPU
### Disk Gauge
- Percentage of root filesystem used
- Shows "Used / Total Size"
- Color-coded like CPU
## Security Considerations
- Service actions require write permissions in ACL
- Backup data contains sensitive configuration
- Reboot action is irreversible
- Log filtering does not sanitize sensitive data in logs
## Troubleshooting
### Services Not Showing
Check if services exist:
```bash
ls /etc/init.d/
```
### Health Metrics Not Accurate
Verify system files are accessible:
```bash
cat /proc/meminfo
cat /proc/loadavg
df -h
```
### Backup Creation Fails
Ensure sysupgrade is available:
```bash
which sysupgrade
```
### Temperature Not Displayed
Check thermal zones:
```bash
ls /sys/class/thermal/thermal_zone*/temp
```
## License
Apache-2.0
## Maintainer
SecuBox Project <support@secubox.com>
## Version
1.0.0