mirror of
https://github.com/lucaspalomodevelop/core.git
synced 2026-03-20 03:16:12 +00:00
firmware: assorted changes for #4500
o Do not load the text changelog for the GUI as it is unused o Rename product_name to product_id for consistency o Always hint at product_target so correct changelog is displayed o Rename type to target for consistency o Add distinguishable labels to changelog view actions o Return JSON when argument is given for easier debug
This commit is contained in:
parent
a4f48f7a91
commit
88aa77ecda
@ -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 */
|
||||
|
||||
@ -88,7 +88,7 @@
|
||||
'<td>'+row['repository']+'</td><td>'+row['old']+'</td><td>' +
|
||||
row['new']+'</td><td>'+row['reason'] + '</td></tr>');
|
||||
|
||||
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(/[_-].*/, '');
|
||||
}
|
||||
});
|
||||
|
||||
@ -38,6 +38,7 @@
|
||||
# upgrade_packages: array with { name: <package_name>, current_version: <current_version>, new_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}
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user