diff --git a/src/opnsense/mvc/app/controllers/OPNsense/Core/Api/FirmwareController.php b/src/opnsense/mvc/app/controllers/OPNsense/Core/Api/FirmwareController.php
index 6983730d6..35597377b 100644
--- a/src/opnsense/mvc/app/controllers/OPNsense/Core/Api/FirmwareController.php
+++ b/src/opnsense/mvc/app/controllers/OPNsense/Core/Api/FirmwareController.php
@@ -88,14 +88,14 @@ class FirmwareController extends ApiControllerBase
public function statusAction()
{
$backend = new Backend();
- $type = null;
+ $target = null;
$response = json_decode(trim($backend->configdRun('firmware product')), true);
if ($response != null && $response['product_check'] != null) {
$response = $response['product_check'];
- if (!empty($response['check_package']) && $response['product_name'] != $response['check_package']) {
- $type = $response['check_package'];
+ if ($response['product_id'] != $response['product_target']) {
+ $target = $response['product_target'];
}
$packages_size = !empty($response['download_size']) ? $response['download_size'] : 0;
@@ -224,14 +224,14 @@ class FirmwareController extends ApiControllerBase
} elseif (array_key_exists('repository', $response) && $response['repository'] == 'unsigned') {
$response['status_msg'] = gettext('The repository has no fingerprint.');
$response['status'] = 'error';
- } elseif (array_key_exists('repository', $response) && $response['repository'] == 'incomplete' && !empty($type)) {
- $response['status_msg'] = sprintf(gettext('The package "%s" is not available on this repository.'), $type);
+ } elseif (array_key_exists('repository', $response) && $response['repository'] == 'incomplete' && !empty($target)) {
+ $response['status_msg'] = sprintf(gettext('The package "%s" is not available on this repository.'), $target);
$response['status'] = 'error';
} elseif (array_key_exists('repository', $response) && $response['repository'] != 'ok') {
$response['status_msg'] = gettext('Could not find the repository on the selected mirror.');
$response['status'] = 'error';
} elseif (array_key_exists('updates', $response) && $response['updates'] != 0) {
- if (!empty($type)) {
+ if (!empty($target)) {
$response['status_msg'] = gettext('The release type requires an update.');
$response['status_upgrade_action'] = 'rel';
$response['status'] = 'ok';
@@ -302,11 +302,7 @@ class FirmwareController extends ApiControllerBase
if ($version == 'update') {
$backend->configdRun('firmware changelog fetch');
} else {
- $text = trim($backend->configdRun(sprintf('firmware changelog text %s', $version)));
$html = trim($backend->configdRun(sprintf('firmware changelog html %s', $version)));
- if (!empty($text)) {
- $response['text'] = $text;
- }
if (!empty($html)) {
$response['html'] = $html;
}
@@ -746,12 +742,12 @@ class FirmwareController extends ApiControllerBase
$response = array();
$version = explode(' ', trim(shell_exec('opnsense-version -nv')));
- foreach (array('product_name' => 0, 'product_version' => 1) as $result => $index) {
+ foreach (array('product_id' => 0, 'product_version' => 1) as $result => $index) {
$response[$result] = !empty($version[$index]) ? $version[$index] : 'unknown';
}
/* allows us to select UI features based on product state */
- $devel = explode('-', $response['product_name']);
+ $devel = explode('-', $response['product_id']);
$devel = count($devel) == 2 ? $devel[1] == 'devel' : false;
/* need both remote and local, create array earlier */
diff --git a/src/opnsense/mvc/app/views/OPNsense/Core/firmware.volt b/src/opnsense/mvc/app/views/OPNsense/Core/firmware.volt
index 5980138c7..0aa3d6501 100644
--- a/src/opnsense/mvc/app/views/OPNsense/Core/firmware.volt
+++ b/src/opnsense/mvc/app/views/OPNsense/Core/firmware.volt
@@ -88,7 +88,7 @@
'
'+row['repository']+' | '+row['old']+' | ' +
row['new']+' | '+row['reason'] + ' | ');
- if (row['name'] == data['product_name'] && row['new'] != 'N/A') {
+ if (row['name'] == data['product_target'] && row['new'] != 'N/A') {
$.upgrade_show_log = row['new'].replace(/[_-].*/, '');
}
});
diff --git a/src/opnsense/scripts/firmware/check.sh b/src/opnsense/scripts/firmware/check.sh
index 080d27bc4..c964dc786 100755
--- a/src/opnsense/scripts/firmware/check.sh
+++ b/src/opnsense/scripts/firmware/check.sh
@@ -38,6 +38,7 @@
# upgrade_packages: array with { name: , current_version: , new_version: }
JSONFILE="/tmp/pkg_upgrade.json"
+JSONRETURN=${1}
LOCKFILE="/tmp/pkg_upgrade.progress"
OUTFILE="/tmp/pkg_update.out"
TEE="/usr/bin/tee -a"
@@ -60,29 +61,22 @@ repository="error"
updates=""
upgrade_needs_reboot="0"
-product_name=$(opnsense-version -n)
-product_version=$(opnsense-version -v)
-os_version=$(uname -sr)
-last_check=$(date)
-
-SUFFIX="-$(pluginctl -g system.firmware.type)"
-if [ "${SUFFIX}" = "-" ]; then
- SUFFIX=
+product_suffix="-$(pluginctl -g system.firmware.type)"
+if [ "${product_suffix}" = "-" ]; then
+ product_suffix=
fi
-PACKAGE=opnsense${SUFFIX}
+
+last_check=$(date)
+os_version=$(uname -sr)
+product_id=$(opnsense-version -n)
+product_target=opnsense${product_suffix}
+product_version=$(opnsense-version -v)
echo "***GOT REQUEST TO CHECK FOR UPDATES***" >> ${LOCKFILE}
echo -n "Fetching changelog information, please wait... " >> ${LOCKFILE}
if /usr/local/opnsense/scripts/firmware/changelog.sh fetch >> ${LOCKFILE} 2>&1; then
- echo "done" >> ${LOCKFILE}
-fi
-
-if [ "${product_name}" = "${PACKAGE}" ]; then
- echo "A release type change is not required." >> ${LOCKFILE}
- PACKAGE=
-else
- echo "Targeting new release type: ${PACKAGE}" >> ${LOCKFILE}
+ echo "done" >> ${LOCKFILE}
fi
: > ${OUTFILE}
@@ -121,26 +115,28 @@ fi
# reach the pkg repository in timely fashion
# Kill all running pkg instances
connection="timeout"
- else
+ else
# connection is still ok
connection="ok"
: > ${OUTFILE}
# now check what happens when we would go ahead
- if [ -n "${PACKAGE}" ]; then
+ if [ "${product_id}" != "${product_target}" ]; then
+ echo "Targeting new release type: ${product_target}" | ${TEE} ${LOCKFILE}
# fetch before install lets us know more,
# although not as fast as it should be...
- (pkg fetch -Uy "${PACKAGE}" 2>&1) | ${TEE} ${LOCKFILE}
- (pkg install -Un "${PACKAGE}" 2>&1) | ${TEE} ${LOCKFILE} ${OUTFILE}
+ (pkg fetch -Uy "${product_target}" 2>&1) | ${TEE} ${LOCKFILE}
+ (pkg install -Un "${product_target}" 2>&1) | ${TEE} ${LOCKFILE} ${OUTFILE}
else
+ echo "A release type change is not required." | ${TEE} ${LOCKFILE}
(pkg upgrade -Un 2>&1) | ${TEE} ${LOCKFILE} ${OUTFILE}
fi
# Check for additional repository errors
if grep -q 'Unable to update repository' ${OUTFILE}; then
repository="error" # already set but reset here for clarity
- elif grep -q "No packages available to install matching..${PACKAGE}" ${OUTFILE}; then
+ elif grep -q "No packages available to install matching..${product_target}" ${OUTFILE}; then
repository="incomplete"
else
# Repository can be used for updates
@@ -163,10 +159,10 @@ fi
MODE=
while read LINE; do
- REPO=$(echo "${LINE}" | grep -o '\[.*\]' | tr -d '[]')
- if [ -z "${REPO}" ]; then
- REPO=${UPSTREAM}
- fi
+ 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:)
@@ -286,11 +282,11 @@ fi
;;
esac
done
- done < ${OUTFILE}
+ done < ${OUTFILE}
fi
# the main update from package will provide this during upgrade
- if [ -n "${PACKAGE}" ]; then
+ if [ "${product_id}" != "${product_target}" ]; then # XXX unhide later
base_to_reboot=
elif [ -z "$base_to_reboot" ]; then
if opnsense-update -cbf; then
@@ -316,7 +312,7 @@ fi
fi
# the main update from package will provide this during upgrade
- if [ -n "${PACKAGE}" ]; then
+ if [ "${product_id}" != "${product_target}" ]; then # XXX unhide later
kernel_to_reboot=
elif [ -z "$kernel_to_reboot" ]; then
if opnsense-update -cfk; then
@@ -350,14 +346,14 @@ fi
# write our json structure
cat > ${JSONFILE} << EOF
{
- "check_package":"${PACKAGE}",
"connection":"$connection",
"downgrade_packages":[$packages_downgraded],
"download_size":"$download_size",
"last_check":"$last_check",
"new_packages":[$packages_new],
"os_version":"$os_version",
- "product_name":"$product_name",
+ "product_target":"$product_target",
+ "product_id":"$product_id",
"product_version":"$product_version",
"reinstall_packages":[$packages_reinstall],
"remove_packages":[$packages_removed],
@@ -370,4 +366,8 @@ cat > ${JSONFILE} << EOF
}
EOF
+if [ -n "${JSONRETURN}" ]; then
+ cat ${JSONFILE}
+fi
+
echo '***DONE***' >> ${LOCKFILE}
diff --git a/src/opnsense/service/conf/actions.d/actions_firmware.conf b/src/opnsense/service/conf/actions.d/actions_firmware.conf
index 67b6f48fc..0bc18fee9 100644
--- a/src/opnsense/service/conf/actions.d/actions_firmware.conf
+++ b/src/opnsense/service/conf/actions.d/actions_firmware.conf
@@ -28,13 +28,13 @@ message:Retrieving changelog index
command: /usr/local/opnsense/scripts/firmware/changelog.sh html
parameters:%s
type:script_output
-message:Viewing changelog for version %s
+message:Viewing HTML changelog for version %s
[changelog.text]
command: /usr/local/opnsense/scripts/firmware/changelog.sh text
parameters:%s
type:script_output
-message:Viewing changelog for version %s
+message:Viewing text changelog for version %s
[license]
command:/usr/local/opnsense/scripts/firmware/license.sh