mirror of
https://github.com/lucaspalomodevelop/core.git
synced 2026-03-13 08:09:41 +00:00
firmware: pull the set size from the mirror
There is only one tiny missing piece: if we have both packages and sets, we need to merge the download size and display it.
This commit is contained in:
parent
6fe66d4b91
commit
f6dec7ea3b
@ -1164,12 +1164,12 @@ function resolve_retry($hostname, $retries = 5)
|
||||
|
||||
function format_bytes($bytes)
|
||||
{
|
||||
if ($bytes >= 1073741824) {
|
||||
return sprintf("%.2f GB", $bytes/1073741824);
|
||||
} elseif ($bytes >= 1048576) {
|
||||
return sprintf("%.2f MB", $bytes/1048576);
|
||||
if ($bytes >= (1024 * 1024 * 1024)) {
|
||||
return sprintf("%.2f GB", $bytes / (1024 * 1024 * 1024));
|
||||
} elseif ($bytes >= 1024 * 1024) {
|
||||
return sprintf("%.2f MB", $bytes / (1024 * 1024));
|
||||
} elseif ($bytes >= 1024) {
|
||||
return sprintf("%.0f KB", $bytes/1024);
|
||||
return sprintf("%.0f KB", $bytes / 1024);
|
||||
} else {
|
||||
return sprintf("%d bytes", $bytes);
|
||||
}
|
||||
|
||||
@ -39,6 +39,24 @@ use \OPNsense\Core\Config;
|
||||
*/
|
||||
class FirmwareController extends ApiControllerBase
|
||||
{
|
||||
/**
|
||||
* return bytes in human-readable form
|
||||
* @param integer $bytes bytes to convert
|
||||
* @return string
|
||||
*/
|
||||
private function format_bytes($bytes)
|
||||
{
|
||||
if ($bytes >= (1024 * 1024 * 1024)) {
|
||||
return sprintf("%d GB", $bytes / (1024 * 1024 * 1024));
|
||||
} elseif ($bytes >= 1024 * 1024) {
|
||||
return sprintf("%d MB", $bytes / (1024 * 1024));
|
||||
} elseif ($bytes >= 1024) {
|
||||
return sprintf("%d KB", $bytes / 1024);
|
||||
} else {
|
||||
return sprintf("%d bytes", $bytes);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* retrieve available updates
|
||||
* @return array
|
||||
@ -51,6 +69,20 @@ class FirmwareController extends ApiControllerBase
|
||||
$response = json_decode(trim($backend->configdRun('firmware check')), true);
|
||||
|
||||
if ($response != null) {
|
||||
$packages_size = !empty($response['download_size']) ? $response['download_size'] : 0;
|
||||
$sets_size = 0;
|
||||
|
||||
if (!empty($response['upgrade_packages'])) {
|
||||
foreach ($response['upgrade_packages'] as $listing) {
|
||||
if (!empty($listing['size'])) {
|
||||
$sets_size += $listing['size'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* XXX scrape the number from $package_size and merge with sets size for total */
|
||||
$download_size = $packages_size ? $packages_size : $this->format_bytes($sets_size);
|
||||
|
||||
if (array_key_exists('connection', $response) && $response['connection'] == 'error') {
|
||||
$response['status_msg'] = gettext('Connection error.');
|
||||
$response['status'] = 'error';
|
||||
@ -73,13 +105,13 @@ class FirmwareController extends ApiControllerBase
|
||||
$response['status_msg'] = sprintf(
|
||||
gettext('There is %s update available, total download size is %s.'),
|
||||
$response['updates'],
|
||||
$response['download_size']
|
||||
$download_size
|
||||
);
|
||||
} else {
|
||||
$response['status_msg'] = sprintf(
|
||||
gettext('There are %s updates available, total download size is %s.'),
|
||||
$response['updates'],
|
||||
$response['download_size']
|
||||
$download_size
|
||||
);
|
||||
}
|
||||
if ($response['upgrade_needs_reboot'] == 1) {
|
||||
|
||||
@ -29,8 +29,8 @@
|
||||
# connection: error|ok
|
||||
# repository: error|ok
|
||||
# last_ckeck: <date_time_stamp>
|
||||
# updates: <#num_of_updates>
|
||||
# download_size: unknown|<size_of_total_downloads>
|
||||
# updates: <num_of_updates>
|
||||
# download_size: <size_of_total_downloads>
|
||||
# new_packages: array with { name: <package_name>, version: <package_version> }
|
||||
# reinstall_packages: array with { name: <package_name>, version: <package_version> }
|
||||
# upgrade_packages: array with { name: <package_name>, current_version: <current_version>, new_version: <new_version> }
|
||||
@ -50,7 +50,7 @@ last_check="unknown"
|
||||
packages_upgraded=""
|
||||
packages_downgraded=""
|
||||
packages_new=""
|
||||
download_size="unknown"
|
||||
download_size=""
|
||||
itemcount=0
|
||||
linecount=0
|
||||
timer=0
|
||||
@ -108,16 +108,12 @@ if [ "$pkg_running" == "" ]; then
|
||||
updates="0"
|
||||
else
|
||||
download_size=`cat $tmp_pkg_output_file | grep 'to be downloaded' | awk -F '[ ]' '{print $1$2}'`
|
||||
if [ "$download_size" == "" ]; then
|
||||
download_size="unknown"
|
||||
fi
|
||||
|
||||
LQUERY=$(pkg query %v opnsense-update)
|
||||
RQUERY=$(pkg rquery %v opnsense-update)
|
||||
if [ "${LQUERY%%_*}" != "${RQUERY%%_*}" ]; then
|
||||
kernel_to_reboot="${RQUERY%%_*}"
|
||||
base_to_reboot="${RQUERY%%_*}"
|
||||
upgrade_needs_reboot="1"
|
||||
fi
|
||||
|
||||
# First check if there are new packages that need to be installed
|
||||
@ -239,16 +235,18 @@ if [ "$pkg_running" == "" ]; then
|
||||
fi
|
||||
if [ -n "$base_to_reboot" ]; then
|
||||
base_to_delete="$(opnsense-update -bv)"
|
||||
if [ "$base_to_reboot" != "$base_to_delete" ]; then
|
||||
base_is_size="$(opnsense-update -bfS)"
|
||||
upgrade_needs_reboot="1"
|
||||
if [ "$base_to_reboot" != "$base_to_delete" -a -n "$base_is_size" ]; then
|
||||
if [ "$packages_upgraded" == "" ]; then
|
||||
packages_upgraded=$packages_upgraded"{\"name\":\"base\"," # If it is the first item then we do not want a seperator
|
||||
else
|
||||
packages_upgraded=$packages_upgraded", {\"name\":\"base\","
|
||||
fi
|
||||
packages_upgraded=$packages_upgraded"\"size\":\"$base_is_size\","
|
||||
packages_upgraded=$packages_upgraded"\"current_version\":\"$base_to_delete\","
|
||||
packages_upgraded=$packages_upgraded"\"new_version\":\"$base_to_reboot\"}"
|
||||
updates=$(expr $updates + 1)
|
||||
upgrade_needs_reboot="1"
|
||||
fi
|
||||
fi
|
||||
if opnsense-update -cfk; then
|
||||
@ -259,16 +257,18 @@ if [ "$pkg_running" == "" ]; then
|
||||
fi
|
||||
if [ -n "$kernel_to_reboot" ]; then
|
||||
kernel_to_delete="$(opnsense-update -kv)"
|
||||
if [ "$kernel_to_reboot" != "$kernel_to_delete" ]; then
|
||||
kernel_is_size="$(opnsense-update -fkS)"
|
||||
upgrade_needs_reboot="1"
|
||||
if [ "$kernel_to_reboot" != "$kernel_to_delete" -a -n "$kernel_is_size" ]; then
|
||||
if [ "$packages_upgraded" == "" ]; then
|
||||
packages_upgraded=$packages_upgraded"{\"name\":\"kernel\"," # If it is the first item then we do not want a seperator
|
||||
else
|
||||
packages_upgraded=$packages_upgraded", {\"name\":\"kernel\","
|
||||
fi
|
||||
packages_upgraded=$packages_upgraded"\"size\":\"$kernel_is_size\","
|
||||
packages_upgraded=$packages_upgraded"\"current_version\":\"$kernel_to_delete\","
|
||||
packages_upgraded=$packages_upgraded"\"new_version\":\"$kernel_to_reboot\"}"
|
||||
updates=$(expr $updates + 1)
|
||||
upgrade_needs_reboot="1"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user