Commit Graph

602 Commits

Author SHA1 Message Date
f3fd676ad1 feat(haproxy): Add HAProxy load balancer packages for OpenWrt
- Add secubox-app-haproxy: LXC-containerized HAProxy service
  - Alpine Linux container with HAProxy
  - Multi-certificate SSL/TLS termination with SNI routing
  - ACME/Let's Encrypt auto-renewal
  - Virtual hosts management
  - Backend health checks and load balancing

- Add luci-app-haproxy: Full LuCI web interface
  - Overview dashboard with service status
  - Virtual hosts management with SSL options
  - Backends and servers configuration
  - SSL certificate management (ACME + import)
  - ACLs and URL-based routing rules
  - Statistics dashboard and logs
  - Settings for ports, timeouts, ACME

- Update luci-app-secubox-portal:
  - Add Services category with HAProxy, HexoJS, PicoBrew,
    Tor Shield, Jellyfin, Home Assistant, AdGuard Home, Nextcloud
  - Make portal dynamic - only shows installed apps
  - Add empty state UI for sections with no apps
  - Remove 404 errors for uninstalled apps

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 20:09:32 +01:00
c86feaa6b0 fix(hexojs): Fix container startup and Hexo server execution
- Add start-hexo.sh script as container init command
- Set PATH properly for hexo CLI in lxc_exec()
- Container now starts Hexo server automatically on boot
- Falls back to tail -f /dev/null if no site exists

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 19:08:36 +01:00
a4970edc6f feat(hexojs): Add Hexo CMS packages for OpenWrt
- secubox-app-hexojs: LXC-containerized Hexo service with Node.js
  - hexoctl control script for container/site management
  - Bundled CyberMind theme with dark/light mode
  - Theme presets (minimal, tech, portfolio)
  - Post/page scaffolds

- luci-app-hexojs: Full CMS dashboard
  - Overview with stats and quick actions
  - Post editor with Markdown toolbar and preview
  - Media library browser
  - Categories and tags management
  - Apps portfolio for CyberMind theme
  - Build and deploy to GitHub Pages
  - GitHub Sync wizard (clone, pull, push)
  - Theme configuration and presets
  - Site settings

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 18:58:57 +01:00
23dac58741 feat(tor): Add Tor Shield packages for OpenWrt
Add secubox-app-tor (backend) and luci-app-tor-shield (frontend) packages
for Tor anonymization on OpenWrt.

Backend features:
- UCI configuration with presets (anonymous, selective, censored)
- procd init script with iptables transparent proxy
- torctl CLI tool for status, enable/disable, circuits, leak-test
- DNS over Tor and kill switch support
- Hidden services and bridge management

Frontend features:
- Modern purple/onion themed dashboard
- One-click master toggle with visual status
- Real-time circuit visualization (Guard -> Middle -> Exit)
- Hidden services (.onion) management with copy/QR
- Bridge configuration (obfs4, snowflake, meek-azure)
- Leak detection tests
- Advanced settings for ports and exit node restrictions

Note: LuCI package renamed to luci-app-tor-shield to avoid conflict
with existing luci-app-tor package in OpenWrt LuCI feeds.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 17:20:13 +01:00
4d08f99222 fix(picobrew): Pin Flask 1.1.2 compatible dependencies
Flask 1.1.2 requires specific old versions of dependencies:
- Jinja2==2.11.3 (escape moved in 3.1)
- markupsafe==1.1.1
- itsdangerous==1.1.0 (json removed in 2.x)
- Werkzeug==1.0.1
- click==7.1.2
- pybeerxml<2.0.0 (Parser import changed in 2.x)
- marshmallow<4.0.0

Also:
- Use pip-installed package instead of git repo mount
- Simplify LXC mounts to just data directories

Tested and working on OpenWrt 24.10.5.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 16:48:56 +01:00
b69a84394b feat(picobrew): Add PicoBrew Server packages for OpenWrt
Add two new packages for self-hosted brewing controller support:

secubox-app-picobrew:
- LXC container-based PicoBrew Server installation
- Alpine Linux rootfs with Python/Flask environment
- UCI configuration for port, memory, brewing defaults
- procd service management with respawn
- Commands: install, uninstall, update, status, logs, shell

