refactor(gateway): replace recursion with while loop

This commit is contained in:
Sofia
2026-01-11 01:37:56 +08:00
committed by GitHub
parent 093fffee05
commit d797838378

View File

@@ -8,72 +8,74 @@ __IS_MODULE_7_GATEWAY_LOADED=1
. "$CRASHDIR"/menus/check_port.sh . "$CRASHDIR"/menus/check_port.sh
. "$CRASHDIR"/libs/gen_base64.sh . "$CRASHDIR"/libs/gen_base64.sh
#访问与控制主菜单 # 访问与控制主菜单
gateway(){ gateway() {
echo "-----------------------------------------------" while true; do
echo -e "\033[30;47m欢迎使用访问与控制菜单\033[0m"
echo "-----------------------------------------------"
echo -e " 1 配置\033[33m公网访问防火墙 \033[32m$fw_wan\033[0m"
echo -e " 2 配置\033[36mTelegram专属控制机器人 \033[32m$bot_tg_service\033[0m"
echo -e " 3 配置\033[36mDDNS自动域名\033[0m"
[ "$disoverride" != "1" ] && {
echo -e " 4 自定义\033[33m公网Vmess入站\033[0m节点 \033[32m$vms_service\033[0m"
echo -e " 5 自定义\033[33m公网ShadowSocks入站\033[0m节点 \033[32m$sss_service\033[0m"
echo -e " 6 配置\033[36mTailscale内网穿透\033[0m(限Singbox) \033[32m$ts_service\033[0m"
echo -e " 7 配置\033[36mWireguard客户端\033[0m(限Singbox) \033[32m$wg_service\033[0m"
}
echo -e " 0 返回上级菜单"
echo "-----------------------------------------------"
read -p "请输入对应数字 > " num
case "$num" in
0) ;;
1)
echo "-----------------------------------------------" echo "-----------------------------------------------"
if [ -n "$(pidof CrashCore)" ] && [ "$firewall_mod" = 'iptables' ]; then echo -e "\033[30;47m欢迎使用访问与控制菜单\033[0m"
read -p "需要先停止服务,是否继续?(1/0) > " res echo "-----------------------------------------------"
[ "$res" = 1 ] && "$CRASHDIR"/start.sh stop && set_fw_wan echo -e " 1 配置\033[33m公网访问防火墙 \033[32m$fw_wan\033[0m"
else echo -e " 2 配置\033[36mTelegram专属控制机器人 \033[32m$bot_tg_service\033[0m"
set_fw_wan echo -e " 3 配置\033[36mDDNS自动域名\033[0m"
fi [ "$disoverride" != "1" ] && {
gateway echo -e " 4 自定义\033[33m公网Vmess入站\033[0m节点 \033[32m$vms_service\033[0m"
;; echo -e " 5 自定义\033[33m公网ShadowSocks入站\033[0m节点 \033[32m$sss_service\033[0m"
2) echo -e " 6 配置\033[36mTailscale内网穿透\033[0m(限Singbox) \033[32m$ts_service\033[0m"
set_bot_tg echo -e " 7 配置\033[36mWireguard客户端\033[0m(限Singbox) \033[32m$wg_service\033[0m"
gateway }
;; echo -e " 0 返回上级菜单"
3) echo "-----------------------------------------------"
. "$CRASHDIR"/menus/ddns.sh && ddns_menu read -p "请输入对应数字 > " num
gateway case "$num" in
;; "" | 0)
4) break
set_vmess ;;
gateway 1)
;; echo "-----------------------------------------------"
5) if [ -n "$(pidof CrashCore)" ] && [ "$firewall_mod" = 'iptables' ]; then
set_shadowsocks read -p "需要先停止服务,是否继续?(1/0) > " res
gateway [ "$res" = 1 ] && "$CRASHDIR"/start.sh stop && set_fw_wan
;; else
6) set_fw_wan
if echo "$crashcore" | grep -q 'sing';then fi
set_tailscale ;;
else 2)
echo -e "\033[33m$crashcore内核暂不支持此功能,请先更换内核!\033[0m" set_bot_tg
sleep 1 ;;
fi 3)
gateway . "$CRASHDIR"/menus/ddns.sh && ddns_menu
;; ;;
7) 4)
if echo "$crashcore" | grep -q 'sing';then set_vmess
set_wireguard ;;
else 5)
echo -e "\033[33m$crashcore内核暂不支持此功能,请先更换内核!\033[0m" set_shadowsocks
sleep 1 ;;
fi 6)
gateway if echo "$crashcore" | grep -q 'sing'; then
;; set_tailscale
*) errornum ;; else
esac echo -e "\033[33m$crashcore内核暂不支持此功能,请先更换内核!\033[0m"
sleep 1
fi
;;
7)
if echo "$crashcore" | grep -q 'sing'; then
set_wireguard
else
echo -e "\033[33m$crashcore内核暂不支持此功能,请先更换内核!\033[0m"
sleep 1
fi
;;
*)
errornum
sleep 1
break
;;
esac
done
} }
#公网防火墙 #公网防火墙
set_fw_wan() { set_fw_wan() {
[ -z "$fw_wan" ] && fw_wan=ON [ -z "$fw_wan" ] && fw_wan=ON