secubox-openwrt/package/secubox/secubox-app-webapp/files/usr/sbin/secubox-webapp-setup
CyberMind-FR a1d66157fc feat(secubox-app-webapp): Complete dashboard features and change URL to /secubox/
- Improve Services tab with pgrep-based status detection
- Add service enable/disable toggle buttons
- Add port forwards table to Firewall tab
- Add process list to System tab
- Add CrowdSec alerts table
- Reorganize quick actions into grouped layout
- Add Flush DNS, Sync NTP, and LuCI Admin shortcuts
- Change URL path from /secubox-dashboard/ to /secubox/
- Bump version to 1.4.1 (v2.4)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 13:59:32 +01:00

168 lines
4.6 KiB
Bash

#!/bin/sh
#
# SecuBox Dashboard - Configuration utility
# Copyright (C) 2025-2026 CyberMind.FR
#
CONFIG="secubox-webapp"
usage() {
cat <<'EOF'
Usage: secubox-webapp-setup <command>
Commands:
status Show dashboard configuration status
enable Enable CORS and ubus access
disable Disable CORS access
check Check rpcd/uhttpd configuration
info Show access URLs
Dashboard URL: http://<router-ip>/secubox/
EOF
}
log_info() { echo "[INFO] $*"; }
log_warn() { echo "[WARN] $*" >&2; }
log_error() { echo "[ERROR] $*" >&2; }
cmd_status() {
echo "=== SecuBox Dashboard Status ==="
echo ""
# Check uhttpd ubus
local ubus_prefix=$(uci -q get uhttpd.main.ubus_prefix)
local ubus_cors=$(uci -q get uhttpd.main.ubus_cors)
if [ -n "$ubus_prefix" ]; then
echo "UBUS endpoint: $ubus_prefix (enabled)"
else
echo "UBUS endpoint: not configured"
fi
if [ "$ubus_cors" = "1" ]; then
echo "CORS: enabled"
else
echo "CORS: disabled"
fi
# Check rpcd
if /etc/init.d/rpcd status >/dev/null 2>&1; then
echo "rpcd: running"
else
echo "rpcd: not running"
fi
# Check ACL
if [ -f /usr/share/rpcd/acl.d/secubox-dashboard.json ]; then
echo "ACL: installed"
else
echo "ACL: not found"
fi
# Check dashboard files
if [ -f /www/secubox/index.html ]; then
echo "Dashboard: installed"
else
echo "Dashboard: not found"
fi
echo ""
echo "=== Access URL ==="
local lan_ip=$(uci -q get network.lan.ipaddr || echo "192.168.1.1")
echo "http://$lan_ip/secubox/"
}
cmd_enable() {
log_info "Enabling SecuBox Dashboard access..."
# Configure uhttpd
uci set uhttpd.main.ubus_prefix='/ubus'
uci set uhttpd.main.ubus_cors='1'
uci commit uhttpd
# Restart services
/etc/init.d/rpcd restart
/etc/init.d/uhttpd restart
log_info "Dashboard access enabled"
}
cmd_disable() {
log_info "Disabling CORS access..."
uci set uhttpd.main.ubus_cors='0'
uci commit uhttpd
/etc/init.d/uhttpd restart
log_info "CORS disabled (local access still works)"
}
cmd_check() {
echo "=== Configuration Check ==="
echo ""
# Check packages
echo "Packages:"
for pkg in uhttpd uhttpd-mod-ubus rpcd rpcd-mod-file; do
if opkg list-installed | grep -q "^$pkg "; then
echo "$pkg"
else
echo "$pkg (missing)"
fi
done
echo ""
echo "Services:"
if /etc/init.d/uhttpd status >/dev/null 2>&1; then
echo " ✓ uhttpd running"
else
echo " ✗ uhttpd not running"
fi
if /etc/init.d/rpcd status >/dev/null 2>&1; then
echo " ✓ rpcd running"
else
echo " ✗ rpcd not running"
fi
echo ""
echo "UBUS test:"
if command -v curl >/dev/null 2>&1; then
local result=$(curl -s -X POST http://127.0.0.1/ubus -d '{"jsonrpc":"2.0","id":1,"method":"list"}' 2>/dev/null)
if echo "$result" | grep -q "jsonrpc"; then
echo " ✓ UBUS responding"
else
echo " ✗ UBUS not responding"
fi
else
echo " ? curl not available for test"
fi
}
cmd_info() {
local lan_ip=$(uci -q get network.lan.ipaddr || echo "192.168.1.1")
echo "╔════════════════════════════════════════════════════════════╗"
echo "║ SecuBox Dashboard - Access Information ║"
echo "╠════════════════════════════════════════════════════════════╣"
echo "║ ║"
printf "║ Dashboard: %-46s ║\n" "http://$lan_ip/secubox/"
printf "║ UBUS API: %-46s ║\n" "http://$lan_ip/ubus"
echo "║ ║"
echo "║ Login: Use OpenWrt root credentials ║"
echo "║ ║"
echo "╚════════════════════════════════════════════════════════════╝"
}
# Main
case "${1:-}" in
status) cmd_status ;;
enable) cmd_enable ;;
disable) cmd_disable ;;
check) cmd_check ;;
info) cmd_info ;;
help|--help|-h|'') usage ;;
*) echo "Unknown command: $1" >&2; usage >&2; exit 1 ;;
esac