refactor: replace recursion with while loop in set_redir_mod

This commit is contained in:
Sofia
2026-01-09 19:23:32 +08:00
committed by GitHub
parent 167ab30b29
commit ea0bec152e

View File

@@ -138,13 +138,16 @@ settings() {
done done
} }
set_redir_mod() { #路由模式设置
set_redir_config() { set_redir_config() {
setconfig redir_mod $redir_mod setconfig redir_mod $redir_mod
setconfig dns_mod $dns_mod setconfig dns_mod $dns_mod
echo "-----------------------------------------------" echo "-----------------------------------------------"
echo -e "\033[36m已设为 $redir_mod \033[0m" echo -e "\033[36m已设为 $redir_mod \033[0m"
} }
# 路由模式设置
set_redir_mod() {
while true; do
[ -n "$(ls /dev/net/tun 2>/dev/null)" ] || ip tuntap >/dev/null 2>&1 || modprobe tun 2>/dev/null && sup_tun=1 [ -n "$(ls /dev/net/tun 2>/dev/null)" ] || ip tuntap >/dev/null 2>&1 || modprobe tun 2>/dev/null && sup_tun=1
[ -z "$firewall_area" ] && firewall_area=1 [ -z "$firewall_area" ] && firewall_area=1
[ -z "$redir_mod" ] && [ "$USER" = "root" -o "$USER" = "admin" ] && redir_mod='Redir模式' [ -z "$redir_mod" ] && [ "$USER" = "root" -o "$USER" = "admin" ] && redir_mod='Redir模式'
@@ -173,11 +176,12 @@ set_redir_mod() { #路由模式设置
echo " 0 返回上级菜单" echo " 0 返回上级菜单"
read -p "请输入对应数字 > " num read -p "请输入对应数字 > " num
case "$num" in case "$num" in
0) ;; "" | 0)
break
;;
1) 1)
redir_mod=Redir模式 redir_mod=Redir模式
set_redir_config set_redir_config
set_redir_mod
;; ;;
2) 2)
if [ -n "$sup_tun" ]; then if [ -n "$sup_tun" ]; then
@@ -187,7 +191,6 @@ set_redir_mod() { #路由模式设置
echo -e "\033[31m设备未检测到Tun内核模块请尝试其他模式或者安装相关依赖\033[0m" echo -e "\033[31m设备未检测到Tun内核模块请尝试其他模式或者安装相关依赖\033[0m"
sleep 1 sleep 1
fi fi
set_redir_mod
;; ;;
3) 3)
if [ "$firewall_mod" = "iptables" ]; then if [ "$firewall_mod" = "iptables" ]; then
@@ -214,7 +217,6 @@ set_redir_mod() { #路由模式设置
sleep 1 sleep 1
fi fi
fi fi
set_redir_mod
;; ;;
4) 4)
if [ -n "$sup_tun" ]; then if [ -n "$sup_tun" ]; then
@@ -224,25 +226,20 @@ set_redir_mod() { #路由模式设置
echo -e "\033[31m设备未检测到Tun内核模块请尝试其他模式或者安装相关依赖\033[0m" echo -e "\033[31m设备未检测到Tun内核模块请尝试其他模式或者安装相关依赖\033[0m"
sleep 1 sleep 1
fi fi
set_redir_mod
;; ;;
5) 5)
redir_mod='TCP旁路转发' redir_mod='TCP旁路转发'
set_redir_config set_redir_config
set_redir_mod
;; ;;
6) 6)
redir_mod='T&U旁路转发' redir_mod='T&U旁路转发'
set_redir_config set_redir_config
set_redir_mod
;; ;;
7) 7)
set_firewall_area set_firewall_area
set_redir_mod
;; ;;
8) 8)
set_firewall_vm set_firewall_vm
set_redir_mod
;; ;;
9) 9)
if [ "$firewall_mod" = 'iptables' ]; then if [ "$firewall_mod" = 'iptables' ]; then
@@ -274,13 +271,16 @@ set_redir_mod() { #路由模式设置
fi fi
sleep 1 sleep 1
setconfig firewall_mod $firewall_mod setconfig firewall_mod $firewall_mod
set_redir_mod
;; ;;
*) *)
errornum errornum
sleep 1
break
;; ;;
esac esac
done
} }
set_adv_config() { #端口设置 set_adv_config() { #端口设置
. "$CFG_PATH" >/dev/null . "$CFG_PATH" >/dev/null
[ -z "$secret" ] && secret=未设置 [ -z "$secret" ] && secret=未设置