@@ -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+
219228get_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() {
326334install_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
369383install_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]
380400ExecStart=
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]
390410ExecStart=
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]
396416ExecStart=
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