refactor(set_fw_wan): replace recursion with while loop

This commit is contained in:
Sofia
2026-01-15 16:14:33 +08:00
committed by GitHub
parent 281595f79f
commit 174cbabb93

View File

@@ -76,79 +76,82 @@ gateway() {
done done
} }
#公网防火墙 # 公网防火墙
set_fw_wan() { set_fw_wan() {
[ -z "$fw_wan" ] && fw_wan=ON while true; do
echo "-----------------------------------------------" [ -z "$fw_wan" ] && fw_wan=ON
echo -e "\033[31m注意\033[0m如在vps运行还需在vps安全策略对相关端口同时放行" echo "-----------------------------------------------"
[ -n "$fw_wan_ports" ] && echo -e "\033[31m注意\033[0m如在vps运行还需在vps安全策略对相关端口同时放行"
echo -e "当前手动放行端口:\033[36m$fw_wan_ports\033[0m" [ -n "$fw_wan_ports" ] &&
[ -n "$vms_port$sss_port" ] && echo -e "当前手动放行端口:\033[36m$fw_wan_ports\033[0m"
echo -e "当前自动放行端口:\033[36m$vms_port $sss_port\033[0m" [ -n "$vms_port$sss_port" ] &&
echo -e "默认拦截端口:\033[33m$dns_port,$mix_port,$db_port\033[0m" echo -e "当前自动放行端口:\033[36m$vms_port $sss_port\033[0m"
echo "-----------------------------------------------" echo -e "默认拦截端口:\033[33m$dns_port,$mix_port,$db_port\033[0m"
echo -e " 1 启用/关闭公网防火墙: \033[36m$fw_wan\033[0m" echo "-----------------------------------------------"
echo -e " 2 添加放行端口(可包含默认拦截端口)" echo -e " 1 启用/关闭公网防火墙: \033[36m$fw_wan\033[0m"
echo -e " 3 移除指定手动放行端口" echo -e " 2 添加放行端口(可包含默认拦截端口)"
echo -e " 4 清空全部手动放行端口" echo -e " 3 移除指定手动放行端口"
echo -e " 0 返回上级菜单" echo -e " 4 清空全部手动放行端口"
echo "-----------------------------------------------" echo -e " 0 返回上级菜单"
read -p "请输入对应数字 > " num echo "-----------------------------------------------"
case $num in read -p "请输入对应数字 > " num
1) case $num in
if [ "$fw_wan" = ON ];then "" | 0)
read -p "确认关闭防火墙?这会带来极大的安全隐患!(1/0) > " res break
[ "$res" = 1 ] && fw_wan=OFF || fw_wan=ON ;;
else 1)
fw_wan=ON if [ "$fw_wan" = ON ]; then
fi read -p "确认关闭防火墙?这会带来极大的安全隐患!(1/0) > " res
setconfig fw_wan "$fw_wan" [ "$res" = 1 ] && fw_wan=OFF || fw_wan=ON
set_fw_wan else
;; fw_wan=ON
2) fi
port_count=$(echo "$fw_wan_ports" | awk -F',' '{print NF}' ) setconfig fw_wan "$fw_wan"
if [ "$port_count" -ge 10 ];then ;;
echo -e "\033[31m最多支持设置放行10个端口请先减少一些\033[0m" 2)
else port_count=$(echo "$fw_wan_ports" | awk -F',' '{print NF}')
read -p "请输入要放行的端口号 > " port if [ "$port_count" -ge 10 ]; then
if echo ",$fw_wan_ports," | grep -q ",$port,";then echo -e "\033[31m最多支持设置放行10个端口请先减少一些\033[0m"
echo -e "\033[31m输入错误请勿重复添加\033[0m" else
elif [ "$port" -lt 1 ] || [ "$port" -gt 65535 ]; then read -p "请输入要放行的端口号 > " port
echo -e "\033[31m输入错误请输入正确的数值(1-65535)\033[0m" if echo ",$fw_wan_ports," | grep -q ",$port,"; then
else echo -e "\033[31m输入错误请勿重复添加\033[0m"
fw_wan_ports=$(echo "$fw_wan_ports,$port" | sed "s/^,//") elif [ "$port" -lt 1 ] || [ "$port" -gt 65535 ]; then
setconfig fw_wan_ports "$fw_wan_ports" echo -e "\033[31m输入错误请输入正确的数值(1-65535)\033[0m"
fi else
fi fw_wan_ports=$(echo "$fw_wan_ports,$port" | sed "s/^,//")
sleep 1 setconfig fw_wan_ports "$fw_wan_ports"
set_fw_wan fi
;; fi
3) sleep 1
read -p "请输入要移除的端口号 > " port ;;
if echo ",$fw_wan_ports," | grep -q ",$port,";then 3)
if [ "$port" -lt 1 ] || [ "$port" -gt 65535 ]; then read -p "请输入要移除的端口号 > " port
echo -e "\033[31m输入错误请输入正确的数值(1-65535)\033[0m" if echo ",$fw_wan_ports," | grep -q ",$port,"; then
else if [ "$port" -lt 1 ] || [ "$port" -gt 65535 ]; then
fw_wan_ports=$(echo ",$fw_wan_ports," | sed "s/,$port//; s/^,//; s/,$//") echo -e "\033[31m输入错误请输入正确的数值(1-65535)\033[0m"
setconfig fw_wan_ports "$fw_wan_ports" else
fi fw_wan_ports=$(echo ",$fw_wan_ports," | sed "s/,$port//; s/^,//; s/,$//")
else setconfig fw_wan_ports "$fw_wan_ports"
echo -e "\033[31m输入错误请输入已添加过的端口\033[0m" fi
fi else
sleep 1 echo -e "\033[31m输入错误请输入已添加过的端口\033[0m"
set_fw_wan fi
;; sleep 1
4) ;;
fw_wan_ports='' 4)
setconfig fw_wan_ports fw_wan_ports=''
sleep 1 setconfig fw_wan_ports
set_fw_wan sleep 1
;; ;;
*) *)
errornum errornum
;; sleep 1
esac ;;
esac
done
} }
#tg_BOT相关 #tg_BOT相关
set_bot_tg_config(){ set_bot_tg_config(){
setconfig TG_TOKEN "$TOKEN" "$GT_CFG_PATH" setconfig TG_TOKEN "$TOKEN" "$GT_CFG_PATH"