diff --git a/install.sh b/install.sh index 7d6f537b..492f260b 100644 --- a/install.sh +++ b/install.sh @@ -51,8 +51,8 @@ FontSkyBlue="\033[36m"; FontWhite="\033[37m"; FontSuffix="\033[0m"; -curl() { - $(type -P curl) -L -q --retry 5 --retry-delay 10 --retry-max-time 60 "$@" +curl_with_retry() { + $(type -P curl) -x "${PROXY}" -L -q --retry 5 --retry-delay 10 --retry-max-time 60 "$@" } ## Demo function for processing parameters @@ -102,9 +102,9 @@ judgment_parameters() { esac shift done - if ((INSTALL+HELP+REMOVE==0)); then + if [ "$(expr $INSTALL + $HELP + $REMOVE)" -eq 0 ]; then INSTALL='1' - elif ((INSTALL+HELP+REMOVE>1)); then + elif [ "$(expr $INSTALL + $HELP + $REMOVE)" -gt 1 ]; then echo 'You can only choose one action.' exit 1 fi @@ -133,7 +133,7 @@ systemd_cat_config() { check_if_running_as_root() { # If you want to run as another user, please modify $EUID to be owned by this user - if [[ "$EUID" -ne '0' ]]; then + if [ "$(id -u)" != "0" ]; then echo -e "${FontRed}error: You must run this script as root!${FontSuffix}" exit 1 fi @@ -229,7 +229,7 @@ install_software() { get_latest_version() { # Get latest release version number local latest_release - if ! latest_release=$(curl -x "${PROXY}" -sS -H "Accept: application/vnd.github.v3+json" "https://api.github.com/repos/0xJacky/nginx-ui/releases/latest"); then + if ! latest_release=$(curl_with_retry -sS -H "Accept: application/vnd.github.v3+json" "https://api.github.com/repos/0xJacky/nginx-ui/releases/latest"); then echo -e "${FontRed}error: Failed to get release list, please check your network.${FontSuffix}" exit 1 fi @@ -252,7 +252,7 @@ download_nginx_ui() { download_link="${RPROXY}https://github.com/0xJacky/nginx-ui/releases/download/$RELEASE_LATEST/nginx-ui-linux-$MACHINE.tar.gz" echo "Downloading Nginx UI archive: $download_link" - if ! curl -x "${PROXY}" -R -H 'Cache-Control: no-cache' -L -o "$TAR_FILE" "$download_link"; then + if ! curl_with_retry -R -H 'Cache-Control: no-cache' -L -o "$TAR_FILE" "$download_link"; then echo 'error: Download failed! Please check your network or try again.' return 1 fi @@ -296,7 +296,7 @@ install_systemd_service() { local service_download_link="${RPROXY}https://raw.githubusercontent.com/0xJacky/nginx-ui/main/resources/services/nginx-ui.service" echo "Downloading Nginx UI service file: $service_download_link" - if ! curl -x "${PROXY}" -R -H 'Cache-Control: no-cache' -L -o "$ServicePath" "$service_download_link"; then + if ! curl_with_retry -R -H 'Cache-Control: no-cache' -L -o "$ServicePath" "$service_download_link"; then echo -e "${FontRed}error: Download service file failed! Please check your network or try again.${FontSuffix}" return 1 fi @@ -314,7 +314,7 @@ install_openrc_service() { local openrc_download_link="${RPROXY}https://raw.githubusercontent.com/0xJacky/nginx-ui/main/resources/services/nginx-ui.rc" echo "Downloading Nginx UI OpenRC file: $openrc_download_link" - if ! curl -x "${PROXY}" -R -H 'Cache-Control: no-cache' -L -o "$OpenRCPath" "$openrc_download_link"; then + if ! curl_with_retry -R -H 'Cache-Control: no-cache' -L -o "$OpenRCPath" "$openrc_download_link"; then echo -e "${FontRed}error: Download OpenRC file failed! Please check your network or try again.${FontSuffix}" return 1 fi @@ -335,7 +335,7 @@ install_initd_service() { local initd_download_link="${RPROXY}https://raw.githubusercontent.com/0xJacky/nginx-ui/main/resources/services/nginx-ui.init" echo "Downloading Nginx UI init.d file: $initd_download_link" - if ! curl -x "${PROXY}" -R -H 'Cache-Control: no-cache' -L -o "$InitPath" "$initd_download_link"; then + if ! curl_with_retry -R -H 'Cache-Control: no-cache' -L -o "$InitPath" "$initd_download_link"; then echo -e "${FontRed}error: Download init.d file failed! Please check your network or try again.${FontSuffix}" exit 1 fi @@ -439,18 +439,18 @@ remove_nginx_ui() { if [[ -n "$(pidof nginx-ui)" ]]; then stop_nginx_ui fi - local delete_files=('/usr/local/bin/nginx-ui' '/etc/systemd/system/nginx-ui.service' '/etc/systemd/system/nginx-ui.service.d') + delete_files="/usr/local/bin/nginx-ui /etc/systemd/system/nginx-ui.service /etc/systemd/system/nginx-ui.service.d" if [[ "$PURGE" -eq '1' ]]; then - [[ -d "$DataPath" ]] && delete_files+=("$DataPath") + [[ -d "$DataPath" ]] && delete_files="$delete_files $DataPath" fi systemctl disable nginx-ui - if ! ("rm" -r "${delete_files[@]}"); then + if ! ("rm" -r $delete_files); then echo -e "${FontRed}error: Failed to remove Nginx UI.${FontSuffix}" exit 1 else - for i in "${!delete_files[@]}" + for file in $delete_files do - echo "removed: ${delete_files[$i]}" + echo "removed: $file" done systemctl daemon-reload echo "You may need to execute a command to remove dependent software: $PACKAGE_MANAGEMENT_REMOVE curl" @@ -465,21 +465,21 @@ remove_nginx_ui() { if rc-service nginx-ui status | grep -q "started"; then stop_nginx_ui fi - local delete_files=('/usr/local/bin/nginx-ui' "$OpenRCPath") + delete_files="/usr/local/bin/nginx-ui $OpenRCPath" if [[ "$PURGE" -eq '1' ]]; then - [[ -d "$DataPath" ]] && delete_files+=("$DataPath") + [[ -d "$DataPath" ]] && delete_files="$delete_files $DataPath" fi # Remove from runlevels rc-update del nginx-ui default - if ! ("rm" -r "${delete_files[@]}"); then + if ! ("rm" -r $delete_files); then echo -e "${FontRed}error: Failed to remove Nginx UI.${FontSuffix}" exit 1 else - for i in "${!delete_files[@]}" + for file in $delete_files do - echo "removed: ${delete_files[$i]}" + echo "removed: $file" done echo "You may need to execute a command to remove dependent software: $PACKAGE_MANAGEMENT_REMOVE curl" echo 'info: Nginx UI has been removed.' @@ -493,9 +493,9 @@ remove_nginx_ui() { if [[ -n "$(pidof nginx-ui)" ]]; then stop_nginx_ui fi - local delete_files=('/usr/local/bin/nginx-ui' "$InitPath") + delete_files="/usr/local/bin/nginx-ui $InitPath" if [[ "$PURGE" -eq '1' ]]; then - [[ -d "$DataPath" ]] && delete_files+=("$DataPath") + [[ -d "$DataPath" ]] && delete_files="$delete_files $DataPath" fi # Remove from startup based on distro @@ -505,13 +505,13 @@ remove_nginx_ui() { /usr/sbin/update-rc.d -f nginx-ui remove fi - if ! ("rm" -r "${delete_files[@]}"); then + if ! ("rm" -r $delete_files); then echo -e "${FontRed}error: Failed to remove Nginx UI.${FontSuffix}" exit 1 else - for i in "${!delete_files[@]}" + for file in $delete_files do - echo "removed: ${delete_files[$i]}" + echo "removed: $file" done echo "You may need to execute a command to remove dependent software: $PACKAGE_MANAGEMENT_REMOVE curl" echo 'info: Nginx UI has been removed.'