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

@@ -364,128 +364,129 @@ EOF
done done
} }
set_shadowsocks(){ set_shadowsocks() {
echo "-----------------------------------------------" while true; do
echo -e "\033[31m注意\033[0m设置的端口会添加到公网访问防火墙并自动放行\n 脚本只提供基础功能,更多需求请用自定义配置文件功能!" echo "-----------------------------------------------"
echo -e " \033[31m切勿用于搭建违法翻墙节点,违者后果自负!\033[0m" echo -e "\033[31m注意:\033[0m设置的端口会添加到公网访问防火墙并自动放行\n 脚本只提供基础功能,更多需求请用自定义配置文件功能!"
echo "-----------------------------------------------" echo -e " \033[31m切勿用于搭建违法翻墙节点违者后果自负\033[0m"
echo -e " 1 \033[32m启用/关闭\033[0mShadowSocks入站 \033[32m$sss_service\033[0m" echo "-----------------------------------------------"
echo "-----------------------------------------------" echo -e " 1 \033[32m启用/关闭\033[0mShadowSocks入站 \033[32m$sss_service\033[0m"
echo -e " 2 设置\033[36m监听端口\033[0m \033[36m$sss_port\033[0m" echo "-----------------------------------------------"
echo -e " 3 选择\033[33m加密协议\033[0m \033[33m$sss_cipher\033[0m" echo -e " 2 设置\033[36m监听端口\033[0m \033[36m$sss_port\033[0m"
echo -e " 4 设置\033[36mpassword\033[0m \033[36m$sss_pwd\033[0m" echo -e " 3 选择\033[33m加密协议\033[0m \033[33m$sss_cipher\033[0m"
gen_base64 1 >/dev/null 2>&1 && echo -e " 4 设置\033[36mpassword\033[0m \033[36m$sss_pwd\033[0m"
echo -e " 5 一键生成分享链接" gen_base64 1 >/dev/null 2>&1 &&
echo -e " 0 返回上级菜单 \033[0m" echo -e " 5 一键生成分享链接"
echo "-----------------------------------------------" echo -e " 0 返回上级菜单 \033[0m"
read -p "请输入对应数字 > " num echo "-----------------------------------------------"
case "$num" in read -r -p "请输入对应数字 > " num
0) ;; case "$num" in
1) "" | 0)
if [ "$sss_service" = ON ];then break
sss_service=OFF ;;
setconfig sss_service "$sss_service" 1)
else if [ "$sss_service" = ON ]; then
if [ -n "$sss_port" ] && [ -n "$sss_cipher" ] && [ -n "$sss_pwd" ];then sss_service=OFF
sss_service=ON setconfig sss_service "$sss_service"
setconfig sss_service "$sss_service" else
else if [ -n "$sss_port" ] && [ -n "$sss_cipher" ] && [ -n "$sss_pwd" ]; then
echo -e "\033[31m请先完成必选设置\033[0m" sss_service=ON
sleep 1 setconfig sss_service "$sss_service"
fi else
fi echo -e "\033[31m请先完成必选设置\033[0m"
set_shadowsocks sleep 1
;; fi
2) fi
read -p "请输入端口号(输入0删除) > " text ;;
if [ "$text" = 0 ];then 2)
sss_port='' read -r -p "请输入端口号(输入0删除) > " text
setconfig sss_port "" "$GT_CFG_PATH" if [ "$text" = 0 ]; then
elif check_port "$text"; then sss_port=''
sss_port="$text" setconfig sss_port "" "$GT_CFG_PATH"
setconfig sss_port "$text" "$GT_CFG_PATH" elif check_port "$text"; then
else sss_port="$text"
sleep 1 setconfig sss_port "$text" "$GT_CFG_PATH"
fi else
set_shadowsocks sleep 1
;; fi
3) ;;
echo "-----------------------------------------------" 3)
echo -e " 1 \033[32mxchacha20-ietf-poly1305\033[0m" echo "-----------------------------------------------"
echo -e " 2 \033[32mchacha20-ietf-poly1305\033[0m" echo -e " 1 \033[32mxchacha20-ietf-poly1305\033[0m"
echo -e " 3 \033[32maes-128-gcm\033[0m" echo -e " 2 \033[32mchacha20-ietf-poly1305\033[0m"
echo -e " 4 \033[32maes-256-gcm\033[0m" echo -e " 3 \033[32maes-128-gcm\033[0m"
gen_random 1 >/dev/null && { echo -e " 4 \033[32maes-256-gcm\033[0m"
echo "-----------------------------------------------" gen_random 1 >/dev/null && {
echo -e "\033[31m注意\033[0m2022系列加密必须使用随机生成的password" echo "-----------------------------------------------"
echo -e " 5 \033[32m2022-blake3-chacha20-poly1305\033[0m" echo -e "\033[31m注意\033[0m2022系列加密必须使用随机生成的password"
echo -e " 6 \033[32m2022-blake3-aes-128-gcm\033[0m" echo -e " 5 \033[32m2022-blake3-chacha20-poly1305\033[0m"
echo -e " 7 \033[32m2022-blake3-aes-256-gcm\033[0m" echo -e " 6 \033[32m2022-blake3-aes-128-gcm\033[0m"
} echo -e " 7 \033[32m2022-blake3-aes-256-gcm\033[0m"
echo "-----------------------------------------------" }
echo -e " 0 返回上级菜单" echo "-----------------------------------------------"
read -p "请选择要使用的加密协议 > " num echo -e " 0 返回上级菜单"
case "$num" in read -r -p "请选择要使用的加密协议 > " num
1) case "$num" in
sss_cipher=xchacha20-ietf-poly1305 "" | 1)
sss_pwd=$(gen_random 16) sss_cipher=xchacha20-ietf-poly1305
;; sss_pwd=$(gen_random 16)
2) ;;
sss_cipher=chacha20-ietf-poly1305 2)
sss_pwd=$(gen_random 16) sss_cipher=chacha20-ietf-poly1305
;; sss_pwd=$(gen_random 16)
3) ;;
sss_cipher=aes-128-gcm 3)
sss_pwd=$(gen_random 16) sss_cipher=aes-128-gcm
;; sss_pwd=$(gen_random 16)
4) ;;
sss_cipher=aes-256-gcm 4)
sss_pwd=$(gen_random 16) sss_cipher=aes-256-gcm
;; sss_pwd=$(gen_random 16)
5) ;;
sss_cipher=2022-blake3-chacha20-poly1305 5)
sss_pwd=$(gen_random 32) sss_cipher=2022-blake3-chacha20-poly1305
;; sss_pwd=$(gen_random 32)
6) ;;
sss_cipher=2022-blake3-aes-128-gcm 6)
sss_pwd=$(gen_random 16) sss_cipher=2022-blake3-aes-128-gcm
;; sss_pwd=$(gen_random 16)
7) ;;
sss_cipher=2022-blake3-aes-256-gcm 7)
sss_pwd=$(gen_random 32) sss_cipher=2022-blake3-aes-256-gcm
;; 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 -r -p "请输入秘钥(输入0删除) > " text
read -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)
;; read -r -p "请输入本机公网IP(4/6)或域名 > " text
5) if [ -n "$text" ] && [ -n "$sss_port" ] && [ -n "$sss_cipher" ] && [ -n "$sss_pwd" ]; then
read -p "请输入本机公网IP(4/6)或域名 > " text ss_link="ss://$(gen_base64 "$sss_cipher":"$sss_pwd")@${text}:${sss_port}#ShellCrash_ss_in"
if [ -n "$text" ] && [ -n "$sss_port" ] && [ -n "$sss_cipher" ] && [ -n "$sss_pwd" ];then echo "-----------------------------------------------"
ss_link="ss://$(gen_base64 "$sss_cipher":"$sss_pwd")@${text}:${sss_port}#ShellCrash_ss_in" echo -e "你的分享链接是(请勿随意分享给他人):\n\033[32m$ss_link\033[0m"
echo "-----------------------------------------------" else
echo -e "你的分享链接是(请勿随意分享给他人):\n\033[32m$ss_link\033[0m" echo -e "\033[31m请先完成必选设置\033[0m"
else fi
echo -e "\033[31m请先完成必选设置\033[0m" sleep 1
fi ;;
sleep 1 *)
set_shadowsocks errornum
;; sleep 1
*) errornum ;; ;;
esac esac
done
} }
# 自定义端点 # 自定义端点