From c01454e4f199679059e8d2c7190bf2b73dbad3df Mon Sep 17 00:00:00 2001 From: Franco Fichtner Date: Mon, 9 Oct 2017 06:40:20 +0000 Subject: [PATCH] firmware: translate packages size and merge with sets size --- .../OPNsense/Core/Api/FirmwareController.php | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 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 08e080c2d..c786e9e5f 100644 --- a/src/opnsense/mvc/app/controllers/OPNsense/Core/Api/FirmwareController.php +++ b/src/opnsense/mvc/app/controllers/OPNsense/Core/Api/FirmwareController.php @@ -80,8 +80,24 @@ class FirmwareController extends ApiControllerBase } } - /* 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 (preg_match('/\s*(\d+)\s*([a-z])/i', $packages_size, $matches)) { + $factor = 1; + switch (isset($matches[2]) ? strtolower($matches[2]) : 'b') { + case 'g': + $factor *= 1024; + case 'm': + $factor *= 1024; + case 'k': + $factor *= 1024; + default: + break; + } + $packages_size = $factor * $matches[1]; + } else { + $packages_size = 0; + } + + $download_size = $this->format_bytes($packages_size + $sets_size); if (array_key_exists('connection', $response) && $response['connection'] == 'error') { $response['status_msg'] = gettext('Connection error.');