refactor(set_shadowsocks): replace recursion with while loop

This commit is contained in:
Sofia
2026-01-18 09:03:44 +08:00
committed by GitHub
parent 588afd7381
commit b4bbaba73d

View File

@@ -365,6 +365,7 @@ EOF
} }
set_shadowsocks() { set_shadowsocks() {
while true; do
echo "-----------------------------------------------" echo "-----------------------------------------------"
echo -e "\033[31m注意\033[0m设置的端口会添加到公网访问防火墙并自动放行\n 脚本只提供基础功能,更多需求请用自定义配置文件功能!" echo -e "\033[31m注意\033[0m设置的端口会添加到公网访问防火墙并自动放行\n 脚本只提供基础功能,更多需求请用自定义配置文件功能!"
echo -e " \033[31m切勿用于搭建违法翻墙节点违者后果自负\033[0m" echo -e " \033[31m切勿用于搭建违法翻墙节点违者后果自负\033[0m"
@@ -378,9 +379,11 @@ set_shadowsocks(){
echo -e " 5 一键生成分享链接" echo -e " 5 一键生成分享链接"
echo -e " 0 返回上级菜单 \033[0m" echo -e " 0 返回上级菜单 \033[0m"
echo "-----------------------------------------------" echo "-----------------------------------------------"
read -p "请输入对应数字 > " num read -r -p "请输入对应数字 > " num
case "$num" in case "$num" in
0) ;; "" | 0)
break
;;
1) 1)
if [ "$sss_service" = ON ]; then if [ "$sss_service" = ON ]; then
sss_service=OFF sss_service=OFF
@@ -394,10 +397,9 @@ set_shadowsocks(){
sleep 1 sleep 1
fi fi
fi fi
set_shadowsocks
;; ;;
2) 2)
read -p "请输入端口号(输入0删除) > " text read -r -p "请输入端口号(输入0删除) > " text
if [ "$text" = 0 ]; then if [ "$text" = 0 ]; then
sss_port='' sss_port=''
setconfig sss_port "" "$GT_CFG_PATH" setconfig sss_port "" "$GT_CFG_PATH"
@@ -407,7 +409,6 @@ set_shadowsocks(){
else else
sleep 1 sleep 1
fi fi
set_shadowsocks
;; ;;
3) 3)
echo "-----------------------------------------------" echo "-----------------------------------------------"
@@ -424,9 +425,9 @@ set_shadowsocks(){
} }
echo "-----------------------------------------------" echo "-----------------------------------------------"
echo -e " 0 返回上级菜单" echo -e " 0 返回上级菜单"
read -p "请选择要使用的加密协议 > " num read -r -p "请选择要使用的加密协议 > " num
case "$num" in case "$num" in
1) "" | 1)
sss_cipher=xchacha20-ietf-poly1305 sss_cipher=xchacha20-ietf-poly1305
sss_pwd=$(gen_random 16) sss_pwd=$(gen_random 16)
;; ;;
@@ -454,26 +455,23 @@ set_shadowsocks(){
sss_cipher=2022-blake3-aes-256-gcm sss_cipher=2022-blake3-aes-256-gcm
sss_pwd=$(gen_random 32) sss_pwd=$(gen_random 32)
;; ;;
*) *) ;;
;;
esac esac
setconfig sss_cipher "$sss_cipher" "$GT_CFG_PATH" setconfig sss_cipher "$sss_cipher" "$GT_CFG_PATH"
setconfig sss_pwd "$sss_pwd" "$GT_CFG_PATH" setconfig sss_pwd "$sss_pwd" "$GT_CFG_PATH"
set_shadowsocks
;; ;;
4) 4)
if echo "$sss_cipher" | grep -q '2022-blake3'; then if echo "$sss_cipher" | grep -q '2022-blake3'; then
echo -e "\033[31m注意\033[0m2022系列加密必须使用脚本随机生成的password" echo -e "\033[31m注意\033[0m2022系列加密必须使用脚本随机生成的password"
sleep 1 sleep 1
else else
read -p "请输入秘钥(输入0删除) > " text read -r -p "请输入秘钥(输入0删除) > " text
[ "$text" = 0 ] && sss_pwd='' || sss_pwd="$text" [ "$text" = 0 ] && sss_pwd='' || sss_pwd="$text"
setconfig sss_pwd "$text" "$GT_CFG_PATH" setconfig sss_pwd "$text" "$GT_CFG_PATH"
fi fi
set_shadowsocks
;; ;;
5) 5)
read -p "请输入本机公网IP(4/6)或域名 > " text read -r -p "请输入本机公网IP(4/6)或域名 > " text
if [ -n "$text" ] && [ -n "$sss_port" ] && [ -n "$sss_cipher" ] && [ -n "$sss_pwd" ]; then if [ -n "$text" ] && [ -n "$sss_port" ] && [ -n "$sss_cipher" ] && [ -n "$sss_pwd" ]; then
ss_link="ss://$(gen_base64 "$sss_cipher":"$sss_pwd")@${text}:${sss_port}#ShellCrash_ss_in" ss_link="ss://$(gen_base64 "$sss_cipher":"$sss_pwd")@${text}:${sss_port}#ShellCrash_ss_in"
echo "-----------------------------------------------" echo "-----------------------------------------------"
@@ -482,10 +480,13 @@ set_shadowsocks(){
echo -e "\033[31m请先完成必选设置\033[0m" echo -e "\033[31m请先完成必选设置\033[0m"
fi fi
sleep 1 sleep 1
set_shadowsocks
;; ;;
*) errornum ;; *)
errornum
sleep 1
;;
esac esac
done
} }
# 自定义端点 # 自定义端点