update 2024-10-28 00:23:52

This commit is contained in:
kenzok8
2024-10-28 00:23:52 +08:00
parent 7134d735f5
commit ec08586dd0
3 changed files with 90 additions and 42 deletions

View File

@@ -3,7 +3,7 @@
# AutoUpdate for Openwrt # AutoUpdate for Openwrt
# Dependences: wget-ssl/wget/uclient-fetch curl jq expr sysupgrade nslookup # Dependences: wget-ssl/wget/uclient-fetch curl jq expr sysupgrade nslookup
Version=V6.9.12 Version=V6.10.0
function TITLE() { function TITLE() {
clear && echo "Openwrt-AutoUpdate Script by Hyy2001 ${Version}" clear && echo "Openwrt-AutoUpdate Script by Hyy2001 ${Version}"
@@ -22,9 +22,10 @@ function SHELL_HELP() {
-f 跳过版本号校验,并强制刷写固件 ${Red}(危险)${White} * -f 跳过版本号校验,并强制刷写固件 ${Red}(危险)${White} *
-F, --force-flash 强制刷写固件 ${Red}(危险)${White} * -F, --force-flash 强制刷写固件 ${Red}(危险)${White} *
-P, --proxy 优先开启镜像加速下载固件 * -P, --proxy 优先开启镜像加速下载固件 *
${Next} A 自动选择 ${Next} A 自动选择镜像地址
${Next} F Cloudflare Workers ${Next} E hub.gitmirror.com
${Next} G Ghproxy ${Next} F gh.con.sh
${Next} G ghp.ci
-D <Downloader> 使用指定的下载器 <wget-ssl | wget | curl | uclient-fetch> * -D <Downloader> 使用指定的下载器 <wget-ssl | wget | curl | uclient-fetch> *
--decompress 解压 img.gz 固件后再更新固件 * --decompress 解压 img.gz 固件后再更新固件 *
--skip-verify 跳过固件 SHA256 校验 ${Red}(危险)${White} * --skip-verify 跳过固件 SHA256 校验 ${Red}(危险)${White} *
@@ -218,9 +219,11 @@ function GET_IP() {
if [[ ${Result} ]] if [[ ${Result} ]]
then then
echo "${Result}" echo "${Result}"
LOGGER "DNS $2 解析 $1 ... ${Result}"
return 0 return 0
else else
return 1 return 1
LOGGER "DNS $2 解析 $1 ... 失败"
fi fi
} }
@@ -232,13 +235,14 @@ function ECHO() {
else else
while [[ $1 ]];do while [[ $1 ]];do
case $1 in case $1 in
r | g | b | y | x) r | g | b | y | x | w)
case $1 in case $1 in
r) Color="${Red}";; r) Color="${Red}";;
g) Color="${Green}";; g) Color="${Green}";;
b) Color="${Blue}";; b) Color="${Blue}";;
y) Color="${Yellow}";; y) Color="${Yellow}";;
x) Color="${Grey}";; x) Color="${Grey}";;
w) Color="${White}";;
esac esac
shift shift
;; ;;
@@ -548,7 +552,7 @@ function ANALYZE_API() {
local API_Cache=${Tmp_Path}/API_Cache local API_Cache=${Tmp_Path}/API_Cache
if [[ $(CHECK_TIME ${API_File} 1) == false ]] if [[ $(CHECK_TIME ${API_File} 1) == false ]]
then then
DOWNLOADER --path ${Tmp_Path} --file-name API_Cache --dl ${DL_DEPENDS[@]} --url "${Github_API}@@1 $(Proxy_X ${Github_Release}/API G@@1 F@@1 A@@1)" --no-url-name --timeout 5 DOWNLOADER --path ${Tmp_Path} --file-name API_Cache --dl ${DL_DEPENDS[@]} --url "${Github_API}@@1 $(Proxy_X ${Github_Release}/API G@@1 F@@1 E@@1)" --no-url-name --timeout 5
[[ ! $? == 0 || -z $(cat ${API_Cache} 2> /dev/null) ]] && { [[ ! $? == 0 || -z $(cat ${API_Cache} 2> /dev/null) ]] && {
ECHO r "Github API 请求错误,请检查网络后再试!" ECHO r "Github API 请求错误,请检查网络后再试!"
exit 2 exit 2
@@ -637,7 +641,7 @@ function GET_CLOUD_LOG() {
;; ;;
esac esac
[[ $(CHECK_TIME ${Tmp_Path}/Update_Logs.json 1) == false ]] && { [[ $(CHECK_TIME ${Tmp_Path}/Update_Logs.json 1) == false ]] && {
DOWNLOADER --path ${Tmp_Path} --file-name Update_Logs.json --dl ${DL_DEPENDS[@]} --url "$(Proxy_X ${Github_Release} G@@1 F@@1 A@@1)" --timeout 5 DOWNLOADER --path ${Tmp_Path} --file-name Update_Logs.json --dl ${DL_DEPENDS[@]} --url "$(Proxy_X ${Github_Release} G@@1 F@@1 E@@1)" --timeout 5
} }
[[ ! -s ${Tmp_Path}/Update_Logs.json ]] && return 1 [[ ! -s ${Tmp_Path}/Update_Logs.json ]] && return 1
log_Test="$(jq '."'"${TARGET_PROFILE}"'"."'"${Version}"'"' ${Tmp_Path}/Update_Logs.json 2> /dev/null)" log_Test="$(jq '."'"${TARGET_PROFILE}"'"."'"${Version}"'"' ${Tmp_Path}/Update_Logs.json 2> /dev/null)"
@@ -654,10 +658,13 @@ function GET_CLOUD_LOG() {
function UPGRADE() { function UPGRADE() {
TITLE TITLE
KILL_PROCESS ${Script_File} KILL_PROCESS ${Script_File}
[[ $(NETWORK_CHECK 223.5.5.5 2) == false ]] && { if [[ $(NETWORK_CHECK www.baidu.com 2) == false ]]
then
ECHO r "网络连接错误,请稍后再试!" ECHO r "网络连接错误,请稍后再试!"
exit 1 exit 1
} else
ECHO y "网络连接正常"
fi
Firmware_Path="${Tmp_Path}" Firmware_Path="${Tmp_Path}"
Upgrade_Option="$(command -v sysupgrade) -q" Upgrade_Option="$(command -v sysupgrade) -q"
MSG="更新固件" MSG="更新固件"
@@ -673,14 +680,19 @@ function UPGRADE() {
Special_Commands="${Special_Commands} [镜像加速 Automatic]" Special_Commands="${Special_Commands} [镜像加速 Automatic]"
shift shift
;; ;;
E)
Proxy_Type=$2
Special_Commands="${Special_Commands} [hub.gitmirror.com]"
shift
;;
F) F)
Proxy_Type=$2 Proxy_Type=$2
Special_Commands="${Special_Commands} [CF Workers]" Special_Commands="${Special_Commands} [gh.con.sh]"
shift shift
;; ;;
G) G)
Proxy_Type=$2 Proxy_Type=$2
Special_Commands="${Special_Commands} [Ghproxy]" Special_Commands="${Special_Commands} [ghp.ci]"
shift shift
;; ;;
*) *)
@@ -812,14 +824,14 @@ $(echo -e "云端固件版本: ${CLOUD_FW_Version}${CHECKED_Type}")
esac esac
local URL local URL
case "${Proxy_Type}" in case "${Proxy_Type}" in
F | G) E | F | G)
URL="$(Proxy_X ${CLOUD_FW_Url} ${Proxy_Type}@@5)" URL="$(Proxy_X ${CLOUD_FW_Url} ${Proxy_Type}@@5)"
;; ;;
All) All)
URL="$(Proxy_X ${CLOUD_FW_Url} G@@2 F@@2 X@@1)" URL="$(Proxy_X ${CLOUD_FW_Url} E@@1 F@@1 G@@2 X@@1)"
;; ;;
*) *)
URL="$(Proxy_X ${CLOUD_FW_Url} X@@3 G@@1 F@@1)" URL="$(Proxy_X ${CLOUD_FW_Url} X@@2 E@@1 F@@1 G@@1)"
;; ;;
esac esac
DOWNLOADER --file-name ${CLOUD_FW_Name} --no-url-name --dl ${DL_DEPENDS[@]} --url ${URL} --path ${Firmware_Path} --timeout 15 --type 固件 DOWNLOADER --file-name ${CLOUD_FW_Name} --no-url-name --dl ${DL_DEPENDS[@]} --url ${URL} --path ${Firmware_Path} --timeout 15 --type 固件
@@ -1022,7 +1034,11 @@ function DOWNLOADER() {
[[ ! ${DL_Retries} || ! ${DL_Retries} == [0-9] ]] && DL_Retries=1 [[ ! ${DL_Retries} || ! ${DL_Retries} == [0-9] ]] && DL_Retries=1
DL_URL_Final="${DL_URL_Cache%*@@*}" DL_URL_Final="${DL_URL_Cache%*@@*}"
DL_URL_Final_Host=$(echo ${DL_URL_Final} | awk -F[/:] '{print $4}') DL_URL_Final_Host=$(echo ${DL_URL_Final} | awk -F[/:] '{print $4}')
DL_URL_Final_IP=$(GET_IP ${DL_URL_Final_Host} 8.8.8.8) case "${DL_Downloader}" in
curl)
DL_URL_Final_IP=$(GET_IP ${DL_URL_Final_Host} 8.8.8.8)
;;
esac
LOGGER "当前 URL: [${DL_URL_Final}] URL 重试次数: [${DL_Retries}]" LOGGER "当前 URL: [${DL_URL_Final}] URL 重试次数: [${DL_Retries}]"
if [[ ${DL_URL_Final_IP} ]] if [[ ${DL_URL_Final_IP} ]]
then then
@@ -1149,21 +1165,27 @@ function Proxy_X() {
case "${Type}" in case "${Type}" in
raw) raw)
F=https://proxy.hyy2001.workers.dev/$(echo ${URL##*com/}) E=https://hub.gitmirror.com/${URL}
G=https://mirror.ghproxy.com/${URL} F=https://gh.con.sh/${URL}
G=https://ghp.ci/${URL}
;; ;;
release) release)
F=https://proxy.hyy2001.workers.dev/$(echo ${URL##*com/}) E=https://hub.gitmirror.com/${URL}
G=https://mirror.ghproxy.com/${URL} F=https://gh.con.sh/${URL}
G=https://ghp.ci/${URL}
;; ;;
codeload) codeload)
F=https://proxy.hyy2001.workers.dev/$(echo ${URL##*com/}) E=https://hub.gitmirror.com/${URL}
G=https://mirror.ghproxy.com/${URL} F=https://gh.con.sh/${URL}
G=https://ghp.ci/${URL}
;; ;;
esac esac
while [[ $1 ]];do while [[ $1 ]];do
local URL_Cache=$1 URL_Final local URL_Cache=$1 URL_Final
case $1 in case $1 in
E@@*)
URL_Final="${URL_Cache/E/${E}}"
;;
F@@*) F@@*)
URL_Final="${URL_Cache/F/${F}}" URL_Final="${URL_Cache/F/${F}}"
;; ;;
@@ -1301,9 +1323,15 @@ function AutoUpdate_Main() {
CHECK_PKG_DEPENDS -e ${PKG_DEPENDS[@]} ${DL_DEPENDS[@]} CHECK_PKG_DEPENDS -e ${PKG_DEPENDS[@]} ${DL_DEPENDS[@]}
if [[ $(NETWORK_CHECK www.baidu.com 2) == false ]] if [[ $(NETWORK_CHECK www.baidu.com 2) == false ]]
then then
ECHO r "基础网络连接错误!" ECHO r "Baidu 连接错误!"
else else
ECHO y "基础网络连接正常!" ECHO y "Baidu 连接正常!"
fi
if [[ $(NETWORK_CHECK 223.5.5.5 2) == false ]]
then
ECHO r "AliDNS 连接错误!"
else
ECHO y "AliDNS 连接正常!"
fi fi
if [[ $(GOOGLE_CHECK) == false ]] if [[ $(GOOGLE_CHECK) == false ]]
then then
@@ -1370,7 +1398,7 @@ function AutoUpdate_Main() {
;; ;;
-x) -x)
shift shift
URL="$(Proxy_X ${Script_Url} X@@1 G@@1 A@@1)" URL="$(Proxy_X ${Script_Url} X@@1 G@@1 F@@1)"
if [[ $(NETWORK_CHECK 223.5.5.5 2) == false ]] if [[ $(NETWORK_CHECK 223.5.5.5 2) == false ]]
then then
ECHO r "网络连接错误,请稍后再试!" ECHO r "网络连接错误,请稍后再试!"

