firmware: get rid of firmware type name #4500

From the user side no functional changes.  What this can do
now is decide whether to update or do a release type transition.
In most cases it is safer to get all updates first and then
do a release type transition afterwards.  This can follow when
firmware type install can be shelved.
This commit is contained in:
Franco Fichtner 2021-02-12 19:34:54 +01:00
parent f69794b929
commit 10eab0ae68
3 changed files with 18 additions and 33 deletions

View File

@ -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') {

View File

@ -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
{

View File

@ -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