From 6e8308186579b1e359087eca1de8cd89e32b6ba9 Mon Sep 17 00:00:00 2001 From: sofia-riese <253282481+sofia-riese@users.noreply.github.com> Date: Tue, 3 Feb 2026 20:40:02 +0800 Subject: [PATCH] chore: invoke the common.sh componen and UI adjustments --- scripts/menus/2_settings.sh | 23 +++++++-------- scripts/menus/4_setboot.sh | 12 ++++---- scripts/menus/5_task.sh | 12 +++----- scripts/menus/6_core_config.sh | 39 ++++++++++++------------ scripts/menus/7_gateway.sh | 22 ++++++-------- scripts/menus/8_tools.sh | 46 ++++++++++++++--------------- scripts/menus/9_upgrade.sh | 25 +++++++--------- scripts/menus/ddns.sh | 54 ++++++++++++++-------------------- scripts/menus/dns.sh | 15 +++++----- scripts/menus/fw_filter.sh | 33 ++++++++++----------- scripts/menus/override.sh | 51 ++++++++++++++------------------ scripts/menus/providers.sh | 16 +++++----- scripts/menus/uninstall.sh | 10 +++---- 13 files changed, 159 insertions(+), 199 deletions(-) diff --git a/scripts/menus/2_settings.sh b/scripts/menus/2_settings.sh index f419b9f0..f9da88b4 100644 --- a/scripts/menus/2_settings.sh +++ b/scripts/menus/2_settings.sh @@ -28,11 +28,11 @@ settings() { } content_line "8) $SET_MENU_IPV6\t\033[36m$ipv6_redir\033[0m" separator_line "-" - content_line "a) \033[31m$SET_MENU_RESET\033[0m" - content_line "b) \033[36m$SET_MENU_LANG\033[0m" - content_line "c) \033[33m$SET_MENU_UI\033[0m" - content_line "0) $COMMON_BACK" - separator_line "=" + btm_box "a) \033[31m$SET_MENU_RESET\033[0m" \ + "b) \033[36m$SET_MENU_LANG\033[0m" \ + "c) \033[33m$SET_MENU_UI\033[0m" \ + "" \ + "0) $COMMON_BACK" read -r -p "$COMMON_INPUT> " num case "$num" in "" | 0) @@ -204,7 +204,7 @@ settings() { ;; b) comp_box "1) 简体中文" \ - "2) English" \ + "2) English" \ "" \ "0) $COMMON_BACK" read -r -p "$COMMON_INPUT> " num @@ -280,12 +280,11 @@ set_redir_mod() { content_line "6) \033[36mT&U旁路转发\033[0m: 转发TCP&UDP流量至旁路由" content_line "" } - content_line "7) $SET_FW_AREA:\t\033[47;30m$firewall_area_dsc\033[0m" - content_line "8) $SET_VM_REDIR:\t\033[47;30m$vm_redir\033[0m" - content_line "9) $SET_FW_SWITCH:\t\033[47;30m$firewall_mod\033[0m" - content_line "" - content_line "0) $COMMON_BACK" - separator_line "=" + btm_box "7) $SET_FW_AREA:\t\033[47;30m$firewall_area_dsc\033[0m" \ + "8) $SET_VM_REDIR:\t\033[47;30m$vm_redir\033[0m" \ + "9) $SET_FW_SWITCH:\t\033[47;30m$firewall_mod\033[0m" \ + "" \ + "0) $COMMON_BACK" read -r -p "$COMMON_INPUT> " num case "$num" in "" | 0) diff --git a/scripts/menus/4_setboot.sh b/scripts/menus/4_setboot.sh index dc554f86..e64d9233 100644 --- a/scripts/menus/4_setboot.sh +++ b/scripts/menus/4_setboot.sh @@ -43,10 +43,9 @@ setboot() { content_line "3) 设置自启延时: \033[36m$(printf '%-7s' "$delay")\033[0m ———用于解决自启后服务受限" content_line "4) 启用小闪存模式: \033[36m$(printf '%-4s' "$mini_clash")\033[0m ———用于闪存空间不足的设备" [ "${BINDIR}" != "$CRASHDIR" ] && content_line "5) 设置小闪存目录: \033[36m${BINDIR}\033[0m" - content_line "6) 自启网络检查: \033[36m$(printf '%-4s' "$network_check")\033[0m ———禁用则跳过自启时网络检查" - content_line "" - content_line "0) 返回上级菜单" - separator_line "=" + btm_box "6) 自启网络检查: \033[36m$(printf '%-4s' "$network_check")\033[0m ———禁用则跳过自启时网络检查" \ + "" \ + "0) 返回上级菜单" read -r -p "请输入对应标号> " num case "$num" in "" | 0) @@ -216,9 +215,8 @@ setboot() { content_line "当前\033[33m已启用\033[0m自启网络检查,是否确认禁用?" fi separator_line "-" - content_line "1) 是" - content_line "0) 否,返回上级菜单" - separator_line "=" + btm_box "1) 是" \ + "0) 否,返回上级菜单" read -r -p "请输入对应标号> " res if [ "$res" = '1' ]; then if [ "$network_check" = "OFF" ]; then diff --git a/scripts/menus/5_task.sh b/scripts/menus/5_task.sh index d40aab4a..ae0be460 100644 --- a/scripts/menus/5_task.sh +++ b/scripts/menus/5_task.sh @@ -88,9 +88,8 @@ task_user_del() { while IFS= read -r line; do content_line "$line" done - content_line "" - content_line "0) 返回上级菜单" - separator_line "=" + btm_box "" \ + "0) 返回上级菜单" read -r -p "请输入对应标号> " num if [ "$num" = 0 ]; then break @@ -114,9 +113,8 @@ task_add() { # 输出任务列表 list=$(cat "$CRASHDIR"/task/task.list "$CRASHDIR"/task/task.user 2>/dev/null | grep -Ev '^(#|$)' | awk -F '#' '{print $3}') list_box "$list" - content_line "" - content_line "0) 返回上级菜单" - separator_line "=" + btm_box "" \ + "0) 返回上级菜单" read -r -p "请输入对应标号> " num case "$num" in 0) @@ -179,7 +177,6 @@ task_type() { "输入 1~5 代表\033[36m周一至周五\033[0m运行" read -r -p "在每周哪天执行?> " week # week=`echo ${week/7/0}` # 把7换成0 - echo read -r -p "想在该日的具体哪个小时执行?(0~23)> " hour cron_time="在每周$week的$hour点整" # cron_time=`echo ${cron_time/周0/周日}` # 把0换成日 @@ -189,7 +186,6 @@ task_type() { comp_box "输入 1,7,15 代表\033[36m每到1,7,15点\033[0m运行" \ "输入 6~18 代表\033[36m早6点至晚18点间每小时\033[0m运行" read -r -p "想在每日的具体哪个小时执行?(0~23)> " hour - echo read -r -p "想在具体哪分钟执行?(0~59的整数)> " min cron_time="在每日的$hour点$min分" [ -n "$min" ] && [ -n "$hour" ] && set_cron diff --git a/scripts/menus/6_core_config.sh b/scripts/menus/6_core_config.sh index 617505ef..ba45ca85 100644 --- a/scripts/menus/6_core_config.sh +++ b/scripts/menus/6_core_config.sh @@ -34,13 +34,13 @@ set_core_config() { list_box "$list" separator_line "-" } - content_line "a) \033[32m添加提供者\033[0m(支持订阅/分享链接及本地文件)" - content_line "b) \033[36m本地生成配置文件\033[0m" - content_line "c) \033[33m在线生成配置文件\033[0m" - content_line "d) \033[31m清空提供者列表\033[0m" - content_line "e) \033[36m自定义配置文件\033[0m" - content_line "" - common_back + btm_box "a) \033[32m添加提供者\033[0m(支持订阅/分享链接及本地文件)" \ + "b) \033[36m本地生成配置文件\033[0m" \ + "c) \033[33m在线生成配置文件\033[0m" \ + "d) \033[31m清空提供者列表\033[0m" \ + "e) \033[36m自定义配置文件\033[0m" \ + "" \ + "0) $COMMON_BACK" read -r -p "$COMMON_INPUT_L> " num case "$num" in "" | 0) @@ -94,7 +94,6 @@ set_core_config() { [ "$checkcfg" != "$checkcfg_new" ] && checkrestart fi ;; - *) error_letter ;; @@ -140,8 +139,8 @@ setproviders() { content_line "" content_line "a) \033[36m保存此提供者\033[0m" content_line "d) \033[31m删除此提供者\033[0m" - content_line "" - content_line "\033[36m以下方式的详细配置请前往对应功能页面进行设置!\033[0m" + content_line "" + content_line "\033[36m以下方式的详细配置请前往对应功能页面进行设置!\033[0m" [ -n "$link" ] && content_line "b) \033[32m本地生成\033[0m仅包含此提供者的配置文件" echo "$link$link_uri" | grep -q '://' && @@ -150,8 +149,8 @@ setproviders() { content_line "e) 在线获取此配置文件(不使用订阅转换)" echo "$link" | grep -q '^./providers' && content_line "e) 直接使用此文件作为配置文件(不使用本地生成)" - content_line "" - common_back + btm_box "" \ + "0) $COMMON_BACK" read -r -p "请输入对应字母或数字> " input case "$input" in "" | 0) @@ -274,7 +273,7 @@ setproviders() { ;; d) if [ -n "$name" ] && [ -n "$link" ]; then - sed -i "/^$name /d" "$CRASHDIR"/configs/providers.cfg 2>/dev/null + sed -i "/^$name /d" "$CRASHDIR"/configs/providers.cfg 2>/dev/null msg_alert "\033[32m$COMMON_SUCCESS\033[0m" elif [ -n "$name" ] && [ -n "$link_uri" ]; then sed -i "/^$name /d" "$CRASHDIR"/configs/providers_uri.cfg 2>/dev/null @@ -341,16 +340,14 @@ saveproviders() { # 本地生成覆写 custproviders() { while true; do - line_break - separator_line "=" - content_line "1) 设置\033[33m健康检查间隔\033[0m:\t\033[47;30m$interval\033[0m 分钟" - content_line "2) 设置\033[36m自动更新间隔\033[0m:\t\033[47;30m$interval2\033[0m 小时" + top_box "1) 设置\033[33m健康检查间隔\033[0m:\t\033[47;30m$interval\033[0m 分钟" \ + "2) 设置\033[36m自动更新间隔\033[0m:\t\033[47;30m$interval2\033[0m 小时" echo "$link" | grep -q '^http' && content_line "3) 设置\033[33m虚拟浏览器UA\033[0m:\t\033[47;30m$ua\033[0m" - content_line "4) 设置\033[31m排除节点正则\033[0m:\t\033[47;30m$exclude_w\033[0m" - content_line "5) 设置\033[32m包含节点正则\033[0m:\t\033[47;30m$include_w\033[0m" - content_line "" - common_back + btm_box "4) 设置\033[31m排除节点正则\033[0m:\t\033[47;30m$exclude_w\033[0m" \ + "5) 设置\033[32m包含节点正则\033[0m:\t\033[47;30m$include_w\033[0m" \ + "" \ + "0) $COMMON_BACK" read -r -p "请输入对应数字> " num case "$num" in "" | 0) diff --git a/scripts/menus/7_gateway.sh b/scripts/menus/7_gateway.sh index 664514f1..d44618d0 100644 --- a/scripts/menus/7_gateway.sh +++ b/scripts/menus/7_gateway.sh @@ -21,9 +21,8 @@ gateway() { content_line "6) 配置\033[36mTailscale内网穿透\033[0m(限Singbox) \033[32m$ts_service\033[0m" content_line "7) 配置\033[36mWireguard客户端\033[0m(限Singbox) \033[32m$wg_service\033[0m" } - content_line "" - content_line "0) 返回上级菜单" - separator_line "=" + btm_box "" \ + "0) 返回上级菜单" read -r -p "请输入对应标号> " num case "$num" in "" | 0) @@ -277,10 +276,9 @@ set_vmess() { content_line "5) 一键生成\033[32m随机秘钥\033[0m" gen_base64 1 >/dev/null 2>&1 && content_line "6) 设置\033[36m混淆host(可选)\033[0m: \033[33m$vms_host\033[0m" - content_line "7) 一键生成\033[32m分享链接\033[0m" - content_line "" - content_line "0) 返回上级菜单" - separator_line "=" + btm_box "7) 一键生成\033[32m分享链接\033[0m" \ + "" \ + "0) 返回上级菜单" read -r -p "请输入对应标号> " num case "$num" in "" | 0) @@ -402,9 +400,8 @@ set_shadowsocks() { content_line "4) 设置\033[36mpassword\033[0m: \033[36m$sss_pwd\033[0m" gen_base64 1 >/dev/null 2>&1 && content_line "5) 一键生成分享链接" - content_line "" - content_line "0) 返回上级菜单" - separator_line "=" + btm_box "" \ + "0) 返回上级菜单" read -r -p "请输入对应标号> " num case "$num" in "" | 0) @@ -450,9 +447,8 @@ set_shadowsocks() { content_line "6) \033[32m2022-blake3-aes-128-gcm\033[0m" content_line "7) \033[32m2022-blake3-aes-256-gcm\033[0m" } - content_line "" - content_line "0) 返回上级菜单" - separator_line "=" + btm_box "" \ + "0) 返回上级菜单" read -r -p "请输入对应标号> " num case "$num" in 0) ;; diff --git a/scripts/menus/8_tools.sh b/scripts/menus/8_tools.sh index 177bda72..282b63a5 100644 --- a/scripts/menus/8_tools.sh +++ b/scripts/menus/8_tools.sh @@ -90,9 +90,8 @@ tools() { [ -x /usr/sbin/otapredownload ] && content_line "5) \033[33m$mi_update\033[0m小米系统自动更新" [ "$systype" = "mi_snapshot" ] && content_line "6) 小米设备软固化SSH ———— \033[$mi_mi_autoSSH_type \033[0m" [ "$systype" = "mi_snapshot" ] && content_line "8) 小米设备Tun模块修复 ———— \033[$mi_tunfix \033[0m" - content_line "" - content_line "0) 返回上级菜单" - separator_line "=" + btm_box "" \ + "0) 返回上级菜单" read -r -p "请输入对应标号> " num case "$num" in "" | 0) @@ -371,28 +370,30 @@ log_pusher() { # echo -e "\033[33m详细设置指南请参考 https://juewuy.github.io/ \033[0m" comp_box "请先通过 \033[32;4mhttps://pushover.net/\033[0m 注册账号并获取\033[36mUser Key\033[0m" \ "" \ - "\033[33m请直接请输入你的User Key\033[0m" \ + "\033[36m请直接请输入你的User Key\033[0m" \ "或输入 0 返回上级菜单" read -r -p "请输入> " key if [ "$key" = 0 ]; then continue elif [ -n "$key" ]; then - line_break - separator_line "=" - content_line "\033[33m请检查注册邮箱,完成账户验证\033[0m" - read -r -p "我已经验证完成(1/0)> " - separator_line "=" - - comp_box "请通过 \033[32;4mhttps://pushover.net/apps/build\033[0m 生成\033[36mAPI Token\033[0m" - read -r -p "请输入你的API Token> " Token - if [ -n "$Token" ]; then - push_Po=$Token - push_Po_key=$key - setconfig push_Po "$Token" - setconfig push_Po_key "$key" - logger "已完成Passover日志推送设置!" 32 + comp_box "\033[33m请检查注册邮箱,完成账户验证\033[0m" + btm_box "1) 我已经验证完成" \ + "0) 返回上级菜单" + read -r -p "我已经验证完成(1/0)> " res + if [ "$res" = 1 ]; then + comp_box "请通过 \033[32;4mhttps://pushover.net/apps/build\033[0m 生成\033[36mAPI Token\033[0m" + read -r -p "请输入你的API Token> " Token + if [ -n "$Token" ]; then + push_Po=$Token + push_Po_key=$key + setconfig push_Po "$Token" + setconfig push_Po_key "$key" + logger "已完成Passover日志推送设置!" 32 + else + msg_alert "\033[31m输入错误,请重新输入!\033[0m" + fi else - msg_alert "\033[31m输入错误,请重新输入!\033[0m" + continue fi else msg_alert "\033[31m输入错误,请重新输入!\033[0m" @@ -443,7 +444,6 @@ log_pusher() { else line_break read -r -p "请输入你的Synology DSM主页地址> " URL - line_break read -r -p "请输入你的Synology Chat Token> " TOKEN comp_box '请通过"你的群晖地址/webapi/entry.cgi?api=SYNO.Chat.External&method=user_list&version=2&token=你的TOKEN"获取user_id' read -r -p "请输入你的user_id> " USERID @@ -500,7 +500,6 @@ log_pusher() { line_break echo "===========================================================" cat "$TMPDIR"/ShellCrash.log - echo "" echo "===========================================================" else msg_alert "\033[31m未找到相关日志!\033[0m" @@ -660,9 +659,8 @@ debug() { content_line "" content_line "8) 后台运行完整启动流程,输出执行错误并查找上下文,之后关闭进程" [ -s "$TMPDIR"/jsons/inbounds.json ] && content_line "9) 将\033[32m$config_tmp\033[0m下json文件合并为$TMPDIR/debug.json" - content_line "" - content_line "0) 返回上级目录" - separator_line "=" + btm_box "" \ + "0) 返回上级目录" read -r -p "请输入对应标号> " num case "$num" in 0) ;; diff --git a/scripts/menus/9_upgrade.sh b/scripts/menus/9_upgrade.sh index a4a752b1..cb3ddb4c 100644 --- a/scripts/menus/9_upgrade.sh +++ b/scripts/menus/9_upgrade.sh @@ -363,10 +363,8 @@ checkcustcore() { while IFS= read -r line; do content_line "$line" done - - content_line "" - content_line "0) 返回上级菜单" - separator_line "=" + btm_box "" \ + "0) 返回上级菜单" read -r -p "请输入对应标号> " num case "$num" in 0) @@ -530,13 +528,12 @@ setcore() { content_line "4) \033[43;30mClash\033[0m:\033[32m$clash_v \033[32m占用低\033[0m \033[33m不安全,已停止维护\033[0m" sub_content_line "说明文档:\033[36;4mhttps://lancellc.gitbook.io\033[0m" } - content_line "5) 切换版本分支及压缩方式:\033[32m$zip_type\033[0m" - content_line "6) \033[36m使用自定义内核\033[0m $custcore" - content_line "7) \033[32m更新当前内核\033[0m" - content_line "9) 手动指定处理器架构" - content_line "" - content_line "0 返回上级菜单" - separator_line "=" + btm_box "5) 切换版本分支及压缩方式:\033[32m$zip_type\033[0m" \ + "6) \033[36m使用自定义内核\033[0m $custcore" \ + "7) \033[32m更新当前内核\033[0m" \ + "9) 手动指定处理器架构" \ + "" \ + "0 返回上级菜单" read -r -p "请输入对应标号> " num case "$num" in "" | 0) @@ -1188,7 +1185,7 @@ setserver() { comp_box "\033[33m开发版未经过妥善测试,可能依然存在大量bug!!!\033[0m" \ "\033[33m如果你没有足够的耐心或者测试经验,切勿使用此版本!\033[0m" \ "请务必加入我们的讨论组:\033[36;4mhttps://t.me/ShellClash\033[0m" - content_line "是否依然切换到开发版:" + content_line "是否依然切换到开发版?" separator_line "-" btm_box "1) 确认切换" \ "0) 返回上级菜单" @@ -1240,8 +1237,8 @@ setserver() { while IFS= read -r line; do content_line "$line" done - content_line "" - content_line "0) 返回上级菜单" + btm_box "" \ + "0) 返回上级菜单" read -r -p "请输入对应标号> " num if [ -z "$num" ] || [ "$num" = 0 ]; then continue diff --git a/scripts/menus/ddns.sh b/scripts/menus/ddns.sh index fda41949..3d6cebe5 100644 --- a/scripts/menus/ddns.sh +++ b/scripts/menus/ddns.sh @@ -49,20 +49,15 @@ set_ddns() { read -r -p "请输入强制更新间隔(单位:小时;默认为24)> " force_interval [ -z "$force_interval" ] || [ "$force_interval" -lt 1 -o "$force_interval" -gt 240 ] && force_interval=24 - line_break - separator_line "=" - content_line "请核对如下信息:" - content_line "" - content_line "服务商: \033[32m$service\033[0m" - content_line "域名: \033[32m$domain\033[0m" - content_line "用户名: \033[32m$username\033[0m" - content_line "检测间隔: \033[32m$check_interval\033[0m" - separator_line "=" - content_line "是否确认添加:" - separator_line "=" - content_line "1) 是" - content_line "0) 否,重新輸入" - separator_line "=" + comp_box "请核对如下信息:" \ + "" \ + "服务商: \033[32m$service\033[0m" \ + "域名: \033[32m$domain\033[0m" \ + "用户名: \033[32m$username\033[0m" \ + "检测间隔: \033[32m$check_interval\033[0m" + btm_box "是否确认添加:" + btm_box "1) 是" \ + "0) 否,重新輸入" read -r -p "$COMMON_INPUT> " res if [ "$res" = 1 ]; then add_ddns @@ -103,10 +98,10 @@ set_ddns_service() { set_ddns_type() { while true; do comp_box "\033[32m请选择网络模式:\033[0m" - content_line "1) \033[36mIPV4\033[0m" - content_line "2) \033[36mIPV6\033[0m" - content_line "" - common_back + btm_box "1) \033[36mIPV4\033[0m" \ + "2) \033[36mIPV6\033[0m" \ + "" \ + "0) $COMMON_BACK" read -r -p "请输入对应数字> " num case "$num" in "" | 0) @@ -135,16 +130,13 @@ rev_ddns_service() { while true; do enabled=$(uci get ddns."$service".enabled) [ "$enabled" = 1 ] && enabled_b="停用" || enabled_b="启用" - line_break - separator_line "=" - content_line "1) \033[32m立即更新\033[0m" - content_line "2) 编辑当前服务" - content_line "3) $enabled_b当前服务" - content_line "4) 移除当前服务" - content_line "5) 查看运行日志" - content_line "" - content_line "0) 返回上级菜单" - separator_line "=" + comp_box "1) \033[32m立即更新\033[0m" \ + "2) 编辑当前服务" \ + "3) $enabled_b当前服务" \ + "4) 移除当前服务" \ + "5) 查看运行日志" \ + "" \ + "0) 返回上级菜单" read -r -p "请输入对应数字> " num case "$num" in "" | 0) @@ -176,11 +168,9 @@ rev_ddns_service() { ;; 5) line_break - separator_line "=" + echo "===========================================================" cat /var/log/ddns/"$service".log 2>/dev/null - content_line "" - separator_line "=" - sleep 1 + echo "===========================================================" break ;; *) diff --git a/scripts/menus/dns.sh b/scripts/menus/dns.sh index 82206006..2db97f51 100644 --- a/scripts/menus/dns.sh +++ b/scripts/menus/dns.sh @@ -89,9 +89,9 @@ set_dns_mod() { line_break separator_line "=" if [ "$hosts_opt" = ON ]; then - content_line "当前\033[33m已启用\033[0mHosts优化,是否确认禁用:" + content_line "当前\033[33m已启用\033[0mHosts优化,是否确认禁用?" else - content_line "当前\033[33m已禁用\033[0mHosts优化,是否确认启用:" + content_line "当前\033[33m已禁用\033[0mHosts优化,是否确认启用?" fi separator_line "=" btm_box "1) 是" \ @@ -127,9 +127,9 @@ set_dns_mod() { line_break separator_line "=" if [ "$ecs_subnet" = ON ]; then - content_line "当前\033[33m已启用\033[0mHosts优化,是否确认禁用:" + content_line "当前\033[33m已启用\033[0mHosts优化,是否确认禁用?" else - content_line "当前\033[33m已禁用\033[0mHosts优化,是否确认启用:" + content_line "当前\033[33m已禁用\033[0mHosts优化,是否确认启用?" fi separator_line "=" btm_box "1) 是" \ @@ -164,7 +164,7 @@ set_dns_mod() { comp_box "\033[31m$DNS_REDIR_WARN\033[0m" \ "\033[33m$DNS_REDIR_HINT 127.0.0.1:$dns_port\033[0m" \ "" \ - "请直接输入旁路由IPV4地址" \ + "\033[36m请直接输入旁路由IPV4地址\033[0m" \ "或输入 r 重置DNS劫持端口" \ "或输入 0 返回上级菜单" read -r -p "请输入> " num @@ -223,9 +223,8 @@ fake_ip_filter() { else content_line "\033[33m$DNS_FAKEIP_EMPTY\033[0m" fi - content_line "" - content_line "0) 返回上级菜单" - separator_line "=" + btm_box "" \ + "0) 返回上级菜单" read -r -p "$DNS_FAKEIP_EDIT> " input case "$input" in "" | 0) diff --git a/scripts/menus/fw_filter.sh b/scripts/menus/fw_filter.sh index 49fc06e0..11addd71 100644 --- a/scripts/menus/fw_filter.sh +++ b/scripts/menus/fw_filter.sh @@ -93,13 +93,13 @@ set_common_ports() { content_line "当前已放行端口:\033[36m$multiport\033[0m" fi separator_line "=" - content_line "1) 启用/关闭端口过滤: \033[36m$common_ports\033[0m" - content_line "2) 添加放行端口" - content_line "3) 移除指定放行端口" - content_line "4) 重置默认放行端口" - content_line "5) 重置为旧版放行端口" - content_line "" - common_back + btm_box "1) 启用/关闭端口过滤: \033[36m$common_ports\033[0m" \ + "2) 添加放行端口" \ + "3) 移除指定放行端口" \ + "4) 重置默认放行端口" \ + "5) 重置为旧版放行端口" \ + "" \ + "0) $COMMON_BACK" read -r -p "$COMMON_INPUT> " num case "$num" in "" | 0) @@ -125,7 +125,7 @@ set_common_ports() { comp_box "\033[31m最多支持设置放行15个端口,请先减少一些!\033[0m" else comp_box "当前已放行端口:\033[36m$multiport\033[0m" - btm_box "请直接输入要放行的端口号\n(每次只能输入一个端口号,切勿一次添加多个端口号)" \ + btm_box "\033[36m请直接输入要放行的端口号\033[0m\n(每次只能输入一个端口号,切勿一次添加多个端口号)" \ "或输入 0 返回上级菜单" read -r -p "请输入> " port if [ "$port" = 0 ]; then @@ -245,6 +245,7 @@ set_cust_host_ipv4() { esac done } + set_reserve_ipv4() { while true; do [ -z "$reserve_ipv4" ] && reserve_ipv4="0.0.0.0/8 10.0.0.0/8 127.0.0.0/8 100.64.0.0/10 169.254.0.0/16 172.16.0.0/12 192.168.0.0/16 224.0.0.0/4 240.0.0.0/4" @@ -283,6 +284,7 @@ set_reserve_ipv4() { esac done } + # 局域网设备过滤 fw_filter_lan() { get_devinfo() { @@ -290,7 +292,6 @@ fw_filter_lan() { dev_mac=$(cat "$dhcpdir" | grep " $dev " | awk '{print $2}') && [ -z "$dev_mac" ] && dev_mac=$dev dev_name=$(cat "$dhcpdir" | grep " $dev " | awk '{print $4}') && [ -z "$dev_name" ] && dev_name='未知设备' } - add_mac() { while true; do comp_box "手动输入mac地址时仅支持\033[32mxx:xx:xx:xx:xx:xx\033[0m的形式" @@ -313,9 +314,8 @@ fw_filter_lan() { else content_line "无纪录" fi - - content_line "" - common_back + btm_box "" \ + "0) $COMMON_BACK" read -r -p "请输入对应序号或直接输入mac地址> " num if [ -z "$num" ] || [ "$num" = 0 ]; then i= @@ -363,9 +363,8 @@ fw_filter_lan() { else content_line "无纪录" fi - - content_line "" - common_back + btm_box "" \ + "0) $COMMON_BACK" read -r -p "请输入对应序号或直接输入IP地址段> " num if [ -z "$num" ] || [ "$num" = 0 ]; then i= @@ -404,8 +403,8 @@ fw_filter_lan() { "$i" "$dev_ip" "$dev_mac" "$dev_name")" i=$((i + 1)) done - content_line "" - common_back + btm_box "" \ + "0) $COMMON_BACK" read -r -p "$COMMON_INPUT> " num mac_filter_rows=$(cat "$CRASHDIR"/configs/mac 2>/dev/null | wc -l) ip_filter_rows=$(cat "$CRASHDIR"/configs/ip_filter 2>/dev/null | wc -l) diff --git a/scripts/menus/override.sh b/scripts/menus/override.sh index f30c04ef..e6549b49 100644 --- a/scripts/menus/override.sh +++ b/scripts/menus/override.sh @@ -78,9 +78,8 @@ setrules() { while IFS= read -r line; do content_line "$line" done - content_line "" - content_line "0) 返回上级菜单" - separator_line "=" + btm_box "" \ + "0) 返回上级菜单" read -r -p "请输入对应数字> " num case "$num" in "" | 0) ;; @@ -112,9 +111,8 @@ setrules() { while IFS= read -r line; do content_line "$line" done - content_line "" - content_line "0) 返回上级菜单" - separator_line "=" + btm_box "" \ + "0) 返回上级菜单" read -r -p "请输入对应数字> " num case "$num" in "" | 0) ;; @@ -143,9 +141,8 @@ setrules() { while IFS= read -r line; do content_line "$line" done - content_line "" - content_line "0) 返回上级菜单" - separator_line "=" + btm_box "" \ + "0) 返回上级菜单" read -r -p "请输入对应数字> " num case "$num" in "" | 0) @@ -252,7 +249,7 @@ setgroups() { comp_box "\033[33m注意策略组名称必须和【自定义规则】或【自定义节点】功能中指定的策略组一致!\033[0m" \ "\033[33m建议先创建策略组,之后可在【自定义规则】或【自定义节点】功能中智能指定\033[0m" \ "\033[33m如需在当前策略组下添加节点,请手动编辑$YAMLSDIR/proxy-groups.yaml\033[0m" - btm_box "\033[32m请直接输入自定义策略组名称\033[0m\n(不支持纯数字且不要包含特殊字符!)" \ + btm_box "\033[36m请直接输入自定义策略组名称\033[0m\n(不支持纯数字且不要包含特殊字符!)" \ "或输入 0 返回上级菜单" read -r -p "请输入> " new_group_name @@ -322,12 +319,11 @@ EOF while true; do comp_box "\033[33m你可以在这里快捷管理自定义策略组\033[0m" \ "\033[36m如需修改或批量操作,请手动编辑:$YAMLSDIR/proxy-groups.yaml\033[0m" - content_line "1) 添加自定义策略组" - content_line "2) 查看自定义策略组" - content_line "3) 清空自定义策略组" - content_line "" - content_line "0) 返回上级菜单" - separator_line "=" + btm_box "1) 添加自定义策略组" \ + "2) 查看自定义策略组" \ + "3) 清空自定义策略组" \ + "" \ + "0) 返回上级菜单" read -r -p "请输入对应数字> " num case "$num" in "" | 0) @@ -398,9 +394,8 @@ setproxies() { while IFS= read -r line; do content_line "$line" done - content_line "" - content_line "0) 返回上级菜单" - separator_line "=" + btm_box "" \ + "0) 返回上级菜单" read -r -p "请输入对应数字(多个用空格分隔)> " char case "$char" in "" | 0) ;; @@ -423,13 +418,12 @@ setproxies() { while true; do comp_box "\033[33m你可以在这里快捷管理自定义节点\033[0m" \ "\033[36m如需批量操作,请手动编辑:$YAMLSDIR/proxies.yaml\033[0m" - content_line "1) 添加自定义节点" - content_line "2) 管理自定义节点" - content_line "3) 清空自定义节点" - content_line "4) 配置节点绕过: \033[36m$proxies_bypass\033[0m" - content_line "" - content_line "0) 返回上级菜单" - separator_line "=" + btm_box "1) 添加自定义节点" \ + "2) 管理自定义节点" \ + "3) 清空自定义节点" \ + "4) 配置节点绕过: \033[36m$proxies_bypass\033[0m" \ + "" \ + "0) 返回上级菜单" read -r -p "请输入对应数字> " num case "$num" in "" | 0) @@ -451,9 +445,8 @@ setproxies() { while IFS= read -r line; do content_line "$line" done - content_line "" - content_line "0) 返回上级菜单" - separator_line "=" + btm_box "" \ + "0) 返回上级菜单" read -r -p "请输入对应数字> " num if [ "$num" = 0 ]; then continue diff --git a/scripts/menus/providers.sh b/scripts/menus/providers.sh index c8cb266e..30a744d1 100644 --- a/scripts/menus/providers.sh +++ b/scripts/menus/providers.sh @@ -21,11 +21,11 @@ providers() { [ -z "$provider_temp_des" ] && provider_temp_des=$provider_temp_file fi - top_box "1) \033[32m生成\033[0m包含全部提供者的配置文件" \ + comp_box "1) \033[32m生成\033[0m包含全部提供者的配置文件" \ "2) 选择\033[33m规则模版\033[0m \033[32m$provider_temp_des\033[0m" \ "3) \033[33m清理\033[0mproviders目录文件" \ - "" - common_back + "" \ + "0) $COMMON_BACK" read -r -p "请输入对应字母或数字> " num case "$num" in "" | 0) @@ -45,15 +45,15 @@ providers() { comp_box "当前规则模版为:\033[32m$provider_temp_des\033[0m" \ "\033[33m请选择在线模版:\033[0m" list_box "$list" - content_line "" - content_line "a) 使用\033[36m本地模版\033[0m" - content_line "" - common_back + btm_box "" \ + "a) 使用\033[36m本地模版\033[0m" \ + "" \ + "0) $COMMON_BACK" read -r -p "请输入对应字母或数字> " num case "$num" in "" | 0) ;; a) - echo "" + line_break read -r -p "请输入模版的路径(绝对路径)> " dir if [ -s "$dir" ]; then provider_temp_file=$dir diff --git a/scripts/menus/uninstall.sh b/scripts/menus/uninstall.sh index ebfcbf60..cdb50bc9 100644 --- a/scripts/menus/uninstall.sh +++ b/scripts/menus/uninstall.sh @@ -6,9 +6,8 @@ uninstall() { comp_box "\033[31m警告:\033[0m" \ "\033[31m该操作不可逆!\033" \ "是否确认卸载ShellCrash:" - content_line "1) 是" - content_line "0) 否" - separator_line "=" + btm_box "1) 是" \ + "0) 否" read -r -p "$COMMON_INPUT> " res if [ "$res" = '1' ]; then # 停止服务 @@ -21,9 +20,8 @@ uninstall() { # 移除安装目录 if [ -n "$CRASHDIR" ] && [ "$CRASHDIR" != '/' ]; then comp_box "是否保留脚本配置及订阅文件:" - content_line "1) 是" - content_line "0) 否" - separator_line "=" + btm_box "1) 是" \ + "0) 否" read -r -p "$COMMON_INPUT> " res if [ "$res" = '1' ]; then mv -f "$CRASHDIR"/configs /tmp/ShellCrash/configs_bak