mirror of
https://github.com/unraid/api.git
synced 2026-01-02 22:50:02 -06:00
118 lines
3.9 KiB
Bash
Executable File
118 lines
3.9 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"
|
|
|
|
# Source directory paths
|
|
source_directory=".nuxt/nuxt-custom-elements/dist/unraid-components/"
|
|
standalone_directory=".nuxt/standalone-apps/"
|
|
|
|
if [ ! -d "$source_directory" ]; then
|
|
echo "The web components directory does not exist."
|
|
exit 1
|
|
fi
|
|
|
|
# Replace the value inside the rsync command with the user's input
|
|
# Delete existing web components in the target directory
|
|
ssh "root@${server_name}" "rm -rf /usr/local/emhttp/plugins/dynamix.my.servers/unraid-components/nuxt/*"
|
|
|
|
rsync_command="rsync -avz -e ssh $source_directory root@${server_name}:/usr/local/emhttp/plugins/dynamix.my.servers/unraid-components/nuxt"
|
|
|
|
# Also sync standalone apps if they exist
|
|
if [ -d "$standalone_directory" ]; then
|
|
rsync_standalone="rsync -avz -e ssh $standalone_directory root@${server_name}:/usr/local/emhttp/plugins/dynamix.my.servers/unraid-components/standalone"
|
|
fi
|
|
|
|
echo "Executing the following command:"
|
|
echo "$rsync_command"
|
|
|
|
# Execute the rsync command and capture the exit code
|
|
eval "$rsync_command"
|
|
exit_code=$?
|
|
|
|
# Execute standalone rsync if directory exists
|
|
if [ -n "$rsync_standalone" ]; then
|
|
echo "Executing standalone apps sync:"
|
|
echo "$rsync_standalone"
|
|
eval "$rsync_standalone"
|
|
fi
|
|
|
|
# Update the auth-request.php file to include the new web component JS
|
|
update_auth_request() {
|
|
local server_name="$1"
|
|
# SSH into server and update auth-request.php
|
|
ssh "root@${server_name}" "
|
|
AUTH_REQUEST_FILE='/usr/local/emhttp/auth-request.php'
|
|
WEB_COMPS_DIR='/usr/local/emhttp/plugins/dynamix.my.servers/unraid-components/nuxt/_nuxt/'
|
|
STANDALONE_DIR='/usr/local/emhttp/plugins/dynamix.my.servers/unraid-components/standalone/'
|
|
|
|
# Find JS files and modify paths
|
|
mapfile -t JS_FILES < <(find \"\$WEB_COMPS_DIR\" -type f -name \"*.js\" | sed 's|/usr/local/emhttp||' | sort -u)
|
|
|
|
# Find standalone JS files if directory exists
|
|
if [ -d \"\$STANDALONE_DIR\" ]; then
|
|
mapfile -t STANDALONE_JS < <(find \"\$STANDALONE_DIR\" -type f -name \"*.js\" | sed 's|/usr/local/emhttp||' | sort -u)
|
|
FILES_TO_ADD+=(\"\${STANDALONE_JS[@]}\")
|
|
fi
|
|
|
|
FILES_TO_ADD+=(\"\${JS_FILES[@]}\")
|
|
|
|
if grep -q '\$arrWhitelist' \"\$AUTH_REQUEST_FILE\"; then
|
|
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\/nuxt\/_nuxt\/unraid-components\.client-/ {
|
|
print \$0
|
|
}
|
|
' \"\$AUTH_REQUEST_FILE\" > \"\${AUTH_REQUEST_FILE}.tmp\"
|
|
|
|
# Now add new entries right after the opening bracket
|
|
awk -v files_to_add=\"\$(printf '%s\n' \"\${FILES_TO_ADD[@]}\" | sort -u | awk '{printf \" \\\x27%s\\\x27,\n\", \$0}')\" '
|
|
/\\\$arrWhitelist\s*=\s*\[/ {
|
|
print \$0
|
|
print files_to_add
|
|
next
|
|
}
|
|
{ print }
|
|
' \"\${AUTH_REQUEST_FILE}.tmp\" > \"\${AUTH_REQUEST_FILE}\"
|
|
|
|
rm \"\${AUTH_REQUEST_FILE}.tmp\"
|
|
echo \"Updated \$AUTH_REQUEST_FILE with new web component JS files\"
|
|
else
|
|
echo \"\\\$arrWhitelist array not found in \$AUTH_REQUEST_FILE\"
|
|
fi
|
|
"
|
|
}
|
|
|
|
update_auth_request "$server_name"
|
|
|
|
# Play built-in sound based on the operating system
|
|
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
# macOS
|
|
afplay /System/Library/Sounds/Glass.aiff
|
|
elif [[ "$OSTYPE" == "linux-gnu" ]]; then
|
|
# Linux
|
|
paplay /usr/share/sounds/freedesktop/stereo/complete.oga
|
|
elif [[ "$OSTYPE" == "msys" || "$OSTYPE" == "win32" ]]; then
|
|
# Windows
|
|
powershell.exe -c "(New-Object Media.SoundPlayer 'C:\Windows\Media\Windows Default.wav').PlaySync()"
|
|
fi
|
|
|
|
# Exit with the rsync command's exit code
|
|
exit $exit_code |