~增加Zashboard、metaxd面板自动配置面板更新功能(需重装面板)

~增加6-1在线获取配置首次失败后自动更新在线服务器列表的功能
~优化本地面板选择界面顺序及文字描述
~修复wget推送日志时会错误留下本地文件的bug
~修复自动更新内核任务功能更新内核失败的bug
~修复小闪存模式使用自定义内核时无法正确显示内核类型的bug
This commit is contained in:
juewuy
2025-12-06 19:59:07 +08:00
parent 9ba7e02279
commit 34102a9a50
3 changed files with 40 additions and 26 deletions

View File

@@ -118,7 +118,7 @@ logger() { #日志工具
if curl --version >/dev/null 2>&1; then if curl --version >/dev/null 2>&1; then
curl -kfsSl -X POST --connect-timeout 3 -H "Content-Type: application/json; charset=utf-8" "$1" -d "$2" >/dev/null 2>&1 curl -kfsSl -X POST --connect-timeout 3 -H "Content-Type: application/json; charset=utf-8" "$1" -d "$2" >/dev/null 2>&1
elif wget --version >/dev/null 2>&1; then elif wget --version >/dev/null 2>&1; then
wget -Y on -q --timeout=3 --method=POST --header="Content-Type: application/json; charset=utf-8" --body-data="$2" "$1" wget -Y on -q --timeout=3 -O - --method=POST --header="Content-Type: application/json; charset=utf-8" --body-data="$2" "$1" >/dev/null 2>&1
else else
echo "找不到有效的curl或wget应用请先安装" echo "找不到有效的curl或wget应用请先安装"
fi fi
@@ -317,6 +317,10 @@ check_singbox_config() { #检查singbox配置文件
#清理多余逗号 #清理多余逗号
sed -i 's/,\+/,/g; s/\[,/\[/g; s/,]/]/g' "$core_config_new" sed -i 's/,\+/,/g; s/\[,/\[/g; s/,]/]/g' "$core_config_new"
} }
update_servers(){ #更新servers.list
get_bin "$TMPDIR"/servers.list public/servers.list
[ "$?" = 0 ] && mv -f "$TMPDIR"/servers.list "$CRASHDIR"/configs/servers.list
}
get_core_config() { #下载内核配置文件 get_core_config() { #下载内核配置文件
[ -z "$rule_link" ] && rule_link=1 [ -z "$rule_link" ] && rule_link=1
[ -z "$server_link" ] || [ $server_link -gt $(grep -aE '^4' "$CRASHDIR"/configs/servers.list | wc -l) ] && server_link=1 [ -z "$server_link" ] || [ $server_link -gt $(grep -aE '^4' "$CRASHDIR"/configs/servers.list | wc -l) ] && server_link=1
@@ -354,8 +358,13 @@ get_core_config() { #下载内核配置文件
else else
retry=$((retry + 1)) retry=$((retry + 1))
logger "配置文件获取失败!" 31 logger "配置文件获取失败!" 31
echo -e "\033[32m尝试使用其他服务器获取配置\033[0m" if [ "$retry" = 1 ];then
logger "正在重试第$retry次/共3次" 33 echo -e "\033[32m尝试更新服务器列表并使用其他服务器获取配置\033[0m"
update_servers
else
echo -e "\033[32m尝试使用其他服务器获取配置\033[0m"
fi
echo -e "正在重试\033[33m第$retry次/共3次\033[0m"
if [ "$server_link" -ge 4 ]; then if [ "$server_link" -ge 4 ]; then
server_link=0 server_link=0
fi fi
@@ -450,6 +459,7 @@ log-level: info
ipv6: true ipv6: true
external-controller: :$db_port external-controller: :$db_port
external-ui: ui external-ui: ui
external-ui-url: "$external_ui_url"
secret: $secret secret: $secret
$tun $tun
$exper $exper
@@ -874,6 +884,7 @@ EOF
"clash_api": { "clash_api": {
"external_controller": "0.0.0.0:$db_port", "external_controller": "0.0.0.0:$db_port",
"external_ui": "ui", "external_ui": "ui",
"external_ui_download_url": "$external_ui_url",
"secret": "$secret", "secret": "$secret",
"default_mode": "Rule" "default_mode": "Rule"
} }

View File

@@ -28,7 +28,7 @@ update_core(){ #自动更新内核
#检查版本 #检查版本
check_update check_update
crash_v_new=$(eval echo \$${crashcore}_v) crash_v_new=$(eval echo \$${crashcore}_v)
if [ -z "$crash_v_new" -o "$crash_v_new" = "core_v" ];then if [ -z "$crash_v_new" -o "$crash_v_new" = "$core_v" ];then
logger "任务【自动更新内核】中止-未检测到版本更新" logger "任务【自动更新内核】中止-未检测到版本更新"
exit 1 exit 1
else else
@@ -49,13 +49,13 @@ update_core(){ #自动更新内核
else else
[ -n "$(pidof CrashCore)" ] && ${CRASHDIR}/start.sh stop #停止内核服务防止内存不足 [ -n "$(pidof CrashCore)" ] && ${CRASHDIR}/start.sh stop #停止内核服务防止内存不足
[ -f ${TMPDIR}/core_new.tar.gz ] && { [ -f ${TMPDIR}/core_new.tar.gz ] && {
mkdir -p ${TMPDIR}/core_new mkdir -p ${TMPDIR}/core_new_dir
[ "$BINDIR" = "$TMPDIR" ] && rm -rf ${TMPDIR}/CrashCore #小闪存模式防止空间不足 [ "$BINDIR" = "$TMPDIR" ] && rm -rf ${TMPDIR}/CrashCore #小闪存模式防止空间不足
tar -zxf "${TMPDIR}/core_new.tar.gz" ${tar_para} -C ${TMPDIR}/core_new/ tar -zxf "${TMPDIR}/core_new.tar.gz" ${tar_para} -C ${TMPDIR}/core_new_dir/
for file in $(find ${TMPDIR}/core_tmp 2>/dev/null);do for file in $(find ${TMPDIR}/core_new_dir 2>/dev/null);do
[ -f $file ] && [ -n "$(echo $file | sed 's#.*/##' | grep -iE '(CrashCore|sing|meta|mihomo|clash|premium)')" ] && mv -f $file ${TMPDIR}/core_new [ -f $file ] && [ -n "$(echo $file | sed 's#.*/##' | grep -iE '(CrashCore|sing|meta|mihomo|clash|premium)')" ] && mv -f $file ${TMPDIR}/core_new
done done
rm -rf ${TMPDIR}/core_new rm -rf ${TMPDIR}/core_new_dir
} }
[ -f ${TMPDIR}/core_new.gz ] && gunzip ${TMPDIR}/core_new.gz >/dev/null && rm -rf ${TMPDIR}/core_new.gz [ -f ${TMPDIR}/core_new.gz ] && gunzip ${TMPDIR}/core_new.gz >/dev/null && rm -rf ${TMPDIR}/core_new.gz
chmod +x ${TMPDIR}/core_new chmod +x ${TMPDIR}/core_new

View File

@@ -1489,7 +1489,7 @@ setcustcore(){ #自定义内核
setcore(){ #内核选择菜单 setcore(){ #内核选择菜单
#获取核心及版本信息 #获取核心及版本信息
[ -z "$crashcore" ] && crashcore="unknow" [ -z "$crashcore" ] && crashcore="unknow"
[ ! -f ${CRASHDIR}/CrashCore.tar.gz ] && crashcore="未安装核心" [ ! -f ${CRASHDIR}/CrashCore.tar.gz -o ! -f ${BINDIR}/CrashCore.tar.gz ] && crashcore="未安装核心"
echo "$crashcore" | grep -q 'singbox' && core_old=singbox || core_old=clash echo "$crashcore" | grep -q 'singbox' && core_old=singbox || core_old=clash
[ -n "$custcorelink" ] && custcore="$(echo $custcorelink | sed 's#.*github.com##; s#/releases/download/#@#; s#-linux.*$##')" [ -n "$custcorelink" ] && custcore="$(echo $custcorelink | sed 's#.*github.com##; s#/releases/download/#@#; s#-linux.*$##')"
### ###
@@ -1844,7 +1844,7 @@ setdb(){
echo ----------------------------------------------- echo -----------------------------------------------
echo -e "\033[31m检测到您已经安装过本地面板了\033[0m" echo -e "\033[31m检测到您已经安装过本地面板了\033[0m"
echo ----------------------------------------------- echo -----------------------------------------------
read -p "是否覆盖安装?[1/0] > " res read -p "是否升级/覆盖安装?[1/0] > " res
if [ "$res" = 1 ]; then if [ "$res" = 1 ]; then
rm -rf ${BINDIR}/ui rm -rf ${BINDIR}/ui
[ -f /www/clash/CNAME ] && rm -rf /www/clash && dbdir=/www/clash [ -f /www/clash/CNAME ] && rm -rf /www/clash && dbdir=/www/clash
@@ -1888,15 +1888,15 @@ setdb(){
echo -e "\033[32m打开管理面板的速度更快且更稳定\033[0m" echo -e "\033[32m打开管理面板的速度更快且更稳定\033[0m"
echo ----------------------------------------------- echo -----------------------------------------------
echo -e "请选择面板\033[33m安装类型\033[0m" echo -e "请选择面板\033[33m安装类型\033[0m"
echo -----------------维护中------------------------
echo -e " 1 安装\033[32mzashboard面板\033[0m(约1.2mb)"
echo -e " 2 安装\033[32mMetaXD面板\033[0m(约1.5mb)"
echo -e " 3 安装\033[32mYacd-Meta魔改面板\033[0m(约1.5mb)"
echo ---------------已停止维护----------------------
echo -e " 4 安装\033[32m基础面板\033[0m(约500kb)"
echo -e " 5 安装\033[32mMeta基础面板\033[0m(约800kb)"
echo -e " 6 安装\033[32mYacd面板\033[0m(约1.1mb)"
echo ----------------------------------------------- echo -----------------------------------------------
echo -e " 1 安装\033[32mYacd面板\033[0m(约1.1mb)"
echo -e " 2 安装\033[32mYacd-Meta魔改面板\033[0m(约1.5mb)"
echo -e " 3 安装\033[32mMetaXD面板\033[0m(约1.5mb)"
echo -e " 4 安装\033[32mzashboard面板\033[0m(约1.2mb)"
[ "$crashcore" != singbox ] && {
echo -e " 5 安装\033[32m基础面板\033[0m(约500kb)"
echo -e " 6 安装\033[32mMeta基础面板\033[0m(约800kb)"
}
echo -e " 9 卸载\033[33m本地面板\033[0m" echo -e " 9 卸载\033[33m本地面板\033[0m"
echo " 0 返回上级菜单" echo " 0 返回上级菜单"
read -p "请输入对应数字 > " num read -p "请输入对应数字 > " num
@@ -1904,29 +1904,32 @@ setdb(){
case "$num" in case "$num" in
0) ;; 0) ;;
1) 1)
db_type=yacd db_type=zashboard
echo $update_url
setconfig external_ui_url "https://raw.githubusercontent.com/juewuy/ShellCrash/dev/bin/dashboard/zashboard.tar.gz"
dbdir dbdir
;; ;;
2) 2)
db_type=meta_yacd db_type=meta_xd
setconfig external_ui_url "https://raw.githubusercontent.com/juewuy/ShellCrash/dev/bin/dashboard/meta_xd.tar.gz"
dbdir dbdir
;; ;;
3) 3)
db_type=meta_xd db_type=meta_yacd
dbdir dbdir
;; ;;
4) 4)
db_type=zashboard
dbdir
;;
5)
db_type=clashdb db_type=clashdb
dbdir dbdir
;; ;;
6) 5)
db_type=meta_db db_type=meta_db
dbdir dbdir
;; ;;
6)
db_type=yacd
dbdir
;;
9) 9)
read -p "确认卸载本地面板?(1/0) > " res read -p "确认卸载本地面板?(1/0) > " res
if [ "$res" = 1 ];then if [ "$res" = 1 ];then