luci-app-picobrew:
- Modern dashboard UI with SecuBox styling
- Service controls (start/stop/restart/install/update)
- Real-time status monitoring and logs
- Settings page for server and brewing configuration
- RPCD backend with full API coverage

Supports PicoBrew Zymatic, Z, Pico C, and Pico Pro devices.
Repository: https://github.com/CyberMind-FR/picobrew-server

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 12:53:31 +01:00
14690ebe9e fix(wireguard-dashboard): Use qrcode module in wizard.js
The wizard.js was looking for a global QRCode object that doesn't exist.
Updated to import and use our qrcode module like other views do.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 12:42:16 +01:00
2a4423d036 fix(wireguard-dashboard): Fix QR library module export pattern
Changed from baseclass.extend() to simple object return pattern
to match other libraries (chart.js). The baseclass dependency
was causing the module to fail loading.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 12:39:20 +01:00
2f16875c4b fix(wireguard-dashboard): Upgrade QR code generator to support larger configs
The JavaScript QR code fallback was limited to Version 5 (106 bytes max),
but WireGuard configs are typically 200-250 bytes. This caused QR code
generation to fail when the backend qrencode binary is not installed.

Changes:
- Auto-select optimal QR version (1-20) based on data length
- Support up to 858 bytes (Version 20)
- Proper Reed-Solomon error correction with dynamic generator polynomials
- Data interleaving for multiple EC blocks
- Alignment patterns for all versions
- Version info encoding for version 7+
- Quiet zone in SVG output

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 12:35:34 +01:00
ee0a7a0864 feat(bandwidth-manager): Add profiles, parental controls, alerts, traffic graphs
Major feature expansion for luci-app-bandwidth-manager:

- Device Profiles: Gaming, Streaming, IoT, Work, Kids presets with
  custom QoS settings, bandwidth limits, and latency modes
- Parental Controls: Quick preset modes (Bedtime, Homework, Family Time),
  access schedules, content filtering categories
- Bandwidth Alerts: Threshold monitoring (80/90/100%), new device alerts,
  email/SMS notifications with configurable settings
- Traffic Graphs: Real-time bandwidth charts, historical data visualization,
  top talkers list, protocol breakdown pie charts
- Time Schedules: Full CRUD with day selection, limits, priority settings

Backend additions:
- ~30 new RPCD methods for all features
- Alert monitoring cron job (every 5 minutes)
- Shared alerts.sh library for email/SMS

Frontend views:
- profiles.js, parental-controls.js, alerts.js, traffic-graphs.js
- Shared graphs.js utility for canvas drawing
- parental.css for parental controls styling

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 12:25:35 +01:00
618d303662 fix(webapp): Add robust fallback methods for disk usage display
- Add 4 fallback methods for disk stats when primary RPC fails
- Method 1: luci.system-hub RPC (primary)
- Method 2: file.exec with df command
- Method 3: LuCI CGI realtime disk endpoint
- Method 4: luci-rpc getSystemInfo

Bump to v1.5.0-7

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 07:02:39 +01:00
35eb1f79b2 feat(webapp): Dashboard improvements
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 06:56:49 +01:00
3132ef9c14 go 2026-01-23 05:44:38 +01:00
d80501b33a fix(webapp): Use RPC backends for CrowdSec stats, disk and logs
- Refactor CROWDSEC object to use luci.crowdsec-dashboard RPC instead of file.exec
- Add getNftablesStats() for accurate blocked IPs count from firewall bouncer
- Update updateDiskUsage() to use luci.system-hub.get_system_status RPC
- Update loadSystemLogs() to use luci.system-hub.get_logs RPC
- Add proper ACL permissions for luci.crowdsec-dashboard and luci.system-hub
- Bump version to 1.5.0-r3

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 05:43:13 +01:00
3e52444a73 feat(crowdsec): Add custom CrowdSec scenarios package for SecuBox
- Add secubox-app-crowdsec-custom package with:
  - HTTP auth bruteforce detection
  - Path scanning detection
  - LuCI/uhttpd auth monitoring
  - Trusted IP whitelist for private networks
