Merge pull request #1113 from sofia-riese/patch-4

refactor(setproviders): replace recursion with while loop
This commit is contained in:
juewuy
2026-01-11 09:46:17 +08:00
committed by GitHub

View File

@@ -535,9 +535,12 @@ EOF
rm -rf "$TMPDIR"/providers
fi
}
setproviders(){ #自定义providers
# 自定义providers
setproviders() {
. "$CRASHDIR"/libs/set_cron.sh
. "$CRASHDIR"/libs/web_get_bin.sh
while true; do
# 获取模版名称
if [ -z "$(grep "provider_temp_${coretype}" "$CRASHDIR"/configs/ShellCrash.cfg)" ]; then
provider_temp_des=$(sed -n "1 p" "$CRASHDIR"/configs/${coretype}_providers.list | awk '{print $1}')
@@ -565,7 +568,8 @@ setproviders(){ #自定义providers
echo -e " 0 返回上级菜单"
read -p "请输入对应字母或数字 > " num
case "$num" in
0)
"" | 0)
break
;;
[1-9] | [1-9][0-9])
provider_name=$(sed -n "$num p" "$CRASHDIR"/configs/providers.cfg | awk '{print $1}')
@@ -582,8 +586,7 @@ setproviders(){ #自定义providers
echo -e " 0 返回上级菜单"
read -p "请选择需要执行的操作 > " num
case "$num" in
0)
;;
"" | 0) ;;
1)
read -p "请输入名称或者代号(不可重复,不支持纯数字) > " name
if [ -n "$name" ] && [ -z "$(echo "$name" | grep -E '^[0-9]+$')" ] && ! grep -q "$name" "$CRASHDIR"/configs/providers.cfg; then
@@ -611,9 +614,8 @@ setproviders(){ #自定义providers
errornum
;;
esac
sleep 1
fi
setproviders
sleep 1
;;
a)
echo "-----------------------------------------------"
@@ -638,7 +640,6 @@ setproviders(){ #自定义providers
}
[ "$?" != 0 ] && echo -e "\033[31m输入错误操作已取消\033[0m"
sleep 1
setproviders
;;
c)
echo "-----------------------------------------------"
@@ -653,7 +654,6 @@ setproviders(){ #自定义providers
echo -e "\033[31m你还未添加链接或本地配置文件请先添加\033[0m"
sleep 1
fi
setproviders
;;
b)
echo "-----------------------------------------------"
@@ -666,8 +666,7 @@ setproviders(){ #自定义providers
echo "-----------------------------------------------"
read -p "请输入对应字母或数字 > " num
case "$num" in
0)
;;
"" | 0) ;;
a)
read -p "请输入模版的路径(绝对路径) > " dir
if [ -s $dir ]; then
@@ -683,28 +682,29 @@ setproviders(){ #自定义providers
provider_temp_file=$(sed -n "$num p" "$CRASHDIR"/configs/${coretype}_providers.list 2>/dev/null | awk '{print $2}')
if [ -z "$provider_temp_file" ]; then
errornum
sleep 1
else
setconfig provider_temp_${coretype} $provider_temp_file
fi
;;
esac
setproviders
;;
d)
read -p "确认清空全部链接?(1/0) > " res
[ "$res" = "1" ] && rm -rf "$CRASHDIR"/configs/providers.cfg
setproviders
;;
e)
echo -e "\033[33m将清空 $CRASHDIR/providers 目录下所有内容\033[0m"
read -p "是否继续?(1/0) > " res
[ "$res" = "1" ] && rm -rf "$CRASHDIR"/providers
setproviders
;;
*)
errornum
sleep 1
break
;;
esac
done
}
set_clash_adv(){ #自定义clash高级规则