From 55fe32f505759f4f5cf3dab95ea18f47518bafd0 Mon Sep 17 00:00:00 2001 From: IceCodeNew Date: Sat, 5 Sep 2020 10:13:08 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E7=A7=BB=E9=99=A4=E8=B7=AF=E5=BE=84?= =?UTF-8?q?=E5=8F=98=E9=87=8F=E6=9C=AB=E5=B0=BE=E7=9A=84=E6=96=9C=E6=9D=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 我个人更倾向于这样的风格,一方面我认为路径变量就应该使用目录的名字,而既然目录名里不会有 `/`,那所以变量里也不应该带。 另一方面我是真的担心会出现转义导致的问题,一个目录不可能以 `/` 结尾,但可以以 `\` 结尾。变量名里保证不去多此一举加上 `/` 的话,对于 `ugly\` 这样的目录名,我们就可以在之后用到这个变量的时候再来处理转义问题,而不需要对着变量值 `ugly\/` 头疼。 --- install-release.sh | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/install-release.sh b/install-release.sh index 288383c..075eec3 100644 --- a/install-release.sh +++ b/install-release.sh @@ -340,9 +340,9 @@ decompression() { install_file() { NAME="$1" if [[ "$NAME" == 'v2ray' ]] || [[ "$NAME" == 'v2ctl' ]]; then - install -m 755 "${TMP_DIRECTORY}$NAME" "/usr/local/bin/$NAME" + install -m 755 "${TMP_DIRECTORY}/$NAME" "/usr/local/bin/$NAME" elif [[ "$NAME" == 'geoip.dat' ]] || [[ "$NAME" == 'geosite.dat' ]]; then - install -m 644 "${TMP_DIRECTORY}$NAME" "${DAT_PATH}$NAME" + install -m 644 "${TMP_DIRECTORY}/$NAME" "${DAT_PATH}$NAME" fi } @@ -381,9 +381,9 @@ install_v2ray() { install_startup_service_file() { if [[ ! -f '/etc/systemd/system/v2ray.service' ]]; then - mkdir "${TMP_DIRECTORY}systemd/system/" + mkdir "${TMP_DIRECTORY}/systemd/system/" install_software curl - cat > "${TMP_DIRECTORY}systemd/system/v2ray.service" <<-EOF + cat > "${TMP_DIRECTORY}/systemd/system/v2ray.service" <<-EOF [Unit] Description=V2Ray Service After=network.target nss-lookup.target @@ -400,7 +400,7 @@ Restart=on-failure [Install] WantedBy=multi-user.target EOF - cat > "${TMP_DIRECTORY}systemd/system/v2ray@.service" <<-EOF + cat > "${TMP_DIRECTORY}/systemd/system/v2ray@.service" <<-EOF [Unit] Description=V2Ray Service After=network.target nss-lookup.target @@ -417,8 +417,8 @@ Restart=on-failure [Install] WantedBy=multi-user.target EOF - install -m 644 "${TMP_DIRECTORY}systemd/system/v2ray.service" /etc/systemd/system/v2ray.service - install -m 644 "${TMP_DIRECTORY}systemd/system/v2ray@.service" /etc/systemd/system/v2ray@.service + install -m 644 "${TMP_DIRECTORY}/systemd/system/v2ray.service" /etc/systemd/system/v2ray.service + install -m 644 "${TMP_DIRECTORY}/systemd/system/v2ray@.service" /etc/systemd/system/v2ray@.service SYSTEMD='1' fi } @@ -525,8 +525,8 @@ main() { [[ "$REMOVE" -eq '1' ]] && remove_v2ray # Two very important variables - TMP_DIRECTORY="$(mktemp -du)/" - ZIP_FILE="${TMP_DIRECTORY}v2ray-linux-$MACHINE.zip" + TMP_DIRECTORY="$(mktemp -du)" + ZIP_FILE="${TMP_DIRECTORY}/v2ray-linux-$MACHINE.zip" # Install V2Ray from a local file, but still need to make sure the network is available if [[ "$LOCAL_INSTALL" -eq '1' ]]; then From 5d471592fd3f083cc56de0dcee31be43b6d555cd Mon Sep 17 00:00:00 2001 From: IceCodeNew Date: Sat, 5 Sep 2020 10:18:10 +0800 Subject: [PATCH 2/4] Unalias crucial functions when issuing them for preventing user-custom aliases interupt script --- install-release.sh | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/install-release.sh b/install-release.sh index 075eec3..d2eff6c 100644 --- a/install-release.sh +++ b/install-release.sh @@ -254,13 +254,13 @@ get_version() { TMP_FILE="$(mktemp)" install_software curl # DO NOT QUOTE THESE `${PROXY}` VARIABLES! - if ! curl ${PROXY} -o "$TMP_FILE" 'https://api.github.com/repos/v2fly/v2ray-core/releases/latest'; then - rm "$TMP_FILE" + if ! "curl" ${PROXY} -o "$TMP_FILE" 'https://api.github.com/repos/v2fly/v2ray-core/releases/latest'; then + "rm" "$TMP_FILE" echo 'error: Failed to get release list, please check your network.' exit 1 fi RELEASE_LATEST="$(sed 'y/,/\n/' "$TMP_FILE" | grep 'tag_name' | awk -F '"' '{print $4}')" - rm "$TMP_FILE" + "rm" "$TMP_FILE" RELEASE_VERSION="$(version_number "$RELEASE_LATEST")" # Compare V2Ray version numbers if [[ "$RELEASE_VERSION" != "$CURRENT_VERSION" ]]; then @@ -299,15 +299,15 @@ get_version() { } download_v2ray() { - mkdir "$TMP_DIRECTORY" + "mkdir" -p "$TMP_DIRECTORY" DOWNLOAD_LINK="https://github.com/v2fly/v2ray-core/releases/download/$RELEASE_VERSION/v2ray-linux-$MACHINE.zip" echo "Downloading V2Ray archive: $DOWNLOAD_LINK" - if ! curl ${PROXY} -L -H 'Cache-Control: no-cache' -o "$ZIP_FILE" "$DOWNLOAD_LINK"; then + if ! "curl" ${PROXY} -L -H 'Cache-Control: no-cache' -o "$ZIP_FILE" "$DOWNLOAD_LINK"; then echo 'error: Download failed! Please check your network or try again.' return 1 fi echo "Downloading verification file for V2Ray archive: $DOWNLOAD_LINK.dgst" - if ! curl ${PROXY} -L -H 'Cache-Control: no-cache' -o "$ZIP_FILE.dgst" "$DOWNLOAD_LINK.dgst"; then + if ! "curl" ${PROXY} -L -H 'Cache-Control: no-cache' -o "$ZIP_FILE.dgst" "$DOWNLOAD_LINK.dgst"; then echo 'error: Download failed! Please check your network or try again.' return 1 fi @@ -330,7 +330,7 @@ download_v2ray() { decompression() { if ! unzip -q "$1" -d "$TMP_DIRECTORY"; then echo 'error: V2Ray decompression failed.' - rm -r "$TMP_DIRECTORY" + "rm" -r "$TMP_DIRECTORY" echo "removed: $TMP_DIRECTORY" exit 1 fi @@ -381,7 +381,7 @@ install_v2ray() { install_startup_service_file() { if [[ ! -f '/etc/systemd/system/v2ray.service' ]]; then - mkdir "${TMP_DIRECTORY}/systemd/system/" + "mkdir" -p "${TMP_DIRECTORY}/systemd/system/" install_software curl cat > "${TMP_DIRECTORY}/systemd/system/v2ray.service" <<-EOF [Unit] @@ -473,11 +473,11 @@ remove_v2ray() { stop_v2ray fi NAME="$1" - rm /usr/local/bin/v2ray - rm /usr/local/bin/v2ctl - rm -r "$DAT_PATH" - rm /etc/systemd/system/v2ray.service - rm /etc/systemd/system/v2ray@.service + "rm" /usr/local/bin/v2ray + "rm" /usr/local/bin/v2ctl + "rm" -r "$DAT_PATH" + "rm" /etc/systemd/system/v2ray.service + "rm" /etc/systemd/system/v2ray@.service if [[ "$?" -ne '0' ]]; then echo 'error: Failed to remove V2Ray.' exit 1 @@ -534,7 +534,7 @@ main() { echo -n 'warn: Please make sure the file is valid because we cannot confirm it. (Press any key) ...' read install_software unzip - mkdir "$TMP_DIRECTORY" + "mkdir" -p "$TMP_DIRECTORY" decompression "$LOCAL_FILE" else # Normal way @@ -544,7 +544,7 @@ main() { echo "info: Installing V2Ray $RELEASE_VERSION for $(uname -m)" download_v2ray if [[ "$?" -eq '1' ]]; then - rm -r "$TMP_DIRECTORY" + "rm" -r "$TMP_DIRECTORY" echo "removed: $TMP_DIRECTORY" exit 0 fi @@ -596,7 +596,7 @@ main() { echo 'installed: /etc/systemd/system/v2ray.service' echo 'installed: /etc/systemd/system/v2ray@.service' fi - rm -r "$TMP_DIRECTORY" + "rm" -r "$TMP_DIRECTORY" echo "removed: $TMP_DIRECTORY" if [[ "$LOCAL_INSTALL" -eq '1' ]]; then get_version From 2235098bc68d553e5e9425915e049623cd5a2d36 Mon Sep 17 00:00:00 2001 From: IceCodeNew Date: Sat, 5 Sep 2020 10:39:45 +0800 Subject: [PATCH 3/4] Update systemd unit files every time the script is executed MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 脚本安装 systemd unit files 的行为很快会改为从最新的 v2ray-core release 中取得文件。 考虑到这些文件未来会有随 v2ray-core 新版本发布而更新的可能,所以提前做出这样的调整。 --- install-release.sh | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/install-release.sh b/install-release.sh index d2eff6c..ed8961e 100644 --- a/install-release.sh +++ b/install-release.sh @@ -380,10 +380,8 @@ install_v2ray() { } install_startup_service_file() { - if [[ ! -f '/etc/systemd/system/v2ray.service' ]]; then - "mkdir" -p "${TMP_DIRECTORY}/systemd/system/" - install_software curl - cat > "${TMP_DIRECTORY}/systemd/system/v2ray.service" <<-EOF + "mkdir" -p "${TMP_DIRECTORY}/systemd/system/" + cat > "${TMP_DIRECTORY}/systemd/system/v2ray.service" <<-EOF [Unit] Description=V2Ray Service After=network.target nss-lookup.target @@ -417,10 +415,9 @@ Restart=on-failure [Install] WantedBy=multi-user.target EOF - install -m 644 "${TMP_DIRECTORY}/systemd/system/v2ray.service" /etc/systemd/system/v2ray.service - install -m 644 "${TMP_DIRECTORY}/systemd/system/v2ray@.service" /etc/systemd/system/v2ray@.service - SYSTEMD='1' - fi + install -m 644 "${TMP_DIRECTORY}/systemd/system/v2ray.service" /etc/systemd/system/v2ray.service + install -m 644 "${TMP_DIRECTORY}/systemd/system/v2ray@.service" /etc/systemd/system/v2ray@.service + SYSTEMD='1' } start_v2ray() { From 94ae72d39998243012458f2f97c8d08d87eda2fd Mon Sep 17 00:00:00 2001 From: IceCodeNew Date: Sat, 5 Sep 2020 11:06:48 +0800 Subject: [PATCH 4/4] Add `systemctl daemon-reload` necessary for updating systemd unit files. --- install-release.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/install-release.sh b/install-release.sh index ed8961e..afa3e52 100644 --- a/install-release.sh +++ b/install-release.sh @@ -417,6 +417,7 @@ WantedBy=multi-user.target EOF install -m 644 "${TMP_DIRECTORY}/systemd/system/v2ray.service" /etc/systemd/system/v2ray.service install -m 644 "${TMP_DIRECTORY}/systemd/system/v2ray@.service" /etc/systemd/system/v2ray@.service + systemctl daemon-reload SYSTEMD='1' }