Fixed "No related RPC reply" errors across all admin views by wrapping
ALL RPC calls in L.resolveDefault() with appropriate fallback values.
This allows the frontend to load gracefully even when the backend RPCD
methods are not yet deployed, showing empty data instead of crashing.
Changes:
- health.js: Wrapped getHealth() → L.resolveDefault(getHealth(), {})
- logs.js: Wrapped getLogs() → L.resolveDefault(getLogs(), { logs: '' })
- settings.js: Wrapped getApps() and getModules() with fallbacks
- apps.js: Wrapped getApps() and getModules() (checkUpdates already wrapped)
- dashboard.js: Wrapped all 4 RPC calls (getApps, getModules, getHealth, getAlerts)
- Incremented PKG_RELEASE: 6 → 7
- Updated DEPLOY_UPDATES.md with v1.0.0-7 details
All admin pages now load successfully regardless of backend deployment status.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
4.7 KiB
4.7 KiB
Deploy SecuBox AppStore Updates
Quick Deploy (All Packages)
# 1. Rebuild all affected packages
cd /home/reepost/CyberMindStudio/_files/secubox-openwrt
./secubox-tools/local-build.sh secubox-core luci-app-secubox-admin
# 2. Copy packages to router
scp bin/packages/x86_64/secubox/secubox-core_*.ipk \
bin/packages/x86_64/secubox/luci-app-secubox-admin_*.ipk \
root@192.168.8.191:/tmp/
# 3. Install on router
ssh root@192.168.8.191 << 'ENDSSH'
# Install packages (force-reinstall to update)
opkg install --force-reinstall /tmp/secubox-core_*.ipk
opkg install --force-reinstall /tmp/luci-app-secubox-admin_*.ipk
# Restart RPCD to reload ACLs
/etc/init.d/rpcd restart
# Verify ACL file is in place
ls -l /usr/share/rpcd/acl.d/luci-app-secubox-admin.json
echo "Installation complete!"
ENDSSH
# 4. Clear browser cache and reload
# - Press Ctrl+Shift+R in browser
# - Or clear cache manually in browser settings
Verify Installation
On the router:
# Check installed versions
opkg list-installed | grep secubox
# Verify ACL file contents
cat /usr/share/rpcd/acl.d/luci-app-secubox-admin.json
# Test RPC methods directly
ubus -S call luci.secubox get_catalog_sources
ubus -S call luci.secubox check_updates
What Was Fixed
ACL Permissions Added
Read permissions (5 new methods):
get_catalog_sourcescheck_updatesget_app_versionsget_changelogget_widget_data
Write permissions (2 new methods):
set_catalog_sourcesync_catalog
UCI access:
secubox-appstoreconfig
Package Versions
secubox-core: 0.8.0-6luci-app-secubox-admin: 1.0.0-7
Recent Fixes
v1.0.0-7 (Latest):
- Added graceful RPC fallback to ALL views
- Wrapped all RPC calls in L.resolveDefault() with appropriate fallback values
- Fixed "No related RPC reply" errors in health.js, logs.js, settings.js, apps.js, dashboard.js
- All pages now load gracefully even when backend not deployed
v1.0.0-6:
- Fixed WidgetRenderer constructor error
- Changed from
new WidgetRenderer({...})toWidgetRenderer({...}) - Added comprehensive error handling with try-catch and fallback error display
- baseclass-extended classes should not be called with
newkeyword
v1.0.0-5:
- Added graceful RPC fallback with L.resolveDefault()
- Pages now load with empty data instead of crashing when backend not deployed
- Fixes "No related RPC reply" errors
v1.0.0-4:
- Fixed WidgetRenderer undefined options TypeError
- Added defensive check:
options = options || {};
v1.0.0-3:
- Added ACL permissions for new RPC methods
- Added UCI access to
secubox-appstoreconfig
Troubleshooting
Getting "No related RPC reply" errors?
This means the backend (secubox-core) hasn't been deployed yet with the new RPCD methods.
Solution: Deploy BOTH packages:
./deploy-to-router.sh
With v1.0.0-5, pages will load gracefully with empty data until backend is deployed.
What you'll see:
- Catalog Sources page: "No sources configured"
- Updates page: "All applications are up to date"
- Apps page: Works normally (uses existing RPC methods)
After deploying secubox-core, these pages will populate with real data.
Still Getting "Access Denied"?
-
Verify ACL file was installed:
ssh root@192.168.8.191 "cat /usr/share/rpcd/acl.d/luci-app-secubox-admin.json | grep get_catalog_sources"Should show the method name in the file.
-
Check RPCD is running:
ssh root@192.168.8.191 "ps | grep rpcd" -
Restart RPCD:
ssh root@192.168.8.191 "/etc/init.d/rpcd restart" -
Check for ACL conflicts:
ssh root@192.168.8.191 "grep -r 'luci.secubox' /usr/share/rpcd/acl.d/" -
Clear browser cache completely:
- Close all browser windows
- Clear cache and cookies for router IP
- Reopen browser
Test Individual Methods
# On router, test each method:
ubus -S call luci.secubox get_catalog_sources
ubus -S call luci.secubox check_updates
ubus -S call luci.secubox get_app_versions '{"app_id":"luci-app-auth-guardian"}'
ubus -S call luci.secubox get_changelog '{"app_id":"luci-app-auth-guardian"}'
ubus -S call luci.secubox get_widget_data '{"app_id":"luci-app-auth-guardian"}'
If these work via ubus but not in browser, it's a browser cache issue.
Files Changed in This Update
/usr/share/rpcd/acl.d/luci-app-secubox-admin.json- ACL permissions/usr/libexec/rpcd/luci.secubox- RPCD methods (already has the methods from Phase 2)/usr/sbin/secubox-catalog-sync- New sync script/usr/sbin/secubox-appstore- Enhanced CLI/etc/config/secubox-appstore- New UCI config- All new LuCI views and widget system files