- Fix Lyrion Docker image path to ghcr.io/lms-community/lyrionmusicserver:stable

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 14:50:36 +01:00
a23038f779 fix(crowdsec): Patch Go 1.24+ features for OpenWrt Go 1.23 compatibility
- Downgrade golang.org/x/net from v0.44.0 to v0.33.0 (Go 1.23 compatible)
- Patch out http.Protocols usage (Go 1.24+ feature) from:
  - pkg/acquisition/modules/http/run.go
  - pkg/acquisition/modules/appsec/config.go
  - pkg/acquisition/modules/kubernetesaudit/config.go
  - pkg/apiserver/apiserver.go
- Patch strings.SplitSeq to strings.Split (Go 1.24+ iterator feature) in:
  - cmd/crowdsec-cli/clisetup/acquisition.go
  - cmd/crowdsec/flags.go

This fixes the build failure caused by CrowdSec 1.7.4 using Go 1.24+
features while OpenWrt SDK ships Go 1.23.x.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 14:02:00 +01:00
b671843132 feat(mailinabox): Major enhancement to mail server package v2.0.0
Complete rewrite of mailinaboxctl with comprehensive features:

Container Management:
- install, check, update, status, logs, shell commands
- Better prerequisite checking and Docker integration

Email Account Management:
- user-add/del/list/passwd for email accounts
- alias-add/del/list for email aliases
- Uses docker-mailserver setup command

Domain & SSL:
- domain-add/list for virtual domains
- ssl-status/renew for certificate management
- Let's Encrypt integration

Backup & Restore:
- Full backup with automatic container stop
- Restore with confirmation prompt

Diagnostics:
- health: comprehensive health check
- dns-check: verify MX, SPF, DMARC records
- ports: check listening ports
- config: show current configuration
- test-email: send test message

Updated configuration with:
- Separate hostname and domain options
- Feature flags for ClamAV, SpamAssassin, Fail2ban, POP3
- SSL type selection (letsencrypt, manual, self-signed)
- Complete port mapping options

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 06:12:23 +01:00
13d7e8641f fix(openwrt): Replace pgrep -x with pgrep for BusyBox compatibility
The -x flag requires exact process name match which doesn't work
reliably on OpenWrt/BusyBox. Removed -x from all pgrep calls in:

- luci-app-bandwidth-manager
- luci-app-secubox-security-threats
- luci-app-auth-guardian
- luci-app-media-flow
- luci-app-vhost-manager
- luci-app-network-modes

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 06:09:07 +01:00
a602462915 feat(portal): Add CrowdSec blocked IPs statistics to dashboard
- Add RPC call to fetch CrowdSec nftables statistics
- Replace Security Modules widget with IPs Blocked widget
- Show active/inactive status based on firewall bouncer health
- Add detailed breakdown in System Overview (IPv4/IPv6, CAPI/local)
- Gracefully handle missing CrowdSec dashboard package

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 06:00:40 +01:00
7bb437b29f fix(lyrion): Fix Lyrion download in chroot with better error handling
- Remove -q (quiet) flag from wget to show download errors
- Use architecture-specific tarball (60MB) instead of multi-arch (126MB)
- Add fallback to multi-arch tarball if ARM download fails
- Add explicit error messages for download and extraction failures
- Verify download file exists and is non-empty before extraction

The previous -q flag was hiding the actual wget error, making it
difficult to diagnose download failures in the chroot environment.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 05:32:05 +01:00
7a6d7bc71a fix(lyrion): Fix incomplete installation detection and add destroy command
- lxc_create_rootfs now checks for Lyrion installation (slimserver.pl)
  instead of just Alpine (alpine-release) to detect complete installs
- Auto-cleanup incomplete installations where Alpine downloaded but
  Lyrion failed to install (e.g., network issues during chroot)
- Add verification after installation to confirm Lyrion was installed
- Add 'destroy' command to manually clean up failed installations
- Bump version to 2.0.1

