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>
170 lines
4.7 KiB
Markdown
170 lines
4.7 KiB
Markdown
# Deploy SecuBox AppStore Updates
|
|
|
|
## Quick Deploy (All Packages)
|
|
|
|
```bash
|
|
# 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:
|
|
|
|
```bash
|
|
# 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_sources`
|
|
- `check_updates`
|
|
- `get_app_versions`
|
|
- `get_changelog`
|
|
- `get_widget_data`
|
|
|
|
**Write permissions** (2 new methods):
|
|
- `set_catalog_source`
|
|
- `sync_catalog`
|
|
|
|
**UCI access**:
|
|
- `secubox-appstore` config
|
|
|
|
### Package Versions
|
|
|
|
- `secubox-core`: 0.8.0-6
|
|
- `luci-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({...})` to `WidgetRenderer({...})`
|
|
- Added comprehensive error handling with try-catch and fallback error display
|
|
- baseclass-extended classes should not be called with `new` keyword
|
|
|
|
**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-appstore` config
|
|
|
|
## 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:
|
|
```bash
|
|
./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"?
|
|
|
|
1. **Verify ACL file was installed**:
|
|
```bash
|
|
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.
|
|
|
|
2. **Check RPCD is running**:
|
|
```bash
|
|
ssh root@192.168.8.191 "ps | grep rpcd"
|
|
```
|
|
|
|
3. **Restart RPCD**:
|
|
```bash
|
|
ssh root@192.168.8.191 "/etc/init.d/rpcd restart"
|
|
```
|
|
|
|
4. **Check for ACL conflicts**:
|
|
```bash
|
|
ssh root@192.168.8.191 "grep -r 'luci.secubox' /usr/share/rpcd/acl.d/"
|
|
```
|
|
|
|
5. **Clear browser cache completely**:
|
|
- Close all browser windows
|
|
- Clear cache and cookies for router IP
|
|
- Reopen browser
|
|
|
|
### Test Individual Methods
|
|
|
|
```bash
|
|
# 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
|
|
|
|
1. `/usr/share/rpcd/acl.d/luci-app-secubox-admin.json` - ACL permissions
|
|
2. `/usr/libexec/rpcd/luci.secubox` - RPCD methods (already has the methods from Phase 2)
|
|
3. `/usr/sbin/secubox-catalog-sync` - New sync script
|
|
4. `/usr/sbin/secubox-appstore` - Enhanced CLI
|
|
5. `/etc/config/secubox-appstore` - New UCI config
|
|
6. All new LuCI views and widget system files
|