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	  | 
