firmware: show downgrades in update list as well

This commit is contained in:
Franco Fichtner 2017-04-23 11:36:38 +02:00
parent b744feb5b8
commit 5e53c764cd
2 changed files with 44 additions and 4 deletions

View File

@ -99,11 +99,21 @@ class FirmwareController extends ApiControllerBase
* reinstall_packages: array with { name: <package_name>, version: <package_version> }
* upgrade_packages: array with { name: <package_name>,
* current_version: <current_version>, new_version: <new_version> }
* downgrade_packages: array with { name: <package_name>,
* current_version: <current_version>, new_version: <new_version> }
*/
foreach (array('new_packages', 'reinstall_packages', 'upgrade_packages') as $pkg_type) {
foreach (array('new_packages', 'reinstall_packages', 'upgrade_packages', 'downgrade_packages') as $pkg_type) {
if (isset($response[$pkg_type])) {
foreach ($response[$pkg_type] as $value) {
switch ($pkg_type) {
case 'downgrade_packages':
$sorted[$value['name']] = array(
'reason' => gettext('downgrade'),
'old' => $value['current_version'],
'new' => $value['new_version'],
'name' => $value['name'],
);
break;
case 'new_packages':
$sorted[$value['name']] = array(
'new' => $value['version'],
@ -122,7 +132,7 @@ class FirmwareController extends ApiControllerBase
break;
case 'upgrade_packages':
$sorted[$value['name']] = array(
'reason' => gettext('update'),
'reason' => gettext('upgrade'),
'old' => $value['current_version'],
'new' => $value['new_version'],
'name' => $value['name'],

View File

@ -1,6 +1,6 @@
#!/bin/sh
# Copyright (C) 2015-2016 Franco Fichtner <franco@opnsense.org>
# Copyright (C) 2015-2017 Franco Fichtner <franco@opnsense.org>
# Copyright (C) 2014 Deciso B.V.
# All rights reserved.
#
@ -47,6 +47,7 @@ pkg_running=""
packes_output=""
last_check="unknown"
packages_upgraded=""
packages_downgraded=""
packages_new=""
required_space="none"
download_size="none"
@ -206,6 +207,35 @@ if [ "$pkg_running" == "" ]; then
itemcount=`echo $linecount + 4 | bc`
fi
done
# Now check if there are downgrades to install
for i in $(cat $tmp_pkg_output_file); do
if [ "$itemcount" -gt "$linecount" ]; then
if [ `echo $linecount + 4 | bc` -eq "$itemcount" ]; then
if [ "`echo $i | grep ':'`" == "" ]; then
itemcount=0 # This is not a valid item so reset item count
else
i=`echo $i | tr -d :`
if [ "$packages_downgraded" == "" ]; then
packages_downgraded=$packages_downgraded"{\"name\":\"$i\"," # If it is the first item then we do not want a seperator
else
packages_downgraded=$packages_downgraded", {\"name\":\"$i\","
fi
fi
fi
if [ `echo $linecount + 3 | bc` -eq "$itemcount" ]; then
packages_downgraded=$packages_downgraded"\"current_version\":\"$i\","
fi
if [ `echo $linecount + 1 | bc` -eq "$itemcount" ]; then
packages_downgraded=$packages_downgraded"\"new_version\":\"$i\"}"
itemcount=`echo $itemcount + 4 | bc` # Get ready for next item
fi
fi
linecount=`echo $linecount + 1 | bc`
if [ "$i" == "DOWNGRADED:" ]; then
itemcount=`echo $linecount + 4 | bc`
fi
done
fi
fi
else
@ -231,5 +261,5 @@ if [ "$pkg_running" == "" ]; then
last_check=$(date)
# Write our json structure to disk
echo "{\"connection\":\"$connection\",\"repository\":\"$repository\",\"product_version\":\"$product_version\",\"product_name\":\"$product_name\",\"os_version\":\"$os_version\",\"last_check\":\"$last_check\",\"updates\":\"$updates\",\"download_size\":\"$download_size\",\"extra_space_required\":\"$required_space\",\"new_packages\":[$packages_new],\"reinstall_packages\":[$packages_reinstall],\"upgrade_packages\":[$packages_upgraded],\"upgrade_needs_reboot\":\"$upgrade_needs_reboot\"}"
echo "{\"connection\":\"$connection\",\"repository\":\"$repository\",\"product_version\":\"$product_version\",\"product_name\":\"$product_name\",\"os_version\":\"$os_version\",\"last_check\":\"$last_check\",\"updates\":\"$updates\",\"download_size\":\"$download_size\",\"extra_space_required\":\"$required_space\",\"new_packages\":[$packages_new],\"reinstall_packages\":[$packages_reinstall],\"upgrade_packages\":[$packages_upgraded],\"downgrade_packages\":[$packages_downgraded],\"upgrade_needs_reboot\":\"$upgrade_needs_reboot\"}"
fi