secubox-openwrt/install-rpcd-fix.sh

130 lines
3.8 KiB
Bash
Executable File

#!/bin/sh
# install-rpcd-fix.sh
# Quick installation script for SecuBox RPCD fixes
#
# Upload this script along with rpcd/ and acl/ folders to the router
# then run: sh install-rpcd-fix.sh
echo "╔══════════════════════════════════════════════════════════════╗"
echo "║ SecuBox RPCD Fix Installer ║"
echo "╚══════════════════════════════════════════════════════════════╝"
echo ""
SCRIPT_DIR="$(dirname "$(readlink -f "$0")")"
# Check if running as root
if [ "$(id -u)" != "0" ]; then
echo "Error: This script must be run as root"
exit 1
fi
# ============================================
# Install RPCD scripts
# ============================================
echo "→ Installing RPCD scripts..."
if [ -d "$SCRIPT_DIR/rpcd" ]; then
for script in "$SCRIPT_DIR/rpcd"/*; do
[ -f "$script" ] || continue
NAME=$(basename "$script")
DEST="/usr/libexec/rpcd/$NAME"
cp "$script" "$DEST"
chmod +x "$DEST"
echo " ✓ Installed: $DEST"
done
else
echo " ⚠ No rpcd/ directory found"
fi
# ============================================
# Install ACL files
# ============================================
echo ""
echo "→ Installing ACL files..."
mkdir -p /usr/share/rpcd/acl.d
if [ -d "$SCRIPT_DIR/acl" ]; then
for acl in "$SCRIPT_DIR/acl"/*.json; do
[ -f "$acl" ] || continue
NAME=$(basename "$acl")
DEST="/usr/share/rpcd/acl.d/$NAME"
cp "$acl" "$DEST"
echo " ✓ Installed: $DEST"
done
else
echo " ⚠ No acl/ directory found"
fi
# ============================================
# Create missing UCI configs
# ============================================
echo ""
echo "→ Creating UCI configs..."
# vhost_manager
if [ ! -f /etc/config/vhost_manager ]; then
cat > /etc/config/vhost_manager << 'EOF'
config global 'global'
option enabled '1'
option nginx_dir '/etc/nginx/conf.d'
option acme_dir '/etc/acme'
EOF
echo " ✓ Created: /etc/config/vhost_manager"
fi
# ============================================
# Restart services
# ============================================
echo ""
echo "→ Restarting services..."
# Restart rpcd
/etc/init.d/rpcd restart
echo " ✓ rpcd restarted"
# Clear LuCI cache
rm -rf /tmp/luci-*
echo " ✓ LuCI cache cleared"
# Wait for rpcd to initialize
sleep 2
# ============================================
# Verify installation
# ============================================
echo ""
echo "╔══════════════════════════════════════════════════════════════╗"
echo "║ Verification ║"
echo "╚══════════════════════════════════════════════════════════════╝"
echo ""
# List installed modules
echo "Checking ubus registration:"
MODULES="vhost-manager secubox bandwidth-manager auth-guardian media-flow"
for module in $MODULES; do
UBUS_NAME="luci.$module"
if ubus list "$UBUS_NAME" > /dev/null 2>&1; then
echo "$UBUS_NAME"
else
echo "$UBUS_NAME (not registered)"
fi
done
echo ""
echo "Testing vhost-manager status:"
ubus call luci.vhost-manager status 2>/dev/null || echo " ✗ Failed"
echo ""
echo "Installation complete!"
echo ""
echo "If modules are still not working, check:"
echo " logread | grep rpcd"
echo " logread | grep ubus"