feat(structure): reorganize luci-app packages into package/secubox/ + appstore migration

Major structural reorganization and feature additions:

## Folder Reorganization
- Move 17 luci-app-* packages to package/secubox/ (except luci-app-secubox core hub)
- Update all tooling to support new structure:
  - secubox-tools/quick-deploy.sh: search both locations
  - secubox-tools/validate-modules.sh: validate both directories
  - secubox-tools/fix-permissions.sh: fix permissions in both locations
  - .github/workflows/test-validate.yml: build from both paths
- Update README.md links to new package/secubox/ paths

## AppStore Migration (Complete)
- Add catalog entries for all remaining luci-app packages:
  - network-tweaks.json: Network optimization tools
  - secubox-bonus.json: Documentation & demos hub
- Total: 24 apps in AppStore catalog (22 existing + 2 new)
- New category: 'documentation' for docs/demos/tutorials

## VHost Manager v2.0 Enhancements
- Add profile activation system for Internal Services and Redirects
- Implement createVHost() API wrapper for template-based deployment
- Fix Virtual Hosts view rendering with proper LuCI patterns
- Fix RPCD backend shell script errors (remove invalid local declarations)
- Extend backend validation for nginx return directives (redirect support)
- Add section_id parameter for named VHost profiles
- Add Remove button to Redirects page for feature parity
- Update README to v2.0 with comprehensive feature documentation

## Network Tweaks Dashboard
- Close button added to component details modal

Files changed: 340+ (336 renames with preserved git history)
Packages affected: 19 luci-app, 2 secubox-app, 1 theme, 4 tools

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
CyberMind-FR 2026-01-01 14:59:38 +01:00
parent 12774589fc
commit 31a87c5d7a
344 changed files with 159 additions and 44 deletions

View File

@ -187,7 +187,11 @@
"Bash(do echo \"=== $makefile ===\" grep -A15 \"define Package.*install\" \"$makefile\")", "Bash(do echo \"=== $makefile ===\" grep -A15 \"define Package.*install\" \"$makefile\")",
"Bash(ssh root@192.168.8.191:*)", "Bash(ssh root@192.168.8.191:*)",
"Bash(flatpak-spawn --host which:*)", "Bash(flatpak-spawn --host which:*)",
"Bash(export PATH=\"$HOME/.local/bin:$PATH\")" "Bash(export PATH=\"$HOME/.local/bin:$PATH\")",
"Bash(jsonfilter:*)",
"Bash(for app in luci-app-auth-guardian luci-app-bandwidth-manager luci-app-cdn-cache luci-app-client-guardian luci-app-crowdsec-dashboard)",
"Bash(do echo \"Moving $app...\")",
"Bash(git mv:*)"
] ]
} }
} }

View File

