From 3aaa8b646043373160641869b6fd201be4720827 Mon Sep 17 00:00:00 2001 From: sofia-riese <253282481+sofia-riese@users.noreply.github.com> Date: Tue, 3 Feb 2026 19:04:12 +0800 Subject: [PATCH] chore: invoke the common.sh componen --- scripts/menus/9_upgrade.sh | 136 ++++++++++++++++------------------ scripts/menus/fw_filter.sh | 81 ++++++++++---------- scripts/menus/subconverter.sh | 31 ++++---- scripts/menus/userguide.sh | 11 +-- 4 files changed, 122 insertions(+), 137 deletions(-) diff --git a/scripts/menus/9_upgrade.sh b/scripts/menus/9_upgrade.sh index d097820b..a4a752b1 100644 --- a/scripts/menus/9_upgrade.sh +++ b/scripts/menus/9_upgrade.sh @@ -22,26 +22,24 @@ upgrade() { fi [ -z "$core_v" ] && core_v=$crashcore core_v_new=$(eval echo \$"$crashcore"_v) - - comp_box "\033[30;47m更新与支持\033[0m" \ + top_box "\033[30;47m更新与支持\033[0m" \ "" \ "当前目录(\033[32m$CRASHDIR\033[0m)剩余空间:\033[36m$(dir_avail "$CRASHDIR" -h)\033[0m" [ "$(dir_avail "$CRASHDIR")" -le 5120 ] && [ "$CRASHDIR" = "$BINDIR" ] && { content_line "\033[33m当前目录剩余空间较低,建议开启小闪存模式!\033[0m" } - content_line "1) 更新\033[36m管理脚本\t\033[33m$versionsh_l\033[0m > \033[32m$version_new \033[36m$release_type\033[0m" - content_line "2) 切换/更新\033[33m内核文件\t\033[33m$core_v\033[0m > \033[32m$core_v_new\033[0m" - content_line "3) 安装/更新本地\033[32m数据库文件\033[0m" - content_line "4) 安装/更新本地\033[35mDashboard面板\033[0m" - content_line "5) 安装/更新本地\033[33m根证书文件\033[0m" - content_line "6) \033[32mPAC\033[0m自动代理查看" - content_line "7) 切换\033[36m安装源及版本分支\033[0m" - content_line "8) \033[31m卸载ShellCrash\033[0m" - content_line "9) \033[36m感谢列表!\033[0m" - content_line "" - content_line "0) 返回上级菜单" separator_line "=" - + btm_box "1) 更新\033[36m管理脚本\t\033[33m$versionsh_l\033[0m > \033[32m$version_new \033[36m$release_type\033[0m" \ + "2) 切换/更新\033[33m内核文件\t\033[33m$core_v\033[0m > \033[32m$core_v_new\033[0m" \ + "3) 安装/更新本地\033[32m数据库文件\033[0m" \ + "4) 安装/更新本地\033[35mDashboard面板\033[0m" \ + "5) 安装/更新本地\033[33m根证书文件\033[0m" \ + "6) \033[32mPAC\033[0m自动代理查看" \ + "7) 切换\033[36m安装源及版本分支\033[0m" \ + "8) \033[31m卸载ShellCrash\033[0m" \ + "9) \033[36m感谢列表!\033[0m" \ + "" \ + "0) 返回上级菜单" read -r -p "请输入对应数字> " num case "$num" in "" | 0) @@ -188,6 +186,7 @@ setscripts() { getscripts # 提示 msg_alert "\033[32m管理脚本更新成功!\033[0m" + line_break exit 0 ;; *) @@ -231,13 +230,12 @@ setcoretype() { while true; do echo "$crashcore" | grep -q 'singbox' && core_old=singbox || core_old=clash comp_box "\033[33m请确认该自定义内核的类型:\033[0m" - content_line "1) Mihomo(Meta)" - content_line "2) Singbox-reF1nd" - content_line "3) Singbox" - content_line "4) Clash" - content_line "" - content_line "0) 返回上级菜单" - separator_line "=" + btm_box "1) Mihomo(Meta)" \ + "2) Singbox-reF1nd" \ + "3) Singbox" \ + "4) Clash" \ + "" \ + "0) 返回上级菜单" read -r -p "请输入对应标号> " num case "$num" in "" | 0) ;; @@ -415,14 +413,13 @@ setcustcore() { separator_line "=" content_line "请选择需要使用的核心:" separator_line "-" - content_line "1) \033[36mMetaCubeX/mihomo\033[32m@release\033[0m版本官方内核" - content_line "2) \033[36mvernesong/mihomo\033[32m@alpha\033[0m版本内核(支持Smart策略)" - content_line "3) \033[36mSagerNet/sing-box\033[32m@release\033[0m版本官方内核" - content_line "4) Premium-2023.08.17内核(已停止维护)" - content_line "9) \033[33m自定义内核链接 \033[0m" - content_line "" - content_line "0) 返回上级菜单" - separator_line "=" + btm_box "1) \033[36mMetaCubeX/mihomo\033[32m@release\033[0m版本官方内核" \ + "2) \033[36mvernesong/mihomo\033[32m@alpha\033[0m版本内核(支持Smart策略)" \ + "3) \033[36mSagerNet/sing-box\033[32m@release\033[0m版本官方内核" \ + "4) Premium-2023.08.17内核(已停止维护)" \ + "9) \033[33m自定义内核链接 \033[0m" \ + "" \ + "0) 返回上级菜单" read -r -p "请输入对应标号> " num case "$num" in "" | 0) @@ -779,20 +776,19 @@ setgeo() { "" \ "请选择需要更新的Geo数据库文件:" - content_line "1) CN-IP绕过文件(约0.1mb) \033[33m$china_ip_list_v\033[0m" - content_line "2) CN-IPV6绕过文件(约30kb) \033[33m$china_ipv6_list_v\033[0m" - content_line "" - content_line "3) Mihomo精简版GeoIP_cn数据库(约0.1mb) \033[33m$cn_mini_v\033[0m" - content_line "4) Mihomo完整版GeoSite数据库(约5mb) \033[33m$geosite_v\033[0m" - content_line "" - content_line "5) Mihomo-mrs数据库常用包(约1mb,非必要勿用)" - content_line "6) Singbox-srs数据库常用包(约0.8mb,非必要勿用)" - content_line "" - content_line "8) \033[36m自定义数据库文件\033[0m" - content_line "9) \033[31m清理数据库文件\033[0m" - content_line "" - content_line "0) 返回上级菜单" - separator_line "=" + btm_box "1) CN-IP绕过文件(约0.1mb) \033[33m$china_ip_list_v\033[0m" \ + "2) CN-IPV6绕过文件(约30kb) \033[33m$china_ipv6_list_v\033[0m" \ + "" \ + "3) Mihomo精简版GeoIP_cn数据库(约0.1mb) \033[33m$cn_mini_v\033[0m" \ + "4) Mihomo完整版GeoSite数据库(约5mb) \033[33m$geosite_v\033[0m" \ + "" \ + "5) Mihomo-mrs数据库常用包(约1mb,非必要勿用)" \ + "6) Singbox-srs数据库常用包(约0.8mb,非必要勿用)" \ + "" \ + "8) \033[36m自定义数据库文件\033[0m" \ + "9) \033[31m清理数据库文件\033[0m" \ + "" \ + "0) 返回上级菜单" read -r -p "请输入对应标号> " num case "$num" in "" | 0) @@ -964,18 +960,17 @@ setdb() { "\033[32m打开管理面板的速度更快且更稳定\033[0m" \ "" \ "请选择面板安装类型:" - content_line " - - - - - - -维护中- - - - - - -" - content_line "1) 安装\033[32mzashboard面板\033[0m(约2.2mb)" - content_line "2) 安装\033[32mMetaXD面板\033[0m(约1.5mb)" - content_line "3) 安装\033[32mYacd-Meta魔改面板\033[0m(约1.7mb)" - content_line " - - - - - -已停止维护- - - - - -" - content_line "4) 安装\033[32m基础面板\033[0m(约500kb)" - content_line "5) 安装\033[32mMeta基础面板\033[0m(约800kb)" - content_line "6) 安装\033[32mYacd面板\033[0m(约1.1mb)" - content_line "9) \033[31m卸载本地面板\033[0m" - content_line "" - content_line "0) 返回上级菜单" - separator_line "=" + btm_box " - - - - - - -维护中- - - - - - -" \ + "1) 安装\033[32mzashboard面板\033[0m(约2.2mb)" \ + "2) 安装\033[32mMetaXD面板\033[0m(约1.5mb)" \ + "3) 安装\033[32mYacd-Meta魔改面板\033[0m(约1.7mb)" \ + " - - - - - -已停止维护- - - - - -" \ + "4) 安装\033[32m基础面板\033[0m(约500kb)" \ + "5) 安装\033[32mMeta基础面板\033[0m(约800kb)" \ + "6) 安装\033[32mYacd面板\033[0m(约1.1mb)" \ + "9) \033[31m卸载本地面板\033[0m" \ + "" \ + "0) 返回上级菜单" read -r -p "请输入对应标号> " num case "$num" in "" | 0) @@ -1145,16 +1140,15 @@ setserver() { content_line "$line" done - content_line - content_line "a) 切换至\033[32m稳定版-stable\033[0m" - content_line "b) 切换至\033[36m公测版-master\033[0m" - content_line "c) 切换至\033[33m开发版-dev\033[0m" - content_line - content_line "d) 自定义源地址(用于本地源或自建源)" - content_line "e) \033[31m版本回退\033[0m" - content_line - content_line "0) 返回上级菜单" - separator_line "=" + btm_box "" \ + "a) 切换至\033[32m稳定版-stable\033[0m" \ + "b) 切换至\033[36m公测版-master\033[0m" \ + "c) 切换至\033[33m开发版-dev\033[0m" \ + "" \ + "d) 自定义源地址(用于本地源或自建源)" \ + "e) \033[31m版本回退\033[0m" \ + "" \ + "0) 返回上级菜单" read -r -p "请输入对应标号> " num case "$num" in "" | 0) @@ -1165,7 +1159,6 @@ setserver() { url_id_new=$(grep -E "^1|$release_name" "$CRASHDIR"/configs/servers.list | sed -n "$num"p | awk '{print $1}') if [ -z "$url_id_new" ]; then errornum - sleep 1 continue elif [ "$url_id_new" -ge 200 ]; then update_url=$(grep -E "^1|$release_name" "$CRASHDIR"/configs/servers.list | sed -n "$num"p | awk '{print $3}') @@ -1197,9 +1190,8 @@ setserver() { "请务必加入我们的讨论组:\033[36;4mhttps://t.me/ShellClash\033[0m" content_line "是否依然切换到开发版:" separator_line "-" - content_line "1) 确认切换" - content_line "0) 返回上级菜单" - separator_line "=" + btm_box "1) 确认切换" \ + "0) 返回上级菜单" read -r -p "请输入对应标号> " res case "$res" in "" | 0) @@ -1218,7 +1210,7 @@ setserver() { done ;; d) - comp_box "请直接输入个人源路径" \ + comp_box "\033[36m请直接输入个人源路径\033[0m" \ "或者输入 0 返回上级菜单" read -r -p "请输入个人源路径> " update_url if [ "$update_url" = 0 ]; then @@ -1243,14 +1235,12 @@ setserver() { line_break separator_line "=" content_line "\033[31m请选择想要回退至的具体版本:\033[0m" - cat "$TMPDIR"/tags | awk '{print NR") "$1}' | while IFS= read -r line; do content_line "$line" done - - content_line + content_line "" content_line "0) 返回上级菜单" read -r -p "请输入对应标号> " num if [ -z "$num" ] || [ "$num" = 0 ]; then diff --git a/scripts/menus/fw_filter.sh b/scripts/menus/fw_filter.sh index 4da986a1..49fc06e0 100644 --- a/scripts/menus/fw_filter.sh +++ b/scripts/menus/fw_filter.sh @@ -12,16 +12,14 @@ set_fw_filter() { [ -z "$cn_ip_route" ] && cn_ip_route=OFF touch "$CRASHDIR"/configs/mac "$CRASHDIR"/configs/ip_filter [ -z "$(cat "$CRASHDIR"/configs/mac "$CRASHDIR"/configs/ip_filter 2>/dev/null)" ] && mac_return=OFF || mac_return=ON - line_break - separator_line "=" - content_line "1) 过滤非常用端口: \033[36m$common_ports\033[0m ———用于过滤P2P流量" - content_line "2) 过滤局域网设备: \033[36m$mac_return\033[0m ———使用黑/白名单进行过滤" - content_line "3) 过滤QUIC协议: \033[36m$quic_rj\033[0m ———优化视频性能" - content_line "4) 过滤CN_IP(4/6)列表:\033[36m$cn_ip_route\033[0m ———优化性能" - content_line "5) 自定义透明路由ipv4网段:适合vlan等复杂网络环境" - content_line "6) 自定义保留地址ipv4网段:需要以保留地址为访问目标的环境" - content_line "" - common_back + comp_box "1) 过滤非常用端口: \033[36m$common_ports\033[0m ———用于过滤P2P流量" \ + "2) 过滤局域网设备: \033[36m$mac_return\033[0m ———使用黑/白名单进行过滤" \ + "3) 过滤QUIC协议: \033[36m$quic_rj\033[0m ———优化视频性能" \ + "4) 过滤CN_IP(4/6)列表:\033[36m$cn_ip_route\033[0m ———优化性能" \ + "5) 自定义透明路由ipv4网段:适合vlan等复杂网络环境" \ + "6) 自定义保留地址ipv4网段:需要以保留地址为访问目标的环境" \ + "" \ + "0) $COMMON_BACK" read -r -p "$COMMON_INPUT> " num case "$num" in "" | 0) @@ -30,9 +28,8 @@ set_fw_filter() { 1) if [ -n "$(pidof CrashCore)" ] && [ "$firewall_mod" = 'iptables' ]; then comp_box "切换时将停止服务,是否继续:" - content_line "1) 是" - content_line "0) 否,返回上级菜单" - separator_line "=" + btm_box "1) 是" \ + "0) 否,返回上级菜单" read -r -p "$COMMON_INPUT> " res [ "$res" = 1 ] && "$CRASHDIR"/start.sh stop && set_common_ports else @@ -48,14 +45,14 @@ set_fw_filter() { fi ;; 3) - if [ "$quic_rj" = "OFF" ]; then - quic_rj=ON - msg_alert "\033[33m已禁止QUIC流量通过ShellCrash内核!\033[0m" - else - quic_rj=OFF - msg_alert "\033[33m已取消禁止QUIC协议流量!\033[0m" - fi - setconfig quic_rj $quic_rj + if [ "$quic_rj" = "OFF" ]; then + quic_rj=ON + msg_alert "\033[33m已禁止QUIC流量通过ShellCrash内核!\033[0m" + else + quic_rj=OFF + msg_alert "\033[33m已取消禁止QUIC协议流量!\033[0m" + fi + setconfig quic_rj $quic_rj ;; 4) if [ -n "$(ipset -v 2>/dev/null)" ] || [ "$firewall_mod" = 'nftables' ]; then @@ -152,7 +149,7 @@ set_common_ports() { 3) while true; do 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 @@ -203,9 +200,10 @@ set_cust_host_ipv4() { . "$CRASHDIR"/starts/fw_getlanip.sh && getlanip comp_box "当前默认透明路由的网段为:\033[32m$host_ipv4\033[0m" \ "当前已添加的自定义网段为:\033[36m$cust_host_ipv4\033[0m" - content_line "1) 移除所有自定义网段" - content_line "2) 使用自定义网段覆盖默认网段 \033[36m$replace_default_host_ipv4\033[0m" - common_back + btm_box "1) 移除所有自定义网段" \ + "2) 使用自定义网段覆盖默认网段 \033[36m$replace_default_host_ipv4\033[0m" \ + "" \ + "0) $COMMON_BACK" read -r -p "请输入对应的序号或需要额外添加的网段> " text case "$text" in "" | 0) @@ -254,10 +252,10 @@ set_reserve_ipv4() { "" \ "当前网段:" \ "\033[36m$reserve_ipv4\033[0m" - btm_box "请直接输入自定义保留地址ipv4网段" \ + btm_box "\033[36m请直接输入自定义保留地址ipv4网段\033[0m" \ "或输入 1 重置默认网段" \ "或输入 0 返回上级菜单" - read -r -p "请输入> " text + read -r -p "请输入> " text case "$text" in "" | 0) break @@ -273,17 +271,17 @@ set_reserve_ipv4() { *) if echo "$text" | grep -Eq "(((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])/(3[0-2]|[1-2]?[0-9]))( +|$)+"; then reserve_ipv4="$text" - if setconfig reserve_ipv4 "'$reserve_ipv4'"; then - msg_alert "已将保留地址网段设为:\033[32m$reserve_ipv4\033[0m" - else - msg_alert "\033[31m$COMMON_FAILED\033[0m" - fi + if setconfig reserve_ipv4 "'$reserve_ipv4'"; then + msg_alert "已将保留地址网段设为:\033[32m$reserve_ipv4\033[0m" + else + msg_alert "\033[31m$COMMON_FAILED\033[0m" + fi else msg_alert "\033[31m输入有误,请重新输入!\033[0m" fi ;; - esac - done + esac + done } # 局域网设备过滤 fw_filter_lan() { @@ -305,7 +303,6 @@ fw_filter_lan() { else content_line "暫未添加任何mac地址" fi - separator_line "=" content_line "序号 \033[33m设备IP 设备mac地址 设备名称\033[0m" if [ -s "$dhcpdir" ]; then @@ -464,13 +461,13 @@ fw_filter_lan() { done separator_line "=" fi - content_line "1) 切换为\033[33m$fw_filter_lan_over模式\033[0m" - content_line "2) \033[32m添加指定设备(mac地址)\033[0m" - content_line "3) \033[32m添加指定设备(IP地址/网段)\033[0m" - content_line "4) \033[36m移除指定设备\033[0m" - content_line "9) \033[31m清空整个列表\033[0m" - content_line "" - common_back + btm_box "1) 切换为\033[33m$fw_filter_lan_over模式\033[0m" \ + "2) \033[32m添加指定设备(mac地址)\033[0m" \ + "3) \033[32m添加指定设备(IP地址/网段)\033[0m" \ + "4) \033[36m移除指定设备\033[0m" \ + "9) \033[31m清空整个列表\033[0m" \ + "" \ + "0) $COMMON_BACK" read -r -p "$COMMON_INPUT> " num case "$num" in "" | 0) diff --git a/scripts/menus/subconverter.sh b/scripts/menus/subconverter.sh index 79101ffc..7b1a7290 100644 --- a/scripts/menus/subconverter.sh +++ b/scripts/menus/subconverter.sh @@ -10,16 +10,14 @@ __IS_MODULE_SUBCONVERTER=1 # Subconverter在线订阅转换 subconverter() { while true; do - line_break - separator_line "=" - content_line "1) \033[32m生成\033[0m包含全部节点、订阅的配置文件" - content_line "2) 设置\033[31m排除节点正则\033[0m \033[47;30m$exclude\033[0m" - content_line "3) 设置\033[32m包含节点正则\033[0m \033[47;30m$include\033[0m" - content_line "4) 选择\033[33m在线规则模版\033[0m" - content_line "5) 选择\033[0mSubconverter服务器\033[0m" - content_line "6) 自定义浏览器UA \033[32m$user_agent\033[0m" - content_line "" - common_back + comp_box "1) \033[32m生成\033[0m包含全部节点、订阅的配置文件"\ + "2) 设置\033[31m排除节点正则\033[0m \033[47;30m$exclude\033[0m"\ + "3) 设置\033[32m包含节点正则\033[0m \033[47;30m$include\033[0m"\ + "4) 选择\033[33m在线规则模版\033[0m"\ + "5) 选择\033[0mSubconverter服务器\033[0m"\ + "6) 自定义浏览器UA \033[32m$user_agent\033[0m"\ + ""\ + "0) $COMMON_BACK" read -r -p "请输入对应数字> " num case "$num" in "" | 0) @@ -172,13 +170,12 @@ set_sub_ua() { comp_box "\033[36m无法正确获取配置文件时可尝试使用\033[0m" \ "" \ "当前UA:$user_agent" - content_line "1) 使用自动UA(默认)" - content_line "2) 不使用UA" - content_line "3) 使用自定义UA" - content_line "4) 清空UA" - content_line "" - content_line "0) 返回上级菜单" - separator_line "=" + btm_box "1) 使用自动UA(默认)"\ + "2) 不使用UA"\ + "3) 使用自定义UA"\ + "4) 清空UA"\ + ""\ + "0) 返回上级菜单" read -r -p "请输入对应数字> " num case "$num" in 0) diff --git a/scripts/menus/userguide.sh b/scripts/menus/userguide.sh index f37afbbf..b3102b92 100644 --- a/scripts/menus/userguide.sh +++ b/scripts/menus/userguide.sh @@ -13,9 +13,10 @@ forwhat() { "\033[33m$UG_CHOOSE_ENV\033[0m" \ "\033[0m$UG_TIP_CONFIG\033[0m" - btm_box "1) \033[32m$UG_OPTION_1\033[0m" \ - "2) \033[36m$UG_OPTION_2\033[0m" - [ -s "$CRASHDIR"/configs.tar.gz ] && content_line " 3 \033[33m$UG_OPTION_3\033[0m" + content_line "1) \033[32m$UG_OPTION_1\033[0m" + content_line "2) \033[36m$UG_OPTION_2\033[0m" + [ -s "$CRASHDIR"/configs.tar.gz ] && content_line "3) \033[33m$UG_OPTION_3\033[0m" + separator_line "=" read -r -p "$COMMON_INPUT> " num case "$num" in "" | 1) @@ -75,12 +76,12 @@ forwhat() { ;; 3) tar -zxf "$CRASHDIR"/configs.tar.gz -C "$CRASHDIR"/configs - content_line "\033[32m$UG_RESTORE_OK\033[0m" + msg_alert "\033[32m$UG_RESTORE_OK\033[0m" + line_break exit 0 ;; *) errornum - sleep 1 ;; esac done