mirror of
https://github.com/unraid/api.git
synced 2026-01-01 06:01:18 -06:00
- Adjusted the positioning of the UserProfile component to be absolute, ensuring it aligns correctly within its parent container. - Modified the clean-unraid.sh script to remove the entire components directory instead of just the standalone apps directory, enhancing cleanup efficiency. - Added a cleanup step in deploy-dev.sh to clear the remote standalone directory before deployment, ensuring a fresh setup. These changes improve the layout of the UserProfile component and streamline the deployment process by ensuring no residual files remain.
134 lines
4.0 KiB
Bash
Executable File
134 lines
4.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Check if the server name is provided
|
|
if [[ -z "$1" ]]; then
|
|
echo "Error: SSH server name is required."
|
|
echo "Usage: $0 <server_name>"
|
|
exit 1
|
|
fi
|
|
|
|
# Set server name from command-line argument
|
|
server_name="$1"
|
|
|
|
echo "Cleaning deployed files from Unraid server: $server_name"
|
|
|
|
exit_code=0
|
|
|
|
# Remove standalone apps directory
|
|
echo "Removing components directory..."
|
|
ssh root@"${server_name}" "rm -rf /usr/local/emhttp/plugins/dynamix.my.servers/unraid-components/"
|
|
components_exit_code=$?
|
|
if [ $components_exit_code -ne 0 ]; then
|
|
echo "Warning: Failed to remove components directory"
|
|
exit_code=$components_exit_code
|
|
fi
|
|
|
|
# Clean up auth-request.php file
|
|
clean_auth_request() {
|
|
local server_name="$1"
|
|
echo "Cleaning auth-request.php file..."
|
|
|
|
# SSH into server and clean auth-request.php
|
|
ssh "root@${server_name}" bash -s << 'EOF'
|
|
AUTH_REQUEST_FILE='/usr/local/emhttp/auth-request.php'
|
|
|
|
if [ ! -f "$AUTH_REQUEST_FILE" ]; then
|
|
echo "Auth request file not found: $AUTH_REQUEST_FILE"
|
|
exit 0
|
|
fi
|
|
|
|
if grep -q '\$arrWhitelist' "$AUTH_REQUEST_FILE"; then
|
|
# Create a timestamped backup
|
|
TIMESTAMP=$(date +%s)
|
|
BACKUP_FILE="${AUTH_REQUEST_FILE}.bak.clean.${TIMESTAMP}"
|
|
TEMP_FILE="${AUTH_REQUEST_FILE}.tmp.clean"
|
|
|
|
# Create backup
|
|
cp "$AUTH_REQUEST_FILE" "$BACKUP_FILE" || {
|
|
echo "Failed to create backup of $AUTH_REQUEST_FILE" >&2
|
|
exit 1
|
|
}
|
|
|
|
# Clean up any existing temp file
|
|
rm -f "$TEMP_FILE"
|
|
|
|
# Remove all unraid-components entries from the whitelist array
|
|
awk '
|
|
BEGIN { in_array = 0 }
|
|
/\$arrWhitelist\s*=\s*\[/ {
|
|
in_array = 1
|
|
print $0
|
|
next
|
|
}
|
|
in_array && /^\s*\]/ {
|
|
in_array = 0
|
|
print $0
|
|
next
|
|
}
|
|
!in_array || !/\/plugins\/dynamix\.my\.servers\/unraid-components\/.*\.(m?js|css)/ {
|
|
print $0
|
|
}
|
|
' "$AUTH_REQUEST_FILE" > "$TEMP_FILE"
|
|
|
|
# Check if processing succeeded and temp file is non-empty
|
|
if [ $? -ne 0 ] || [ ! -s "$TEMP_FILE" ]; then
|
|
echo "Failed to process $AUTH_REQUEST_FILE" >&2
|
|
rm -f "$TEMP_FILE"
|
|
exit 1
|
|
fi
|
|
|
|
# Verify the temp file has the expected content
|
|
if ! grep -q '\$arrWhitelist' "$TEMP_FILE" 2>/dev/null; then
|
|
echo "Generated file does not contain \$arrWhitelist array" >&2
|
|
rm -f "$TEMP_FILE"
|
|
exit 1
|
|
fi
|
|
|
|
# Atomically replace the original file
|
|
mv "$TEMP_FILE" "$AUTH_REQUEST_FILE" || {
|
|
echo "Failed to update $AUTH_REQUEST_FILE" >&2
|
|
rm -f "$TEMP_FILE"
|
|
exit 1
|
|
}
|
|
|
|
echo "Cleaned $AUTH_REQUEST_FILE (backup: $BACKUP_FILE)"
|
|
else
|
|
echo "\$arrWhitelist array not found in $AUTH_REQUEST_FILE" >&2
|
|
exit 1
|
|
fi
|
|
EOF
|
|
}
|
|
|
|
clean_auth_request "$server_name"
|
|
auth_request_exit_code=$?
|
|
|
|
# If auth request cleanup failed, update exit_code
|
|
if [ $auth_request_exit_code -ne 0 ]; then
|
|
echo "Warning: Failed to clean auth-request.php"
|
|
exit_code=$auth_request_exit_code
|
|
fi
|
|
|
|
# Remove the parent unraid-components directory if it's empty
|
|
echo "Cleaning up empty directories..."
|
|
ssh root@"${server_name}" "rmdir /usr/local/emhttp/plugins/dynamix.my.servers/unraid-components/ 2>/dev/null || true"
|
|
|
|
if [ $exit_code -eq 0 ]; then
|
|
echo "Successfully cleaned all deployed files from $server_name"
|
|
|
|
# Play success sound based on the operating system
|
|
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
# macOS
|
|
afplay /System/Library/Sounds/Purr.aiff 2>/dev/null || true
|
|
elif [[ "$OSTYPE" == "linux-gnu" ]]; then
|
|
# Linux
|
|
paplay /usr/share/sounds/freedesktop/stereo/bell.oga 2>/dev/null || true
|
|
elif [[ "$OSTYPE" == "msys" || "$OSTYPE" == "win32" ]]; then
|
|
# Windows
|
|
powershell.exe -c "(New-Object Media.SoundPlayer 'C:\Windows\Media\chimes.wav').PlaySync()" 2>/dev/null || true
|
|
fi
|
|
else
|
|
echo "Some cleanup operations failed (exit code: $exit_code)"
|
|
fi
|
|
|
|
# Exit with the final exit code
|
|
exit $exit_code |