This fixes the issue where 'lyrionctl install' would report success
when Alpine was downloaded but the chroot setup script failed silently.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 05:29:20 +01:00
2dc9f6831b fix(luci-app-localai): Fix JSON parse error in chat
- Use L.url() for proper ubus endpoint URL
- Pass messages as array instead of JSON string
- Add credentials and better error handling
- Fix AbortController error handling

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 05:14:15 +01:00
6b07a613f1 fix(luci-app-localai): Fix chat timeout and port issues
- Change default API port from 8080 to 8081
- Increase chat API timeout to 120 seconds (LLMs can be slow on ARM)
- Use custom fetch-based chat call with AbortController for timeout control
- Fix wget/curl timeout for RPCD backend

Resolves "XHR request timed out" errors when using chat with TinyLlama.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 05:09:14 +01:00
612a1be6ea feat(localai): Rewrite secubox-app-localai with native binary download
- Replace Docker/LXC-based approach with direct binary download
- Download LocalAI v2.25.0 binary from GitHub releases
- Add localaictl CLI for install, model management, and service control
- Change default port to 8081 (avoid CrowdSec conflict on 8080)
- Remove secubox-app-localai-wb (merged into secubox-app-localai)
- Add model presets: tinyllama, phi2, mistral

Usage:
  localaictl install
  localaictl model-install tinyllama
  /etc/init.d/localai enable && /etc/init.d/localai start

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 04:55:17 +01:00
e50dcf6aee feat(secubox-app-localai-wb): Add LocalAI with native build support
New package for building LocalAI from source with llama-cpp backend:

- localai-wb-ctl: On-device build management
  - check: Verify build prerequisites
  - install-deps: Install build dependencies
  - build: Compile LocalAI with llama-cpp
  - Model management, service control

- build-sdk.sh: Cross-compile script for SDK
  - Uses OpenWrt toolchain for ARM64
  - Produces optimized binary with llama-cpp

Alternative to Docker-based secubox-app-localai for native builds.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 19:09:39 +01:00
48deeccb99 feat(luci-app-ollama): Add LuCI dashboard for Ollama LLM
New LuCI application for Ollama management:
- Dashboard with service status and controls
- Model management (pull, remove, list)
- Chat interface with model selection
- Settings page for configuration

Files:
- RPCD backend (luci.ollama)
- Dashboard, Models, Chat, Settings views
- ACL and menu definitions

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 19:02:12 +01:00
1cce649751 feat(localai): Use Docker Registry API for LXC install (no daemon needed)
- Download Docker image layers directly via Registry API
- No dockerd or podman daemon required anymore
- Same approach as mitmproxy and magicmirror2 packages
- All backends included (llama-cpp, whisper, etc.)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 18:51:34 +01:00
55914b8b3c feat(localai): Update to LocalAI v3.10.0
- Updated default version from v2.25.0 to v3.10.0
- Fixed binary URL format: local-ai-v3.10.0-linux-arm64
- Updated Docker image tag to v3.10.0-ffmpeg

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 18:34:05 +01:00
32aa17ab8b fix(localai): Fix standalone binary download URL
GitHub releases use: local-ai-Linux-arm64 (not local-ai-v2.25.0-linux-arm64)
- Fixed architecture naming (Linux-arm64, Linux-x86_64)
- Removed version from filename
- Added URL logging for debugging

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 18:32:37 +01:00
ec1f722687 fix(localai): Check Docker daemon is running before extracting rootfs
- Add runtime_is_working() to verify daemon connectivity
- Falls back to standalone binary with helpful message if daemon not running
- Provides hint: /etc/init.d/dockerd start

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 18:29:53 +01:00
23d511fcae feat(localai): LXC install extracts rootfs from Docker image
When using `localaictl install --lxc`:
1. If podman/docker available: extracts rootfs from Docker image
   - Includes ALL backends (llama-cpp, whisper, etc.)
   - Creates LXC container with full LocalAI capabilities
2. If no docker/podman: falls back to standalone binary
   - Limited backend support

This gives the best of both worlds:
- LXC lightweight container management
- Full Docker image backends

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 18:21:05 +01:00
6ca5b20b2c feat(localai): Add multi-runtime support (LXC, Docker, Podman)
localaictl now supports all three container runtimes:
- localaictl install --lxc     (standalone binary, limited backends)
- localaictl install --docker  (full image with all backends)
- localaictl install --podman  (same as docker, rootless)

