From d60990f8d582d997437b7903baddbaabbfc54268 Mon Sep 17 00:00:00 2001 From: Ad Schellevis Date: Wed, 19 Feb 2020 09:11:45 +0100 Subject: [PATCH] dismiss/capture installed plugins for https://github.com/opnsense/core/issues/1663 --- .../OPNsense/Core/Api/FirmwareController.php | 40 +++++++++++++++++++ .../mvc/app/views/OPNsense/Core/firmware.volt | 11 +++++ 2 files changed, 51 insertions(+) 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 f801f226d..aac343231 100644 --- a/src/opnsense/mvc/app/controllers/OPNsense/Core/Api/FirmwareController.php +++ b/src/opnsense/mvc/app/controllers/OPNsense/Core/Api/FirmwareController.php @@ -556,6 +556,46 @@ class FirmwareController extends ApiControllerBase return $response; } + + /** + * install missing configured plugins + * @param string $pkg_name package name to reinstall + * @return array status + * @throws \Exception + */ + public function acceptConfiguredPluginsAction() + { + $this->sessionClose(); // long running action, close session + $response = array(); + + if ($this->request->isPost()) { + $info = $this->infoAction(); + $installed_plugins = array(); + if (isset($info['plugin'])) { + foreach ($info['plugin'] as $plugin) { + if (!empty($plugin['installed']) && !empty($plugin['provided'])) { + $installed_plugins[] = $plugin['name']; + } + } + } + $config = Config::getInstance()->object(); + if (!isset($config->system->firmware)) { + $config->system->addChild('firmware'); + } + if (!isset($config->system->firmware->plugins)) { + $config->system->firmware->addChild('plugins'); + } + $config->system->firmware->plugins = implode(",", $installed_plugins); + $response['plugins'] = $installed_plugins; + $response['status'] = "ok"; + Config::getInstance()->save(); + } else { + $response['status'] = 'failure'; + } + + return $response; + } + /** * install package * @param string $pkg_name package name to install diff --git a/src/opnsense/mvc/app/views/OPNsense/Core/firmware.volt b/src/opnsense/mvc/app/views/OPNsense/Core/firmware.volt index c612251e8..e47049dd3 100644 --- a/src/opnsense/mvc/app/views/OPNsense/Core/firmware.volt +++ b/src/opnsense/mvc/app/views/OPNsense/Core/firmware.volt @@ -482,11 +482,16 @@ let $tr = $(""); let $td = $(""); $td.append(''); + $td.append(' '); + $td.append(''); $tr.append($td); $('#pluginlist > tbody').prepend($tr); $(".reinstall_missing_plugins").tooltip({ 'title': '{{ lang._('According to the configuration there is a mismatch between the installed and configured plugins') }}' }); + $(".accept_plugins").tooltip({ + 'title': '{{ lang._('Accept current state, capture installed plugins to config') }}' + }); $(".reinstall_missing_plugins").click(function(){ $(".reinstall_missing_plugins > i.fa").addClass("fa-pulse"); ajaxCall('/api/core/firmware/installConfiguredPlugins', {}, function(data,status) { @@ -494,6 +499,12 @@ $("#plugin_install_tr").remove(); }); }); + $(".accept_plugins").click(function(){ + ajaxCall('/api/core/firmware/acceptConfiguredPlugins', {}, function(data,status) { + $(".plugin_missing").removeClass("text-warning"); + $("#plugin_install_tr").remove(); + }); + }); } $("#changeloglist > tbody").empty();