@ -26,10 +26,10 @@ jobs:
- name: Validate Makefile structure - name: Validate Makefile structure
run: | run: |
echo "📋 Validating Makefile structure..." echo "📋 Validating Makefile structure..."
ERRORS=0 ERRORS=0
for makefile in luci-app-*/Makefile; do for makefile in luci-app-*/Makefile package/secubox/luci-app-*/Makefile; do
if [[ -f "$makefile" ]]; then if [[ -f "$makefile" ]]; then
PKG=$(dirname "$makefile") PKG=$(dirname "$makefile")
echo " 🔍 Checking $PKG..." echo " 🔍 Checking $PKG..."
@ -161,8 +161,8 @@ jobs:
- name: Validate package structure - name: Validate package structure
run: | run: |
echo "📋 Validating package structure..." echo "📋 Validating package structure..."
for pkg in luci-app-*/; do for pkg in luci-app-*/ package/secubox/luci-app-*/; do
if [[ -d "$pkg" ]]; then if [[ -d "$pkg" ]]; then
echo " 📦 Checking $pkg..." echo " 📦 Checking $pkg..."
@ -271,7 +271,7 @@ jobs:
- name: Copy packages - name: Copy packages
run: | run: |
# IMPORTANT: Copy packages DIRECTLY into package/, not into a subdirectory # IMPORTANT: Copy packages DIRECTLY into package/, not into a subdirectory
for pkg in luci-app-*/; do for pkg in luci-app-*/ package/secubox/luci-app-*/; do
if [[ -d "$pkg" && -f "${pkg}Makefile" ]]; then if [[ -d "$pkg" && -f "${pkg}Makefile" ]]; then
PKG_NAME=$(basename "$pkg") PKG_NAME=$(basename "$pkg")
echo "📦 Copying $PKG_NAME..." echo "📦 Copying $PKG_NAME..."
@ -379,18 +379,18 @@ jobs:
echo "" >> PACKAGES.md echo "" >> PACKAGES.md
echo "| Package | Version | Description |" >> PACKAGES.md echo "| Package | Version | Description |" >> PACKAGES.md
echo "|---------|---------|-------------|" >> PACKAGES.md echo "|---------|---------|-------------|" >> PACKAGES.md
for makefile in luci-app-*/Makefile; do for makefile in luci-app-*/Makefile package/secubox/luci-app-*/Makefile; do
if [[ -f "$makefile" ]]; then if [[ -f "$makefile" ]]; then
PKG_NAME=$(grep "^PKG_NAME:=" "$makefile" | cut -d'=' -f2) PKG_NAME=$(grep "^PKG_NAME:=" "$makefile" | cut -d'=' -f2)
PKG_VERSION=$(grep "^PKG_VERSION:=" "$makefile" | cut -d'=' -f2) PKG_VERSION=$(grep "^PKG_VERSION:=" "$makefile" | cut -d'=' -f2)
PKG_TITLE=$(grep "^LUCI_TITLE:=" "$makefile" | cut -d'=' -f2- | sed 's/^[[:space:]]*//') PKG_TITLE=$(grep "^LUCI_TITLE:=" "$makefile" | cut -d'=' -f2- | sed 's/^[[:space:]]*//')
# Fallback if LUCI_TITLE not found # Fallback if LUCI_TITLE not found
if [[ -z "$PKG_TITLE" ]]; then if [[ -z "$PKG_TITLE" ]]; then
PKG_TITLE=$(grep "TITLE:=" "$makefile" | head -1 | cut -d'=' -f2- | sed 's/^[[:space:]]*//') PKG_TITLE=$(grep "TITLE:=" "$makefile" | head -1 | cut -d'=' -f2- | sed 's/^[[:space:]]*//')
fi fi
echo "| $PKG_NAME | $PKG_VERSION | $PKG_TITLE |" >> PACKAGES.md echo "| $PKG_NAME | $PKG_VERSION | $PKG_TITLE |" >> PACKAGES.md
fi fi
done done

View File

