secubox-openwrt/DEPLOY_UPDATES.md
CyberMind-FR 17065bf776 fix(luci-app-secubox-admin): add graceful RPC fallback to all views
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>
2026-01-04 15:06:45 +01:00

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_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

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"?

  1. 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.

  2. Check RPCD is running:

    ssh root@192.168.8.191 "ps | grep rpcd"
    
  3. Restart RPCD:

    ssh root@192.168.8.191 "/etc/init.d/rpcd restart"
    
  4. Check for ACL conflicts:

    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

# 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