secubox-openwrt/package/secubox/luci-app-secubox/root/usr/libexec/secubox/fix-permissions.sh
CyberMind-FR 675b2d164e feat: Portal service detection, nDPId compat layer, CrowdSec/Netifyd packages
Portal (luci-app-secubox-portal):
- Fix service status showing 0/9 by checking if init scripts exist
- Only count installed services in status display
- Use pgrep fallback when init script status fails

nDPId Dashboard (luci-app-ndpid):
- Add default /etc/config/ndpid configuration
- Add /etc/init.d/ndpid-compat init script
- Enable compat service in postinst for app detection
- Fix Makefile to install init script and config

CrowdSec Dashboard:
- Add CLAUDE.md with OpenWrt-specific guidelines (pgrep without -x)
- CSS fixes for hiding LuCI left menu in all views
- LAPI repair improvements with retry logic

New Packages:
- secubox-app-crowdsec: OpenWrt-native CrowdSec package
- secubox-app-netifyd: Netifyd DPI integration
- luci-app-secubox: Core SecuBox hub
- luci-theme-secubox: Custom theme

Removed:
- luci-app-secubox-crowdsec (replaced by crowdsec-dashboard)
- secubox-crowdsec-setup (functionality moved to dashboard)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-10 13:51:40 +01:00

170 lines
4.6 KiB
Bash
Executable File

#!/bin/sh
# SPDX-License-Identifier: Apache-2.0
# SecuBox Permissions Fix Script
# Automatically fixes file permissions for SecuBox modules
# Copyright (C) 2025 CyberMind.fr
set -e
LOG_TAG="secubox-fix-perms"
log_info() {
logger -t "$LOG_TAG" -p info "$1"
echo "[INFO] $1"
}
log_error() {
logger -t "$LOG_TAG" -p err "$1"
echo "[ERROR] $1" >&2
}
fix_rpcd_permissions() {
log_info "Fixing RPCD script permissions..."
# Note: luci.secubox backend is now provided by secubox-core package
local rpcd_scripts="
/usr/libexec/rpcd/luci.system-hub
/usr/libexec/rpcd/luci.network-modes
/usr/libexec/rpcd/luci.crowdsec-dashboard
/usr/libexec/rpcd/luci.netdata-dashboard
/usr/libexec/rpcd/luci.netifyd-dashboard
/usr/libexec/rpcd/luci.wireguard-dashboard
/usr/libexec/rpcd/luci.client-guardian
/usr/libexec/rpcd/luci.bandwidth-manager
/usr/libexec/rpcd/luci.auth-guardian
/usr/libexec/rpcd/luci.media-flow
/usr/libexec/rpcd/luci.vhost-manager
/usr/libexec/rpcd/luci.traffic-shaper
/usr/libexec/rpcd/luci.cdn-cache
/usr/libexec/rpcd/luci.ksm-manager
"
local count=0
for script in $rpcd_scripts; do
if [ -f "$script" ]; then
chmod 755 "$script" 2>/dev/null && count=$((count + 1))
fi
done
log_info "Fixed $count RPCD scripts (755)"
}
fix_web_permissions() {
log_info "Fixing web resources permissions..."
# Fix CSS files
local css_count=0
if [ -d "/www/luci-static/resources" ]; then
css_count=$(find /www/luci-static/resources -type f -name "*.css" -exec chmod 644 {} \; -print 2>/dev/null | wc -l)
fi
log_info "Fixed $css_count CSS files (644)"
# Fix JS files
local js_count=0
if [ -d "/www/luci-static/resources" ]; then
js_count=$(find /www/luci-static/resources -type f -name "*.js" -exec chmod 644 {} \; -print 2>/dev/null | wc -l)
fi
log_info "Fixed $js_count JS files (644)"
}
fix_config_permissions() {
log_info "Fixing configuration file permissions..."
local count=0
# Fix ACL files
for acl in /usr/share/rpcd/acl.d/luci-app-*.json; do
if [ -f "$acl" ]; then
chmod 644 "$acl" 2>/dev/null && count=$((count + 1))
fi
done
# Fix menu files
for menu in /usr/share/luci/menu.d/luci-app-*.json; do
if [ -f "$menu" ]; then
chmod 644 "$menu" 2>/dev/null && count=$((count + 1))
fi
done
log_info "Fixed $count config files (644)"
}
restart_services() {
log_info "Restarting services..."
if /etc/init.d/rpcd restart >/dev/null 2>&1; then
log_info "RPCD restarted successfully"
else
log_error "Failed to restart RPCD"
fi
if /etc/init.d/uhttpd restart >/dev/null 2>&1; then
log_info "uHTTPd restarted successfully"
else
log_error "Failed to restart uHTTPd"
fi
}
verify_permissions() {
log_info "Verifying permissions..."
local errors=0
# Check RPCD scripts
for script in /usr/libexec/rpcd/luci.*; do
if [ -f "$script" ]; then
local perms=$(ls -l "$script" 2>/dev/null | cut -c1-10)
if [ "$perms" != "-rwxr-xr-x" ]; then
log_error "Invalid permissions on $script: $perms (expected -rwxr-xr-x)"
errors=$((errors + 1))
fi
fi
done
# Check critical files
for file in /www/luci-static/resources/secubox/api.js /www/luci-static/resources/secubox/dashboard.css; do
if [ -f "$file" ]; then
local perms=$(ls -l "$file" 2>/dev/null | cut -c1-10)
if [ "$perms" != "-rw-r--r--" ]; then
log_error "Invalid permissions on $file: $perms (expected -rw-r--r--)"
errors=$((errors + 1))
fi
fi
done
if [ $errors -eq 0 ]; then
log_info "All permissions verified successfully"
return 0
else
log_error "Found $errors permission errors"
return 1
fi
}
main() {
echo "================================================"
echo " SecuBox Permissions Fix Script v0.3.1"
echo "================================================"
echo ""
fix_rpcd_permissions
fix_web_permissions
fix_config_permissions
echo ""
restart_services
echo ""
verify_permissions
echo ""
echo "================================================"
echo " Permissions fix completed!"
echo "================================================"
}
# Run if executed directly
if [ "${0##*/}" = "fix-permissions.sh" ]; then
main "$@"
fi