@ -65,7 +65,7 @@ Central control and remote assistance dashboard for OpenWrt.
- 📋 Unified logs from all components - 📋 Unified logs from all components
- 📅 Scheduled tasks (health reports, backups) - 📅 Scheduled tasks (health reports, backups)
[View Details](luci-app-system-hub/README.md) [View Details](package/secubox/luci-app-system-hub/README.md)
--- ---
@ -81,7 +81,7 @@ Modern dashboard for CrowdSec intrusion prevention on OpenWrt.
- 🌍 Geographic threat visualization - 🌍 Geographic threat visualization
- ⚡ Auto-refresh with dark cybersecurity theme - ⚡ Auto-refresh with dark cybersecurity theme
[View Details](luci-app-crowdsec-dashboard/README.md) [View Details](package/secubox/luci-app-crowdsec-dashboard/README.md)
--- ---
@ -95,7 +95,7 @@ System monitoring dashboard with live metrics visualization.
- 🎨 Animated gauges and sparklines - 🎨 Animated gauges and sparklines
- 🔄 2-second auto-refresh - 🔄 2-second auto-refresh
[View Details](luci-app-netdata-dashboard/README.md) [View Details](package/secubox/luci-app-netdata-dashboard/README.md)
--- ---
@ -111,7 +111,7 @@ Network intelligence dashboard with DPI for OpenWrt.
- 💻 Automatic device discovery - 💻 Automatic device discovery
- 📊 Traffic categorization (Web, Streaming, Gaming, VoIP) - 📊 Traffic categorization (Web, Streaming, Gaming, VoIP)
[View Details](luci-app-netifyd-dashboard/README.md) [View Details](package/secubox/luci-app-netifyd-dashboard/README.md)
--- ---
@ -127,7 +127,7 @@ Configure different network operation modes with one click.
- 🎛️ One-click mode switching with automatic backup - 🎛️ One-click mode switching with automatic backup
- 📊 Real-time interface and service status monitoring - 📊 Real-time interface and service status monitoring
[View Details](luci-app-network-modes/README.md) [View Details](package/secubox/luci-app-network-modes/README.md)
--- ---
@ -143,7 +143,7 @@ Modern WireGuard VPN monitoring dashboard.
- ⚙️ Configuration visualization - ⚙️ Configuration visualization
- 🔒 Secure (private keys never exposed) - 🔒 Secure (private keys never exposed)
[View Details](luci-app-wireguard-dashboard/README.md) [View Details](package/secubox/luci-app-wireguard-dashboard/README.md)
--- ---
@ -158,7 +158,7 @@ NAC system with captive portal, quarantine, and parental controls.
- 👨‍👩‍👧‍👦 Parental controls (time limits, content filtering) - 👨‍👩‍👧‍👦 Parental controls (time limits, content filtering)
- 🔔 SMS/Email alerts for security events - 🔔 SMS/Email alerts for security events
[View Details](luci-app-client-guardian/README.md) [View Details](package/secubox/luci-app-client-guardian/README.md)
--- ---
@ -172,7 +172,7 @@ Comprehensive authentication and session management.
- 🍪 Secure session management - 🍪 Secure session management
- ⏭️ MAC/IP/Domain bypass rules - ⏭️ MAC/IP/Domain bypass rules
[View Details](luci-app-auth-guardian/README.md) [View Details](package/secubox/luci-app-auth-guardian/README.md)
--- ---
@ -188,7 +188,7 @@ Advanced bandwidth management with automatic media detection.
- ⏰ Time-based scheduling (peak/off-peak) - ⏰ Time-based scheduling (peak/off-peak)
- 👥 Per-client statistics and controls - 👥 Per-client statistics and controls
[View Details](luci-app-bandwidth-manager/README.md) [View Details](package/secubox/luci-app-bandwidth-manager/README.md)
--- ---
@ -207,7 +207,7 @@ Advanced streaming and media traffic monitoring.
- Spotify, Apple Music, Tidal - Spotify, Apple Music, Tidal
- Zoom, Teams, Google Meet, WebEx - Zoom, Teams, Google Meet, WebEx
[View Details](luci-app-media-flow/README.md) [View Details](package/secubox/luci-app-media-flow/README.md)
--- ---
@ -228,7 +228,7 @@ Local CDN cache proxy for bandwidth savings.
- Static content (JS, CSS, images) - Static content (JS, CSS, images)
- Configurable TTL per content type - Configurable TTL per content type
[View Details](luci-app-cdn-cache/README.md) [View Details](package/secubox/luci-app-cdn-cache/README.md)
--- ---
@ -242,7 +242,7 @@ USB-aware MQTT bridge for sensors and automation gear.
- 🔐 Broker credential + retention management from the UI - 🔐 Broker credential + retention management from the UI
- 📁 Saves configuration snapshots for rollback - 📁 Saves configuration snapshots for rollback
[View Details](luci-app-mqtt-bridge/README.md) [View Details](package/secubox/luci-app-mqtt-bridge/README.md)
--- ---
@ -259,7 +259,7 @@ Virtual host and local SaaS gateway management.
- Nextcloud, GitLab, Jellyfin - Nextcloud, GitLab, Jellyfin
- Home Assistant and more - Home Assistant and more
[View Details](luci-app-vhost-manager/README.md) [View Details](package/secubox/luci-app-vhost-manager/README.md)
--- ---

Some files were not shown because too many files have changed in this diff Show More