Auto-detection order: running container > podman > docker > lxc

New UCI options:
- localai.main.runtime = auto|lxc|docker|podman
- localai.lxc.path = /srv/lxc
- localai.lxc.version = v2.25.0

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 18:18:12 +01:00
4ac45bdb38 fix(localai): Add LXC container support to RPCD backend
- is_running() now checks LXC with lxc-info before Docker/Podman
- get_status() calculates uptime from LXC container PID
- Order: LXC -> Podman -> Docker -> native process

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 18:05:35 +01:00
e2b752984f fix(localai): Fix RPCD backend for Docker containers and improve chat error handling
- Update is_running() to detect Docker/Podman containers
- Fix get_status() uptime calculation for containers
- Improve do_chat() with better error messages and logging
- Use curl if available for API calls (more reliable than wget POST)
- Add debug logging to syslog (logger -t localai-chat)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 18:00:26 +01:00
b245fdb3e7 feat(localai,ollama): Switch LocalAI to Docker and add Ollama package
LocalAI changes:
- Rewrite localaictl to use Docker/Podman instead of standalone binary
- Use localai/localai:v2.25.0-ffmpeg image with all backends included
- Fix llama-cpp backend not found issue
- Auto-detect podman or docker runtime
- Update UCI config with Docker settings

New Ollama package:
- Add secubox-app-ollama as lighter alternative to LocalAI
- Native ARM64 support with backends included
- Simple CLI: ollamactl pull/run/list
- Docker image ~1GB vs 2-4GB for LocalAI

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 17:56:40 +01:00
63c0bb3e5a fix(localai): Fix RPC data handling - expect returns array directly
The LuCI rpc.declare with expect: { models: [] } returns the array
directly, not wrapped in {models: [...]}. Fixed all views to handle
this correctly.

- models.js: Check Array.isArray(data) first
- dashboard.js: Extract array from results[1] directly
- chat.js: Same array handling fix

Version: 0.1.0-r12

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 17:29:50 +01:00
6f713b1041 chore: Bump release versions for require syntax fix
- luci-app-auth-guardian: r3
- luci-app-glances: r2
- luci-app-localai: r10
- luci-app-magicmirror2: r6
- luci-app-mitmproxy: r6
- luci-app-mmpm: r3
- luci-app-mqtt-bridge: r4
- luci-app-ndpid: r2
- luci-app-network-modes: r3
- luci-app-secubox-admin: r17
- luci-app-secubox-portal: r7
- luci-app-wireguard-dashboard: r2

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 17:18:06 +01:00
db3a41928e fix(luci): Fix require syntax in all LuCI views - use slashes instead of dots
All 'require module.submodule' directives changed to 'require module/submodule'
to match LuCI's module loading convention.

Affected packages:
- luci-app-auth-guardian
- luci-app-glances
- luci-app-localai
- luci-app-magicmirror2
- luci-app-mitmproxy
- luci-app-mmpm
- luci-app-mqtt-bridge
- luci-app-ndpid
- luci-app-network-modes
- luci-app-secubox-admin
- luci-app-secubox-portal
- luci-app-wireguard-dashboard

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 17:15:21 +01:00
6b28c4260b feat(localai): Add LocalAI LuCI app with chat, models management and portal integration
- Add secubox-app-localai package with LXC container support for LocalAI service
- Add luci-app-localai with dashboard, chat, models and settings views
- Implement RPCD backend for LocalAI API integration via /v1/models and /v1/chat/completions
- Use direct RPC declarations in LuCI views for reliable frontend communication
- Add LocalAI and Glances to secubox-portal services page
- Move Glances from services to monitoring section

Packages:
- secubox-app-localai: 0.1.0-r1
- luci-app-localai: 0.1.0-r8
- luci-app-secubox-portal: 0.6.0-r5

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 16:54:13 +01:00
5e29599682 feat(wireguard-dashboard,webapp): Add setup wizard, admin sessions, and blocking stats
WireGuard Dashboard v0.7.0:
- Add zone-based setup wizard with 4-step flow
- Add tunnel presets (road-warrior, site-to-site, iot-tunnel)
- Add zone presets (home-user, remote-worker, mobile, iot, guest, server)
- Add interface control (up/down/restart)
- Add peer ping functionality
- Add bandwidth rates monitoring
- Comprehensive wizard CSS styles

