icingaweb2/modules/monitoring/application/controllers/ConfigController.php

158 lines
5.0 KiB
PHP

<?php
/* Icinga Web 2 | (c) 2013-2015 Icinga Development Team | http://www.gnu.org/licenses/gpl-2.0.txt */
use Icinga\Web\Notification;
use Icinga\Data\ResourceFactory;
use Icinga\Forms\ConfirmRemovalForm;
use Icinga\Web\Controller\ModuleActionController;
use Icinga\Module\Monitoring\Forms\Config\BackendConfigForm;
use Icinga\Module\Monitoring\Forms\Config\InstanceConfigForm;
use Icinga\Module\Monitoring\Forms\Config\SecurityConfigForm;
/**
* Configuration controller for editing monitoring resources
*/
class Monitoring_ConfigController extends ModuleActionController
{
/**
* Display a list of available backends and instances
*/
public function indexAction()
{
$this->view->backendsConfig = $this->Config('backends');
$this->view->instancesConfig = $this->Config('instances');
$this->view->tabs = $this->Module()->getConfigTabs()->activate('backends');
}
/**
* Display a form to modify the backend identified by the 'backend' parameter of the request
*/
public function editbackendAction()
{
$form = new BackendConfigForm();
$form->setIniConfig($this->Config('backends'));
$form->setResourceConfig(ResourceFactory::getResourceConfigs());
$form->setRedirectUrl('monitoring/config');
$form->handleRequest();
$this->view->form = $form;
}
/**
* Display a form to create a new backend
*/
public function createbackendAction()
{
$form = new BackendConfigForm();
$form->setIniConfig($this->Config('backends'));
$form->setResourceConfig(ResourceFactory::getResourceConfigs());
$form->setRedirectUrl('monitoring/config');
$form->handleRequest();
$this->view->form = $form;
}
/**
* Display a confirmation form to remove the backend identified by the 'backend' parameter
*/
public function removebackendAction()
{
$config = $this->Config('backends');
$form = new ConfirmRemovalForm(array(
'onSuccess' => function ($form) use ($config) {
$backendName = $form->getRequest()->getQuery('backend');
$configForm = new BackendConfigForm();
$configForm->setIniConfig($config);
try {
$configForm->remove($backendName);
} catch (InvalidArgumentException $e) {
Notification::error($e->getMessage());
return;
}
if ($configForm->save()) {
Notification::success(sprintf(mt('monitoring', 'Backend "%s" successfully removed.'), $backendName));
} else {
return false;
}
}
));
$form->setRedirectUrl('monitoring/config');
$form->handleRequest();
$this->view->form = $form;
}
/**
* Display a confirmation form to remove the instance identified by the 'instance' parameter
*/
public function removeinstanceAction()
{
$config = $this->Config('instances');
$form = new ConfirmRemovalForm(array(
'onSuccess' => function ($form) use ($config) {
$instanceName = $form->getRequest()->getQuery('instance');
$configForm = new InstanceConfigForm();
$configForm->setIniConfig($config);
try {
$configForm->remove($instanceName);
} catch (InvalidArgumentException $e) {
Notification::error($e->getMessage());
return;
}
if ($configForm->save()) {
Notification::success(sprintf(mt('monitoring', 'Instance "%s" successfully removed.'), $instanceName));
} else {
return false;
}
}
));
$form->setRedirectUrl('monitoring/config');
$form->handleRequest();
$this->view->form = $form;
}
/**
* Display a form to edit the instance identified by the 'instance' parameter of the request
*/
public function editinstanceAction()
{
$form = new InstanceConfigForm();
$form->setIniConfig($this->Config('instances'));
$form->setRedirectUrl('monitoring/config');
$form->handleRequest();
$this->view->form = $form;
}
/**
* Display a form to create a new instance
*/
public function createinstanceAction()
{
$form = new InstanceConfigForm();
$form->setIniConfig($this->Config('instances'));
$form->setRedirectUrl('monitoring/config');
$form->handleRequest();
$this->view->form = $form;
}
/**
* Display a form to adjust security relevant settings
*/
public function securityAction()
{
$form = new SecurityConfigForm();
$form->setIniConfig($this->Config());
$form->handleRequest();
$this->view->form = $form;
$this->view->tabs = $this->Module()->getConfigTabs()->activate('security');
}
}