View File

@@ -11,22 +11,32 @@ function logMessage($message) {
} }
$urls = [ $urls = [
"https://mirror.ghproxy.com/https://raw.githubusercontent.com/Thaolga/openwrt-nekobox/nekobox/luci-app-nekobox/root/etc/neko/config/mihomo.yaml" => "/etc/neko/config/mihomo.yaml", "https://raw.githubusercontent.com/Thaolga/openwrt-nekobox/nekobox/luci-app-nekobox/root/etc/neko/config/mihomo.yaml" => "/etc/neko/config/mihomo.yaml",
"https://mirror.ghproxy.com/https://raw.githubusercontent.com/Thaolga/openwrt-nekobox/nekobox/luci-app-nekobox/root/etc/neko/config/Puernya.json" => "/etc/neko/config/Puernya.json" "https://raw.githubusercontent.com/Thaolga/openwrt-nekobox/nekobox/luci-app-nekobox/root/etc/neko/config/Puernya.json" => "/etc/neko/config/Puernya.json"
]; ];
function downloadFile($url, $path, $retries = 3) {
for ($i = 0; $i < $retries; $i++) {
$command = "curl -L --fail -o '$path' '$url'";
exec($command, $output, $return_var);
if ($return_var === 0) {
logMessage(basename($path) . " 文件已成功更新!");
return true;
} else {
logMessage("下载失败:$path重试中" . ($i + 1) . "/$retries...");
sleep(2);
}
}
logMessage("下载失败:$path已超过最大重试次数");
return false;
}
foreach ($urls as $download_url => $destination_path) { foreach ($urls as $download_url => $destination_path) {
if (!is_dir(dirname($destination_path))) { if (!is_dir(dirname($destination_path))) {
mkdir(dirname($destination_path), 0755, true); mkdir(dirname($destination_path), 0755, true);
} }
downloadFile($download_url, $destination_path);
exec("wget -O '$destination_path' '$download_url'", $output, $return_var);
if ($return_var !== 0) {
logMessage("下载失败:$destination_path");
die("下载失败:$destination_path");
}
logMessage(basename($destination_path) . " 文件已成功更新!");
} }
echo implode("\n", $logMessages); echo implode("\n", $logMessages);

