mirror of
https://github.com/juewuy/ShellCrash.git
synced 2026-03-10 23:41:22 +00:00
refactor(set_core_config): replace recursion with while loop
This commit is contained in:
@@ -1029,164 +1029,162 @@ set_core_config_link(){ #直接导入配置
|
||||
fi
|
||||
}
|
||||
|
||||
#配置文件主界面
|
||||
set_core_config(){
|
||||
[ -z "$rule_link" ] && rule_link=1
|
||||
[ -z "$server_link" ] && server_link=1
|
||||
echo "$crashcore" | grep -q 'singbox' && config_path="$JSONSDIR"/config.json || config_path="$YAMLSDIR"/config.yaml
|
||||
echo "-----------------------------------------------"
|
||||
echo -e "\033[30;47m ShellCrash配置文件管理\033[0m"
|
||||
echo "-----------------------------------------------"
|
||||
echo -e " 1 在线\033[32m生成配置文件\033[0m(基于Subconverter订阅转换)"
|
||||
if [ -f "$CRASHDIR"/v2b_api.sh ];then
|
||||
echo -e " 2 登录\033[33m获取订阅(推荐!)\033[0m"
|
||||
else
|
||||
echo -e " 2 在线\033[33m获取配置文件\033[0m(基于订阅提供者)"
|
||||
fi
|
||||
echo -e " 3 本地\033[32m生成配置文件\033[0m(基于内核providers,推荐!)"
|
||||
echo -e " 4 本地\033[33m上传完整配置文件\033[0m"
|
||||
echo -e " 5 设置\033[36m自动更新\033[0m"
|
||||
echo -e " 6 \033[32m自定义\033[0m配置文件"
|
||||
echo -e " 7 \033[33m更新\033[0m配置文件"
|
||||
echo -e " 8 \033[36m还原\033[0m配置文件"
|
||||
echo -e " 9 自定义浏览器UA \033[32m$user_agent\033[0m"
|
||||
echo "-----------------------------------------------"
|
||||
[ "$inuserguide" = 1 ] || echo -e " 0 返回上级菜单"
|
||||
read -p "请输入对应数字 > " num
|
||||
case "$num" in
|
||||
0)
|
||||
;;
|
||||
1)
|
||||
if [ -n "$Url" ];then
|
||||
echo "-----------------------------------------------"
|
||||
echo -e "\033[33m检测到已记录的链接内容:\033[0m"
|
||||
echo -e "\033[4;32m$Url\033[0m"
|
||||
echo "-----------------------------------------------"
|
||||
read -p "清空链接/追加导入?[1/0] > " res
|
||||
if [ "$res" = '1' ]; then
|
||||
Url_link=""
|
||||
echo "-----------------------------------------------"
|
||||
echo -e "\033[31m链接已清空!\033[0m"
|
||||
else
|
||||
Url_link=$Url
|
||||
fi
|
||||
fi
|
||||
gen_core_config_link
|
||||
set_core_config
|
||||
;;
|
||||
2)
|
||||
if [ -f "$CRASHDIR"/v2b_api.sh ];then
|
||||
. "$CRASHDIR"/v2b_api.sh
|
||||
set_core_config
|
||||
else
|
||||
set_core_config_link
|
||||
fi
|
||||
set_core_config
|
||||
;;
|
||||
3)
|
||||
if [ "$crashcore" = meta -o "$crashcore" = clashpre ];then
|
||||
coretype=clash
|
||||
setproviders
|
||||
elif [ "$crashcore" = singboxr ];then
|
||||
coretype=singbox
|
||||
setproviders
|
||||
else
|
||||
echo -e "\033[33msingbox官方内核及Clash基础内核不支持此功能,请先更换内核!\033[0m"
|
||||
sleep 1
|
||||
checkupdate && setcore
|
||||
fi
|
||||
set_core_config
|
||||
;;
|
||||
4)
|
||||
echo "-----------------------------------------------"
|
||||
echo -e "\033[33m请将本地配置文件上传到/tmp目录并重命名为config.yaml或者config.json\033[0m"
|
||||
echo -e "\033[32m之后重新运行本脚本即可自动弹出导入提示!\033[0m"
|
||||
exit
|
||||
;;
|
||||
5)
|
||||
. "$CRASHDIR"/menus/5_task.sh && task_menu
|
||||
set_core_config
|
||||
;;
|
||||
6)
|
||||
checkcfg=$(cat $CFG_PATH)
|
||||
override
|
||||
if [ -n "$PID" ];then
|
||||
checkcfg_new=$(cat $CFG_PATH)
|
||||
[ "$checkcfg" != "$checkcfg_new" ] && checkrestart
|
||||
fi
|
||||
set_core_config
|
||||
;;
|
||||
7)
|
||||
if [ -z "$Url" -a -z "$Https" ];then
|
||||
echo "-----------------------------------------------"
|
||||
echo -e "\033[31m没有找到你的配置文件/订阅链接!请先输入链接!\033[0m"
|
||||
sleep 1
|
||||
set_core_config
|
||||
else
|
||||
echo "-----------------------------------------------"
|
||||
echo -e "\033[33m当前系统记录的链接为:\033[0m"
|
||||
echo -e "\033[4;32m$Url$Https\033[0m"
|
||||
echo "-----------------------------------------------"
|
||||
read -p "确认更新配置文件?[1/0] > " res
|
||||
if [ "$res" = '1' ]; then
|
||||
jump_core_config
|
||||
else
|
||||
set_core_config
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
8)
|
||||
if [ ! -f ${config_path}.bak ];then
|
||||
echo "-----------------------------------------------"
|
||||
echo -e "\033[31m没有找到配置文件的备份!\033[0m"
|
||||
set_core_config
|
||||
else
|
||||
echo "-----------------------------------------------"
|
||||
echo -e 备份文件共有"\033[32m`wc -l < ${config_path}.bak`\033[0m"行内容,当前文件共有"\033[32m`wc -l < ${config_path}`\033[0m"行内容
|
||||
read -p "确认还原配置文件?此操作不可逆![1/0] > " res
|
||||
if [ "$res" = '1' ]; then
|
||||
mv ${config_path}.bak ${config_path}
|
||||
echo "----------------------------------------------"
|
||||
echo -e "\033[32m配置文件已还原!请手动重启服务!\033[0m"
|
||||
sleep 1
|
||||
else
|
||||
echo "-----------------------------------------------"
|
||||
echo -e "\033[31m操作已取消!返回上级菜单!\033[0m"
|
||||
set_core_config
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
9)
|
||||
echo "-----------------------------------------------"
|
||||
echo -e "\033[36m如果6-1或者6-2无法正确获取配置文件时可以尝试使用\033[0m"
|
||||
echo -e " 1 使用自动UA"
|
||||
echo -e " 2 不使用UA"
|
||||
echo -e " 3 使用自定义UA:\033[32m$user_agent\033[0m"
|
||||
echo "-----------------------------------------------"
|
||||
read -p "请输入对应数字 > " num
|
||||
case "$num" in
|
||||
0)
|
||||
user_agent=''
|
||||
;;
|
||||
1)
|
||||
user_agent='auto'
|
||||
;;
|
||||
2)
|
||||
user_agent='none'
|
||||
;;
|
||||
3)
|
||||
read -p "请输入自定义UA(不要包含空格和特殊符号!) > " text
|
||||
[ -n "$text" ] && user_agent="$text"
|
||||
;;
|
||||
*)
|
||||
errornum
|
||||
;;
|
||||
esac
|
||||
[ "$num" -le 3 ] && setconfig user_agent "$user_agent"
|
||||
set_core_config
|
||||
;;
|
||||
*)
|
||||
errornum
|
||||
;;
|
||||
esac
|
||||
# 配置文件主界面
|
||||
set_core_config() {
|
||||
while true; do
|
||||
[ -z "$rule_link" ] && rule_link=1
|
||||
[ -z "$server_link" ] && server_link=1
|
||||
echo "$crashcore" | grep -q 'singbox' && config_path="$JSONSDIR"/config.json || config_path="$YAMLSDIR"/config.yaml
|
||||
echo "-----------------------------------------------"
|
||||
echo -e "\033[30;47m ShellCrash配置文件管理\033[0m"
|
||||
echo "-----------------------------------------------"
|
||||
echo -e " 1 在线\033[32m生成配置文件\033[0m(基于Subconverter订阅转换)"
|
||||
if [ -f "$CRASHDIR"/v2b_api.sh ]; then
|
||||
echo -e " 2 登录\033[33m获取订阅(推荐!)\033[0m"
|
||||
else
|
||||
echo -e " 2 在线\033[33m获取配置文件\033[0m(基于订阅提供者)"
|
||||
fi
|
||||
echo -e " 3 本地\033[32m生成配置文件\033[0m(基于内核providers,推荐!)"
|
||||
echo -e " 4 本地\033[33m上传完整配置文件\033[0m"
|
||||
echo -e " 5 设置\033[36m自动更新\033[0m"
|
||||
echo -e " 6 \033[32m自定义\033[0m配置文件"
|
||||
echo -e " 7 \033[33m更新\033[0m配置文件"
|
||||
echo -e " 8 \033[36m还原\033[0m配置文件"
|
||||
echo -e " 9 自定义浏览器UA \033[32m$user_agent\033[0m"
|
||||
echo "-----------------------------------------------"
|
||||
[ "$inuserguide" = 1 ] || echo -e " 0 返回上级菜单"
|
||||
read -p "请输入对应数字 > " num
|
||||
case "$num" in
|
||||
"" | 0)
|
||||
break
|
||||
;;
|
||||
1)
|
||||
if [ -n "$Url" ]; then
|
||||
echo "-----------------------------------------------"
|
||||
echo -e "\033[33m检测到已记录的链接内容:\033[0m"
|
||||
echo -e "\033[4;32m$Url\033[0m"
|
||||
echo "-----------------------------------------------"
|
||||
read -p "清空链接/追加导入?[1/0] > " res
|
||||
if [ "$res" = '1' ]; then
|
||||
Url_link=""
|
||||
echo "-----------------------------------------------"
|
||||
echo -e "\033[31m链接已清空!\033[0m"
|
||||
else
|
||||
Url_link=$Url
|
||||
fi
|
||||
fi
|
||||
gen_core_config_link
|
||||
;;
|
||||
2)
|
||||
if [ -f "$CRASHDIR"/v2b_api.sh ]; then
|
||||
. "$CRASHDIR"/v2b_api.sh
|
||||
else
|
||||
set_core_config_link
|
||||
fi
|
||||
;;
|
||||
3)
|
||||
if [ "$crashcore" = meta -o "$crashcore" = clashpre ]; then
|
||||
coretype=clash
|
||||
setproviders
|
||||
elif [ "$crashcore" = singboxr ]; then
|
||||
coretype=singbox
|
||||
setproviders
|
||||
else
|
||||
echo -e "\033[33msingbox官方内核及Clash基础内核不支持此功能,请先更换内核!\033[0m"
|
||||
sleep 1
|
||||
checkupdate && setcore
|
||||
fi
|
||||
;;
|
||||
4)
|
||||
echo "-----------------------------------------------"
|
||||
echo -e "\033[33m请将本地配置文件上传到/tmp目录并重命名为config.yaml或者config.json\033[0m"
|
||||
echo -e "\033[32m之后重新运行本脚本即可自动弹出导入提示!\033[0m"
|
||||
sleep 2
|
||||
exit
|
||||
;;
|
||||
5)
|
||||
. "$CRASHDIR"/menus/5_task.sh && task_menu
|
||||
break
|
||||
;;
|
||||
6)
|
||||
checkcfg=$(cat $CFG_PATH)
|
||||
override
|
||||
if [ -n "$PID" ]; then
|
||||
checkcfg_new=$(cat $CFG_PATH)
|
||||
[ "$checkcfg" != "$checkcfg_new" ] && checkrestart
|
||||
fi
|
||||
;;
|
||||
7)
|
||||
if [ -z "$Url" -a -z "$Https" ]; then
|
||||
echo "-----------------------------------------------"
|
||||
echo -e "\033[31m没有找到你的配置文件/订阅链接!请先输入链接!\033[0m"
|
||||
sleep 1
|
||||
else
|
||||
echo "-----------------------------------------------"
|
||||
echo -e "\033[33m当前系统记录的链接为:\033[0m"
|
||||
echo -e "\033[4;32m$Url$Https\033[0m"
|
||||
echo "-----------------------------------------------"
|
||||
read -p "确认更新配置文件?[1/0] > " res
|
||||
if [ "$res" = '1' ]; then
|
||||
jump_core_config
|
||||
break
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
8)
|
||||
if [ ! -f ${config_path}.bak ]; then
|
||||
echo "-----------------------------------------------"
|
||||
echo -e "\033[31m没有找到配置文件的备份!\033[0m"
|
||||
else
|
||||
echo "-----------------------------------------------"
|
||||
echo -e 备份文件共有"\033[32m$(wc -l <${config_path}.bak)\033[0m"行内容,当前文件共有"\033[32m$(wc -l <${config_path})\033[0m"行内容
|
||||
read -p "确认还原配置文件?此操作不可逆![1/0] > " res
|
||||
if [ "$res" = '1' ]; then
|
||||
mv ${config_path}.bak ${config_path}
|
||||
echo "----------------------------------------------"
|
||||
echo -e "\033[32m配置文件已还原!请手动重启服务!\033[0m"
|
||||
sleep 1
|
||||
break
|
||||
else
|
||||
echo "-----------------------------------------------"
|
||||
echo -e "\033[31m操作已取消!返回上级菜单!\033[0m"
|
||||
sleep 1
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
9)
|
||||
echo "-----------------------------------------------"
|
||||
echo -e "\033[36m如果6-1或者6-2无法正确获取配置文件时可以尝试使用\033[0m"
|
||||
echo -e " 1 使用自动UA"
|
||||
echo -e " 2 不使用UA"
|
||||
echo -e " 3 使用自定义UA:\033[32m$user_agent\033[0m"
|
||||
echo "-----------------------------------------------"
|
||||
read -p "请输入对应数字 > " num
|
||||
case "$num" in
|
||||
0)
|
||||
user_agent=''
|
||||
;;
|
||||
1)
|
||||
user_agent='auto'
|
||||
;;
|
||||
2)
|
||||
user_agent='none'
|
||||
;;
|
||||
3)
|
||||
read -p "请输入自定义UA(不要包含空格和特殊符号!) > " text
|
||||
[ -n "$text" ] && user_agent="$text"
|
||||
;;
|
||||
*)
|
||||
errornum
|
||||
;;
|
||||
esac
|
||||
[ "$num" -le 3 ] && setconfig user_agent "$user_agent"
|
||||
;;
|
||||
*)
|
||||
errornum
|
||||
sleep 1
|
||||
break
|
||||
;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user