diff options
Diffstat (limited to 'application/controllers')
-rw-r--r-- | application/controllers/ConfigController.php | 23 | ||||
-rw-r--r-- | application/controllers/LogController.php | 51 |
2 files changed, 74 insertions, 0 deletions
diff --git a/application/controllers/ConfigController.php b/application/controllers/ConfigController.php new file mode 100644 index 0000000..5e6a31a --- /dev/null +++ b/application/controllers/ConfigController.php @@ -0,0 +1,23 @@ +<?php + +/* Icinga Web 2 | (c) 2018 Icinga Development Team | GPLv2+ */ + +namespace Icinga\Module\Audit\Controllers; + +use Icinga\Web\Controller; +use Icinga\Module\Audit\Forms\Config\AuditLogConfigForm; + +class ConfigController extends Controller +{ + public function indexAction() + { + $form = new AuditLogConfigForm(); + $form->setIniConfig($this->Config()); + $form->setSubmitLabel($this->translate('Save Configuration')); + + $form->handleRequest(); + + $this->view->form = $form; + $this->view->tabs = $this->Module()->getConfigTabs()->activate('config'); + } +} diff --git a/application/controllers/LogController.php b/application/controllers/LogController.php new file mode 100644 index 0000000..fc5e17c --- /dev/null +++ b/application/controllers/LogController.php @@ -0,0 +1,51 @@ +<?php + +/* Icinga Web 2 | (c) 2018 Icinga Development Team | GPLv2+ */ + +namespace Icinga\Module\Audit\Controllers; + +use Icinga\Data\ConfigObject; +use Icinga\Protocol\File\FileReader; +use Icinga\Web\Controller; + +class LogController extends Controller +{ + public function indexAction() + { + $this->assertPermission('audit/log'); + + if ($this->Config()->get('log', 'type') !== 'file') { + $this->httpNotFound('Page not found'); + } + + $this->getTabs()->add('audit/log', [ + 'active' => true, + 'label' => $this->translate('Audit Log'), + 'url' => 'audit/log', + ]); + + $file = $this->Config()->get('log', 'path', '/var/log/icingaweb2/audit.log'); + + if (! @file_exists($file)) { + $this->render('log-empty'); + + return; + } + + $resource = new FileReader(new ConfigObject([ + 'filename' => $file, + 'fields' => '/(?<!.)' // ^ can't handle multilines, don't ask *me* why this works + . '(?<datetime>[0-9]{4}(?:-[0-9]{2}){2}' // date + . 'T[0-9]{2}(?::[0-9]{2}){2}(?:[\+\-][0-9]{2}:[0-9]{2})?)' // time + . ' - (?<identity>.+)' // identity + . ' - (?<type>.+)' // type + . ' - (?<message>.+)' // message + . '(?!.)/msSU' // $ can't handle multilines, don't ... + ])); + + $this->view->logData = $resource->select()->order('DESC'); + + $this->setupLimitControl(); + $this->setupPaginationControl($this->view->logData); + } +} |