From cf3b062bb8bdab1a4042182c3ccd8ea1d0484ea4 Mon Sep 17 00:00:00 2001 From: libm Date: Tue, 25 Feb 2025 00:46:34 +0800 Subject: [PATCH] fix: optimize download steps, bug fixed. --- install.sh | 12 ++++++++++-- script/clashctl.sh | 17 ++++++++++++----- script/common.sh | 6 ++---- 3 files changed, 24 insertions(+), 11 deletions(-) diff --git a/install.sh b/install.sh index fe7de53..985dbbc 100755 --- a/install.sh +++ b/install.sh @@ -4,17 +4,25 @@ . script/clashctl.sh _valid_env -_get_kernel [ -d "$CLASH_BASE_DIR" ] && _error_quit "已安装,如需重新安装请先执行卸载脚本" +_get_kernel # shellcheck disable=SC2086 install -D -m +x <(gzip -dc $ZIP_KERNEL) $BIN_KERNEL # shellcheck disable=SC2086 tar -xf $ZIP_CONVERT -C "$BIN_BASE_DIR" _valid_config "$RESOURCES_CONFIG" || { _okcat '输入订阅链接:' | tr -d '\n' && read -r url - _download_config "$url" "$RESOURCES_CONFIG" || _error_quit "配置无效:请检查配置内容:$RESOURCES_CONFIG" + _download_config "$url" "$RESOURCES_CONFIG" || { + rm -rf "$CLASH_BASE_DIR" + _error_quit "下载失败: 请将配置内容写入 $RESOURCES_CONFIG 后重新安装" + } + _okcat "下载成功:内核验证配置..." + _valid_config "$RESOURCES_CONFIG" || { + rm -rf "$CLASH_BASE_DIR" + _error_quit "配置无效,请检查:$RESOURCES_CONFIG" + } } _okcat '✅' '配置可用' echo "$url" >"$CLASH_CONFIG_URL" diff --git a/script/clashctl.sh b/script/clashctl.sh index f3a9c86..9750df1 100644 --- a/script/clashctl.sh +++ b/script/clashctl.sh @@ -83,9 +83,10 @@ function clashsecret() { _okcat "当前密钥:$(sudo "$BIN_YQ" '.secret // ""' "$CLASH_CONFIG_RUNTIME")" ;; 1) - local secret=$1 - [ -z "$secret" ] && secret=\"\" - sudo "$BIN_YQ" -i ".secret = $secret" "$CLASH_CONFIG_MIXIN" + sudo "$BIN_YQ" -i ".secret = \"$1\"" "$CLASH_CONFIG_MIXIN" || { + _failcat "密钥更新失败,请重新输入" + return 1 + } _merge_config_restart _okcat "密钥更新成功,已重启生效" ;; @@ -164,12 +165,18 @@ function clashupdate() { _okcat "备份配置:$CLASH_CONFIG_RAW_BAK" sudo cat "$CLASH_CONFIG_RAW" | sudo tee "$CLASH_CONFIG_RAW_BAK" >&/dev/null - _download_config "$url" "$CLASH_CONFIG_RAW" || { - _failcat "验证失败:回滚配置..." + + _rollback() { + _failcat "$1" sudo cat "$CLASH_CONFIG_RAW_BAK" | sudo tee "$CLASH_CONFIG_RAW" >&/dev/null _failcat '❌' "[$(date +"%Y-%m-%d %H:%M:%S")] 订阅更新失败:$url" 2>&1 | sudo tee -a "${CLASH_UPDATE_LOG}" _error_quit } + + _download_config "$url" "$CLASH_CONFIG_RAW" || _rollback "下载失败:回滚配置..." + _okcat "下载成功:内核验证配置..." + _valid_config "$CLASH_CONFIG_RAW" || _rollback "配置无效:回滚配置..." + _merge_config_restart echo "$url" | sudo tee "$CLASH_CONFIG_URL" >&/dev/null _okcat '✅' "[$(date +"%Y-%m-%d %H:%M:%S")] 订阅更新成功:$url" | sudo tee -a "${CLASH_UPDATE_LOG}" diff --git a/script/common.sh b/script/common.sh index 22e0c18..a4c77fc 100644 --- a/script/common.sh +++ b/script/common.sh @@ -274,12 +274,10 @@ _download_convert_config() { function _download_config() { local url=$1 local dest=$2 - _download_raw_config "$url" "$dest" || _error_quit "下载失败: 请自行粘贴配置内容到 ${dest}" + _download_raw_config "$url" "$dest" || return 1 _okcat "下载成功:内核验证配置..." _valid_config "$dest" || { _failcat "验证失败:本地订阅转换..." - _download_convert_config "$url" "$dest" - _okcat "转换成功:内核验证配置..." - _valid_config "$dest" + _download_convert_config "$url" "$dest" || return 1 } }