753d50db70
5 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
| 2013ea2e8c |
fix: Add graceful fallback for RPC calls when backend not deployed
Fix 'No related RPC reply' errors by wrapping RPC calls in L.resolveDefault()
to provide fallback values when backend methods aren't available yet.
## Problem
When new LuCI views are deployed before backend packages, RPC calls fail with:
Error: No related RPC reply
This happens because:
- Frontend (luci-app-secubox-admin) calls check_updates, get_catalog_sources
- Backend (secubox-core) hasn't been deployed yet with new RPCD methods
- RPCD returns no reply, causing frontend to crash
## Solution
Wrap all new RPC calls in L.resolveDefault() with sensible fallbacks:
**catalog-sources.js**:
- getCatalogSources() → fallback: { sources: [] }
- checkUpdates() → fallback: { updates: [] }
**updates.js**:
- checkUpdates() → fallback: { updates: [] }
This allows pages to load gracefully with empty data instead of crashing.
## Benefits
1. **Graceful degradation**: Pages load even without backend
2. **Deployment flexibility**: Can deploy frontend before backend
3. **Better UX**: Shows 'No updates' / 'No sources' instead of errors
4. **Production-ready**: Handles missing backends in production
## Testing
Before backend deployment:
- Catalog Sources page shows: 'No sources configured'
- Updates page shows: 'All applications are up to date'
After backend deployment:
- Pages populate with real data from RPCD
Incremented PKG_RELEASE: 4 → 5
|
|||
| b0c944c244 |
fix: Handle undefined options in WidgetRenderer constructor
Fix TypeError when WidgetRenderer is instantiated with undefined options
parameter by adding defensive check at start of __init__ method.
Error:
TypeError: can't access property "containerId", options is undefined
Fix:
options = options || {};
This ensures the constructor works even if called without parameters,
preventing the TypeError when accessing options.containerId.
Incremented PKG_RELEASE: 3 → 4
|
|||
| 8f38796b75 |
fix: Add ACL permissions for new catalog and version management RPC methods
Fix RPC -32002 "Access denied" errors by adding proper ACL permissions for all new catalog source and version management methods. ## Problem New RPC methods added in Phases 1-3 were accessible in the RPCD backend but lacked ACL (Access Control List) permissions, causing browser errors: ``` RPCError: RPC call to luci.secubox/get_catalog_sources failed with error -32002: Access denied RPCError: RPC call to luci.secubox/check_updates failed with error -32002: Access denied ``` ## Solution Updated `/usr/share/rpcd/acl.d/luci-app-secubox-admin.json` to grant permissions for all 7 new methods introduced in the multi-source AppStore. ### Read Permissions (added 5 methods) These methods only read data and don't modify system state: - `get_catalog_sources` - List configured catalog sources - `check_updates` - Check for available app updates - `get_app_versions` - Get version info for specific app - `get_changelog` - Retrieve app changelog - `get_widget_data` - Get widget metrics for dashboard ### Write Permissions (added 2 methods) These methods modify system configuration: - `set_catalog_source` - Set active catalog source (UCI write) - `sync_catalog` - Trigger catalog synchronization ### UCI Access (added 1 config) Added `secubox-appstore` to UCI read/write lists for source management. ## Files Changed **Modified**: - `luci-app-secubox-admin/root/usr/share/rpcd/acl.d/luci-app-secubox-admin.json` - Read permissions: 9 → 14 methods - Write permissions: 6 → 8 methods - UCI access: Added `secubox-appstore` - `luci-app-secubox-admin/Makefile` - PKG_RELEASE: 2 → 3 ## Deployment After updating the package: 1. `opkg install luci-app-secubox-admin_*.ipk` 2. ACL file automatically installed to `/usr/share/rpcd/acl.d/` 3. RPCD reloads ACLs automatically 4. Methods now accessible from LuCI frontend No manual RPCD restart required - ACL changes are picked up automatically. ## Verification Test with: ```bash ubus -S call luci.secubox get_catalog_sources ubus -S call luci.secubox check_updates ``` Should return data instead of "Access denied" error. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> |
|||
| 5d081cbf3e |
fix(luci-app-secubox-admin): fix Makefile structure to enable package indexing
Fixed critical Makefile structure issue that prevented luci-app-secubox-admin from being indexed by the feed system and built by the SDK. Changes: 1. Added `include $(TOPDIR)/rules.mk` at the beginning (required for all OpenWrt packages) 2. Added PKG_LICENSE and PKG_MAINTAINER fields (best practices) 3. Added LUCI_PKGARCH:=all to match other LuCI packages 4. Added closing comment `# call BuildPackage - OpenWrt buildroot` 5. Moved include statements to proper positions This fix aligns the Makefile with the standard OpenWrt/LuCI package structure used by luci-app-secubox and other working packages. Additionally: - Suppressed kconfig warnings in local-build.sh by redirecting stderr to /dev/null for all `make defconfig` commands (lines 532, 782, 1278) Build verification: ✅ Package now appears in feeds/secubox.index ✅ Successfully builds: luci-app-secubox-admin_1.0.0-r2_all.ipk (8.3KB) ✅ Total SecuBox packages built: 33 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> |
|||
| e7c9411d79 |
feat: Release v0.8.2 - Admin Control Center, Documentation Mirror & Docker Automation
This release adds major new features for SecuBox management and deployment: ## New Features ### 1. LuCI Admin Control Center (luci-app-secubox-admin) - Unified admin dashboard for managing all SecuBox appstore plugins - **Control Panel**: Real-time stats, system health, alerts, quick actions - **Apps Manager**: Browse catalog, install/remove apps with search & filtering - **App Settings**: Per-app configuration, start/stop controls - **System Health**: Live monitoring (CPU, RAM, disk) with auto-refresh - **System Logs**: Centralized log viewer with download capability - Fully integrated with existing RPCD backend (luci.secubox) - Mobile-responsive design with polished UI components ### 2. Documentation Mirror in SecuBox Bonus - Integrated complete development documentation into luci-app-secubox-bonus - 64+ documentation files now available offline at /luci-static/secubox/docs/ - Beautiful landing page (index-main.html) with 4 sections: - Development guides & references - Live module demos - Tutorials & blog posts - Marketing campaign pages - Accessible locally on router without internet connection ### 3. Automated Docker Plugin Installation - Enhanced secubox-appstore CLI with full Docker automation - One-click installation from web UI now fully automated: - Auto-detects Docker runtime from catalog - Discovers and executes control scripts (*ctl install) - Pulls Docker images automatically - Creates directories and configures UCI - Enables init services - No manual CLI steps required for Docker apps - Works for all Docker apps: AdGuard Home, Mail-in-a-Box, Nextcloud, etc. ### 4. Mail-in-a-Box Plugin - New Docker-based email server plugin (secubox-app-mailinabox) - Complete package with: - UCI configuration (8 port mappings, feature flags) - Control script (mailinaboxctl) with install/check/update/status/logs - Procd init script with auto-restart - Catalog manifest (category: hosting, maturity: beta) - Network mode: host (required for mail server) - Persistent storage: mail, SSL, data, DNS volumes ## Improvements ### Build System - Updated local-build.sh to include luci-app-* packages from package/secubox/ - Now automatically discovers and builds luci-app-secubox-admin and similar packages - Fixed Makefile include paths for feed structure ### Package Releases - Incremented PKG_RELEASE for all 31 SecuBox packages - Ensures clean upgrade path from previous versions ### Catalog Updates - Mail-in-a-Box entry moved from "productivity" to "hosting" category - Status changed to "beta" reflecting community Docker image maturity - Storage requirement increased: 1024MB → 2048MB - Added port 25 accessibility note ## Files Changed ### New Packages (2) - package/secubox/luci-app-secubox-admin/ (12 files) - package/secubox/secubox-app-mailinabox/ (4 files) ### Enhanced Packages (1) - package/secubox/luci-app-secubox-bonus/ (65 new docs files) ### Modified Core (3) - package/secubox/secubox-core/root/usr/sbin/secubox-appstore - package/secubox/secubox-core/root/usr/share/secubox/catalog.json - secubox-tools/local-build.sh ### All Makefiles (31 packages) - Incremented PKG_RELEASE for clean upgrade path ## Technical Details **Admin Control Center Architecture:** - Frontend: 5 views (dashboard, apps, settings, health, logs) - API: Wrapper around luci.secubox RPCD methods - Components: Reusable UI library (cards, badges, alerts, loaders) - Styling: Common + admin-specific CSS with responsive design - Auto-refresh: Polling for live updates (5-30s intervals) **Docker Automation Flow:** ``` Web UI → RPCD → secubox-appstore CLI → opkg install → *ctl install → docker pull → directories → UCI config → init enable → ✓ Ready ``` **Access Points:** - Admin Control: http://router/cgi-bin/luci/admin/secubox/admin/ - Documentation: http://router/luci-static/secubox/index-main.html - Demos: http://router/luci-static/secubox/demo-*.html 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> |