From a55b4108d5fb3c3561ffdd48188cde27b7711fe9 Mon Sep 17 00:00:00 2001 From: Mikhail Chusavitin Date: Fri, 6 Mar 2026 14:45:50 +0300 Subject: [PATCH] Add wget/curl fallback for vendor and update downloads --- iso/overlay/usr/local/bin/bee-update.sh | 25 ++++++++++++++++++++----- scripts/fetch-vendor.sh | 18 ++++++++++++++++-- 2 files changed, 36 insertions(+), 7 deletions(-) diff --git a/iso/overlay/usr/local/bin/bee-update.sh b/iso/overlay/usr/local/bin/bee-update.sh index e2a7da6..2a0ce71 100755 --- a/iso/overlay/usr/local/bin/bee-update.sh +++ b/iso/overlay/usr/local/bin/bee-update.sh @@ -12,6 +12,21 @@ TMP_BIN="/tmp/bee-audit-new" TMP_SIG="/tmp/bee-audit-new.sig" REPO_API="${BEE_RELEASE_API:-https://git.mchus.pro/api/v1/repos//bee/releases/latest}" +download_to() { + url="$1" + out="$2" + if command -v wget >/dev/null 2>&1; then + wget -q -O "$out" "$url" + return $? + fi + if command -v curl >/dev/null 2>&1; then + curl -fsSL "$url" -o "$out" + return $? + fi + log "neither wget nor curl available" + return 1 +} + version_of() { "$1" --version 2>/dev/null | head -n1 | tr -d '[:space:]' } @@ -65,8 +80,8 @@ check_network_update() { return 1 fi - if ! command -v wget >/dev/null 2>&1; then - log "wget not found; skip network update" + if ! command -v wget >/dev/null 2>&1 && ! command -v curl >/dev/null 2>&1; then + log "neither wget nor curl found; skip network update" return 1 fi if ! command -v jq >/dev/null 2>&1; then @@ -75,7 +90,7 @@ check_network_update() { fi meta="/tmp/bee-release-latest.json" - wget -q -O "$meta" "$REPO_API" || { log "failed to fetch release metadata"; return 1; } + download_to "$REPO_API" "$meta" || { log "failed to fetch release metadata"; return 1; } tag=$(jq -r '.tag_name // empty' "$meta") [ -n "$tag" ] || { log "release metadata missing tag_name"; return 1; } @@ -90,8 +105,8 @@ check_network_update() { sig_url=$(jq -r '.assets[]? | select(.name=="bee-audit-linux-amd64.sig") | .browser_download_url // empty' "$meta") [ -n "$bin_url" ] && [ -n "$sig_url" ] || { log "missing release asset URLs"; return 1; } - wget -q -O "$TMP_BIN" "$bin_url" || return 1 - wget -q -O "$TMP_SIG" "$sig_url" || return 1 + download_to "$bin_url" "$TMP_BIN" || return 1 + download_to "$sig_url" "$TMP_SIG" || return 1 chmod +x "$TMP_BIN" log "network update candidate: $tag" diff --git a/scripts/fetch-vendor.sh b/scripts/fetch-vendor.sh index 3d1bdca..a2c227c 100755 --- a/scripts/fetch-vendor.sh +++ b/scripts/fetch-vendor.sh @@ -18,9 +18,23 @@ need_cmd() { command -v "$1" >/dev/null 2>&1 || { echo "ERROR: required command not found: $1" >&2; exit 1; } } -need_cmd wget need_cmd sha256sum +download_to() { + url="$1" + out="$2" + if command -v wget >/dev/null 2>&1; then + wget -O "$out" "$url" + return 0 + fi + if command -v curl >/dev/null 2>&1; then + curl -fsSL "$url" -o "$out" + return 0 + fi + echo "ERROR: required command not found: wget or curl" >&2 + exit 1 +} + fetch_one() { name="$1" url="$2" @@ -35,7 +49,7 @@ fetch_one() { tmp="$dst.tmp" echo "[vendor] downloading $name" - wget -O "$tmp" "$url" + download_to "$url" "$tmp" got=$(sha256sum "$tmp" | awk '{print $1}') want=$(echo "$sha" | tr '[:upper:]' '[:lower:]')