{ "permissions": { "allow": [ "Bash(done)", "Bash(ls:*)", "Bash(find:*)", "Bash(xargs:*)", "Bash(mkdir:*)", "Bash(shellcheck:*)", "Bash(git add:*)", "Bash(git commit:*)", "Bash(git push)", "Bash(git remote set-url:*)", "Bash(git tag:*)", "Bash(git push:*)", "Bash(for module in crowdsec netdata netifyd)", "Bash(do echo \"=== $module-dashboard ===\" grep '\"\"\"\"path\"\"\"\":' luci-app-$module-dashboard/root/usr/share/luci/menu.d/*.json)", "Bash(grep:*)", "Bash(for module in cdn-cache client-guardian crowdsec netdata netifyd-dashboard network-modes system-hub wireguard-dashboard)", "Bash(do echo '=== $module ===' find luci-app-$module/htdocs -name *.js -exec grep -h object: {})", "Bash(chmod:*)", "Bash(./secubox-tools/validate-modules.sh:*)", "Bash(./secubox-tools/validate-module-generation.sh:*)", "Bash(bash:*)", "Bash(timeout 10 ./secubox-tools/validate-module-generation.sh:*)", "Bash(cat:*)", "Bash(python3:*)", "Bash(for file in luci-app-vhost-manager/htdocs/luci-static/resources/view/vhost-manager/*.js)", "Bash(do)", "Bash(node -c:*)", "Bash(for file in luci-app-bandwidth-manager/htdocs/luci-static/resources/view/bandwidth-manager/*.js)", "Bash(for file in luci-app-system-hub/htdocs/luci-static/resources/view/system-hub/*.js)", "Bash(./local-build.sh:*)", "Bash(./scripts/feeds list:*)", "Bash(./scripts/feeds update:*)", "Bash(./scripts/feeds install:*)", "Bash(make:*)", "Bash(rsync:*)", "Bash(./secubox-tools/local-build.sh:*)", "Bash(gh --version:*)", "Bash(git reset:*)", "Bash(test:*)", "Bash(for file in luci-app-traffic-shaper/htdocs/luci-static/resources/view/traffic-shaper/*.js)", "Bash(wc:*)", "Bash(./secubox-tools/show-module-status.sh:*)", "Bash(for file in luci-app-client-guardian/htdocs/luci-static/resources/view/client-guardian/*.js luci-app-client-guardian/htdocs/luci-static/resources/client-guardian/api.js)", "Bash(for file in luci-app-crowdsec-dashboard/htdocs/luci-static/resources/view/crowdsec-dashboard/*.js luci-app-crowdsec-dashboard/htdocs/luci-static/resources/crowdsec-dashboard/api.js)", "Bash(for file in luci-app-netdata-dashboard/htdocs/luci-static/resources/view/netdata-dashboard/*.js luci-app-netdata-dashboard/htdocs/luci-static/resources/netdata-dashboard/api.js)", "Bash(do echo \"Checking $file...\")", "Bash(echo:*)", "Bash(for file in luci-app-media-flow/htdocs/luci-static/resources/view/media-flow/*.js luci-app-media-flow/htdocs/luci-static/resources/media-flow/*.js)", "WebFetch(domain:github.com)", "Bash(for file in luci-app-traffic-shaper/htdocs/luci-static/resources/view/traffic-shaper/*.js luci-app-traffic-shaper/htdocs/luci-static/resources/traffic-shaper/api.js)", "Bash(timeout 5 ./secubox-tools/validate-modules.sh:*)", "Bash(tree:*)", "Bash(for file in luci-app-ksm-manager/htdocs/luci-static/resources/view/ksm-manager/*.js luci-app-ksm-manager/htdocs/luci-static/resources/ksm-manager/api.js)", "Bash(git show:*)", "Bash(for module in luci-app-*/root/usr/share/luci/menu.d/*.json)", "Bash(do if [ -f $module ])", "Bash(then echo '=== $\\(basename $module\\) ===' jq -r \".[\"\"admin/secubox\"\"] // empty | keys[]\" $module)", "Bash(for category in security monitoring network system services)", "Bash(do echo \"=== admin/secubox/$category ===\" grep -h \"\"\"admin/secubox/$category/\" luci-app-*/root/usr/share/luci/menu.d/*.json)", "Bash(pgrep:*)", "Bash(git rev-parse:*)", "Bash(ping:*)", "Bash(timeout 5 curl:*)", "Bash(gh run list:*)", "Bash(for dir in luci-app-*/)", "Bash(do if [ -f \"$dir/Makefile\" ])", "Bash(then if ! grep -q \"include.*luci.mk\" \"$dir/Makefile\")", "Bash(fi)", "Bash(gh workflow run:*)", "Bash(curl:*)", "Bash(sudo apt-get install:*)", "Bash(/tmp/deploy-system-hub.sh)", "Bash(ssh:*)", "Bash(timeout 10 ./secubox-tools/validate-modules.sh:*)", "Bash(scp:*)", "Bash(./deploy-theme-system.sh)", "Bash(for file in health.js services.js logs.js backup.js components.js remote.js settings.js diagnostics.js)", "Bash(if [ -f \"$file\" ])", "Bash(then)", "Bash(if ! grep -q \"system-hub/theme\" \"$file\")", "Bash(for file in services.js logs.js backup.js components.js remote.js settings.js diagnostics.js)", "Bash(do if [ -f \"$file\" ])", "Bash(then head -10 \"$file\")", "Bash(./deploy-beta-release.sh:*)", "Bash(./deploy-v0.1.1.sh:*)", "Bash(luci-app-secubox/Makefile )", "Bash(luci-app-secubox/htdocs/luci-static/resources/secubox/*.css)", "Bash(luci-app-secubox/htdocs/luci-static/resources/secubox/theme.js )", "Bash(luci-app-secubox/htdocs/luci-static/resources/view/secubox/*.js)", "Bash(luci-app-secubox/root/usr/libexec/rpcd/luci.secubox )", "Bash(luci-app-secubox/root/usr/share/rpcd/acl.d/luci-app-secubox.json )", "Bash(luci-app-system-hub/Makefile )", "Bash(luci-app-system-hub/README.md )", "Bash(luci-app-system-hub/htdocs/luci-static/resources/system-hub/api.js )", "Bash(luci-app-system-hub/htdocs/luci-static/resources/system-hub/dashboard.css )", "Bash(luci-app-system-hub/htdocs/luci-static/resources/system-hub/theme.js )", "Bash(luci-app-system-hub/htdocs/luci-static/resources/view/system-hub/*.js)", "Bash(luci-app-system-hub/root/usr/libexec/rpcd/luci.system-hub )", "Bash(luci-app-system-hub/root/usr/share/rpcd/acl.d/luci-app-system-hub.json )", "Bash(LUCI_DEVELOPMENT_REFERENCE.md)", "Bash(while read file)", "Bash(do echo \"=== $file ===\" grep \"object:\" \"$file\")", "Bash(for file in luci-app-secubox/htdocs/luci-static/resources/view/secubox/*.js luci-app-secubox/htdocs/luci-static/resources/secubox/*.js)", "Bash(./deploy-secubox-fix.sh)", "Bash(./deploy-modules-v2.sh:*)", "Bash(./deploy-dynamic-modules.sh:*)", "Bash(/tmp/force-reload-luci.sh:*)", "Bash(/tmp/deploy-common-css.sh)", "Bash(/tmp/deploy-services.sh)", "Bash(/tmp/deploy-health.sh)", "Bash(/tmp/deploy-system-hub-all.sh)", "Bash(/tmp/deploy-secubox-final.sh)", "WebFetch(domain:cybermind.fr)", "Bash(/tmp/deploy-system-hub-demo-style.sh)", "Bash(./secubox-tools/build-modules.sh:*)", "Bash(./secubox-tools/fix-permissions.sh:*)", "Bash(/tmp/deploy-acl-updates.sh:*)", "Bash(/tmp/deploy-acl-updates-v2.sh)", "WebSearch", "WebFetch(domain:secubox.cybermood.eu)", "Bash(timeout 5 ssh:*)", "Bash(ssh-keygen:*)", "Bash(/tmp/deploy-v0.3.1.sh)", "Bash(/tmp/deploy-v0.3.1-scp.sh)", "Bash(tar czf:*)", "Bash(__NEW_LINE__ echo \"\")", "Bash(./secubox-tools/add-pkg-file-modes.sh:*)", "Bash(luci-app-secubox/htdocs/luci-static/resources/view/secubox/dashboard.js )", "Bash(luci-app-secubox/htdocs/luci-static/resources/view/secubox/modules.js )", "Bash(git checkout:*)", "Bash(./scripts/setup-github-pages.sh:*)", "Bash(mkdocs:*)", "Bash(apt search:*)", "Bash(source .venv/bin/activate)", "Bash(pip install:*)", "Bash(./scripts/setup-wiki.sh:*)", "Bash(gh repo edit --help:*)", "Bash(gh repo edit:*)", "Bash(gh auth status:*)", "Bash(git ls-remote:*)", "Bash(for module in luci-app-ksm-manager luci-app-media-flow luci-app-netdata-dashboard luci-app-netifyd-dashboard luci-app-network-modes luci-app-secubox luci-app-system-hub luci-app-traffic-shaper luci-app-vhost-manager luci-app-wireguard-dashboard)", "Bash(do echo \"=== $module ===\" find \"$module/htdocs/luci-static/resources/view\" -name \"*.js\")", "Bash(gh run view:*)", "Bash(/tmp/deploy-system-hub-overview-fix.sh)", "Bash(./secubox-tools/deploy-network-modes.sh:*)", "Bash(/tmp/generalize-makefile-filemodes.sh)", "Bash(for file in luci-theme-secubox/htdocs/luci-static/resources/secubox-theme/i18n/*.json)", "Bash(./deploy-theme.sh:*)", "Bash(./deploy-modules-with-theme.sh:*)", "Bash(luci-app-network-modes/htdocs/luci-static/resources/view/network-modes/overview.js )", "Bash(luci-app-system-hub/htdocs/luci-static/resources/view/system-hub/overview.js )", "Bash(luci-app-system-hub/htdocs/luci-static/resources/view/system-hub/services.js )", "Bash(deploy-modules-with-theme.sh)", "Bash(timeout 120 ./local-build.sh:*)", "Bash(do echo \"=== admin/secubox/$category ===\")", "Bash(./secubox-tools/sync_module_versions.sh:*)", "Bash(for f in /home/reepost/CyberMindStudio/_files/secubox-openwrt/luci-app-*/htdocs/luci-static/resources/view/*/*.js)", "Bash(do grep -q \"secubox-theme/theme\" \"$f\")", "Bash(! grep -q \"cyberpunk.css\" \"$f\")", "Bash(./secubox-tools/quick-deploy.sh:*)", "WebFetch(domain:raw.githubusercontent.com)", "WebFetch(domain:docs.crowdsec.net)", "Bash(timeout 600 make:*)", "Bash(timeout 300 make:*)", "Bash(timeout 120 make:*)", "Bash(ln:*)", "Bash(tee:*)", "Bash(feeds/packages/net/crowdsec/patches/)", "Bash(feeds/packages/net/crowdsec/files/)", "Bash(feeds/packages/net/crowdsec/Makefile)", "Bash(feeds/packages/net/crowdsec/patches/002-fix_go_version.patch)", "Bash(tail:*)", "Bash(pkill -f \"local-build.sh build secubox-app-crowdsec\")", "Bash(go version:*)", "Bash(timeout 600 ./secubox-tools/local-build.sh:*)", "Bash(timeout 300 ./secubox-tools/local-build.sh:*)", "Bash(paste:*)", "Bash(git -C /home/reepost/CyberMindStudio/_files/secubox-openwrt status --short .github/workflows/)", "Bash(/tmp/deploy-secubox-bonus.sh)", "Bash(git rm:*)", "Bash(timeout 180 ./local-build.sh:*)", "Bash(tar:*)", "Bash(for makefile in luci-app-*/Makefile)", "Bash(do echo \"=== $makefile ===\" grep -A15 \"define Package.*install\" \"$makefile\")", "Bash(ssh root@192.168.8.191:*)", "Bash(flatpak-spawn --host which:*)", "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:*)", "Bash(rm:*)", "Bash(find . -type d -name \"appstore\" ! -path \"*/\\\\.git/*\" ! -path \"*/sdk/*\" -exec sh -c 'echo \"\"{}:\"\" && ls -la \"\"{}\"\" | tail -n +4 | head -5' ;)", "Bash(find . -type d -name \"modules\" ! -path \"*/\\\\.git/*\" ! -path \"*/sdk/*\" ! -path \"*/node_modules/*\" -exec sh -c 'dir=\"\"{}\"\"; if echo \"\"$dir\"\" | grep -q \"\"secubox\"\"; then echo \"\"$dir:\"\" && ls -la \"\"$dir\"\" 2>/dev/null | tail -n +4 | head -5 || echo \"\" \\(empty\\)\"\"; fi' ;)", "Bash(find . -type d -name \"components\" ! -path \"*/\\\\.git/*\" ! -path \"*/sdk/*\" ! -path \"*/node_modules/*\" -exec sh -c 'dir=\"\"{}\"\"; if echo \"\"$dir\"\" | grep -q \"\"secubox\"\"; then echo \"\"$dir:\"\" && ls -la \"\"$dir\"\" 2>/dev/null | tail -n +4 | head -5 || echo \"\" \\(empty\\)\"\"; fi' ;)", "Bash(for file in package/secubox/secubox-core/root/usr/share/secubox/plugins/catalog/*.json)", "Bash(do jq:*)", "Bash(then jq -e . \"$file\")", "Bash(sh:*)", "Bash(/tmp/deploy-components-modules-fix.sh)", "Bash(while read d)", "Bash(do mf=\"$d/Makefile\")", "Bash(if [ -f \"$mf\" ])", "Bash(then echo \"$mf\")", "Bash(for d in package/secubox/luci-app-*/)", "Bash(do if [ -d \"$d/files\" ])", "Bash(for d in secubox-tools/local-feed/luci-app-*/)", "Bash(sudo apt-get update:*)", "Bash(apt-get update:*)", "Bash(apt-get install:*)", "Bash(uvicorn:*)", "Bash(lsof:*)", "Bash(netstat:*)", "Bash(python -c:*)", "Bash(python -m pytest:*)", "Bash(source secubox-tools/webui/.venv/bin/activate:*)", "Bash(python -m app.ingest:*)", "Bash(python -m json.tool:*)", "Bash(python -m uvicorn:*)", "Bash(./local-build.sh)", "Bash(./scripts/feeds search:*)", "Bash(./sdk/scripts/feeds install:*)", "Bash(readlink:*)", "Bash(git -C feeds/luci branch:*)", "WebFetch(domain:mailinabox.email)", "Bash(git commit -m \"$\\(cat <<''EOF''\nfeat: Release v0.8.2 - Admin Control Center, Documentation Mirror & Docker Automation\n\nThis release adds major new features for SecuBox management and deployment:\n\n## New Features\n\n### 1. LuCI Admin Control Center \\(luci-app-secubox-admin\\)\n- Unified admin dashboard for managing all SecuBox appstore plugins\n- **Control Panel**: Real-time stats, system health, alerts, quick actions\n- **Apps Manager**: Browse catalog, install/remove apps with search & filtering\n- **App Settings**: Per-app configuration, start/stop controls\n- **System Health**: Live monitoring \\(CPU, RAM, disk\\) with auto-refresh\n- **System Logs**: Centralized log viewer with download capability\n- Fully integrated with existing RPCD backend \\(luci.secubox\\)\n- Mobile-responsive design with polished UI components\n\n### 2. Documentation Mirror in SecuBox Bonus\n- Integrated complete development documentation into luci-app-secubox-bonus\n- 64+ documentation files now available offline at /luci-static/secubox/docs/\n- Beautiful landing page \\(index-main.html\\) with 4 sections:\n - Development guides & references\n - Live module demos\n - Tutorials & blog posts\n - Marketing campaign pages\n- Accessible locally on router without internet connection\n\n### 3. Automated Docker Plugin Installation\n- Enhanced secubox-appstore CLI with full Docker automation\n- One-click installation from web UI now fully automated:\n - Auto-detects Docker runtime from catalog\n - Discovers and executes control scripts \\(*ctl install\\)\n - Pulls Docker images automatically\n - Creates directories and configures UCI\n - Enables init services\n- No manual CLI steps required for Docker apps\n- Works for all Docker apps: AdGuard Home, Mail-in-a-Box, Nextcloud, etc.\n\n### 4. Mail-in-a-Box Plugin\n- New Docker-based email server plugin \\(secubox-app-mailinabox\\)\n- Complete package with:\n - UCI configuration \\(8 port mappings, feature flags\\)\n - Control script \\(mailinaboxctl\\) with install/check/update/status/logs\n - Procd init script with auto-restart\n - Catalog manifest \\(category: hosting, maturity: beta\\)\n- Network mode: host \\(required for mail server\\)\n- Persistent storage: mail, SSL, data, DNS volumes\n\n## Improvements\n\n### Build System\n- Updated local-build.sh to include luci-app-* packages from package/secubox/\n- Now automatically discovers and builds luci-app-secubox-admin and similar packages\n- Fixed Makefile include paths for feed structure\n\n### Catalog Updates\n- Mail-in-a-Box entry moved from \"productivity\" to \"hosting\" category\n- Status changed to \"beta\" reflecting community Docker image maturity\n- Storage requirement increased: 1024MB → 2048MB\n- Added port 25 accessibility note\n\n## Files Changed\n\n### New Packages \\(2\\)\n- package/secubox/luci-app-secubox-admin/ \\(12 files\\)\n- package/secubox/secubox-app-mailinabox/ \\(4 files\\)\n\n### Enhanced Packages \\(1\\)\n- package/secubox/luci-app-secubox-bonus/ \\(65 new docs files\\)\n\n### Modified Core \\(3\\)\n- package/secubox/secubox-core/root/usr/sbin/secubox-appstore\n- package/secubox/secubox-core/root/usr/share/secubox/catalog.json\n- secubox-tools/local-build.sh\n\n## Technical Details\n\n**Admin Control Center Architecture:**\n- Frontend: 5 views \\(dashboard, apps, settings, health, logs\\)\n- API: Wrapper around luci.secubox RPCD methods\n- Components: Reusable UI library \\(cards, badges, alerts, loaders\\)\n- Styling: Common + admin-specific CSS with responsive design\n- Auto-refresh: Polling for live updates \\(5-30s intervals\\)\n\n**Docker Automation Flow:**\n```\nWeb UI → RPCD → secubox-appstore CLI → opkg install → *ctl install →\ndocker pull → directories → UCI config → init enable → ✓ Ready\n```\n\n**Access Points:**\n- Admin Control: http://router/cgi-bin/luci/admin/secubox/admin/\n- Documentation: http://router/luci-static/secubox/index-main.html\n- Demos: http://router/luci-static/secubox/demo-*.html\n\n🤖 Generated with [Claude Code]\\(https://claude.com/claude-code\\)\n\nCo-Authored-By: Claude Sonnet 4.5 \nEOF\n\\)\")", "Bash(git commit --amend -m \"$\\(cat <<''EOF''\nfeat: Release v0.8.2 - Admin Control Center, Documentation Mirror & Docker Automation\n\nThis release adds major new features for SecuBox management and deployment:\n\n## New Features\n\n### 1. LuCI Admin Control Center \\(luci-app-secubox-admin\\)\n- Unified admin dashboard for managing all SecuBox appstore plugins\n- **Control Panel**: Real-time stats, system health, alerts, quick actions\n- **Apps Manager**: Browse catalog, install/remove apps with search & filtering\n- **App Settings**: Per-app configuration, start/stop controls\n- **System Health**: Live monitoring \\(CPU, RAM, disk\\) with auto-refresh\n- **System Logs**: Centralized log viewer with download capability\n- Fully integrated with existing RPCD backend \\(luci.secubox\\)\n- Mobile-responsive design with polished UI components\n\n### 2. Documentation Mirror in SecuBox Bonus\n- Integrated complete development documentation into luci-app-secubox-bonus\n- 64+ documentation files now available offline at /luci-static/secubox/docs/\n- Beautiful landing page \\(index-main.html\\) with 4 sections:\n - Development guides & references\n - Live module demos\n - Tutorials & blog posts\n - Marketing campaign pages\n- Accessible locally on router without internet connection\n\n### 3. Automated Docker Plugin Installation\n- Enhanced secubox-appstore CLI with full Docker automation\n- One-click installation from web UI now fully automated:\n - Auto-detects Docker runtime from catalog\n - Discovers and executes control scripts \\(*ctl install\\)\n - Pulls Docker images automatically\n - Creates directories and configures UCI\n - Enables init services\n- No manual CLI steps required for Docker apps\n- Works for all Docker apps: AdGuard Home, Mail-in-a-Box, Nextcloud, etc.\n\n### 4. Mail-in-a-Box Plugin\n- New Docker-based email server plugin \\(secubox-app-mailinabox\\)\n- Complete package with:\n - UCI configuration \\(8 port mappings, feature flags\\)\n - Control script \\(mailinaboxctl\\) with install/check/update/status/logs\n - Procd init script with auto-restart\n - Catalog manifest \\(category: hosting, maturity: beta\\)\n- Network mode: host \\(required for mail server\\)\n- Persistent storage: mail, SSL, data, DNS volumes\n\n## Improvements\n\n### Build System\n- Updated local-build.sh to include luci-app-* packages from package/secubox/\n- Now automatically discovers and builds luci-app-secubox-admin and similar packages\n- Fixed Makefile include paths for feed structure\n\n### Package Releases\n- Incremented PKG_RELEASE for all 31 SecuBox packages\n- Ensures clean upgrade path from previous versions\n\n### Catalog Updates\n- Mail-in-a-Box entry moved from \"productivity\" to \"hosting\" category\n- Status changed to \"beta\" reflecting community Docker image maturity\n- Storage requirement increased: 1024MB → 2048MB\n- Added port 25 accessibility note\n\n## Files Changed\n\n### New Packages \\(2\\)\n- package/secubox/luci-app-secubox-admin/ \\(12 files\\)\n- package/secubox/secubox-app-mailinabox/ \\(4 files\\)\n\n### Enhanced Packages \\(1\\)\n- package/secubox/luci-app-secubox-bonus/ \\(65 new docs files\\)\n\n### Modified Core \\(3\\)\n- package/secubox/secubox-core/root/usr/sbin/secubox-appstore\n- package/secubox/secubox-core/root/usr/share/secubox/catalog.json\n- secubox-tools/local-build.sh\n\n### All Makefiles \\(31 packages\\)\n- Incremented PKG_RELEASE for clean upgrade path\n\n## Technical Details\n\n**Admin Control Center Architecture:**\n- Frontend: 5 views \\(dashboard, apps, settings, health, logs\\)\n- API: Wrapper around luci.secubox RPCD methods\n- Components: Reusable UI library \\(cards, badges, alerts, loaders\\)\n- Styling: Common + admin-specific CSS with responsive design\n- Auto-refresh: Polling for live updates \\(5-30s intervals\\)\n\n**Docker Automation Flow:**\n```\nWeb UI → RPCD → secubox-appstore CLI → opkg install → *ctl install →\ndocker pull → directories → UCI config → init enable → ✓ Ready\n```\n\n**Access Points:**\n- Admin Control: http://router/cgi-bin/luci/admin/secubox/admin/\n- Documentation: http://router/luci-static/secubox/index-main.html\n- Demos: http://router/luci-static/secubox/demo-*.html\n\n🤖 Generated with [Claude Code]\\(https://claude.com/claude-code\\)\n\nCo-Authored-By: Claude Sonnet 4.5 \nEOF\n\\)\")", "Bash(xargs git add)", "Bash(./scripts/feeds:*)", "Bash(network)", "Bash(monitoring)", "Bash(hosting)", "Bash(compact)", "Bash(But that file is already provided by package secubox-core\"\n\nChanges:\n- Makefile: Removed +luci-app-secubox from LUCI_DEPENDS\n- Package now only depends on: +luci-base +rpcd +secubox-core\n- Incremented PKG_RELEASE: 7 → 8\n- Updated DEPLOY_UPDATES.md with v1.0.0-8 details\n\n🤖 Generated with [Claude Code]\\(https://claude.com/claude-code\\)\n\nCo-Authored-By: Claude Sonnet 4.5 \nEOF\n\\)\")", "Bash(./deploy-to-router.sh:*)", "Bash(pkill:*)", "Bash(/usr/libexec/rpcd/luci.secubox call:*)", "Bash(git commit -m \"$\\(cat <<''EOF''\nfeat: v0.8.3 - Complete theming, responsive & dynamic features\n\nMajor Features:\n- 🎨 8 Themes: dark, light, cyberpunk, ocean, sunset, forest, minimal, contrast\n- 📱 Fully Responsive: mobile-first with 500+ utility classes\n- 📊 Chart.js Integration: 5 chart types \\(line, bar, doughnut, gauge, sparkline\\)\n- 🔄 Real-time Updates: WebSocket + polling fallback\n- ✨ 60+ Animations: entrance, attention, loading, continuous, interactive\n- 📚 Complete Documentation: 35,000+ words across 5 guides\n\nTheming System:\n- Unified cyberpunk theme \\(643 lines\\)\n- 5 new themes \\(ocean, sunset, forest, minimal, contrast\\)\n- 30+ CSS custom properties\n- Theme switching API\n\nResponsive Design:\n- Mobile-first approach \\(375px - 1920px+\\)\n- 500+ utility classes \\(spacing, display, flex, grid, typography\\)\n- Responsive components \\(tables, forms, navigation, modals, cards\\)\n- Touch-friendly targets \\(44px minimum on mobile\\)\n\nDynamic Features:\n- 9 widget templates \\(default, security, network, monitoring, hosting, compact, charts, sparkline\\)\n- Chart.js wrapper utilities \\(chart-utils.js\\)\n- Real-time client \\(WebSocket + polling, auto-reconnect\\)\n- Widget renderer with real-time integration\n\nAnimations:\n- 889 lines of animations \\(was 389\\)\n- 14 entrance animations\n- 10 attention seekers\n- 5 loading animations\n- Page transitions, modals, tooltips, forms, badges\n- JavaScript animation API\n\nDocumentation:\n- README.md \\(2,500 words\\)\n- THEME_GUIDE.md \\(10,000 words\\)\n- RESPONSIVE_GUIDE.md \\(8,000 words\\)\n- WIDGET_GUIDE.md \\(9,000 words\\)\n- ANIMATION_GUIDE.md \\(8,000 words\\)\n\nBug Fixes:\n- Fixed data-utils.js baseclass implementation\n- Fixed realtime-client integration in widget-renderer\n- Removed duplicate cyberpunk.css\n\nFiles Created: 15\n- 5 new themes\n- 2 new components \\(charts.css, featured-apps.css\\)\n- 3 JS modules \\(chart-utils.js, realtime-client.js\\)\n- 1 library \\(chart.min.js 201KB\\)\n- 5 documentation guides\n\nFiles Modified: 7\n- animations.css \\(+500 lines\\)\n- utilities.css \\(+460 lines\\)\n- theme.js \\(+90 lines\\)\n- widget-renderer.js \\(+50 lines\\)\n- data-utils.js \\(baseclass fix\\)\n- cyberpunk.css \\(unified\\)\n\nPerformance:\n- CSS bundle: ~150KB minified\n- JS core: ~50KB\n- Chart.js: 201KB \\(lazy loaded\\)\n- First Contentful Paint: <1.5s\n- Time to Interactive: <2.5s\n\n🤖 Generated with [Claude Code]\\(https://claude.com/claude-code\\)\n\nCo-Authored-By: Claude Sonnet 4.5 \nEOF\n\\)\")", "Bash(/home/reepost/CyberMindStudio/_files/secubox-openwrt/package/secubox/secubox-core/root/usr/sbin/secubox-state:*)", "Bash(command -v shellcheck:*)", "Bash(/home/reepost/CyberMindStudio/_files/secubox-openwrt/package/secubox/secubox-core/root/usr/sbin/secubox-component:*)", "Bash(git commit -m \"$\\(cat <<''EOF''\nfeat: Admin Control Center with State Management \\(v0.9.0\\)\n\nMajor feature release implementing comprehensive state management, component registry,\nand admin control center with full UI integration.\n\n## Backend Features \\(secubox-core v0.9.0-1\\)\n\nState Management System:\n- ✅ State database \\(state-db.json\\) with 15 states across 4 categories\n- ✅ State machine with transition matrix validation\n- ✅ secubox-state CLI \\(8 commands: get, set, history, list, validate, sync, freeze, clear-error\\)\n- ✅ state-machine.sh with atomic transitions using flock\n- ✅ State history tracking with timestamps and reasons\n- ✅ Error state handling with detailed error info\n- ✅ Frozen state support for system-critical components\n\nComponent Registry System:\n- ✅ Component registry database \\(component-registry.json\\)\n- ✅ secubox-component CLI \\(7 commands: list, get, register, unregister, tree, affected, set-setting\\)\n- ✅ Component types: app, module, widget, service, composite\n- ✅ Dependency tracking \\(required/optional\\)\n- ✅ Recursive dependency tree resolution\n- ✅ Reverse dependency tracking\n- ✅ Component settings management\n- ✅ Profile tagging and filtering\n\nAuto-Sync System:\n- ✅ secubox-sync-registry CLI for catalog synchronization\n- ✅ Auto-populate from catalog.json\n- ✅ Plugin catalog directory scanning\n- ✅ Installed package detection\n- ✅ Automatic state initialization\n\nRPC Backend \\(luci.secubox\\):\n- ✅ 6 state management RPC methods\n- ✅ 5 component registry RPC methods\n- ✅ Bulk operations support\n- ✅ State validation endpoints\n\n## Frontend Features \\(luci-app-secubox-admin v1.0.0-16\\)\n\nUI Components:\n- ✅ state-utils.js: 20+ utility functions, state config, transition validation\n- ✅ StateIndicator.js: 5 rendering modes \\(badge, compact, pill, dot, statistics\\)\n- ✅ StateTimeline.js: 4 visualization modes \\(vertical, horizontal, compact, transition diagram\\)\n- ✅ state-management.css: 600+ lines with animations, responsive design, accessibility\n\nAdmin Control Center Dashboard:\n- ✅ System overview panel with health metrics\n- ✅ Component state summary with statistics\n- ✅ Recent state transitions timeline\n- ✅ Alerts panel for warnings and errors\n- ✅ Quick actions panel\n- ✅ Real-time updates \\(5-second polling\\)\n- ✅ Metric cards with hover effects\n- ✅ State distribution by category\n\nAPI Integration \\(api.js\\):\n- ✅ 11 RPC method declarations\n- ✅ Enhanced methods: getComponentWithState\\(\\), getAllComponentsWithStates\\(\\)\n- ✅ Bulk operations: bulkSetComponentState\\(\\)\n- ✅ State statistics: getStateStatistics\\(\\)\n- ✅ Retry logic with exponential backoff\n- ✅ Promise-based async operations\n\n## Documentation\n\nComprehensive Documentation:\n- ✅ API-REFERENCE.md \\(1,200+ lines\\): Complete API docs for RPC, CLI, JS\n- ✅ EXAMPLES.md \\(800+ lines\\): 30+ usage examples, shell scripts, integration patterns\n- ✅ State definitions table \\(15 states\\)\n- ✅ State transition matrix\n- ✅ Component metadata schemas\n- ✅ Error codes reference\n- ✅ Testing examples\n\n## State Definitions\n\n15 States Across 4 Categories:\n- Persistent: available, installed, active, disabled, frozen\n- Transient: installing, configuring, activating, starting, stopping, uninstalling\n- Runtime: running, stopped\n- Error: error \\(with subtypes\\)\n\nState Transition Flow:\navailable → installing → installed → configuring → configured →\nactivating → active → starting → running → stopping → stopped\n\n## Technical Details\n\nFiles Created \\(10 backend + 8 frontend\\):\nBackend:\n- /usr/sbin/secubox-state \\(12KB, 8 commands\\)\n- /usr/sbin/secubox-component \\(12KB, 7 commands\\)\n- /usr/sbin/secubox-sync-registry \\(8.4KB\\)\n- /usr/share/secubox/state-machine.sh \\(5.2KB\\)\n- /var/lib/secubox/state-db.json \\(schema\\)\n- /var/lib/secubox/component-registry.json \\(schema\\)\n\nFrontend:\n- resources/secubox-admin/state-utils.js \\(~400 lines\\)\n- resources/secubox-admin/components/StateIndicator.js \\(~350 lines\\)\n- resources/secubox-admin/components/StateTimeline.js \\(~450 lines\\)\n- resources/secubox-admin/state-management.css \\(~600 lines\\)\n- resources/view/secubox-admin/control-center.js \\(~550 lines\\)\n- resources/secubox-admin/api.js \\(+145 lines\\)\n\nDocumentation:\n- docs/admin-control-center/API-REFERENCE.md \\(1,200+ lines\\)\n- docs/admin-control-center/EXAMPLES.md \\(800+ lines\\)\n\nFiles Modified \\(3\\):\n- package/secubox/secubox-core/Makefile \\(v0.8.0 → v0.9.0-1\\)\n- package/secubox/luci-app-secubox-admin/Makefile \\(release 15 → 16\\)\n- package/secubox/secubox-core/root/usr/libexec/rpcd/luci.secubox \\(+157 lines\\)\n\n## Installation & Migration\n\nMakefile Updates:\n- Added 3 new CLI tools to install section\n- Added state-machine.sh to scripts\n- Updated package description\n- Enhanced postinst to initialize databases\n- Auto-sync registry on first install\n\nPostinst Features:\n- Automatic state-db.json initialization\n- Automatic component-registry.json initialization\n- Catalog sync on install\n- Version announcement with new features\n\n## Performance & Security\n\nPerformance:\n- File locking \\(flock\\) for atomic state transitions\n- State history limited to 100 entries per component\n- RPC retry logic with exponential backoff\n- Bulk operations use Promise.all for parallel execution\n- Component list caching \\(30 seconds\\)\n\nSecurity:\n- Frozen state prevents unauthorized modifications\n- All state changes logged with timestamp and reason\n- System-critical components have additional safeguards\n- Proper authentication required for state transitions\n\n## Testing & Validation\n\nFeatures:\n- State transition validation\n- Component dependency resolution\n- Circular dependency detection\n- State consistency checker\n- Integration test scripts included in docs\n\n## Breaking Changes\n\nNone - Backward Compatible:\n- Existing RPC methods remain functional\n- State-aware methods are additive\n- Components without state default to ''available''\n- Migration is automatic on install\n\n## Statistics\n\nTotal Implementation:\n- Lines of Code: ~4,000\n - Backend: ~1,800 \\(Bash + JSON\\)\n - Frontend: ~2,200 \\(JavaScript + CSS\\)\n - Documentation: ~2,000 \\(Markdown\\)\n- Functions/Commands: 40+\n- RPC Methods: 11\n- CLI Commands: 22\n- UI Components: 5\n- Documentation Pages: 2\n\n## Next Phase\n\nRemaining from Plan:\n- Phase 4: System Hub integration\n- Phase 5: Migration script \\(secubox-migrate-state\\)\n- Phase 6: Additional documentation \\(ARCHITECTURE.md, STATE-MANAGEMENT.md, etc.\\)\n- Phase 7: Additional UI views \\(components.js, state-manager.js, debug-panel.js\\)\n\n🤖 Generated with [Claude Code]\\(https://claude.com/claude-code\\)\n\nCo-Authored-By: Claude Sonnet 4.5 \nEOF\n\\)\")", "Bash(for file in package/secubox/secubox-core/root/usr/sbin/*)", "Bash(do if head -n1 \"$file\")", "Bash(then echo \"$file\")", "Bash(for file in secubox secubox-profile secubox-recovery secubox-verify secubox-core secubox-diagnostics secubox-catalog-sync secubox-appstore secubox-sync-registry)", "Bash(do head -n1 \"$file\")", "Bash(head:*)", "WebFetch(domain:www.netify.ai)", "WebFetch(domain:forum.openwrt.org)", "Bash(for f in *.js)", "Bash(do echo \"Checking $f...\")", "Bash(for f in view/secubox-netifyd/*.js secubox-netifyd/*.js)", "Bash(do node -c \"$f\")", "Bash(bash -n:*)", "Bash(./scripts/feeds uninstall:*)", "Bash(aarch64-openwrt-linux-musl-g++:*)", "Bash(opkg-cl info:*)", "Bash(git commit -m \"$\\(cat <<''EOF''\nfeat: Netifyd Integration & Build System Improvements \\(v0.9.1\\)\n\nMajor updates:\n- Replace luci-app-netifyd-dashboard with enhanced luci-app-secubox-netifyd\n- Add netifyd 5.2.1 package with GCC 13.3/C++17 build fixes\n- Fix nd-risks.cpp compilation errors via inline static maps patch\n- Enhance local-build.sh with improved package building workflow\n- Update secubox-core scripts version to v0.9.1\n\nNew Features:\n- Complete netifyd dashboard with flows, devices, applications, and settings\n- Local data collection with netifyd-collector\n- Automated cron-based data aggregation\n- RPCd integration for real-time statistics\n\nBuild Fixes:\n- Patch 001: Fix C++17 inline static maps in nd-risks.hpp and nd-protos.hpp\n- Patch 003: Skip ndpi tests to resolve roaring_v2 dependency issues\n- Add libatomic dependency\n- Include libnetifyd shared libraries in package\n\n🤖 Generated with [Claude Code]\\(https://claude.com/claude-code\\)\n\nCo-Authored-By: Claude Sonnet 4.5 \nEOF\n\\)\")", "Bash(netifyd:*)", "Bash(ubus call:*)", "Bash(ss:*)", "Bash(git cherry-pick:*)", "Bash(for file in overview.js decisions.js alerts.js waf.js metrics.js)", "Bash(do scp /home/reepost/CyberMindStudio/_files/secubox-openwrt/package/secubox/luci-app-crowdsec-dashboard/htdocs/luci-static/resources/view/crowdsec-dashboard/$file root@192.168.8.191:/www/luci-static/resources/view/crowdsec-dashboard/ done)", "Bash(Last: Xs ago\" in header\n- Updates every second\n- Visual feedback that polling is working\n- Easy to spot stalled/broken polling\n\nError Handling:\n- Try/catch around all poll callbacks\n- Errors logged to debug panel and console\n- Error counting for diagnostics\n- Polling continues even after errors\n\nCode Improvements:\n- Proper container creation order\n- Better error handling in load\\(\\) and polling\n- Debug logging throughout lifecycle\n- Performance metrics tracking\n\nDocumentation:\n- Complete analysis in REFRESH-DEBUG.md\n- Troubleshooting guide\n- Debug mode usage instructions\n- Performance considerations\n\n🤖 Generated with [Claude Code]\\(https://claude.com/claude-code\\)\n\nCo-Authored-By: Claude Sonnet 4.5 \nEOF\n\\)\")", "Bash(ar r:*)", "Bash(git commit -m \"$\\(cat <<''EOF''\nfix: Add missing API utility functions and fix data structure handling \\(v0.6.0-r9\\)\n\n- Add parseScenario\\(\\) to format scenario names\n- Add getCountryFlag\\(\\) to display country flag emojis\n- Add formatRelativeTime\\(\\) for relative timestamps\n- Fix decisions data flattening in handleUnban, handleBulkUnban, submitBan, and polling\n- Fix getDashboardData to properly flatten alerts->decisions structure\n- Fix context error in overview renderDecisionsTable \\(this vs self\\)\n\n🤖 Generated with [Claude Code]\\(https://claude.com/claude-code\\)\n\nCo-Authored-By: Claude Sonnet 4.5 \nEOF\n\\)\")", "Bash(git commit -m \"$\\(cat <<''EOF''\nfix: Sanitize malformed JSON from cscli metrics \\(v0.6.0-r10\\)\n\n- cscli metrics sometimes outputs empty string keys \\(\"\": {...}\\)\n- This causes RPC parsing errors in LuCI\n- Added sed filter to replace empty keys with \"unknown\"\n- Fixes \"No related RPC reply\" error in metrics view\n\n🤖 Generated with [Claude Code]\\(https://claude.com/claude-code\\)\n\nCo-Authored-By: Claude Sonnet 4.5 \nEOF\n\\)\")", "Bash(for f in luci-app-secubox/htdocs/luci-static/resources/view/secubox/*.js)", "Bash(do scp \"$f\" root@192.168.8.191:/www/luci-static/resources/view/secubox/)", "Bash(node:*)", "Bash(awk:*)", "Bash(for f in luci-app-secubox/htdocs/luci-static/resources/view/secubox/wizard.js luci-app-secubox/htdocs/luci-static/resources/secubox/api.js)", "Bash(for f in /home/reepost/CyberMindStudio/_files/secubox-openwrt/package/secubox/luci-app-client-guardian/htdocs/luci-static/resources/view/client-guardian/*.js)", "Bash(do scp \"$f\" root@192.168.8.191:/www/luci-static/resources/view/client-guardian/)", "Bash(for f in dashboard.js health.js logs.js settings.js)", "Bash(root@192.168.8.191:/www/luci-static/resources/view/secubox-admin/)", "Bash(root@192.168.8.191:/usr/libexec/rpcd/luci.secubox)", "Bash(root@192.168.8.191:/www/luci-static/resources/secubox-admin/)", "Bash(root@192.168.8.191:/www/luci-static/resources/system-hub/)", "Bash(root@192.168.8.191:/usr/libexec/rpcd/luci.system-hub)", "Bash(root@192.168.8.191:/usr/sbin/secubox-appstore)", "Bash(for f in zones.js overview.js clients.js)", "Bash(do scp /home/reepost/CyberMindStudio/_files/secubox-openwrt/package/secubox/luci-app-client-guardian/htdocs/luci-static/resources/view/client-guardian/$f root@192.168.8.191:/www/luci-static/resources/view/client-guardian/)", "Bash(for f in clients.js overview.js)", "Bash(for f in htdocs/luci-static/resources/view/client-guardian/settings.js htdocs/luci-static/resources/client-guardian/api.js root/usr/libexec/rpcd/luci.client-guardian root/etc/config/client-guardian)", "Bash(do scp \"$f\" root@192.168.8.191:/$f#root/)", "Bash(ssh root@192.168.255.1:*)", "Bash(SSH=\"ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null\")", "Bash($SSH root@192.168.255.1 \"ubus list | grep secubox; ls -la /usr/libexec/rpcd/luci.secubox* 2>/dev/null; ls -la /www/luci-static/resources/view/secubox/ 2>/dev/null\")", "Bash($SSH root@192.168.255.1 \"cat /usr/share/luci/menu.d/luci-app-secubox.json 2>/dev/null || echo ''NOT FOUND''\")", "Bash($SSH root@192.168.255.1 \"ubus call luci.secubox getModules ''{}'' 2>&1 | head -50\")", "Bash($SSH root@192.168.255.1 \"ubus -v list luci.secubox\")", "Bash($SSH root@192.168.255.1 \"echo ''{\"\"method\"\":\"\"getModules\"\"}'' | /usr/libexec/rpcd/luci.secubox call getModules 2>&1 | head -30\")", "Bash($SSH root@192.168.255.1 \"sed -n ''90,100p'' /usr/sbin/secubox-appstore\")", "Bash(SCP=\"scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null\":*)", "Bash(__NEW_LINE__ $SCP /home/reepost/CyberMindStudio/_files/secubox-openwrt/package/secubox/secubox-core/root/usr/sbin/secubox-appstore root@192.168.255.1:/usr/sbin/secubox-appstore)", "Bash($SSH root@192.168.255.1 \"chmod 755 /usr/sbin/secubox-appstore && /etc/init.d/rpcd restart\")", "Bash(SCP=\"scp -O -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null\")", "Bash($SSH root@192.168.255.1 \"chmod 755 /usr/sbin/secubox-appstore && /etc/init.d/rpcd restart && echo ''✅ Fixed''\")", "Bash($SSH root@192.168.255.1 \"ubus call luci.secubox getModules ''{}'' 2>&1 | head -30\")", "Bash($SSH root@192.168.255.1 \"grep -A50 ''getModules'' /usr/libexec/rpcd/luci.secubox | head -60\")", "Bash($SSH root@192.168.255.1 \"chmod 755 /usr/sbin/secubox-appstore && /etc/init.d/rpcd restart && ubus call luci.secubox getModules ''{}'' 2>&1 | head -50\")", "Bash($SSH root@192.168.255.1 \"sleep 2 && ubus call luci.secubox getModules ''{}'' 2>&1 | head -80\")", "Bash($SSH root@192.168.255.1 \"cat /usr/share/secubox/plugins/catalog/crowdsec-dashboard.json 2>/dev/null | head -30\")", "Bash($SSH root@192.168.255.1 \"grep -E ''^\\(luci-app-|secubox-\\)'' /tmp/secubox-installed-cache 2>/dev/null | head -20\")", "Bash($SSH root@192.168.255.1 \"chmod 755 /usr/sbin/secubox-appstore && rm -f /tmp/secubox-installed-cache && /etc/init.d/rpcd restart\")", "Bash($SSH root@192.168.255.1 \"sleep 2 && ubus call luci.secubox getModules ''{}'' 2>&1\")", "Bash($SSH root@192.168.255.1 \"chmod 755 /usr/sbin/secubox-appstore && rm -f /tmp/secubox-installed-cache && /etc/init.d/rpcd restart && sleep 2 && ubus call luci.secubox getModules ''{}'' 2>&1 | grep -A12 ''crowdsec-dashboard''\")", "Bash($SSH root@192.168.255.1 \"ubus call luci.secubox getModules ''{}'' 2>&1 | grep -A12 ''netifyd''\")", "Bash($SSH root@192.168.255.1 \"/etc/init.d/netifyd status; ls /etc/rc.d/S*netifyd 2>/dev/null\")", "Bash($SSH root@192.168.255.1 \"chmod 755 /usr/sbin/secubox-appstore && rm -f /tmp/secubox-installed-cache && /etc/init.d/rpcd restart && sleep 2 && ubus call luci.secubox getModules ''{}'' 2>&1 | grep -A12 -E ''\\(netifyd|crowdsec-dashboard\\)''\")", "Bash($SSH root@192.168.255.1 \"cat /etc/config/secubox 2>/dev/null | head -50\")", "Bash($SSH root@192.168.255.1 \"cat /etc/config/firewall | grep -A5 ''luci\\\\|secubox'' | head -30\")", "Bash($SSH root@192.168.255.1 \"/etc/init.d/rpcd restart && sleep 2 && ubus -v list luci.secubox | grep wan\")", "Bash(__NEW_LINE__ $SCP /home/reepost/CyberMindStudio/_files/secubox-openwrt/package/secubox/secubox-core/root/usr/libexec/rpcd/luci.secubox root@192.168.255.1:/usr/libexec/rpcd/luci.secubox)", "Bash($SSH root@192.168.255.1 \"chmod 755 /usr/libexec/rpcd/luci.secubox && /etc/init.d/rpcd restart && sleep 2 && ubus call luci.secubox get_wan_access ''{}''\")", "Bash($SSH root@192.168.255.1 \"/usr/sbin/secubox-wan-access status\")", "Bash($SSH root@192.168.255.1 \"uci show firewall | grep secubox_wan\")", "Bash($SSH root@192.168.255.1 \"nft list ruleset 2>/dev/null | grep -A2 ''secubox\\\\|dport 443'' | head -20\")", "Bash($SSH root@192.168.255.1 \"/etc/init.d/firewall restart && sleep 2 && fw4 print 2>/dev/null | grep -i ''secubox\\\\|443'' | head -10\")", "Bash(SSH=\"ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ConnectTimeout=10\")", "Bash($SSH root@192.168.255.1 \"echo ''connected''\")", "Bash($SSH root@192.168.255.1 \"uci show firewall | grep -E ''=zone$|\\\\.name=''\")", "Bash($SSH root@192.168.255.1 \"uci show firewall | grep -E ''network=|\\\\.input=|\\\\.output=|\\\\.forward=''\")", "Bash(__NEW_LINE__ $SCP /home/reepost/CyberMindStudio/_files/secubox-openwrt/package/secubox/secubox-core/root/usr/sbin/secubox-wan-access root@192.168.255.1:/usr/sbin/secubox-wan-access)", "Bash($SSH root@192.168.255.1 \"chmod 755 /usr/sbin/secubox-wan-access && /usr/sbin/secubox-wan-access apply && /etc/init.d/firewall restart && sleep 2 && /usr/sbin/secubox-wan-access status\")", "Bash($SSH root@192.168.255.1 \"\n# Remove old invalid rule\nuci delete firewall.@rule[0] 2>/dev/null\n\n# Run apply which will create new rules with correct src\n/usr/sbin/secubox-wan-access apply\n\n# Show the new rule\nuci show firewall | grep secubox\n\n# Restart firewall\n/etc/init.d/firewall restart\n\")", "Bash(SSH=\"ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ConnectTimeout=15\")", "Bash(SSH=\"ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ConnectTimeout=30\")", "Bash($SSH root@192.168.255.1 \"echo connected && uci show firewall | grep secubox\")", "Bash($SSH root@192.168.255.1 \"/etc/init.d/firewall restart && sleep 3 && /usr/sbin/secubox-wan-access status\")", "Bash($SSH root@192.168.255.1 \"fw4 print 2>&1 | grep -i ''secubox\\\\|443'' | head -10\")", "Bash($SSH root@192.168.255.1 \"fw4 print 2>&1 | grep -E ''secubox|tcp dport 443'' | head -10\")", "Bash($SSH root@192.168.255.1 \"cat /usr/share/rpcd/acl.d/luci-app-secubox-admin.json 2>/dev/null || cat /usr/share/rpcd/acl.d/luci-mod-secubox.json 2>/dev/null | head -30\")", "Bash($SSH root@192.168.255.1 \"ls /usr/share/rpcd/acl.d/ | grep -E ''secubox|admin''\")", "Bash($SSH root@192.168.255.1 \"cat /usr/share/rpcd/acl.d/luci-app-secubox-admin.json\")", "Bash($SSH root@192.168.255.1 'cat > /usr/share/rpcd/acl.d/luci-app-secubox-admin.json << ''''EOF''''\n{\n\t\"\"luci-app-secubox-admin\"\": {\n\t\t\"\"description\"\": \"\"SecuBox Admin Control Center\"\",\n\t\t\"\"read\"\": {\n\t\t\t\"\"ubus\"\": {\n\t\t\t\t\"\"luci.secubox\"\": [\n\t\t\t\t\t\"\"get_appstore_apps\"\",\n\t\t\t\t\t\"\"get_appstore_app\"\",\n\t\t\t\t\t\"\"getModules\"\",\n\t\t\t\t\t\"\"getModuleInfo\"\",\n\t\t\t\t\t\"\"get_dashboard_data\"\",\n\t\t\t\t\t\"\"get_system_health\"\",\n\t\t\t\t\t\"\"get_alerts\"\",\n\t\t\t\t\t\"\"getLogs\"\",\n\t\t\t\t\t\"\"listProfiles\"\",\n\t\t\t\t\t\"\"get_catalog_sources\"\",\n\t\t\t\t\t\"\"check_updates\"\",\n\t\t\t\t\t\"\"get_app_versions\"\",\n\t\t\t\t\t\"\"get_changelog\"\",\n\t\t\t\t\t\"\"get_widget_data\"\",\n\t\t\t\t\t\"\"get_wan_access\"\"\n\t\t\t\t]\n\t\t\t},\n\t\t\t\"\"uci\"\": [\n\t\t\t\t\"\"secubox\"\",\n\t\t\t\t\"\"secubox-appstore\"\",\n\t\t\t\t\"\"firewall\"\",\n\t\t\t\t\"\"*\"\"\n\t\t\t]\n\t\t},\n\t\t\"\"write\"\": {\n\t\t\t\"\"ubus\"\": {\n\t\t\t\t\"\"luci.secubox\"\": [\n\t\t\t\t\t\"\"install_appstore_app\"\",\n\t\t\t\t\t\"\"remove_appstore_app\"\",\n\t\t\t\t\t\"\"enable_module\"\",\n\t\t\t\t\t\"\"disable_module\"\",\n\t\t\t\t\t\"\"updateModule\"\",\n\t\t\t\t\t\"\"applyProfile\"\",\n\t\t\t\t\t\"\"set_catalog_source\"\",\n\t\t\t\t\t\"\"sync_catalog\"\",\n\t\t\t\t\t\"\"set_wan_access\"\",\n\t\t\t\t\t\"\"apply_wan_access\"\"\n\t\t\t\t]\n\t\t\t},\n\t\t\t\"\"uci\"\": [\n\t\t\t\t\"\"secubox\"\",\n\t\t\t\t\"\"secubox-appstore\"\",\n\t\t\t\t\"\"firewall\"\",\n\t\t\t\t\"\"*\"\"\n\t\t\t]\n\t\t}\n\t}\n}\nEOF\n/etc/init.d/rpcd restart && echo \"\"ACL updated\"\"')", "Bash($SSH root@192.168.255.1 \"ubus call luci.secubox apply_wan_access ''{}'' 2>&1\")", "Bash($SSH root@192.168.255.1 \"/usr/sbin/secubox-wan-access apply 2>&1\")", "Bash($SSH root@192.168.255.1 \"ubus call luci.secubox apply_wan_access ''{}''\")", "Bash($SSH root@192.168.255.1 \"chmod 755 /usr/libexec/rpcd/luci.secubox && /etc/init.d/rpcd restart && sleep 2 && ubus call luci.secubox apply_wan_access ''{}''\")", "Bash($SSH root@192.168.255.1 \"uci show network | grep -E ''=interface|\\\\.proto=''\")", "Bash($SSH root@192.168.255.1 \"uci show firewall | grep -E ''zone.*name|=forwarding''\")", "Bash(for:*)", "Bash(do sed -i \"s/''require secubox-theme\\\\/theme as Theme'';//g\" \"$f\")", "Bash(do sleep 5)", "Bash(break)" ] } }