Files
2026-01-10 18:57:31 +01:00

104 lines
2.5 KiB
Bash

#!/bin/sh
echo "Content-type: text/html"
echo ""
echo "<html><head><title>Fix Permissions</title>"
echo "<style>body{font-family:monospace;background:#000;color:#fff;}</style></head>"
echo "<body><pre>"
# Get the script path from query string
SCRIPT_PARAM=$(echo "$QUERY_STRING" | sed -n 's/.*script=\([^&]*\).*/\1/p')
if [ -z "$SCRIPT_PARAM" ]; then
echo "ERROR: No script specified!"
echo "Usage: /cgi-bin/fixperm.sh?script=path/to/script.sh"
echo "</pre></body></html>"
exit 1
fi
# Decode URL encoding
SCRIPT_PATH=$(echo "$SCRIPT_PARAM" | sed 's/%20/ /g;s/%2F/\//g')
# SECURITY: Remove any dangerous characters
SCRIPT_PATH=$(echo "$SCRIPT_PATH" | tr -d ';|&<>$`')
# Try different possible locations
POSSIBLE_PATHS="
/media/card/ext/$SCRIPT_PATH
/media/card/$SCRIPT_PATH
/media/$SCRIPT_PATH
/card/ext/$SCRIPT_PATH
$SCRIPT_PATH
"
FOUND=""
for TEST_PATH in $POSSIBLE_PATHS; do
if [ -f "$TEST_PATH" ]; then
FOUND="$TEST_PATH"
break
fi
done
if [ -z "$FOUND" ]; then
echo "ERROR: Script not found: $SCRIPT_PARAM"
echo "Tried paths:"
for TEST_PATH in $POSSIBLE_PATHS; do
echo " $TEST_PATH"
done
else
echo "Fixing permissions for: $FOUND"
echo "================================================"
# Show current permissions
echo "Before:"
ls -la "$FOUND"
echo ""
# Try to fix permissions
echo "Attempting to fix permissions..."
echo "--------------------------------"
# Try chmod +x
if chmod +x "$FOUND" 2>/dev/null; then
echo " chmod +x successful"
else
echo " chmod +x failed (trying as root)"
# Try with sudo if available
if command -v sudo >/dev/null 2>&1; then
sudo chmod +x "$FOUND" 2>&1 || echo " sudo failed: $?"
fi
fi
echo ""
# Try chmod 755 for full permissions
if chmod 755 "$FOUND" 2>/dev/null; then
echo " chmod 755 successful"
else
echo " chmod 755 failed"
fi
echo ""
# Show final permissions
echo "After:"
ls -la "$FOUND"
echo ""
# Check if executable now
if [ -x "$FOUND" ]; then
echo " SUCCESS: File is now executable!"
echo ""
echo "You can now run it with the 'Run' button."
else
echo "? WARNING: File might still not be executable"
echo ""
echo "Current permissions: $(ls -la "$FOUND" | awk '{print $1}')"
fi
echo ""
echo "Quick test of first line:"
head -n 5 "$FOUND"
fi
echo "</pre></body></html>"