mirror of
https://github.com/Icinga/icingaweb2.git
synced 2025-07-30 17:24:16 +02:00
parent
de87bb7a8a
commit
e2bfc06d6c
141
application/controllers/ListController.php
Normal file
141
application/controllers/ListController.php
Normal file
@ -0,0 +1,141 @@
|
|||||||
|
<?php
|
||||||
|
// @codingStandardsIgnoreStart
|
||||||
|
// {{{ICINGA_LICENSE_HEADER}}}
|
||||||
|
/**
|
||||||
|
* This file is part of Icinga Web 2.
|
||||||
|
*
|
||||||
|
* Icinga Web 2 - Head for multiple monitoring backends.
|
||||||
|
* Copyright (C) 2013 Icinga Development Team
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2
|
||||||
|
* of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
*
|
||||||
|
* @copyright 2013 Icinga Development Team <info@icinga.org>
|
||||||
|
* @license http://www.gnu.org/licenses/gpl-2.0.txt GPL, version 2
|
||||||
|
* @author Icinga Development Team <info@icinga.org>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
// {{{ICINGA_LICENSE_HEADER}}}
|
||||||
|
|
||||||
|
use Icinga\Module\Monitoring\Controller;
|
||||||
|
use Icinga\Web\Hook;
|
||||||
|
use Icinga\Web\Widget\Tabextension\DashboardAction;
|
||||||
|
use Icinga\Web\Widget\Tabextension\OutputFormat;
|
||||||
|
use Icinga\Web\Widget\Tabs;
|
||||||
|
use Icinga\Module\Monitoring\Backend;
|
||||||
|
use Icinga\Application\Config as IcingaConfig;
|
||||||
|
|
||||||
|
use Icinga\Filter\Filterable;
|
||||||
|
use Icinga\Web\Url;
|
||||||
|
use Icinga\Data\ResourceFactory;
|
||||||
|
|
||||||
|
class ListController extends Controller
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* The backend used for this controller
|
||||||
|
*
|
||||||
|
* @var Backend
|
||||||
|
*/
|
||||||
|
protected $backend;
|
||||||
|
/**
|
||||||
|
* Retrieve backend and hooks for this controller
|
||||||
|
*
|
||||||
|
* @see ActionController::init
|
||||||
|
*/
|
||||||
|
public function init()
|
||||||
|
{
|
||||||
|
$this->backend = Backend::createBackend($this->_getParam('backend'));
|
||||||
|
$this->view->grapher = Hook::get('grapher');
|
||||||
|
$this->createTabs();
|
||||||
|
$this->view->activeRowHref = $this->getParam('detail');
|
||||||
|
$this->view->compact = ($this->_request->getParam('view') === 'compact');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Overwrite the backend to use (used for testing)
|
||||||
|
*
|
||||||
|
* @param Backend $backend The Backend that should be used for querying
|
||||||
|
*/
|
||||||
|
public function setBackend($backend)
|
||||||
|
{
|
||||||
|
$this->backend = $backend;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Apply current users monitoring/filter restrictions to the given query
|
||||||
|
*
|
||||||
|
* @param $query Filterable Query that should be filtered
|
||||||
|
* @return Filterable
|
||||||
|
*/
|
||||||
|
protected function applyRestrictions(Filterable $query)
|
||||||
|
{
|
||||||
|
foreach ($this->getRestrictions('monitoring/filter') as $restriction) {
|
||||||
|
parse_str($restriction, $filter);
|
||||||
|
foreach ($filter as $k => $v) {
|
||||||
|
if ($query->isValidFilterTarget($k)) {
|
||||||
|
// TODO: This is NOT enough. We need to fix filters and get
|
||||||
|
// applyAuthFilters back.
|
||||||
|
$query->where($k, $v);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $query;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function addTitleTab($action)
|
||||||
|
{
|
||||||
|
$this->getTabs()->add($action, array(
|
||||||
|
'title' => ucfirst($action),
|
||||||
|
'url' => Url::fromPath('monitoring/list/' . $action)
|
||||||
|
))->activate($action);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return all tabs for this controller
|
||||||
|
*
|
||||||
|
* @return Tabs
|
||||||
|
*/
|
||||||
|
private function createTabs()
|
||||||
|
{
|
||||||
|
$tabs = $this->getTabs();
|
||||||
|
if (in_array($this->_request->getActionName(), array(
|
||||||
|
'hosts',
|
||||||
|
'services',
|
||||||
|
'eventhistory',
|
||||||
|
'notifications'
|
||||||
|
))) {
|
||||||
|
$tabs->extend(new OutputFormat())->extend(new DashboardAction());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function applicationlogAction()
|
||||||
|
{
|
||||||
|
$this->addTitleTab('application log');
|
||||||
|
$config_ini = IcingaConfig::app()->toArray();
|
||||||
|
if (!in_array('logging', $config_ini) || (
|
||||||
|
in_array('type', $config_ini['logging']) &&
|
||||||
|
$config_ini['logging']['type'] === 'stream' &&
|
||||||
|
in_array('target', $config_ini['logging']) &&
|
||||||
|
file_exists($config_ini['logging']['target'])
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
$config = ResourceFactory::getResourceConfig('logfile');
|
||||||
|
$resource = ResourceFactory::createResource($config);
|
||||||
|
$this->view->logData = $resource->select()->paginate();
|
||||||
|
} else {
|
||||||
|
$this->view->logData = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// @codingStandardsIgnoreEnd
|
@ -57,7 +57,6 @@ use Icinga\Module\Monitoring\Filter\UrlViewFilter;
|
|||||||
use Icinga\Module\Monitoring\DataView\ServiceStatus;
|
use Icinga\Module\Monitoring\DataView\ServiceStatus;
|
||||||
use Icinga\Filter\Filterable;
|
use Icinga\Filter\Filterable;
|
||||||
use Icinga\Web\Url;
|
use Icinga\Web\Url;
|
||||||
use Icinga\Data\ResourceFactory;
|
|
||||||
|
|
||||||
class Monitoring_ListController extends Controller
|
class Monitoring_ListController extends Controller
|
||||||
{
|
{
|
||||||
@ -628,26 +627,5 @@ class Monitoring_ListController extends Controller
|
|||||||
$tabs->extend(new OutputFormat())->extend(new DashboardAction());
|
$tabs->extend(new OutputFormat())->extend(new DashboardAction());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function applicationlogAction()
|
|
||||||
{
|
|
||||||
$this->addTitleTab('application log');
|
|
||||||
$config_ini = IcingaConfig::app()->toArray();
|
|
||||||
if (!in_array('logging', $config_ini) || (
|
|
||||||
in_array('type', $config_ini['logging']) &&
|
|
||||||
$config_ini['logging']['type'] === 'stream' &&
|
|
||||||
in_array('target', $config_ini['logging']) &&
|
|
||||||
file_exists($config_ini['logging']['target'])
|
|
||||||
)
|
|
||||||
) {
|
|
||||||
$config = ResourceFactory::getResourceConfig('logfile');
|
|
||||||
$resource = ResourceFactory::createResource($config);
|
|
||||||
$this->view->logData = $resource->select()->paginate();
|
|
||||||
|
|
||||||
//$resource->select()->andWhere('error')->order('desc')->limit(200, 50)->fetchAll();
|
|
||||||
} else {
|
|
||||||
$this->view->logData = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// @codingStandardsIgnoreEnd
|
// @codingStandardsIgnoreEnd
|
||||||
|
Loading…
x
Reference in New Issue
Block a user