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

View File

@@ -11,22 +11,32 @@ function logMessage($message) {
}
$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://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/mihomo.yaml" => "/etc/neko/config/mihomo.yaml",
"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) {
if (!is_dir(dirname($destination_path))) {
mkdir(dirname($destination_path), 0755, true);
}
exec("wget -O '$destination_path' '$download_url'", $output, $return_var);
if ($return_var !== 0) {
logMessage("下载失败:$destination_path");
die("下载失败:$destination_path");
}
logMessage(basename($destination_path) . " 文件已成功更新!");
downloadFile($download_url, $destination_path);
}
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"
];
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) {
if (!is_dir(dirname($destination_path))) {
mkdir(dirname($destination_path), 0755, true);
}
exec("wget -O '$destination_path' '$download_url'", $output, $return_var);
if ($return_var !== 0) {
logMessage("下载失败:$destination_path");
continue;
}
logMessage(basename($destination_path) . " 文件已成功更新!");
downloadFile($download_url, $destination_path);
}
echo implode("\n", $logMessages);