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 = $("