SecuBox Webapp v1.5.0:
- Add admin sessions list showing authenticated LuCI users with IP source
- Add blocking statistics (today's bans, blocked attempts, top scenario, unique IPs)
- Integrate stats from CrowdSec decisions and alerts

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 15:40:46 +01:00
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
845f15222b feat(secubox-app-webapp): Add multi-tab dashboard with enhanced features
- Add System tab: hardware/software info, storage, memory details
- Add Network tab: WiFi status, traffic graph, DHCP leases
- Add CrowdSec tab: metrics, decisions table with unban buttons
- Add Firewall tab: zones display, forwarding rules
- Add Logs tab: filtering (errors/warnings/crowdsec), search
- Add Services tab: start/stop/restart controls
- Add Settings tab: refresh interval, quick links
- Auto-detect server URL from window.location
- Version bump to 1.2.0

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 11:09:34 +01:00
3908080a03 feat(secubox-app-webapp): Add SecuBox Dashboard web application
Single-page dashboard for SecuBox/OpenWrt with:
- Native OpenWrt authentication via rpcd/ubus
- Real-time system monitoring (CPU, RAM, Disk, Network)
- CrowdSec security integration
- Service management
- Network interface control

Access via: http://<router-ip>/secubox-dashboard/

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 10:28:09 +01:00
e2a78b0a9c fix(secubox-app-glances): Fix Glances startup issues in LXC container
- Use separate -B and -p args for bind address and port
- Add hostname resolution by populating /etc/hosts dynamically
- Add --disable-autodiscover and --disable-check-update flags
- Fixes DNS resolution errors causing immediate container exit

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 08:10:44 +01:00
4004f2bfe8 feat(glances): Add Glances system monitoring module
Add secubox-app-glances and luci-app-glances packages:

secubox-app-glances:
- LXC container with nicolargo/glances:latest-full Docker image
- Web UI on port 61208, API on port 61209
- UCI configuration for monitoring options and alert thresholds
- glancesctl management script

luci-app-glances:
- Dashboard view with service status and quick actions
- Embedded Web UI view with iframe
- Settings view for configuration
- RPCD backend with proper ACL permissions

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 07:38:37 +01:00
99aa610879 fix(mitmproxy): Fix web UI token access and transparent mode setup
- Add get_web_token to RPCD ACL permissions (was missing, causing 403)
- Add fallback token retrieval from container via lxc-attach
- Improve token capture regex to support alphanumeric tokens
- Fix startup script with background process + tee for reliable capture
- Add IP forwarding enablement for transparent proxy mode
- Fix bypass rule for traffic destined to router itself

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 07:34:22 +01:00
a960c20124 fix(crowdsec): Fix firewall health sync detection for CAPI blocklists
- Consider sync OK when CAPI blocklists are active (capi_elements > 0)
  even if local decisions = 0
- Add capi_elements_count to health response
- Fixes false "Out of sync" warning when using community blocklists

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 06:52:31 +01:00
5d3222e26e fix(magicmirror2): Use MMPM for module installation with proper registry
- install_module now uses mmpmctl if available (has module registry)
- Fallback to manual git clone only with explicit URLs
- Add proper Node.js PATH for npm commands
- update_module also uses mmpmctl when available
- Fix npm PATH in both install and update functions

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 06:45:17 +01:00
8c72679dea fix(mmpm): Update to MMPM v4.x CLI syntax for UI management
- Use `mmpm ui --start/--stop/--status` instead of `mmpm ui --port --host`
- MMPM v4 manages GUI via pm2, not direct execution
- Update status command to check pm2 status and get URL from mmpm
- Auto-install UI if not present when starting service

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 13:40:11 +01:00
f57303bdeb fix(mmpm): Add Node.js PATH for npm access in MMPM commands
- Add NODE_PATH variable for container npm/pm2 access
- Add run_mmpm helper function with proper PATH export
- Fix module install/remove/upgrade/search/list commands
- Fix MMPM GUI service start with proper PATH
- Fix list command to use --installed flag

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 13:36:46 +01:00