From d44a14889985d69e577a9b2b5bc4b36eaf8bcb0b Mon Sep 17 00:00:00 2001 From: Franco Fichtner Date: Tue, 16 Feb 2021 15:52:58 +0100 Subject: [PATCH] firmware: second batch in check script #4500 --- src/opnsense/scripts/firmware/check.sh | 295 +++++++++++++------------ 1 file changed, 148 insertions(+), 147 deletions(-) diff --git a/src/opnsense/scripts/firmware/check.sh b/src/opnsense/scripts/firmware/check.sh index 217841666..0e8e3fb7f 100755 --- a/src/opnsense/scripts/firmware/check.sh +++ b/src/opnsense/scripts/firmware/check.sh @@ -136,7 +136,7 @@ else # Repository can be used for updates repository="ok" - if [ -n "$(grep 'The following' ${OUTFILE} | awk -F '[ ]' '{print $3}')" ]; then + if [ -n "$(grep 'The following' ${OUTFILE} | awk -F '[ ]' '{print $3}')" ]; then # XXX not strictly needed # if we run twice give values as CSV for later processing download_size=$(grep 'to be downloaded' ${OUTFILE} | awk -F '[ ]' '{print $1$2}' | tr '\n' ',' | sed 's/,$//') @@ -151,179 +151,180 @@ else MODE= while read LINE; do - REPO=$(echo "${LINE}" | grep -o '\[.*\]' | tr -d '[]') - if [ -z "${REPO}" ]; then - REPO=${UPSTREAM} - fi - for i in $(echo "${LINE}" | tr '[' '(' | cut -d '(' -f1); do - case ${MODE} in - DOWNGRADED:) - if [ "$(expr $linecount + 4)" -eq "$itemcount" ]; then - if [ "${i%:*}" = "${i}" ]; then - itemcount=0 # This is not a valid item so reset item count - MODE= - else - i=$(echo $i | tr -d :) - if [ -z "$packages_downgraded" ]; then - packages_downgraded="{\"name\":\"$i\"," # If it is the first item then we do not want a separator - else - packages_downgraded=$packages_downgraded", {\"name\":\"$i\"," - fi - packages_downgraded=$packages_downgraded"\"repository\":\"${REPO}\"," - fi - fi - if [ "$(expr $linecount + 3)" -eq "$itemcount" ]; then - packages_downgraded=$packages_downgraded"\"current_version\":\"$i\"," - fi - if [ "$(expr $linecount + 1)" -eq "$itemcount" ]; then - packages_downgraded=$packages_downgraded"\"new_version\":\"$i\"}" - itemcount=$(expr $itemcount + 4) # get ready for next item - fi - ;; - INSTALLED:) - if [ "$(expr $linecount + 2)" -eq "$itemcount" ]; then - if [ "${i%:*}" = "${i}" ]; then - itemcount=0 # This is not a valid item so reset item count - MODE= - else - i=$(echo $i | tr -d :) - if [ -n "$packages_new" ]; then - packages_new=$packages_new"," - fi - packages_new=$packages_new"{\"name\":\"$i\",\"repository\":\"${REPO}\"," - fi - fi - if [ "$(expr $linecount + 1)" -eq "$itemcount" ]; then - packages_new=$packages_new"\"version\":\"$i\"}" - itemcount=$(expr $itemcount + 2) # get ready for next item - fi - ;; - REINSTALLED:) - if [ "$(expr $linecount + 1)" -eq "$itemcount" ]; then - if [ "${i%-*}" = "${i}" ]; then - itemcount=0 # This is not a valid item so reset item count - MODE= - else - name=${i%-*} - version=${i##*-} - itemcount="$(expr $itemcount + 1)" # get ready for next item - if [ -n "$packages_reinstall" ]; then - packages_reinstall=$packages_reinstall"," # separator for next item - fi - packages_reinstall=$packages_reinstall"{\"name\":\"$name\",\"version\":\"$version\",\"repository\":\"${REPO}\"}" - fi - fi - ;; - REMOVED:) - if [ "$(expr $linecount + 2)" -eq "$itemcount" ]; then - if [ "${i%:*}" = "${i}" ]; then - itemcount=0 # This is not a valid item so reset item count - MODE= - else - i=$(echo $i | tr -d :) - if [ -n "$packages_removed" ]; then - packages_removed=$packages_removed"," - fi - packages_removed=$packages_removed"{\"name\":\"$i\",\"repository\":\"$(pkg query %R ${i})\"," - fi - fi - if [ "$(expr $linecount + 1)" -eq "$itemcount" ]; then - packages_removed=$packages_removed"\"version\":\"$i\"}" - itemcount=$(expr $itemcount + 2) # get ready for next item - fi - ;; - UPGRADED:) - if [ "$(expr $linecount + 4)" -eq "$itemcount" ]; then - if [ "${i%:*}" = "${i}" ]; then - itemcount=0 # This is not a valid item so reset item count - MODE= - else - i=$(echo $i | tr -d :) - if [ -z "$packages_upgraded" ]; then - packages_upgraded="{\"name\":\"$i\"," # If it is the first item then we do not want a separator - else - packages_upgraded=$packages_upgraded", {\"name\":\"$i\"," - fi - packages_upgraded=$packages_upgraded"\"repository\":\"${REPO}\"," - fi - fi - if [ "$(expr $linecount + 3)" -eq "$itemcount" ]; then - packages_upgraded=$packages_upgraded"\"current_version\":\"$i\"," - fi - if [ "$(expr $linecount + 1)" -eq "$itemcount" ]; then - packages_upgraded=$packages_upgraded"\"new_version\":\"$i\"}" - itemcount=$(expr $itemcount + 4) # get ready for next item - fi - ;; - esac + REPO=$(echo "${LINE}" | grep -o '\[.*\]' | tr -d '[]') + if [ -z "${REPO}" ]; then + REPO=${UPSTREAM} + fi - linecount=$(expr $linecount + 1) + for i in $(echo "${LINE}" | tr '[' '(' | cut -d '(' -f1); do + case ${MODE} in + DOWNGRADED:) + if [ "$(expr $linecount + 4)" -eq "$itemcount" ]; then + if [ "${i%:*}" = "${i}" ]; then + itemcount=0 # This is not a valid item so reset item count + MODE= + else + i=$(echo $i | tr -d :) + if [ -z "$packages_downgraded" ]; then + packages_downgraded="{\"name\":\"$i\"," # If it is the first item then we do not want a separator + else + packages_downgraded=$packages_downgraded", {\"name\":\"$i\"," + fi + packages_downgraded=$packages_downgraded"\"repository\":\"${REPO}\"," + fi + fi + if [ "$(expr $linecount + 3)" -eq "$itemcount" ]; then + packages_downgraded=$packages_downgraded"\"current_version\":\"$i\"," + fi + if [ "$(expr $linecount + 1)" -eq "$itemcount" ]; then + packages_downgraded=$packages_downgraded"\"new_version\":\"$i\"}" + itemcount=$(expr $itemcount + 4) # get ready for next item + fi + ;; + INSTALLED:) + if [ "$(expr $linecount + 2)" -eq "$itemcount" ]; then + if [ "${i%:*}" = "${i}" ]; then + itemcount=0 # This is not a valid item so reset item count + MODE= + else + i=$(echo $i | tr -d :) + if [ -n "$packages_new" ]; then + packages_new=$packages_new"," + fi + packages_new=$packages_new"{\"name\":\"$i\",\"repository\":\"${REPO}\"," + fi + fi + if [ "$(expr $linecount + 1)" -eq "$itemcount" ]; then + packages_new=$packages_new"\"version\":\"$i\"}" + itemcount=$(expr $itemcount + 2) # get ready for next item + fi + ;; + REINSTALLED:) + if [ "$(expr $linecount + 1)" -eq "$itemcount" ]; then + if [ "${i%-*}" = "${i}" ]; then + itemcount=0 # This is not a valid item so reset item count + MODE= + else + name=${i%-*} + version=${i##*-} + itemcount="$(expr $itemcount + 1)" # get ready for next item + if [ -n "$packages_reinstall" ]; then + packages_reinstall=$packages_reinstall"," # separator for next item + fi + packages_reinstall=$packages_reinstall"{\"name\":\"$name\",\"version\":\"$version\",\"repository\":\"${REPO}\"}" + fi + fi + ;; + REMOVED:) + if [ "$(expr $linecount + 2)" -eq "$itemcount" ]; then + if [ "${i%:*}" = "${i}" ]; then + itemcount=0 # This is not a valid item so reset item count + MODE= + else + i=$(echo $i | tr -d :) + if [ -n "$packages_removed" ]; then + packages_removed=$packages_removed"," + fi + packages_removed=$packages_removed"{\"name\":\"$i\",\"repository\":\"$(pkg query %R ${i})\"," + fi + fi + if [ "$(expr $linecount + 1)" -eq "$itemcount" ]; then + packages_removed=$packages_removed"\"version\":\"$i\"}" + itemcount=$(expr $itemcount + 2) # get ready for next item + fi + ;; + UPGRADED:) + if [ "$(expr $linecount + 4)" -eq "$itemcount" ]; then + if [ "${i%:*}" = "${i}" ]; then + itemcount=0 # This is not a valid item so reset item count + MODE= + else + i=$(echo $i | tr -d :) + if [ -z "$packages_upgraded" ]; then + packages_upgraded="{\"name\":\"$i\"," # If it is the first item then we do not want a separator + else + packages_upgraded=$packages_upgraded", {\"name\":\"$i\"," + fi + packages_upgraded=$packages_upgraded"\"repository\":\"${REPO}\"," + fi + fi + if [ "$(expr $linecount + 3)" -eq "$itemcount" ]; then + packages_upgraded=$packages_upgraded"\"current_version\":\"$i\"," + fi + if [ "$(expr $linecount + 1)" -eq "$itemcount" ]; then + packages_upgraded=$packages_upgraded"\"new_version\":\"$i\"}" + itemcount=$(expr $itemcount + 4) # get ready for next item + fi + ;; + esac - case $i in - INSTALLED:|REMOVED:) - itemcount=$(expr $linecount + 2) - MODE=$i - ;; - REINSTALLED:) - itemcount=$(expr $linecount + 1) - MODE=$i - ;; - DOWNGRADED:|UPGRADED:) - itemcount=$(expr $linecount + 4) - MODE=$i - ;; - esac - done + linecount=$(expr $linecount + 1) + + case $i in + INSTALLED:|REMOVED:) + itemcount=$(expr $linecount + 2) + MODE=$i + ;; + REINSTALLED:) + itemcount=$(expr $linecount + 1) + MODE=$i + ;; + DOWNGRADED:|UPGRADED:) + itemcount=$(expr $linecount + 4) + MODE=$i + ;; + esac + done done < ${OUTFILE} - fi + fi - if [ -z "$base_to_reboot" ]; then - if opnsense-update -cbf; then - base_to_reboot="$(opnsense-update -v)" - fi + if [ -z "$base_to_reboot" ]; then + if opnsense-update -cbf; then + base_to_reboot="$(opnsense-update -v)" fi + fi - if [ -n "$base_to_reboot" ]; then - base_to_delete="$(opnsense-version -v base)" - base_is_size="$(opnsense-update -bfSr $base_to_reboot)" - if [ "$base_to_reboot" != "$base_to_delete" -a -n "$base_is_size" ]; then - if [ -z "${packages_upgraded}" ]; then - packages_upgraded="{\"name\":\"base\"," # If it is the first item then we do not want a separator + if [ -n "$base_to_reboot" ]; then + base_to_delete="$(opnsense-version -v base)" + base_is_size="$(opnsense-update -bfSr $base_to_reboot)" + if [ "$base_to_reboot" != "$base_to_delete" -a -n "$base_is_size" ]; then + if [ -z "${packages_upgraded}" ]; then + packages_upgraded="{\"name\":\"base\"," # If it is the first item then we do not want a separator else - packages_upgraded=$packages_upgraded", {\"name\":\"base\"," + packages_upgraded=$packages_upgraded", {\"name\":\"base\"," fi packages_upgraded=$packages_upgraded"\"size\":\"$base_is_size\"," packages_upgraded=$packages_upgraded"\"repository\":\"${UPSTREAM}\"," packages_upgraded=$packages_upgraded"\"current_version\":\"$base_to_delete\"," packages_upgraded=$packages_upgraded"\"new_version\":\"$base_to_reboot\"}" upgrade_needs_reboot="1" - fi fi + fi - if [ -z "$kernel_to_reboot" ]; then - if opnsense-update -cfk; then - kernel_to_reboot="$(opnsense-update -v)" - fi + if [ -z "$kernel_to_reboot" ]; then + if opnsense-update -cfk; then + kernel_to_reboot="$(opnsense-update -v)" fi + fi - if [ -n "$kernel_to_reboot" ]; then - kernel_to_delete="$(opnsense-version -v kernel)" - kernel_is_size="$(opnsense-update -fkSr $kernel_to_reboot)" - if [ "$kernel_to_reboot" != "$kernel_to_delete" -a -n "$kernel_is_size" ]; then + if [ -n "$kernel_to_reboot" ]; then + kernel_to_delete="$(opnsense-version -v kernel)" + kernel_is_size="$(opnsense-update -fkSr $kernel_to_reboot)" + if [ "$kernel_to_reboot" != "$kernel_to_delete" -a -n "$kernel_is_size" ]; then if [ -z "${packages_upgraded}" ]; then - packages_upgraded="{\"name\":\"kernel\"," # If it is the first item then we do not want a separator + packages_upgraded="{\"name\":\"kernel\"," # If it is the first item then we do not want a separator else - packages_upgraded=$packages_upgraded", {\"name\":\"kernel\"," + packages_upgraded=$packages_upgraded", {\"name\":\"kernel\"," fi packages_upgraded=$packages_upgraded"\"size\":\"$kernel_is_size\"," packages_upgraded=$packages_upgraded"\"repository\":\"${UPSTREAM}\"," packages_upgraded=$packages_upgraded"\"current_version\":\"$kernel_to_delete\"," packages_upgraded=$packages_upgraded"\"new_version\":\"$kernel_to_reboot\"}" upgrade_needs_reboot="1" - fi fi - fi fi + fi +fi packages_is_size="$(opnsense-update -SRp)" if [ -n "${packages_is_size}" ]; then