secubox-openwrt/deploy-to-router.sh
CyberMind-FR 9536a89744 fix: Correct local-build.sh syntax in deployment script
Fix incorrect local-build.sh invocation. The correct syntax is:
  ./secubox-tools/local-build.sh build <package>

Not:
  ./secubox-tools/local-build.sh <package>

Split into two separate build commands for clarity and proper output.
2026-01-04 14:47:22 +01:00

151 lines
3.8 KiB
Bash
Executable File

#!/bin/bash
#
# Deploy SecuBox AppStore Updates to Router
#
# This script rebuilds and deploys the updated packages to your OpenWrt router.
#
set -e # Exit on error
# Configuration
ROUTER_IP="${ROUTER_IP:-192.168.8.191}"
ROUTER_USER="${ROUTER_USER:-root}"
BUILD_DIR="$(cd "$(dirname "$0")" && pwd)"
echo "======================================"
echo "SecuBox AppStore Update Deployment"
echo "======================================"
echo ""
echo "Build directory: $BUILD_DIR"
echo "Router: $ROUTER_USER@$ROUTER_IP"
echo ""
# Step 1: Rebuild packages
echo "[1/5] Rebuilding packages..."
cd "$BUILD_DIR"
if [ ! -f "./secubox-tools/local-build.sh" ]; then
echo "ERROR: local-build.sh not found!"
echo "Are you in the correct directory?"
exit 1
fi
echo "Building secubox-core..."
./secubox-tools/local-build.sh build secubox-core
echo "Building luci-app-secubox-admin..."
./secubox-tools/local-build.sh build luci-app-secubox-admin
echo ""
echo "✓ Packages rebuilt successfully"
echo ""
# Step 2: Find built packages
echo "[2/5] Locating built packages..."
SECUBOX_CORE_PKG=$(find bin/packages/*/secubox -name "secubox-core_*.ipk" | sort -V | tail -1)
SECUBOX_ADMIN_PKG=$(find bin/packages/*/secubox -name "luci-app-secubox-admin_*.ipk" | sort -V | tail -1)
if [ -z "$SECUBOX_CORE_PKG" ] || [ -z "$SECUBOX_ADMIN_PKG" ]; then
echo "ERROR: Could not find built packages!"
echo "Expected packages in: bin/packages/*/secubox/"
exit 1
fi
echo "Found:"
echo " - $SECUBOX_CORE_PKG"
echo " - $SECUBOX_ADMIN_PKG"
echo ""
# Step 3: Copy to router
echo "[3/5] Copying packages to router..."
scp "$SECUBOX_CORE_PKG" "$SECUBOX_ADMIN_PKG" "$ROUTER_USER@$ROUTER_IP:/tmp/"
echo ""
echo "✓ Packages copied to router /tmp/"
echo ""
# Step 4: Install on router
echo "[4/5] Installing packages on router..."
ssh "$ROUTER_USER@$ROUTER_IP" << 'ENDSSH'
set -e
cd /tmp
echo "Installing secubox-core..."
opkg install --force-reinstall secubox-core_*.ipk
echo "Installing luci-app-secubox-admin..."
opkg install --force-reinstall luci-app-secubox-admin_*.ipk
echo ""
echo "Installed packages:"
opkg list-installed | grep secubox | grep -E "(secubox-core|luci-app-secubox-admin)"
echo ""
echo "Restarting RPCD..."
/etc/init.d/rpcd restart
echo ""
echo "Verifying ACL file..."
if [ -f /usr/share/rpcd/acl.d/luci-app-secubox-admin.json ]; then
echo "✓ ACL file exists"
if grep -q "get_catalog_sources" /usr/share/rpcd/acl.d/luci-app-secubox-admin.json; then
echo "✓ ACL contains new methods"
else
echo "⚠ ACL file missing new methods!"
fi
else
echo "✗ ACL file not found!"
fi
echo ""
echo "Cleaning up /tmp..."
rm -f /tmp/secubox-core_*.ipk /tmp/luci-app-secubox-admin_*.ipk
ENDSSH
echo ""
echo "✓ Packages installed on router"
echo ""
# Step 5: Verify
echo "[5/5] Verifying installation..."
ssh "$ROUTER_USER@$ROUTER_IP" << 'ENDSSH'
echo "Testing RPC methods..."
# Test catalog sources
if ubus -S call luci.secubox get_catalog_sources 2>&1 | grep -q "sources"; then
echo "✓ get_catalog_sources works"
else
echo "✗ get_catalog_sources failed"
fi
# Test check updates
if ubus -S call luci.secubox check_updates 2>&1 | grep -qE "updates|{"; then
echo "✓ check_updates works"
else
echo "✗ check_updates failed"
fi
ENDSSH
echo ""
echo "======================================"
echo "Deployment Complete!"
echo "======================================"
echo ""
echo "Next steps:"
echo "1. Clear your browser cache (Ctrl+Shift+R)"
echo "2. Reload the LuCI admin interface"
echo "3. Navigate to Admin Control → Catalog Sources or Updates"
echo ""
echo "If issues persist:"
echo "- Check browser console for errors"
echo "- Verify ACL permissions: ssh $ROUTER_USER@$ROUTER_IP 'cat /usr/share/rpcd/acl.d/luci-app-secubox-admin.json'"
echo "- Test RPC: ssh $ROUTER_USER@$ROUTER_IP 'ubus -S call luci.secubox get_catalog_sources'"
echo ""