Merge pull request #1193 from sofia-riese/redesign-1

chore(9_upgrade.sh): invoke the common.sh component
This commit is contained in:
juewuy
2026-01-31 22:23:04 +08:00
committed by GitHub

View File

@@ -17,12 +17,8 @@ error_down() {
# 更新/卸载功能菜单
upgrade() {
while true; do
if [ -z "$version_new" ]; then
checkupdate
line_break
else
line_break
fi
[ -z "$core_v" ] && core_v=$crashcore
core_v_new=$(eval echo \$"$crashcore"_v)
@@ -33,7 +29,6 @@ upgrade() {
[ "$(dir_avail "$CRASHDIR")" -le 5120 ] && [ "$CRASHDIR" = "$BINDIR" ] && {
content_line "\033[33m当前目录剩余空间较低建议开启小闪存模式\033[0m"
}
separator_line "="
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"
@@ -68,12 +63,8 @@ upgrade() {
setcrt
;;
6)
line_break
separator_line "="
content_line "PAC配置链接为\033[30;47m http://$host:$db_port/ui/pac \033[0m"
content_line "PAC的使用教程请参考\033[4;32mhttps://juewuy.github.io/ehRUeewcv\033[0m"
separator_line "="
sleep 2
msg_alert -t 2 "PAC配置链接为\033[30;47m http://$host:$db_port/ui/pac \033[0m" \
"PAC的使用教程请参考\033[4;32mhttps://juewuy.github.io/ehRUeewcv\033[0m"
;;
7)
setserver
@@ -82,10 +73,7 @@ upgrade() {
. "$CRASHDIR"/menus/uninstall.sh && uninstall
;;
9)
line_break
separator_line "="
content_line "感谢以下项目及其开发者们的无私奉献!"
separator_line "="
comp_box "感谢以下项目及其开发者们的无私奉献!"
content_line "\033[32mClash \033[0m开发\033[36mDreamacro\033[0m"
content_line ""
@@ -118,14 +106,11 @@ upgrade() {
content_line "开发者地址:\033[32mhttps://github.com/DustinWin\033[0m"
content_line ""
separator_line "="
content_line "特别感谢:\033[36m所有帮助及赞助过此项目的同仁们\033[0m"
separator_line "="
comp_box "特别感谢:\033[36m所有帮助及赞助过此项目的同仁们\033[0m"
sleep 2
;;
*)
errornum
sleep 1
;;
esac
done
@@ -187,15 +172,12 @@ getscripts() {
setscripts() {
while true; do
comp_box "\033[33m注意更新时会停止服务\033[0m" \
"" \
"当前脚本版本为:\033[36m$versionsh_l\033[0m" \
"最新脚本版本为:\033[32m$version_new\033[0m"
btm_box "1) 立即更新" \
"0) 返回上级菜单"
read -r -p "请输入对应标号> " res
case "$res" in
"" | 0)
@@ -210,7 +192,6 @@ setscripts() {
;;
*)
errornum
sleep 1
;;
esac
done
@@ -224,7 +205,6 @@ setcpucore() {
comp_box "\033[31m仅适合脚本无法正确识别核心或核心无法正常运行时使用\033[0m" \
"不知道如何获取核心版本?\033[0m" \
"请参考:\033[36;4mhttps://juewuy.github.io/bdaz\033[0m"
content_line "当前可供在线下载的处理器架构为:"
separator_line "-"
@@ -249,15 +229,13 @@ setcpucore() {
# 手动指定内核类型
setcoretype() {
while true; do
line_break
separator_line "="
echo "$crashcore" | grep -q 'singbox' && core_old=singbox || core_old=clash
content_line "\033[33m请确认该自定义内核的类型\033[0m"
separator_line "-"
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 "="
read -r -p "请输入对应标号> " num
@@ -277,7 +255,6 @@ setcoretype() {
;;
*)
errornum
sleep 1
continue
;;
esac
@@ -292,15 +269,11 @@ switch_core() {
[ "$core_new" != "$core_old" ] && {
[ "$dns_mod" = "redir_host" ] && [ "$core_old" = "clash" ] && setconfig dns_mod mix #singbox自动切换dns
[ "$dns_mod" = "mix" ] && [ "$crashcore" = 'clash' -o "$crashcore" = 'clashpre' ] && setconfig dns_mod redir_host #singbox自动切换dns
line_break
separator_line "="
content_line "\033[33m已从$core_old内核切换至$core_new内核\033[0m"
content_line "\033[33m二者Geo数据库及yaml/json配置文件不通用\033[0m"
content_line "是否保留相关数据库文件?"
separator_line "-"
content_line "1) 保留"
content_line "0) 不保留"
separator_line "="
comp_box "\033[33m已从$core_old内核切换至$core_new内核\033[0m" \
"\033[33m二者Geo数据库及yaml/json配置文件不通用\033[0m" \
"是否保留相关数据库文件?"
btm_box "1) 保留" \
"0) 不保留"
read -r -p "请输入对应标号> " res
[ "$res" = '0' ] && {
[ "$core_old" = "clash" ] && {
@@ -381,12 +354,9 @@ checkcustcore() {
if [ -s "$TMPDIR"/core.list ]; then
separator_line "="
line_break
separator_line "="
content_line "内核版本\033[36m$release_tag\033[0m"
content_line "发布时间:\033[33m$release_date\033[0m"
content_line "更新时间:\033[32m$update_date\033[0m"
separator_line "-"
comp_box "内核版本:\033[36m$release_tag\033[0m" \
"发布时间:\033[33m$release_date\033[0m" \
"更新时间\033[32m$update_date\033[0m"
content_line "\033[33m请确认内核信息并选择\033[0m"
separator_line "-"
grep -oE "$release_tag.*" "$TMPDIR/core.list" |
@@ -410,12 +380,10 @@ checkcustcore() {
getcore
else
errornum
sleep 1
fi
;;
*)
errornum
sleep 1
;;
esac
else
@@ -485,13 +453,10 @@ setcustcore() {
checkcustcore
;;
9)
line_break
separator_line "="
content_line "请输入自定义内核的链接地址"
content_line "(必须是以.tar.gz或.gz结尾的压缩文件"
content_line ""
content_line "或者输入 0 返回上级菜单"
separator_line "="
comp_box "请输入自定义内核的链接地址" \
"(必须是以.tar.gz或.gz结尾的压缩文件" \
"" \
"或者输入 0 返回上级菜单"
read -r -p "请输入> " link
if [ "$link" = 0 ]; then
continue
@@ -503,7 +468,6 @@ setcustcore() {
;;
*)
errornum
sleep 1
;;
esac
done
@@ -533,7 +497,6 @@ setziptype() {
;;
*)
errornum
sleep 1
;;
esac
setconfig zip_type "$zip_type"
@@ -576,7 +539,6 @@ setcore() {
content_line "9) 手动指定处理器架构"
content_line ""
content_line "0 返回上级菜单"
separator_line "="
read -r -p "请输入对应标号> " num
case "$num" in
@@ -585,11 +547,7 @@ setcore() {
;;
1)
[ -d "/jffs" ] && {
line_break
separator_line "="
content_line "\033[31mMeta内核使用的GeoSite.dat数据库在华硕设备存在被系统误删的问题可能无法使用!\033[0m"
separator_line "="
sleep 2
msg_alert -t 2 "\033[31mMeta内核使用的GeoSite.dat数据库在华硕设备存在被系统误删的问题可能无法使用!\033[0m"
}
crashcore=meta
custcorelink=''
@@ -630,7 +588,6 @@ setcore() {
;;
*)
errornum
sleep 1
;;
esac
done
@@ -697,25 +654,19 @@ checkcustgeo() {
while true; do
[ "$api_tag" = "latest" ] && api_url=latest || api_url="tags/$api_tag"
[ ! -s "$TMPDIR"/geo.list ] && {
line_break
separator_line "="
content_line "\033[32m正在查找可更新的数据库文件......\033[0m"
separator_line "="
comp_box "\033[32m正在查找可更新的数据库文件......\033[0m"
webget "$TMPDIR"/github_api https://api.github.com/repos/${project}/releases/${api_url}
release_tag=$(cat "$TMPDIR"/github_api | grep '"tag_name":' | awk -F '"' '{print $4}')
cat "$TMPDIR"/github_api | grep "browser_download_url" | grep -oE 'releases/download.*' | grep -oiE 'geosite.*\.dat"$|country.*\.mmdb"$|.*.mrs|.*.srs' | sed 's|.*/||' | sed 's/"//' >"$TMPDIR"/geo.list
rm -rf "$TMPDIR"/github_api
}
if [ -s "$TMPDIR"/geo.list ]; then
line_break
separator_line "="
content_line "请选择需要更新的数据库文件:"
separator_line "-"
comp_box "请选择需要更新的数据库文件:"
awk '{print NR") "$1}' "$TMPDIR/geo.list" |
while IFS= read -r line; do
content_line "$line"
done
content_line ""
content_line "0) 返回上级菜单"
separator_line "="
read -r -p "请输入对应标号> " num
@@ -733,21 +684,15 @@ checkcustgeo() {
getcustgeo
else
errornum
sleep 1
break
fi
;;
*)
errornum
sleep 1
;;
esac
else
line_break
separator_line "="
content_line "\033[31m查找失败请尽量在服务启动后再使用本功能\033[0m"
separator_line "="
sleep 1
msg_alert "\033[31m查找失败请尽量在服务启动后再使用本功能\033[0m"
fi
done
}
@@ -756,13 +701,11 @@ checkcustgeo() {
setcustgeo() {
while true; do
rm -rf "$TMPDIR"/geo.list
line_break
separator_line "="
content_line "\033[36m此处数据库均源自互联网采集此处致谢各位开发者\033[0m"
content_line "\033[32m请点击或复制链接前往项目页面查看具体说明\033[0m"
content_line "\033[31m自定义数据库不支持定时任务及小闪存模式\033[0m"
content_line "\033[33m如遇到网络错误请先启动ShellCrash服务\033[0m"
separator_line "-"
comp_box "\033[36m此处数据库均源自互联网采集此处致谢各位开发者\033[0m" \
"\033[32m请点击或复制链接前往项目页面查看具体说明\033[0m" \
"\033[31m自定义数据库不支持定时任务及小闪存模式\033[0m" \
"\033[33m如遇到网络错误请先启动ShellCrash服务\033[0m"
content_line "\033[0m请选择需要更新的数据库项目来源\033[0m"
separator_line "-"
content_line "1) \033[36;4mhttps://github.com/MetaCubeX/meta-rules-dat\033[0m"
@@ -781,6 +724,7 @@ setcustgeo() {
sub_content_line "仅限Clash-GeoIP"
content_line "9) \033[33m自定义数据库链接 \033[0m"
content_line ""
content_line "0) 返回上级菜单"
separator_line "="
read -r -p "请输入对应标号> " num
@@ -815,13 +759,12 @@ setcustgeo() {
;;
9)
line_break
read -r -p "请输入自定义数据库的链接地址 > " link
read -r -p "请输入自定义数据库的链接地址> " link
[ -n "$link" ] && custgeolink="$link"
getgeo
;;
*)
errornum
sleep 1
;;
esac
done
@@ -829,15 +772,13 @@ setcustgeo() {
setgeo() {
while true; do
line_break
. $CFG_PATH >/dev/null
[ -n "$cn_mini_v" ] && geo_type_des=精简版 || geo_type_des=全球版
separator_line "="
content_line "\033[33m注意Mihomo内核和SingBox内核的数据库文件不通用\033[0m"
content_line "在线数据库最新版本(每日同步上游):\033[32m$GeoIP_v\033[0m"
content_line ""
content_line "请选择需要更新的Geo数据库文件"
separator_line "="
comp_box "\033[33m注意Mihomo内核和SingBox内核的数据库文件不通用\033[0m" \
"在线数据库最新版本(每日同步上游):\033[32m$GeoIP_v\033[0m" \
"" \
"请选择需要更新的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 ""
@@ -892,12 +833,10 @@ setgeo() {
;;
9)
while true; do
comp_box "\033[33m这将清理$CRASHDIR目录及/ruleset目录下所有数据库文件\033[0m"
"清理后启动服务即可自动下载所需文件"
content_line "1) 确认清理"
content_line "0) 返回上级菜单"
separator_line "="
comp_box "\033[33m这将清理$CRASHDIR目录及/ruleset目录下所有数据库文件\033[0m" \
"清理后启动服务即可自动下载所需文件"
btm_box "1) 确认清理" \
"0) 返回上级菜单"
read -r -p "请输入对应标号> " res
case "$res" in
"" | 0)
@@ -916,14 +855,12 @@ setgeo() {
;;
*)
errornum
sleep 1
;;
esac
done
;;
*)
errornum
sleep 1
;;
esac
done
@@ -974,16 +911,10 @@ getdb() {
}
dbdir() {
line_break
separator_line "="
if [ -f /www/clash/CNAME ] || [ -f "$CRASHDIR"/ui/CNAME ]; then
content_line "\033[33m检测到已经安装过本地面板\033[0m"
separator_line "="
content_line "请选择操作:"
separator_line "-"
content_line "1) 升级/覆盖安装"
content_line "0) 返回上级菜单"
separator_line "="
comp_box "\033[33m检测到已经安装过本地面板\033[0m"
btm_box "1) 升级/覆盖安装" \
"0) 返回上级菜单"
read -r -p "请输入对应标号> " res
if [ "$res" = 1 ]; then
rm -rf "$BINDIR"/ui
@@ -994,15 +925,12 @@ dbdir() {
msg_alert "\033[33m安装已取消\033[0m"
return 1
fi
elif [ -w /www ] && [ -n "$(pidof nginx)" ]; then
separator_line "请选择面板\033[33m安装目录\033[0m"
separator_line "="
content_line "1) 在${CRASHDIR}/ui目录安装"
content_line "2) 在/www/clash目录安装"
content_line ""
separator_line "0) 返回上级菜单"
separator_line "="
comp_box "请选择面板\033[33m安装目录\033[0m"
btm_box "1) 在${CRASHDIR}/ui目录安装" \
"2) 在/www/clash目录安装" \
"" \
"0) 返回上级菜单"
read -r -p "请输入对应标号> " num
case "$num" in
"" | 0)
@@ -1020,7 +948,6 @@ dbdir() {
;;
*)
errornum
sleep 1
return 1
;;
esac
@@ -1033,13 +960,10 @@ dbdir() {
setdb() {
while true; do
line_break
separator_line "="
content_line "\033[36m安装 dashboard 管理面板到本地\033[0m"
content_line "\033[32m打开管理面板的速度更快且更稳定\033[0m"
separator_line "="
content_line "请选择面板安装类型:"
separator_line "-"
comp_box "\033[36m安装 dashboard 管理面板到本地\033[0m" \
"\033[32m打开管理面板的速度更快且更稳定\033[0m" \
"" \
"请选择面板安装类型:"
content_line " - - - - - - -维护中- - - - - - -"
content_line "1) 安装\033[32mzashboard面板\033[0m约2.2mb"
content_line "2) 安装\033[32mMetaXD面板\033[0m约1.5mb"
@@ -1049,9 +973,9 @@ setdb() {
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 "="
read -r -p "请输入对应标号> " num
case "$num" in
"" | 0)
@@ -1085,13 +1009,9 @@ setdb() {
;;
9)
while true; do
line_break
separator_line "="
content_line "是否卸载本地面板:"
separator_line "="
content_line "1) 确认卸载"
content_line "0) 返回上级菜单"
separator_line "="
comp_box "是否卸载本地面板?"
btm_box "1) 确认卸载" \
"0) 返回上级菜单"
read -r -p "请输入对应标号> " res
case "$res" in
"" | 0)
@@ -1106,14 +1026,12 @@ setdb() {
;;
*)
errornum
sleep 1
;;
esac
done
;;
*)
errornum
sleep 1
;;
esac
done
@@ -1184,7 +1102,6 @@ setcrt() {
;;
*)
errornum
sleep 1
continue
;;
esac
@@ -1275,12 +1192,9 @@ setserver() {
;;
c)
while true; do
line_break
separator_line "="
content_line "\033[33m开发版未经过妥善测试可能依然存在大量bug\033[0m"
content_line "\033[33m如果你没有足够的耐心或者测试经验切勿使用此版本\033[0m"
content_line "请务必加入我们的讨论组:\033[36;4mhttps://t.me/ShellClash\033[0m"
separator_line "="
comp_box "\033[33m开发版未经过妥善测试可能依然存在大量bug\033[0m" \
"\033[33m如果你没有足够的耐心或者测试经验切勿使用此版本\033[0m" \
"请务必加入我们的讨论组:\033[36;4mhttps://t.me/ShellClash\033[0m"
content_line "是否依然切换到开发版:"
separator_line "-"
content_line "1) 确认切换"
@@ -1299,18 +1213,13 @@ setserver() {
;;
*)
errornum
sleep 1
;;
esac
done
;;
d)
line_break
separator_line "="
content_line "请直接输入个人源路径"
content_line ""
content_line "或者输入 0 返回上级菜单"
separator_line "="
comp_box "请直接输入个人源路径" \
"或者输入 0 返回上级菜单"
read -r -p "请输入个人源路径> " update_url
if [ "$update_url" = 0 ]; then
continue
@@ -1321,9 +1230,9 @@ setserver() {
fi
;;
e)
line_break
separator_line "="
if [ -n "$url_id" ] && [ "$url_id" -lt 200 ]; then
line_break
separator_line "="
content_line "\033[32m正在获取版本信息......\033[0m"
. "$CRASHDIR"/libs/web_get_lite.sh
web_get_lite https://github.com/juewuy/ShellCrash/tags | grep -o 'releases/tag/.*data' | awk -F '/' '{print $3}' | sed 's/".*//g' >"$TMPDIR"/tags
@@ -1352,7 +1261,6 @@ setserver() {
saveserver
else
errornum
sleep 1
continue
fi
else
@@ -1363,16 +1271,13 @@ setserver() {
fi
rm -rf "$TMPDIR"/tags
else
content_line "\033[31m当前源不支持版本回退\033[0m"
content_line "\033[31m请尝试更换其他安装源\033[0m"
separator_line "="
sleep 1
msg_alert "\033[31m当前源不支持版本回退\033[0m" \
"\033[31m请尝试更换其他安装源\033[0m"
continue
fi
;;
*)
errornum
sleep 1
;;
esac
done