From 738a16514d7be2aea1364052d2d272276d58a822 Mon Sep 17 00:00:00 2001 From: AuxXxilium Date: Sat, 28 Dec 2024 13:33:25 +0100 Subject: [PATCH] tree: add more checks Signed-off-by: AuxXxilium --- .github/workflows/build.yml | 2 ++ files/initrd/opt/arc/arc.sh | 4 +++- files/initrd/opt/arc/include/update.sh | 24 +++++++++++++++++------- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b0fb423c..a8973f14 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -184,6 +184,7 @@ jobs: zip -9 "arc-${{ env.ARC_VERSION }}-${{ env.ARC_BRANCH }}.vhd.zip" arc.vhd arc.vmc zip -9 "arc-${{ env.ARC_VERSION }}-${{ env.ARC_BRANCH }}.ova.zip" arc.ova (cd files && zip -r ../update-${{ env.ARC_VERSION }}-${{ env.ARC_BRANCH }}.zip ./p1 ./p3) + sha256sum update-${{ env.ARC_VERSION }}-${{ env.ARC_BRANCH }}.zip >"update-${{ env.ARC_VERSION }}-${{ env.ARC_BRANCH }}.hash" fi # Cleanup @@ -264,6 +265,7 @@ jobs: zip -9 "arc-${{ env.ARC_VERSION }}-${{ env.ARC_BRANCH }}.vhd.zip" arc.vhd arc.vmc zip -9 "arc-${{ env.ARC_VERSION }}-${{ env.ARC_BRANCH }}.ova.zip" arc.ova (cd files && zip -r ../update-${{ env.ARC_VERSION }}-${{ env.ARC_BRANCH }}.zip ./p1 ./p3) + sha256sum update-${{ env.ARC_VERSION }}-${{ env.ARC_BRANCH }}.zip >"update-${{ env.ARC_VERSION }}-${{ env.ARC_BRANCH }}.hash" fi # Publish a release if is a tag diff --git a/files/initrd/opt/arc/arc.sh b/files/initrd/opt/arc/arc.sh index 48f3ce61..93535965 100755 --- a/files/initrd/opt/arc/arc.sh +++ b/files/initrd/opt/arc/arc.sh @@ -833,7 +833,9 @@ elif [ "${ARCMODE}" = "config" ]; then echo "0 \"HardwareID for Arc Patch\" " >>"${TMP_PATH}/menu" fi echo "1 \"Choose Model \" " >>"${TMP_PATH}/menu" - if [ "${CONFDONE}" = "true" ]; then + if [ "${CONFDONE}" = "true" ] && [ -f "${MOD_ZIMAGE_FILE}" ] && [ -f "${MOD_RDGZ_FILE}" ]; then + echo "2 \"Rebuild Loader \" " >>"${TMP_PATH}/menu" + elif [ "${CONFDONE}" = "true" ]; then echo "2 \"Build Loader \" " >>"${TMP_PATH}/menu" fi if [ "${BUILDDONE}" = "true" ]; then diff --git a/files/initrd/opt/arc/include/update.sh b/files/initrd/opt/arc/include/update.sh index 708efde6..5b70e346 100755 --- a/files/initrd/opt/arc/include/update.sh +++ b/files/initrd/opt/arc/include/update.sh @@ -43,13 +43,23 @@ function updateLoader() { dialog --gauge "Download Update: ${TAG}..." 14 72 4>&- } 4>&1 if [ -f "${TMP_PATH}/update.zip" ] && [ $(ls -s "${TMP_PATH}/update.zip" | cut -d' ' -f1) -gt 300000 ]; then - mkdir -p "${TMP_PATH}/update" - dialog --backtitle "$(backtitle)" --title "Update Loader" \ - --infobox "Updating Loader..." 3 50 - if unzip -oq "${TMP_PATH}/update.zip" -d "${TMP_PATH}/update"; then - cp -rf "${TMP_PATH}/update"/* "/mnt" - rm -rf "${TMP_PATH}/update" - rm -f "${TMP_PATH}/update.zip" + HASHURL="https://github.com/AuxXxilium/arc/releases/download/${TAG}/update-${TAG}-${ARC_BRANCH}.hash" + HASH="$(curl -skL "${HASHURL}" | awk '{print $1}')" + if [ "${HASH}" != "$(sha256sum "${TMP_PATH}/update.zip" | awk '{print $1}')" ]; then + dialog --backtitle "$(backtitle)" --title "Update Loader" --aspect 18 \ + --infobox "Update failed - Hash mismatch!\nTry again later." 0 0 + sleep 3 + exec reboot + else + rm -rf "/mnt/update" + mkdir -p "${TMP_PATH}/update" + dialog --backtitle "$(backtitle)" --title "Update Loader" \ + --infobox "Updating Loader..." 3 50 + if unzip -oq "${TMP_PATH}/update.zip" -d "${TMP_PATH}/update"; then + cp -rf "${TMP_PATH}/update"/* "/mnt" + rm -rf "${TMP_PATH}/update" + rm -f "${TMP_PATH}/update.zip" + fi fi if [ "$(cat "${PART1_PATH}/ARC-VERSION")" = "${TAG}" ]; then dialog --backtitle "$(backtitle)" --title "Update Loader" \