diff options
Diffstat (limited to 'resources/scripts/update/blobs')
-rwxr-xr-x | resources/scripts/update/blobs/download | 65 | ||||
-rwxr-xr-x | resources/scripts/update/blobs/inject | 21 |
2 files changed, 54 insertions, 32 deletions
diff --git a/resources/scripts/update/blobs/download b/resources/scripts/update/blobs/download index 0896ed47..2368e8e9 100755 --- a/resources/scripts/update/blobs/download +++ b/resources/scripts/update/blobs/download @@ -5,6 +5,8 @@ # SPDX-FileCopyrightText: 2023 Leah Rowe <info@minifree.org> # SPDX-License-Identifier: GPL-3.0-only +agent="Mozilla/5.0 (Windows NT 10.0; rv:91.0) Gecko/20100101 Firefox/91.0" + ec_url="" ec_url_bkup="" ec_hash="" @@ -106,14 +108,14 @@ scan_sources_config() while read -r line ; do case ${line} in - EC_url*) - set ${line} - ec_url=${2} - ;; EC_url_bkup*) set ${line} ec_url_bkup=${2} ;; + EC_url*) + set ${line} + ec_url=${2} + ;; EC_hash*) set ${line} ec_hash=${2} @@ -122,26 +124,26 @@ scan_sources_config() set ${line} dl_hash=${2} ;; - DL_url*) - set ${line} - dl_url=${2} - ;; DL_url_bkup*) set ${line} dl_url_bkup=${2} ;; - E6400_VGA_DL_hash*) + DL_url*) set ${line} - e6400_vga_dl_hash=${2} + dl_url=${2} ;; - E6400_VGA_DL_url*) + E6400_VGA_DL_hash*) set ${line} - e6400_vga_dl_url=${2} + e6400_vga_dl_hash=${2} ;; E6400_VGA_DL_url_bkup*) set ${line} e6400_vga_dl_url_bkup=${2} ;; + E6400_VGA_DL_url*) + set ${line} + e6400_vga_dl_url=${2} + ;; E6400_VGA_offset*) set ${line} e6400_vga_offset=${2} @@ -235,8 +237,9 @@ extract_blob_intel_me() printf "Extracting and stripping Intel ME firmware\n" - innoextract ${dl_path} -d ${blobdir} \ + innoextract ${dl_path} -d ${appdir} \ || 7z x ${dl_path} -o${appdir} \ + || unar "${dl_path}" -o "${appdir}" \ || fail 'Could not extract vendor update' bruteforce_extract_blob_intel_me "$(pwd)/${_me_destination}" \ @@ -278,19 +281,21 @@ bruteforce_extract_blob_intel_me() "${me7updateparser}" -O ${_me_destination} "${i}" \ && break # (we found me.bin) _7ztest="${_7ztest}a" - 7z x "${i}" -o${_7ztest} || continue + 7z x "${i}" -o${_7ztest} \ + || innoextract "${i}" -d "${_7ztest}" \ + || unar "${i}" -o "${_7ztest}" \ + || continue bruteforce_extract_blob_intel_me "${_me_destination}" \ "${cdir}/${_7ztest}" - cdir="${1}" - cd "${cdir}" elif [ -d "$i" ]; then bruteforce_extract_blob_intel_me "${_me_destination}" \ "${cdir}/${i}" - cdir="${1}" - cd "${cdir}" else printf "SKIPPING: %s\n" "${i}" + continue fi + cdir="${1}" + cd "${cdir}" done ) @@ -337,6 +342,11 @@ extract_ec() unar -D ROM.CAB Rom.bin mv Rom.bin ec.bin fi + if [ ! -f ec.bin ]; then + printf "could not extract ec.bin for board '%s'" ${board} \ + 1>&2 + fail "aborting the build. please audit blobutil carefully." + fi "${kbc1126_ec_dump}" ec.bin ) @@ -442,11 +452,20 @@ fetch_update() dl_path=${blobdir}/cache/${dlsum} mkdir -p ${blobdir}/cache - vendor_checksum ${dlsum} || \ - wget ${dl} -O ${dl_path} || wget ${dl_bkup} -O ${dl_path} - - vendor_checksum ${dlsum} || fail \ - "Cannot guarantee intergity of vendor update for: ${board}" + dl_fail="y" + vendor_checksum ${dlsum} && dl_fail="n" + for x in "${dl}" "${dl_bkup}"; do + if [ "${dl_fail}" = "n" ]; then + break + fi + rm -f "${dl_path}" + wget -U "${agent}" ${x} -O ${dl_path} + vendor_checksum ${dlsum} && dl_fail="n" + done + if [ "${dl_fail}" = "y" ]; then + printf "Could not download blob file\n" 1>&2 + return 1 + fi } vendor_checksum() diff --git a/resources/scripts/update/blobs/inject b/resources/scripts/update/blobs/inject index 891cb198..bc8a9a4d 100755 --- a/resources/scripts/update/blobs/inject +++ b/resources/scripts/update/blobs/inject @@ -50,15 +50,18 @@ main() while getopts r:b:m: option do - case "${option}" - in - r)rom=${OPTARG};; - b)board=${OPTARG};; + case "${option}" in + r) + rom=${OPTARG} + ;; + b) + board=${OPTARG} + ;; m) modifygbe=true new_mac=${OPTARG} ;; - esac + esac done check_board @@ -111,17 +114,17 @@ detect_board() path=${1} filename=$(basename ${path}) case ${filename} in - grub_*) + grub_*) board=$(echo "${filename}" | cut -d '_' -f2-3) ;; - seabios_withgrub_*) + seabios_withgrub_*) board=$(echo "${filename}" | cut -d '_' -f3-4) ;; - *.tar.xz) + *.tar.xz) _stripped_prefix=${filename#*_} board="${_stripped_prefix%.tar.xz}" ;; - *) + *) return 1 esac |