From 602d5c59128eeba1f8b1005e410fe51df8a2ff92 Mon Sep 17 00:00:00 2001 From: Franco Fichtner Date: Thu, 9 Dec 2021 09:47:24 +0100 Subject: [PATCH] firmware: be more chill about missing product_check and always return product info #5394 --- .../OPNsense/Core/Api/FirmwareController.php | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) 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 4518c9daf..12b6e7a38 100644 --- a/src/opnsense/mvc/app/controllers/OPNsense/Core/Api/FirmwareController.php +++ b/src/opnsense/mvc/app/controllers/OPNsense/Core/Api/FirmwareController.php @@ -100,9 +100,21 @@ class FirmwareController extends ApiControllerBase $backend->configdRun('firmware probe'); } - $response = json_decode(trim($backend->configdRun('firmware product')), true); - if ($response != null && $response['product_check'] != null) { - $response = $response['product_check']; + $product = json_decode(trim($backend->configdRun('firmware product')), true); + if ($product == null) { + $response = [ + 'status_msg' => gettext('Firmware status check was aborted internally. Please try again.'), + 'status' => 'error', + ]; + } elseif ($product['product_check'] == null) { + $response = [ + 'product' => $product, + 'status_msg' => gettext('Firmware status requires to check for update first to provide more information.'), + 'status' => 'none', + ]; + } else { + $response = $product['product_check']; + $response['product'] = $product; $download_size = !empty($response['download_size']) ? $response['download_size'] : 0; @@ -308,11 +320,6 @@ class FirmwareController extends ApiControllerBase $response['status_msg'] = gettext('Unknown firmware status encountered.'); $response['status'] = 'error'; } - } else { - $response = array( - 'status_msg' => gettext('Firmware status check was aborted internally. Please try again.'), - 'status' => 'error', - ); } return $response;