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 d7236c58c..67c347a38 100644 --- a/src/opnsense/mvc/app/controllers/OPNsense/Core/Api/FirmwareController.php +++ b/src/opnsense/mvc/app/controllers/OPNsense/Core/Api/FirmwareController.php @@ -1,7 +1,7 @@ + * Copyright (c) 2015-2025 Franco Fichtner * Copyright (c) 2015-2018 Deciso B.V. * All rights reserved. * @@ -492,6 +492,36 @@ class FirmwareController extends ApiMutableModelControllerBase return $response; } + /** + * run an audit in the backend + * @return array status + * @throws \Exception + */ + private function auditHelper(string $audit): array + { + $backend = new Backend(); + $response = []; + + if ($this->request->isPost()) { + $response['status'] = 'ok'; + $response['msg_uuid'] = trim($backend->configdRun("firmware $audit", true)); + } else { + $response['status'] = 'failure'; + } + + return $response; + } + + /** + * run a cleanup task + * @return array status + * @throws \Exception + */ + public function cleanupAction() + { + return $this->auditHelper('cleanup'); + } + /** * run a connection check * @return array status @@ -499,17 +529,7 @@ class FirmwareController extends ApiMutableModelControllerBase */ public function connectionAction() { - $backend = new Backend(); - $response = array(); - - if ($this->request->isPost()) { - $response['status'] = 'ok'; - $response['msg_uuid'] = trim($backend->configdRun("firmware connection", true)); - } else { - $response['status'] = 'failure'; - } - - return $response; + return $this->auditHelper('connection'); } /** @@ -519,17 +539,7 @@ class FirmwareController extends ApiMutableModelControllerBase */ public function healthAction() { - $backend = new Backend(); - $response = array(); - - if ($this->request->isPost()) { - $response['status'] = 'ok'; - $response['msg_uuid'] = trim($backend->configdRun("firmware health", true)); - } else { - $response['status'] = 'failure'; - } - - return $response; + return $this->auditHelper('health'); } /* @@ -539,18 +549,11 @@ class FirmwareController extends ApiMutableModelControllerBase */ public function auditAction() { - $backend = new Backend(); - $response = array(); - if ($this->request->isPost()) { $this->getLogger('audit')->notice(sprintf("[Firmware] User %s executed a security audit", $this->getUserName())); - $response['status'] = 'ok'; - $response['msg_uuid'] = trim($backend->configdRun("firmware audit", true)); - } else { - $response['status'] = 'failure'; } - return $response; + return $this->auditHelper('audit'); } /** diff --git a/src/opnsense/mvc/app/views/OPNsense/Core/firmware.volt b/src/opnsense/mvc/app/views/OPNsense/Core/firmware.volt index 7fd871be0..f7319b5ab 100644 --- a/src/opnsense/mvc/app/views/OPNsense/Core/firmware.volt +++ b/src/opnsense/mvc/app/views/OPNsense/Core/firmware.volt @@ -1,5 +1,5 @@ {# - # Copyright (c) 2015-2023 Franco Fichtner + # Copyright (c) 2015-2025 Franco Fichtner # Copyright (c) 2015-2018 Deciso B.V. # All rights reserved. # @@ -619,9 +619,10 @@ $("#plugin_see").click(function () { $('#plugintab > a').tab('show'); }); $("#plugin_get").click(function () { backend('syncPlugins'); }); $("#plugin_set").click(function () { backend('resyncPlugins'); }); - $('#audit_security').click(function () { backend('audit'); }); + $('#audit_cleanup').click(function () { backend('cleanup'); }); $('#audit_connection').click(function () { backend('connection'); }); $('#audit_health').click(function () { backend('health'); }); + $('#audit_security').click(function () { backend('audit'); }); $('#audit_upgrade').click(function () { ajaxCall('/api/core/firmware/log/0', {}, function (data, status) { if (data['log'] != undefined) { @@ -904,6 +905,7 @@ {{ lang._('Run an audit') }}