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

8.2 KiB

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

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

ubus call luci.system-hub status

Get System Information

ubus call luci.system-hub get_system_info

Output:

{
  "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

ubus call luci.system-hub get_health

Output:

{
  "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

ubus call luci.system-hub list_services

Manage Service

# 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

# 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

ubus call luci.system-hub backup_config

Returns backup data in base64 format with size and filename.

Restore Configuration

# 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

ubus call luci.system-hub reboot

System will reboot after 3 seconds.

Get Storage Details

ubus call luci.system-hub get_storage

ubus API Reference

status()

Get comprehensive system status overview.

Returns:

{
  "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:

{
  "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:

{
  "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:

{
  "logs": [
    "Dec 24 10:30:00 kernel: ...",
    "Dec 24 10:30:01 daemon.info dnsmasq[123]: ..."
  ]
}

backup_config()

Create system configuration backup.

Returns:

{
  "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:

{
  "success": true,
  "message": "Configuration restored successfully. Reboot required."
}

reboot()

Reboot the system (3-second delay).

Returns:

{
  "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:

ls /etc/init.d/

Health Metrics Not Accurate

Verify system files are accessible:

cat /proc/meminfo
cat /proc/loadavg
df -h

Backup Creation Fails

Ensure sysupgrade is available:

which sysupgrade

Temperature Not Displayed

Check thermal zones:

ls /sys/class/thermal/thermal_zone*/temp

License

Apache-2.0

Maintainer

SecuBox Project support@secubox.com

Version

1.0.0