mirror of
https://github.com/aclist/dztui.git
synced 2024-12-28 13:22:35 +01:00
fix: add fallbacks and remote resource checks
This commit is contained in:
parent
c5785d1857
commit
cbecf569ad
3 changed files with 60 additions and 21 deletions
|
@ -1,5 +1,11 @@
|
|||
# Changelog
|
||||
|
||||
## [5.6.0-beta.16] 2024-12-13
|
||||
### Fixed
|
||||
- Add remote resource health checks before downloading updates
|
||||
### Added
|
||||
- Add fallback repository
|
||||
|
||||
## [5.6.0-beta.11] 2024-12-07
|
||||
### Fixed
|
||||
- Add missing function definition
|
||||
|
|
28
dzgui.sh
Normal file → Executable file
28
dzgui.sh
Normal file → Executable file
|
@ -314,8 +314,8 @@ check_unmerged(){
|
|||
check_version(){
|
||||
local version_url=$(format_version_url)
|
||||
local upstream=$(curl -Ls "$version_url" | awk -F= '/^version=/ {print $2}')
|
||||
#2024-12-12: do not clobber local version if unreachable
|
||||
[[ -z $upstream ]] && return
|
||||
local res=$(get_response_code "$version_url")
|
||||
[[ $res -ne 200 ]] && raise_error_and_quit "Remote resource unavailable: '$version_url'"
|
||||
logger INFO "Local branch: '$branch', local version: $version"
|
||||
if [[ $branch == "stable" ]]; then
|
||||
version_url="$stable_url/dzgui.sh"
|
||||
|
@ -377,11 +377,7 @@ dl_changelog(){
|
|||
local md
|
||||
[[ $branch == "stable" ]] && mdbranch="dzgui"
|
||||
[[ $branch == "testing" ]] && mdbranch="testing"
|
||||
if [[ $remote_host == "gh" ]]; then
|
||||
md="https://raw.githubusercontent.com/$author/$repo/${mdbranch}/CHANGELOG.md"
|
||||
else
|
||||
md="https://codeberg.org/$author/$repo/raw/branch/${mdbranch}/CHANGELOG.md"
|
||||
fi
|
||||
local md="$url_prefix/${mdbranch}/$file"
|
||||
curl -Ls "$md" > "$state_path/CHANGELOG.md"
|
||||
}
|
||||
test_display_mode(){
|
||||
|
@ -523,6 +519,7 @@ get_hash(){
|
|||
md5sum "$1" | awk '{print $1}'
|
||||
}
|
||||
fetch_a2s(){
|
||||
# this file is currently monolithic
|
||||
[[ -d $helpers_path/a2s ]] && { logger INFO "A2S helper is current"; return 0; }
|
||||
local sha=c7590ffa9a6d0c6912e17ceeab15b832a1090640
|
||||
local author="yepoleb"
|
||||
|
@ -530,6 +527,8 @@ fetch_a2s(){
|
|||
local url="https://github.com/$author/$repo/tarball/$sha"
|
||||
local prefix="${author^}-$repo-${sha:0:7}"
|
||||
local file="$prefix.tar.gz"
|
||||
local res=$(get_response_code "$url")
|
||||
[[ $res -ne 200 ]] && raise_error_and_quit "Remote resource unavailable: '$file'"
|
||||
curl -Ls "$url" > "$helpers_path/$file"
|
||||
tar xf "$helpers_path/$file" -C "$helpers_path" "$prefix/a2s" --strip=1
|
||||
rm "$helpers_path/$file"
|
||||
|
@ -546,6 +545,8 @@ fetch_dzq(){
|
|||
local author="yepoleb"
|
||||
local repo="dayzquery"
|
||||
local url="https://raw.githubusercontent.com/$author/$repo/$sha/dayzquery.py"
|
||||
local res=$(get_response_code "$url")
|
||||
[[ $res -ne 200 ]] && raise_error_and_quit "Remote resource unavailable: 'dayzquery.py'"
|
||||
curl -Ls "$url" > "$file"
|
||||
logger INFO "Updated DZQ to sha '$sha'"
|
||||
}
|
||||
|
@ -580,11 +581,11 @@ fetch_helpers_by_sum(){
|
|||
["ui.py"]="be3da1e542d14105f4358dd38901e25a"
|
||||
["query_v2.py"]="55d339ba02512ac69de288eb3be41067"
|
||||
["vdf2json.py"]="2f49f6f5d3af919bebaab2e9c220f397"
|
||||
["funcs"]="bfe629ed9481627317b49a8f9c6fad24"
|
||||
["funcs"]="2a27ab36d5f8071fe53bf8dfd3b8d88d"
|
||||
["lan"]="c62e84ddd1457b71a85ad21da662b9af"
|
||||
)
|
||||
local author="aclist"
|
||||
local repo="dzgui"
|
||||
local repo="dztui"
|
||||
local realbranch
|
||||
local file
|
||||
local sum
|
||||
|
@ -615,6 +616,8 @@ fetch_helpers_by_sum(){
|
|||
logger INFO "$file is current"
|
||||
else
|
||||
logger WARN "File '$full_path' checksum != '$sum'"
|
||||
local res=$(get_response_code "$url")
|
||||
[[ $res -ne 200 ]] && raise_error_and_quit "Remote resource unavailable: '$url'"
|
||||
curl -Ls "$url" > "$full_path"
|
||||
if [[ ! $? -eq 0 ]]; then
|
||||
raise_error_and_quit "Failed to fetch the file '$file'. Possible timeout?"
|
||||
|
@ -635,11 +638,15 @@ fetch_geo_file(){
|
|||
local km_sum="b038fdb8f655798207bd28de3a004706"
|
||||
local gzip="$helpers_path/ips.csv.gz"
|
||||
if [[ ! -f $geo_file ]] || [[ $(get_hash $geo_file) != $geo_sum ]]; then
|
||||
local res=$(get_response_code "$geo_file_url")
|
||||
[[ $res -ne 200 ]] && raise_error_and_quit "Remote resource unavailable: '$geo_file_url'"
|
||||
curl -Ls "$geo_file_url" > "$gzip"
|
||||
#force overwrite
|
||||
gunzip -f "$gzip"
|
||||
fi
|
||||
if [[ ! -f $km_helper ]] || [[ $(get_hash $km_helper) != $km_sum ]]; then
|
||||
local res=$(get_response_code "$km_helper_url")
|
||||
[[ $res -ne 200 ]] && raise_error_and_quit "Remote resource unavailable: '$km_helper_url'"
|
||||
curl -Ls "$km_helper_url" > "$km_helper"
|
||||
chmod +x "$km_helper"
|
||||
fi
|
||||
|
@ -887,10 +894,11 @@ test_connection(){
|
|||
res=$(get_response_code "${hr["codeberg.org"]}")
|
||||
[[ $res -ne 200 ]] && raise_error_and_quit "$str (${hr["codeberg.org"]})"
|
||||
fi
|
||||
logger INFO "Set remote host to '${hr["codeberg.org"]}'"
|
||||
remote_host=cb
|
||||
if [[ $remote_host == "cb" ]]; then
|
||||
url_prefix="https://codeberg.org/$author/$repo/raw/branch"
|
||||
releases_url="https://codeberg.org/$author/$repo/releases/download/browser"
|
||||
# 2024-12-12: interpolate variables again
|
||||
stable_url="$url_prefix/dzgui"
|
||||
testing_url="$url_prefix/testing"
|
||||
km_helper_url="$releases_url/latlon"
|
||||
|
|
|
@ -70,18 +70,12 @@ game_dir="$steam_path/steamapps/common/DayZ"
|
|||
#URLS
|
||||
author="aclist"
|
||||
repo="dztui"
|
||||
#TODO: this is hardcoded
|
||||
#2024-12-12
|
||||
gh_prefix="https://github.com"
|
||||
issues_url="$gh_prefix/$author/$repo/issues"
|
||||
url_prefix="https://codeberg.org/$author/$repo/raw/branch"
|
||||
url_prefix="https://raw.githubusercontent.com/$author/$repo"
|
||||
stable_url="$url_prefix/dzgui"
|
||||
testing_url="$url_prefix/testing"
|
||||
releases_url="https://codeberg.org/$author/$repo/releases/download/browser"
|
||||
km_helper_url="$releases_url/latlon"
|
||||
db_file="$releases_url/ips.csv.gz"
|
||||
sums_url="$stable_url/helpers/sums.md5"
|
||||
#TODO: move adoc to index
|
||||
releases_url="$gh_prefix/$author/$repo/releases/download/browser"
|
||||
help_url="https://$author.github.io/dzgui/dzgui"
|
||||
forum_url="$gh_prefix/$author/$repo/discussions"
|
||||
sponsor_url="$gh_prefix/sponsors/$author"
|
||||
|
@ -829,7 +823,40 @@ format_version_url(){
|
|||
esac
|
||||
echo "$version_url"
|
||||
}
|
||||
get_response_code(){
|
||||
local url="$1"
|
||||
curl -Ls -I -o /dev/null -w "%{http_code}" "$url"
|
||||
}
|
||||
test_connection(){
|
||||
source "$config_file"
|
||||
declare -A hr
|
||||
local res1
|
||||
local res2
|
||||
local str="No connection could be established to the remote server"
|
||||
hr=(
|
||||
["github.com"]="https://github.com/$author"
|
||||
["codeberg.org"]="https://codeberg.org/$author"
|
||||
)
|
||||
res=$(get_response_code "${hr["github.com"]}")
|
||||
if [[ $res -ne 200 ]]; then
|
||||
logger WARN "Remote host '${hr["github.com"]}' unreachable', trying fallback"
|
||||
remote_host=cb
|
||||
res=$(get_response_code "${hr["codeberg.org"]}")
|
||||
if [[ $res -ne 200 ]]; then
|
||||
printf "Failed to fetch new version. Rolling back"
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
logger INFO "Set remote host to '${hr["codeberg.org"]}'"
|
||||
if [[ $remote_host == "cb" ]]; then
|
||||
url_prefix="https://codeberg.org/$author/$repo/raw/branch"
|
||||
releases_url="https://codeberg.org/$author/$repo/releases/download/browser"
|
||||
stable_url="$url_prefix/dzgui"
|
||||
testing_url="$url_prefix/testing"
|
||||
fi
|
||||
}
|
||||
download_new_version(){
|
||||
test_connection
|
||||
local version_url="$(format_version_url)"
|
||||
mv "$src_path" "$src_path.old"
|
||||
curl -Ls "$version_url" > "$src_path"
|
||||
|
@ -854,9 +881,7 @@ dl_changelog(){
|
|||
local file="CHANGELOG.md"
|
||||
[[ $branch == "stable" ]] && mdbranch="dzgui"
|
||||
[[ $branch == "testing" ]] && mdbranch="testing"
|
||||
#TODO: this is hardcoded
|
||||
#2024-12-12
|
||||
local md="https://codeberg.org/$author/$repo/raw/branch/${mdbranch}/$file"
|
||||
local md="$url_prefix/${mdbranch}/$file"
|
||||
curl -Ls "$md" > "$state_path/$file"
|
||||
}
|
||||
toggle(){
|
||||
|
|
Loading…
Reference in a new issue