@@ -9,9 +9,9 @@ export PATH
99# WebSite: https://about.nange.cn
1010# =================================================
1111
12- sh_ver=" 1.8.1 "
12+ sh_ver=" 1.8.3 "
1313snell_v4_version=" 4.1.1"
14- snell_v5_version=" 5.0.0b3 "
14+ snell_v5_version=" 5.0.0 "
1515script_dir=$( cd " $( dirname " $0 " ) " ; pwd)
1616script_path=$( echo -e " ${script_dir} " | awk -F " $0 " ' {print $1}' )
1717snell_dir=" /etc/snell/"
@@ -143,7 +143,7 @@ checkStatus(){
143143 fi
144144}
145145
146- # 版本号比较函数
146+ # 版本号比较函数(优先正式版)
147147compareVersions (){
148148 local version1=" $1 "
149149 local version2=" $2 "
@@ -157,8 +157,34 @@ compareVersions(){
157157 return 1 # 相等
158158 fi
159159
160- # 使用 sort -V 进行版本号比较
161- if printf ' %s\n' " $version1 " " $version2 " | sort -V | head -1 | grep -q " ^$version1 $" ; then
160+ # 提取基础版本号(去除测试版后缀)
161+ local base_version1=$( echo " $version1 " | sed ' s/[a-z].*//' )
162+ local base_version2=$( echo " $version2 " | sed ' s/[a-z].*//' )
163+
164+ # 检查是否为测试版
165+ local is_beta1=false
166+ local is_beta2=false
167+ [[ " $version1 " =~ [a-z] ]] && is_beta1=true
168+ [[ " $version2 " =~ [a-z] ]] && is_beta2=true
169+
170+ # 如果基础版本号相同
171+ if [[ " $base_version1 " == " $base_version2 " ]]; then
172+ # 优先选择正式版
173+ if [[ " $is_beta1 " == true && " $is_beta2 " == false ]]; then
174+ return 2 # version1 < version2(正式版优先)
175+ elif [[ " $is_beta1 " == false && " $is_beta2 " == true ]]; then
176+ return 0 # version1 > version2(正式版优先)
177+ fi
178+ # 如果都是测试版或都是正式版,使用字母序比较
179+ if [[ " $version1 " < " $version2 " ]]; then
180+ return 2
181+ else
182+ return 0
183+ fi
184+ fi
185+
186+ # 基础版本号不同时,使用 sort -V 进行版本号比较
187+ if printf ' %s\n' " $base_version1 " " $base_version2 " | sort -V | head -1 | grep -q " ^$base_version1 $" ; then
162188 return 2 # version1 < version2
163189 else
164190 return 0 # version1 > version2
@@ -325,7 +351,7 @@ downloadSnellV4(){
325351
326352# 下载并安装 Snell v5(官方源)
327353downloadSnellV5 (){
328- downloadSnell " ${snell_v5_version} " " v5 Beta 官网源版"
354+ downloadSnell " ${snell_v5_version} " " v5 官网源版"
329355}
330356
331357# 通用下载并安装 Snell 函数(带回退机制)
@@ -387,7 +413,7 @@ installSnell() {
387413 fi
388414 echo -e " 选择安装版本${Yellow_font_prefix} [2-5]${Font_color_suffix}
389415==================================
390- ${Green_font_prefix} 2.${Font_color_suffix} v2 ${Green_font_prefix} 3.${Font_color_suffix} v3 ${Green_font_prefix} 4.${Font_color_suffix} v4 ${Green_font_prefix} 5.${Font_color_suffix} v5${Yellow_font_prefix} (beta) ${Font_color_suffix}
416+ ${Green_font_prefix} 2.${Font_color_suffix} v2 ${Green_font_prefix} 3.${Font_color_suffix} v3 ${Green_font_prefix} 4.${Font_color_suffix} v4 ${Green_font_prefix} 5.${Font_color_suffix} v5
391417=================================="
392418 read -e -p " (默认:4.v4):" ver
393419 [[ -z " ${ver} " ]] && ver=" 4"
@@ -547,7 +573,7 @@ ${Green_font_prefix} 1.${Font_color_suffix} TLS ${Green_font_prefix} 2.${Font_c
547573setVer (){
548574 echo -e " 配置 Snell Server 协议版本${Yellow_font_prefix} [2-5]${Font_color_suffix}
549575==================================
550- ${Green_font_prefix} 2.${Font_color_suffix} v2 ${Green_font_prefix} 3.${Font_color_suffix} v3 ${Green_font_prefix} 4.${Font_color_suffix} v4 ${Green_font_prefix} 5.${Font_color_suffix} v5${Yellow_font_prefix} (beta) ${Font_color_suffix}
576+ ${Green_font_prefix} 2.${Font_color_suffix} v2 ${Green_font_prefix} 3.${Font_color_suffix} v3 ${Green_font_prefix} 4.${Font_color_suffix} v4 ${Green_font_prefix} 5.${Font_color_suffix} v5
551577=================================="
552578 read -e -p " (默认:4.v4):" ver
553579 [[ -z " ${ver} " ]] && ver=" 4"
@@ -767,7 +793,6 @@ installSnellV4(){
767793installSnellV5 (){
768794 checkRoot
769795 [[ -e ${snell_bin} ]] && echo -e " ${Error} 检测到 Snell Server 已安装,请先卸载旧版再安装新版!" && exit 1
770- echo -e " ${Tip} 您选择的是 v5 ${Yellow_font_prefix} Beta${Font_color_suffix} 版本,此版本为测试版本,可能存在不稳定因素!"
771796 echo -e " ${Info} 开始设置 配置..."
772797 setPort
773798 setPSK
@@ -849,8 +874,7 @@ updateV4toV5(){
849874 return 1
850875 fi
851876
852- echo -e " ${Tip} 即将将 Snell Server 从 v4 更新到 v5 ${Yellow_font_prefix} Beta${Font_color_suffix} 版本"
853- echo -e " ${Tip} v5 为测试版本,可能存在不稳定因素!"
877+ echo -e " ${Info} 即将将 Snell Server 从 v4 更新到 v5 版本"
854878 echo -e " 确定要更新吗?(y/N)"
855879 read -e -p " (默认: n):" confirm
856880 [[ -z " ${confirm} " ]] && confirm=" n"
@@ -909,7 +933,7 @@ updateV4toV5(){
909933
910934 # 下载并安装 v5,启用回退机制
911935 echo -e " ${Info} 开始下载 v5 版本..."
912- downloadSnell " ${target_v5_version} " " v5 Beta 版本" true " ${current_v4_version} "
936+ downloadSnell " ${target_v5_version} " " v5 版本" true " ${current_v4_version} "
913937
914938 if [[ $? -eq 0 ]]; then
915939 # 更新配置文件中的版本号
@@ -927,7 +951,7 @@ updateV4toV5(){
927951 if [[ " $status " == " running" ]]; then
928952 actual_version=$( cat ${snell_version_file} | sed ' s/^v//' )
929953 echo -e " ${Info} v4 到 v5 更新成功!"
930- echo -e " ${Info} 当前版本:v${actual_version} ${Yellow_font_prefix} Beta ${Font_color_suffix} "
954+ echo -e " ${Info} 当前版本:v${actual_version} "
931955
932956 # 如果实际版本是 v4(说明回退了),更新配置文件版本号
933957 if [[ " $actual_version " =~ ^4\. ]]; then
@@ -1034,7 +1058,7 @@ updateSnellServer(){
10341058 downloadSnell " ${latest_available_version} " " v4 最新版" true " ${current_installed_version} "
10351059 ;;
10361060 " 5" )
1037- downloadSnell " ${latest_available_version} " " v5 Beta 最新版" true " ${current_installed_version} "
1061+ downloadSnell " ${latest_available_version} " " v5 最新版" true " ${current_installed_version} "
10381062 ;;
10391063 * )
10401064 echo -e " ${Error} 不支持的版本: v${ver} "
@@ -1513,7 +1537,7 @@ Snell Server 管理脚本 ${Red_font_prefix}[v${sh_ver}]${Font_color_suffix}
15131537 else
15141538 echo -e " ${Green_font_prefix} 3.${Font_color_suffix} 更新 Snell Server"
15151539 fi
1516- echo -e " ${Green_font_prefix} 4.${Font_color_suffix} v4 更新到 v5${Yellow_font_prefix} (Beta) ${Font_color_suffix}
1540+ echo -e " ${Green_font_prefix} 4.${Font_color_suffix} v4 更新到 v5
15171541——————————————————————————————
15181542 ${Green_font_prefix} 5.${Font_color_suffix} 启动 Snell Server
15191543 ${Green_font_prefix} 6.${Font_color_suffix} 停止 Snell Server
0 commit comments