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 1fcf7fde1..915044922 100644 --- a/src/opnsense/mvc/app/controllers/OPNsense/Core/Api/FirmwareController.php +++ b/src/opnsense/mvc/app/controllers/OPNsense/Core/Api/FirmwareController.php @@ -70,24 +70,17 @@ class FirmwareController extends ApiControllerBase $response = array(); $config = Config::getInstance()->object(); - $type_want = 'opnsense'; + $type = 'opnsense'; if (!empty($config->system->firmware->type)) { - $type_want .= '-' . (string)$config->system->firmware->type; + $type .= '-' . (string)$config->system->firmware->type; } $this->sessionClose(); // long running action, close session - $backend = new Backend(); - $type_have = trim($backend->configdRun('firmware type name')); - $args = array(); - - if (!empty($type_have) && $type_have !== $type_want) { - $args[] = $type_want; - } - if ($this->request->isPost()) { + $backend = new Backend(); + $response['msg_uuid'] = trim($backend->configdpRun('firmware check', [ $type ], true)); $response['status'] = 'ok'; - $response['msg_uuid'] = trim($backend->configdpRun('firmware check', $args, true)); } else { $response['status'] = 'failure'; } @@ -101,12 +94,6 @@ class FirmwareController extends ApiControllerBase */ public function statusAction() { - $config = Config::getInstance()->object(); - $type_want = 'opnsense'; - if (!empty($config->system->firmware->type)) { - $type_want .= '-' . (string)$config->system->firmware->type; - } - $backend = new Backend(); $args = []; @@ -114,9 +101,8 @@ class FirmwareController extends ApiControllerBase if ($response != null && $response['product_check'] != null) { $response = $response['product_check']; - $type_have = $response['product_name']; - if (!empty($type_have) && $type_have !== $type_want) { - $args[] = $type_want; + if (!empty($response['check_package']) && $response['product_name'] != $response['check_package']) { + $args[] = $response['check_package']; } $packages_size = !empty($response['download_size']) ? $response['download_size'] : 0; @@ -245,7 +231,7 @@ 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') { + } elseif (array_key_exists('repository', $response) && $response['repository'] == 'incomplete' && count($args)) { $response['status_msg'] = sprintf(gettext('The package "%s" is not available on this repository.'), $args[0]); $response['status'] = 'error'; } elseif (array_key_exists('repository', $response) && $response['repository'] != 'ok') { diff --git a/src/opnsense/scripts/firmware/check.sh b/src/opnsense/scripts/firmware/check.sh index 7d12460aa..d2b9a461e 100755 --- a/src/opnsense/scripts/firmware/check.sh +++ b/src/opnsense/scripts/firmware/check.sh @@ -61,6 +61,11 @@ repository="error" updates="" upgrade_needs_reboot="0" +product_name=$(opnsense-version -n) +product_version=$(opnsense-version -v) +os_version=$(uname -sr) +last_check=$(date) + echo "***GOT REQUEST TO CHECK FOR UPDATES***" >> ${LOCKFILE} echo -n "Fetching changelog information, please wait... " >> ${LOCKFILE} @@ -68,6 +73,11 @@ if /usr/local/opnsense/scripts/firmware/changelog.sh fetch >> ${LOCKFILE} 2>&1; echo "done" >> ${LOCKFILE} fi +if [ -n "${PACKAGE}" -a "${product_name}" = "${PACKAGE}" ]; then + echo "A release type change is not required." >> ${LOCKFILE} + PACKAGE= +fi + : > ${OUTFILE} (pkg update -f 2>&1) | ${TEE} ${LOCKFILE} ${OUTFILE} @@ -330,11 +340,6 @@ fi upgrade_major_message=$(cat /usr/local/opnsense/firmware-message 2> /dev/null | sed 's/"/\\&/g' | tr '\n' ' ') upgrade_major_version=$(cat /usr/local/opnsense/firmware-upgrade 2> /dev/null) - product_version=$(opnsense-version -v) - product_name=$(opnsense-version -n) - os_version=$(uname -sr) - last_check=$(date) - # write our json structure cat > ${JSONFILE} << EOF { diff --git a/src/opnsense/service/conf/actions.d/actions_firmware.conf b/src/opnsense/service/conf/actions.d/actions_firmware.conf index 0420dc1aa..41d2c4787 100644 --- a/src/opnsense/service/conf/actions.d/actions_firmware.conf +++ b/src/opnsense/service/conf/actions.d/actions_firmware.conf @@ -2,7 +2,7 @@ command:daemon -f /usr/local/opnsense/scripts/firmware/launcher.sh check parameters:%s type:script -message:Retrieve firmware update status +message:Retrieve %s firmware update status [changelog.fetch] command: /usr/local/opnsense/scripts/firmware/changelog.sh fetch @@ -42,12 +42,6 @@ parameters:%s type:script_output message:Viewing license for %s -[type.name] -command:opnsense-version -n -parameters: -type:script_output -message:Probing release type name - [type.install] command:/usr/sbin/daemon -f /usr/local/opnsense/scripts/firmware/launcher.sh type parameters:%s