Skip to content

Commit a9c7b8d

Browse files
digglifedctxmei
andauthored
fix: incompatible CLI usage since v5 (#246)
Co-authored-by: Dct Mei <[email protected]>
1 parent adf2229 commit a9c7b8d

File tree

1 file changed

+37
-13
lines changed

1 file changed

+37
-13
lines changed

install-release.sh

Lines changed: 37 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,15 @@ install_software() {
216216
fi
217217
}
218218

219+
get_current_version() {
220+
if /usr/local/bin/v2ray -version >/dev/null 2>&1;then
221+
VERSION="$(/usr/local/bin/v2ray -version | awk 'NR==1 {print $2}')"
222+
else
223+
VERSION="$(/usr/local/bin/v2ray version | awk 'NR==1 {print $2}')"
224+
fi
225+
CURRENT_VERSION="v${VERSION#v}"
226+
}
227+
219228
get_version() {
220229
# 0: Install or update V2Ray.
221230
# 1: Installed or no new version of V2Ray.
@@ -226,8 +235,7 @@ get_version() {
226235
fi
227236
# Determine the version number for V2Ray installed from a local file
228237
if [[ -f '/usr/local/bin/v2ray' ]]; then
229-
VERSION="$(/usr/local/bin/v2ray -version | awk 'NR==1 {print $2}')"
230-
CURRENT_VERSION="v${VERSION#v}"
238+
get_current_version
231239
if [[ "$LOCAL_INSTALL" -eq '1' ]]; then
232240
RELEASE_VERSION="$CURRENT_VERSION"
233241
return
@@ -250,10 +258,10 @@ get_version() {
250258
RELEASE_MINOR_VERSION_NUMBER="$(echo "$RELEASE_VERSIONSION_NUMBER" | awk -F '.' '{print $2}')"
251259
RELEASE_MINIMUM_VERSION_NUMBER="${RELEASE_VERSIONSION_NUMBER##*.}"
252260
# shellcheck disable=SC2001
253-
CURRENT_VERSIONSION_NUMBER="$(echo "${CURRENT_VERSION#v}" | sed 's/-.*//')"
254-
CURRENT_MAJOR_VERSION_NUMBER="${CURRENT_VERSIONSION_NUMBER%%.*}"
255-
CURRENT_MINOR_VERSION_NUMBER="$(echo "$CURRENT_VERSIONSION_NUMBER" | awk -F '.' '{print $2}')"
256-
CURRENT_MINIMUM_VERSION_NUMBER="${CURRENT_VERSIONSION_NUMBER##*.}"
261+
CURRENT_VERSION_NUMBER="$(echo "${CURRENT_VERSION#v}" | sed 's/-.*//')"
262+
CURRENT_MAJOR_VERSION_NUMBER="${CURRENT_VERSION_NUMBER%%.*}"
263+
CURRENT_MINOR_VERSION_NUMBER="$(echo "$CURRENT_VERSION_NUMBER" | awk -F '.' '{print $2}')"
264+
CURRENT_MINIMUM_VERSION_NUMBER="${CURRENT_VERSION_NUMBER##*.}"
257265
if [[ "$RELEASE_MAJOR_VERSION_NUMBER" -gt "$CURRENT_MAJOR_VERSION_NUMBER" ]]; then
258266
return 0
259267
elif [[ "$RELEASE_MAJOR_VERSION_NUMBER" -eq "$CURRENT_MAJOR_VERSION_NUMBER" ]]; then
@@ -326,7 +334,13 @@ install_file() {
326334
install_v2ray() {
327335
# Install V2Ray binary to /usr/local/bin/ and $DAT_PATH
328336
install_file v2ray
329-
install_file v2ctl
337+
if [[ -f "${TMP_DIRECTORY}/v2ctl" ]]; then
338+
install_file v2ctl
339+
else
340+
if [[ -f '/usr/local/bin/v2ctl' ]]; then
341+
rm '/usr/local/bin/v2ctl'
342+
fi
343+
fi
330344
install -d "$DAT_PATH"
331345
# If the file exists, geoip.dat and geosite.dat will not be installed or updated
332346
if [[ ! -f "${DAT_PATH}/.undat" ]]; then
@@ -367,6 +381,12 @@ install_v2ray() {
367381
}
368382

369383
install_startup_service_file() {
384+
get_current_version
385+
if [[ "$(echo "${CURRENT_VERSION#v}" | sed 's/-.*//' | awk -F'.' '{print $1}')" -gt "4" ]];then
386+
START_COMMAND="/usr/local/bin/v2ray run"
387+
else
388+
START_COMMAND="/usr/local/bin/v2ray"
389+
fi
370390
install -m 644 "${TMP_DIRECTORY}/systemd/system/v2ray.service" /etc/systemd/system/v2ray.service
371391
install -m 644 "${TMP_DIRECTORY}/systemd/system/[email protected]" /etc/systemd/system/[email protected]
372392
mkdir -p '/etc/systemd/system/v2ray.service.d'
@@ -378,7 +398,7 @@ install_startup_service_file() {
378398
# Or all changes you made will be lost! # Refer: https://www.freedesktop.org/software/systemd/man/systemd.unit.html
379399
[Service]
380400
ExecStart=
381-
ExecStart=/usr/local/bin/v2ray -confdir $JSONS_PATH" |
401+
ExecStart=${START_COMMAND} -confdir $JSONS_PATH" |
382402
tee '/etc/systemd/system/v2ray.service.d/10-donot_touch_multi_conf.conf' > \
383403
'/etc/systemd/system/[email protected]/10-donot_touch_multi_conf.conf'
384404
else
@@ -388,13 +408,13 @@ ExecStart=/usr/local/bin/v2ray -confdir $JSONS_PATH" |
388408
# Or all changes you made will be lost! # Refer: https://www.freedesktop.org/software/systemd/man/systemd.unit.html
389409
[Service]
390410
ExecStart=
391-
ExecStart=/usr/local/bin/v2ray -config ${JSON_PATH}/config.json" > \
411+
ExecStart=${START_COMMAND} -config ${JSON_PATH}/config.json" > \
392412
'/etc/systemd/system/v2ray.service.d/10-donot_touch_single_conf.conf'
393413
echo "# In case you have a good reason to do so, duplicate this file in the same directory and make your customizes there.
394414
# Or all changes you made will be lost! # Refer: https://www.freedesktop.org/software/systemd/man/systemd.unit.html
395415
[Service]
396416
ExecStart=
397-
ExecStart=/usr/local/bin/v2ray -config ${JSON_PATH}/%i.json" > \
417+
ExecStart=${START_COMMAND} -config ${JSON_PATH}/%i.json" > \
398418
'/etc/systemd/system/[email protected]/10-donot_touch_single_conf.conf'
399419
fi
400420
echo "info: Systemd service files have been installed successfully!"
@@ -458,7 +478,6 @@ remove_v2ray() {
458478
stop_v2ray
459479
fi
460480
if ! ("rm" -r '/usr/local/bin/v2ray' \
461-
'/usr/local/bin/v2ctl' \
462481
"$DAT_PATH" \
463482
'/etc/systemd/system/v2ray.service' \
464483
'/etc/systemd/system/[email protected]' \
@@ -468,7 +487,10 @@ remove_v2ray() {
468487
exit 1
469488
else
470489
echo 'removed: /usr/local/bin/v2ray'
471-
echo 'removed: /usr/local/bin/v2ctl'
490+
if [[ -f '/usr/local/bin/v2ctl' ]]; then
491+
rm '/usr/local/bin/v2ctl'
492+
echo 'removed: /usr/local/bin/v2ctl'
493+
fi
472494
echo "removed: $DAT_PATH"
473495
echo 'removed: /etc/systemd/system/v2ray.service'
474496
echo 'removed: /etc/systemd/system/[email protected]'
@@ -563,7 +585,9 @@ main() {
563585
install_v2ray
564586
install_startup_service_file
565587
echo 'installed: /usr/local/bin/v2ray'
566-
echo 'installed: /usr/local/bin/v2ctl'
588+
if [[ -f '/usr/local/bin/v2ctl' ]]; then
589+
echo 'installed: /usr/local/bin/v2ctl'
590+
fi
567591
# If the file exists, the content output of installing or updating geoip.dat and geosite.dat will not be displayed
568592
if [[ ! -f "${DAT_PATH}/.undat" ]]; then
569593
echo "installed: ${DAT_PATH}/geoip.dat"

0 commit comments

Comments
 (0)