* @author Icinga Development Team */ // {{{ICINGA_LICENSE_HEADER}}} use \Icinga\Application\Benchmark; use \Icinga\Authentication\Manager; use \Icinga\Web\Controller\BaseConfigController; use \Icinga\Web\Widget\Tab; use \Icinga\Web\Url; use \Icinga\Web\Hook\Configuration\ConfigurationTabBuilder; use \Icinga\Application\Icinga; use \Icinga\Form\Config\GeneralForm; use \Icinga\Form\Config\AuthenticationForm; use \Icinga\Form\Config\LoggingForm; use \Icinga\Config\PreservingIniWriter; /** * Application wide controller for application preferences */ class ConfigController extends BaseConfigController { /** * Create tabs for this configuration controller * * @return array * * @see BaseConfigController::createProvidedTabs() */ public static function createProvidedTabs() { return array( 'index' => new Tab( array( "name" => "index", "title" => "Application", "url" => Url::fromPath("/config") ) ), "authentication" => new Tab( array( "name" => "auth", "title" => "Authentication", "url" => Url::fromPath('/config/authentication') ) ), "logging" => new Tab( array( "name" => "logging", "title" => "Logging", "url" => Url::fromPath("/config/logging") ) ), "modules" => new Tab( array( "name" => "modules", "title" => "Modules", "url" => Url::fromPath("/config/moduleoverview") ) ) ); } /** * Index action, entry point for configuration * @TODO: Implement configuration interface (#3777) */ public function indexAction() { $form = new GeneralForm(); $form->setConfiguration(IcingaConfig::app()); $form->setRequest($this->_request); if ($form->isSubmittedAndValid()) { $cfg = IcingaConfig::app()->getConfigFile(); $writer = new PreservingIniWriter( array( 'config' => $form->getConfig(), 'filename' => $cfg ) ); $writer->write(); } $this->view->form = $form; } public function authenticationAction() { $form = new AuthenticationForm(); $form->setConfiguration(IcingaConfig::app('authentication')); $form->setRequest($this->_request); $form->isSubmittedAndValid(); $this->view->form = $form; } public function loggingAction() { $form = new LoggingForm(); $form->setConfiguration(IcingaConfig::app()); $form->setRequest($this->_request); $this->view->form = $form; } /** * Display the list of all modules */ public function moduleoverviewAction() { $this->view->modules = Icinga::app()->getModuleManager()->select() ->from('modules') ->order('name'); $this->render('module/overview'); } /** * Enable a specific module provided by the 'name' param */ public function moduleenableAction() { $manager = Icinga::app()->getModuleManager(); $manager->enableModule($this->_getParam('name')); $manager->loadModule($this->_getParam('name')); $this->redirectNow('config/moduleoverview?_render=body'); } /** * Disable a module specific module provided by the 'name' param */ public function moduledisableAction() { $manager = Icinga::app()->getModuleManager(); $manager->disableModule($this->_getParam('name')); $this->redirectNow('config/moduleoverview?_render=body'); } } // @codingStandardsIgnoreEnd