chore: invoke the common.sh componen

This commit is contained in:
sofia-riese
2026-02-03 19:04:12 +08:00
parent 8a37ff52b6
commit 3aaa8b6460
4 changed files with 122 additions and 137 deletions

View File

@@ -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

View File

@@ -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)

View File

@@ -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)

View File

@@ -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