diff --git a/scripts/menus/6_core_config.sh b/scripts/menus/6_core_config.sh index 4594a909..6b2535ec 100644 --- a/scripts/menus/6_core_config.sh +++ b/scripts/menus/6_core_config.sh @@ -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 }