View File

@@ -52,18 +52,28 @@ $urls = [
"https://raw.githubusercontent.com/Thaolga/neko/main/nekobox/geosite.db" => "/www/nekobox/geosite.db" "https://raw.githubusercontent.com/Thaolga/neko/main/nekobox/geosite.db" => "/www/nekobox/geosite.db"
]; ];
function downloadFile($url, $path, $retries = 3) {
for ($i = 0; $i < $retries; $i++) {
$command = "curl -L --fail -o '$path' '$url'";
exec($command, $output, $return_var);
if ($return_var === 0) {
logMessage(basename($path) . " 文件已成功更新!");
return true;
} else {
logMessage("下载失败:$path重试中" . ($i + 1) . "/$retries...");
sleep(2);
}
}
logMessage("下载失败:$path已超过最大重试次数");
return false;
}
foreach ($urls as $download_url => $destination_path) { foreach ($urls as $download_url => $destination_path) {
if (!is_dir(dirname($destination_path))) { if (!is_dir(dirname($destination_path))) {
mkdir(dirname($destination_path), 0755, true); mkdir(dirname($destination_path), 0755, true);
} }
downloadFile($download_url, $destination_path);
exec("wget -O '$destination_path' '$download_url'", $output, $return_var);
if ($return_var !== 0) {
logMessage("下载失败:$destination_path");
continue;
}
logMessage(basename($destination_path) . " 文件已成功更新!");
} }
echo implode("\n", $logMessages); echo implode("\n", $logMessages);