From 2b991cffecb40022271af608172aa868c9daa9b4 Mon Sep 17 00:00:00 2001 From: Franco Fichtner Date: Thu, 7 Dec 2017 08:43:57 +0000 Subject: [PATCH] firmware: allow to select the release family --- .../OPNsense/Core/Api/FirmwareController.php | 58 ++++++++++++++----- .../mvc/app/views/OPNsense/Core/firmware.volt | 26 +++++++++ 2 files changed, 68 insertions(+), 16 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 f989cb7b9..007d1c3ce 100644 --- a/src/opnsense/mvc/app/controllers/OPNsense/Core/Api/FirmwareController.php +++ b/src/opnsense/mvc/app/controllers/OPNsense/Core/Api/FirmwareController.php @@ -716,7 +716,16 @@ class FirmwareController extends ApiControllerBase $flavours['libressl'] = 'LibreSSL'; $flavours['latest'] = 'OpenSSL'; - return array("mirrors"=>$mirrors, "flavours" => $flavours, 'has_subscription' => $has_subscription); + $families = array(); + $families[''] = gettext('Production'); + $families['devel'] = gettext('Development'); + + return array( + 'has_subscription' => $has_subscription, + 'flavours' => $flavours, + 'families' => $families, + 'mirrors' => $mirrors, + ); } /** @@ -725,15 +734,23 @@ class FirmwareController extends ApiControllerBase */ public function getFirmwareConfigAction() { + $config = Config::getInstance()->object(); $result = array(); - $result['mirror'] = ''; - $result['flavour'] = ''; - if (!empty(Config::getInstance()->object()->system->firmware->mirror)) { - $result['mirror'] = (string)Config::getInstance()->object()->system->firmware->mirror; + $result['flavour'] = ''; + $result['family'] = ''; + $result['mirror'] = ''; + + if (!empty($config->system->firmware->flavour)) { + $result['flavour'] = (string)$config->system->firmware->flavour; } - if (!empty(Config::getInstance()->object()->system->firmware->flavour)) { - $result['flavour'] = (string)Config::getInstance()->object()->system->firmware->flavour; + + if (!empty($config->system->firmware->family)) { + $result['family'] = (string)$config->system->firmware->family; + } + + if (!empty($config->system->firmware->mirror)) { + $result['mirror'] = (string)$config->system->firmware->mirror; } return $result; @@ -748,31 +765,40 @@ class FirmwareController extends ApiControllerBase $response = array("status" => "failure"); if ($this->request->isPost()) { + $config = Config::getInstance()->object(); + $response['status'] = 'ok'; + $selectedMirror = filter_var($this->request->getPost("mirror", null, ""), FILTER_SANITIZE_URL); $selectedFlavour = filter_var($this->request->getPost("flavour", null, ""), FILTER_SANITIZE_URL); + $selectedFamily = filter_var($this->request->getPost("family", null, ""), FILTER_SANITIZE_URL); $selSubscription = filter_var($this->request->getPost("subscription", null, ""), FILTER_SANITIZE_URL); // config data without model, prepare xml structure and write data - if (!isset(Config::getInstance()->object()->system->firmware)) { - Config::getInstance()->object()->system->addChild('firmware'); + if (!isset($config->system->firmware)) { + $config->system->addChild('firmware'); } - if (!isset(Config::getInstance()->object()->system->firmware->mirror)) { - Config::getInstance()->object()->system->firmware->addChild('mirror'); + if (!isset($config->system->firmware->mirror)) { + $config->system->firmware->addChild('mirror'); } if (empty($selSubscription)) { - Config::getInstance()->object()->system->firmware->mirror = $selectedMirror; + $config->system->firmware->mirror = $selectedMirror; } else { // prepend subscription - Config::getInstance()->object()->system->firmware->mirror = $selectedMirror . '/' . $selSubscription; + $config->system->firmware->mirror = $selectedMirror . '/' . $selSubscription; } - if (!isset(Config::getInstance()->object()->system->firmware->flavour)) { - Config::getInstance()->object()->system->firmware->addChild('flavour'); + if (!isset($config->system->firmware->flavour)) { + $config->system->firmware->addChild('flavour'); } - Config::getInstance()->object()->system->firmware->flavour = $selectedFlavour; + $config->system->firmware->flavour = $selectedFlavour; + + if (!isset($config->system->firmware->family)) { + $config->system->firmware->addChild('family'); + } + $config->system->firmware->family = $selectedFamily; Config::getInstance()->save(); diff --git a/src/opnsense/mvc/app/views/OPNsense/Core/firmware.volt b/src/opnsense/mvc/app/views/OPNsense/Core/firmware.volt index 67da7c000..c2b26320e 100644 --- a/src/opnsense/mvc/app/views/OPNsense/Core/firmware.volt +++ b/src/opnsense/mvc/app/views/OPNsense/Core/firmware.volt @@ -603,6 +603,20 @@ POSSIBILITY OF SUCH DAMAGE. ); $("#firmware_flavour").selectpicker('refresh'); $("#firmware_flavour").change(); + + $.each(firmwareoptions.families, function(key, value) { + var selected = false; + if (key == firmwareconfig['family']) { + selected = true; + } + $("#firmware_family").append($("