mirror of
https://github.com/pandorafms/pandorafms.git
synced 2025-09-28 04:19:08 +02:00
* include/functions_ui.php, include/ajax/agent.php: improved the widget of autocomplete agent, now show first the agents with same name to the search, second block with the agents with the address same to the search and the last block is the agents with the description with the same to the search. Fixes: #3603692 * godmode/modules/manage_nc_groups.php, godmode/modules/manage_network_templates.php, godmode/modules/manage_network_templates_form.php: improved the code style. git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@7607 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
302 lines
9.1 KiB
PHP
302 lines
9.1 KiB
PHP
<?php
|
|
|
|
//Pandora FMS- http://pandorafms.com
|
|
// ==================================================
|
|
// Copyright (c) 2005-2010 Artica Soluciones Tecnologicas
|
|
// Please see http://pandorafms.org for full contribution list
|
|
|
|
// This program is free software; you can redistribute it and/or
|
|
// modify it under the terms of the GNU Lesser General Public License
|
|
// as published by the Free Software Foundation; version 2
|
|
|
|
// 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.
|
|
|
|
global $config;
|
|
require_once ('include/functions_agents.php');
|
|
include_once ('include/functions_reporting.php');
|
|
enterprise_include_once ('include/functions_metaconsole.php');
|
|
|
|
// Get list of agent + ip
|
|
// Params:
|
|
// * search_agents 1
|
|
// * id_agent
|
|
// * q
|
|
// * id_group
|
|
$search_agents = (bool) get_parameter ('search_agents');
|
|
$get_agents_group = (bool) get_parameter('get_agents_group', false);
|
|
$force_local = (bool) get_parameter('force_local', false);
|
|
|
|
if ($get_agents_group) {
|
|
$id_group = (int)get_parameter('id_group', -1);
|
|
$mode = (string)get_parameter('mode', 'json');
|
|
$id_server = (int)get_parameter('id_server', 0);
|
|
|
|
$return = array();
|
|
if ($id_group != -1) {
|
|
if (defined('METACONSOLE')) {
|
|
|
|
if ($id_server == 0) {
|
|
$servers = $servers = db_get_all_rows_sql ("SELECT *
|
|
FROM tmetaconsole_setup
|
|
WHERE disabled = 0");
|
|
}
|
|
else {
|
|
$servers = db_get_all_rows_sql ("SELECT *
|
|
FROM tmetaconsole_setup
|
|
WHERE id = " . $id_server . "
|
|
AND disabled = 0");
|
|
}
|
|
|
|
foreach ($servers as $server) {
|
|
if (metaconsole_load_external_db ($server) != NOERR) {
|
|
continue;
|
|
}
|
|
|
|
$return = agents_get_group_agents($id_group);
|
|
|
|
//Restore db connection
|
|
metaconsole_restore_db();
|
|
}
|
|
}
|
|
else {
|
|
$return = agents_get_group_agents($id_group);
|
|
}
|
|
}
|
|
|
|
switch ($mode) {
|
|
case 'json':
|
|
echo json_encode($return);
|
|
break;
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
if ($search_agents && ((!defined('METACONSOLE')) || $force_local)) {
|
|
require_once ('include/functions_agents.php');
|
|
|
|
$id_agent = (int) get_parameter ('id_agent');
|
|
$string = (string) get_parameter ('q'); /* q is what autocomplete plugin gives */
|
|
$id_group = (int) get_parameter('id_group', -1);
|
|
$addedItems = html_entity_decode((string) get_parameter('add'));
|
|
$addedItems = json_decode($addedItems);
|
|
$all = (string)get_parameter('all', 'all');
|
|
|
|
if ($addedItems != null) {
|
|
foreach ($addedItems as $item) {
|
|
echo $item . "|\n";
|
|
}
|
|
}
|
|
|
|
$filter = array ();
|
|
|
|
if ($id_group != -1) {
|
|
if($id_group == 0) {
|
|
$user_groups = users_get_groups ($config['id_user'], "AR", true);
|
|
|
|
$filter['id_grupo'] = array_keys ($user_groups);
|
|
}
|
|
else {
|
|
$filter['id_grupo'] = $id_group;
|
|
}
|
|
}
|
|
|
|
switch ($all) {
|
|
case 'enabled':
|
|
$filter['disabled'] = 0;
|
|
break;
|
|
}
|
|
|
|
$data = array();
|
|
//Get agents for only the name.
|
|
$filter_agents = $filter;
|
|
switch ($config['dbtype']) {
|
|
case "mysql":
|
|
$filter_agents[] = '(nombre COLLATE utf8_general_ci LIKE "%'.$string.'%")';
|
|
break;
|
|
case "postgresql":
|
|
$filter_agents[] = '(nombre LIKE \'%'.$string.'%\')';
|
|
break;
|
|
case "oracle":
|
|
$filter_agents[] = '(UPPER(nombre) LIKE UPPER(\'%'.$string.'%\')';
|
|
break;
|
|
}
|
|
$agents = agents_get_agents($filter_agents, array ('id_agente', 'nombre', 'direccion'));
|
|
if ($agents !== false) {
|
|
foreach ($agents as $agent) {
|
|
$data[] = array('id' => $agent['id_agente'],
|
|
'name' => io_safe_output($agent['nombre']),
|
|
'ip' => io_safe_output($agent['direccion']),
|
|
'filter' => 'agent');
|
|
}
|
|
}
|
|
|
|
//Get agents for only the address
|
|
$filter_address = $filter;
|
|
switch ($config['dbtype']) {
|
|
case "mysql":
|
|
$filter_address[] = '(nombre COLLATE utf8_general_ci NOT LIKE "%'.$string.'%" AND direccion LIKE "%'.$string.'%")';
|
|
break;
|
|
case "postgresql":
|
|
$filter_address[] = '(nombre NOT LIKE \'%'.$string.'%\' AND direccion LIKE \'%'.$string.'%\')';
|
|
break;
|
|
case "oracle":
|
|
$filter_address[] = '(UPPER(nombre) NOT LIKE UPPER(\'%'.$string.'%\') AND UPPER(direccion) LIKE UPPER(\'%'.$string.'%\'))';
|
|
break;
|
|
}
|
|
$agents = agents_get_agents($filter_address, array ('id_agente', 'nombre', 'direccion'));
|
|
if ($agents !== false) {
|
|
foreach ($agents as $agent) {
|
|
$data[] = array('id' => $agent['id_agente'],
|
|
'name' => io_safe_output($agent['nombre']),
|
|
'ip' => io_safe_output($agent['direccion']),
|
|
'filter' => 'address');
|
|
}
|
|
}
|
|
|
|
//Get agents for only the description
|
|
$filter_description = $filter;
|
|
switch ($config['dbtype']) {
|
|
case "mysql":
|
|
$filter_description[] = '(nombre COLLATE utf8_general_ci NOT LIKE "%'.$string.'%" AND direccion NOT LIKE "%'.$string.'%" AND comentarios LIKE "%'.$string.'%")';
|
|
break;
|
|
case "postgresql":
|
|
$filter_description[] = '(nombre NOT LIKE \'%'.$string.'%\' AND direccion NOT LIKE \'%'.$string.'%\' AND comentarios LIKE \'%'.$string.'%\')';
|
|
break;
|
|
case "oracle":
|
|
$filter_description[] = '(UPPER(nombre) NOT LIKE UPPER(\'%'.$string.'%\') AND UPPER(direccion) NOT LIKE UPPER(\'%'.$string.'%\') AND UPPER(comentarios) LIKE UPPER(\'%'.$string.'%\'))';
|
|
break;
|
|
}
|
|
$agents = agents_get_agents($filter_description, array ('id_agente', 'nombre', 'direccion'));
|
|
if ($agents !== false) {
|
|
foreach ($agents as $agent) {
|
|
$data[] = array('id' => $agent['id_agente'],
|
|
'name' => io_safe_output($agent['nombre']),
|
|
'ip' => io_safe_output($agent['direccion']),
|
|
'filter' => 'description');
|
|
}
|
|
}
|
|
|
|
echo json_encode($data);
|
|
|
|
return;
|
|
}
|
|
elseif ($search_agents && ($config['metaconsole'] == 1) && defined('METACONSOLE')) {
|
|
$servers = db_get_all_rows_sql ("SELECT *
|
|
FROM tmetaconsole_setup
|
|
WHERE disabled = 0");
|
|
if (!isset($servers)) {
|
|
return;
|
|
}
|
|
|
|
$id_agent = (int) get_parameter ('id_agent');
|
|
$string = (string) get_parameter ('q'); /* q is what autocomplete plugin gives */
|
|
$id_group = (int) get_parameter('id_group', -1);
|
|
$addedItems = html_entity_decode((string) get_parameter('add'));
|
|
$addedItems = json_decode($addedItems);
|
|
|
|
if ($addedItems != null) {
|
|
foreach ($addedItems as $item) {
|
|
echo $item . "|\n";
|
|
}
|
|
}
|
|
|
|
$filter = array ();
|
|
|
|
if ($id_group != -1) {
|
|
if ($id_group == 0) {
|
|
$user_groups = users_get_groups ($config['id_user'], "AR", true);
|
|
|
|
$filter['id_grupo'] = array_keys ($user_groups);
|
|
}
|
|
else {
|
|
$filter['id_grupo'] = $id_group;
|
|
}
|
|
}
|
|
|
|
$data = array();
|
|
foreach ($servers as $server) {
|
|
if (metaconsole_load_external_db ($server) != NOERR) {
|
|
continue;
|
|
}
|
|
|
|
//Get agents for only the name.
|
|
$filter_agents = $filter;
|
|
switch ($config['dbtype']) {
|
|
case "mysql":
|
|
$filter_agents[] = '(nombre COLLATE utf8_general_ci LIKE "%'.$string.'%")';
|
|
break;
|
|
case "postgresql":
|
|
$filter_agents[] = '(nombre LIKE \'%'.$string.'%\')';
|
|
break;
|
|
case "oracle":
|
|
$filter_agents[] = '(UPPER(nombre) LIKE UPPER(\'%'.$string.'%\')';
|
|
break;
|
|
}
|
|
$agents = agents_get_agents($filter_agents, array ('id_agente', 'nombre', 'direccion'));
|
|
if ($agents !== false) {
|
|
foreach ($agents as $agent) {
|
|
$data[] = array('id' => $agent['id_agente'],
|
|
'name' => io_safe_output($agent['nombre']),
|
|
'ip' => io_safe_output($agent['direccion']),
|
|
'filter' => 'agent');
|
|
}
|
|
}
|
|
|
|
//Get agents for only the address
|
|
$filter_address = $filter;
|
|
switch ($config['dbtype']) {
|
|
case "mysql":
|
|
$filter_address[] = '(nombre COLLATE utf8_general_ci NOT LIKE "%'.$string.'%" AND direccion LIKE "%'.$string.'%")';
|
|
break;
|
|
case "postgresql":
|
|
$filter_address[] = '(nombre NOT LIKE \'%'.$string.'%\' AND direccion LIKE \'%'.$string.'%\')';
|
|
break;
|
|
case "oracle":
|
|
$filter_address[] = '(UPPER(nombre) NOT LIKE UPPER(\'%'.$string.'%\') AND UPPER(direccion) LIKE UPPER(\'%'.$string.'%\'))';
|
|
break;
|
|
}
|
|
$agents = agents_get_agents($filter_address, array ('id_agente', 'nombre', 'direccion'));
|
|
if ($agents !== false) {
|
|
foreach ($agents as $agent) {
|
|
$data[] = array('id' => $agent['id_agente'],
|
|
'name' => io_safe_output($agent['nombre']),
|
|
'ip' => io_safe_output($agent['direccion']),
|
|
'filter' => 'address');
|
|
}
|
|
}
|
|
|
|
//Get agents for only the description
|
|
$filter_description = $filter;
|
|
switch ($config['dbtype']) {
|
|
case "mysql":
|
|
$filter_description[] = '(nombre COLLATE utf8_general_ci NOT LIKE "%'.$string.'%" AND direccion NOT LIKE "%'.$string.'%" AND comentarios LIKE "%'.$string.'%")';
|
|
break;
|
|
case "postgresql":
|
|
$filter_description[] = '(nombre NOT LIKE \'%'.$string.'%\' AND direccion NOT LIKE \'%'.$string.'%\' AND comentarios LIKE \'%'.$string.'%\')';
|
|
break;
|
|
case "oracle":
|
|
$filter_description[] = '(UPPER(nombre) NOT LIKE UPPER(\'%'.$string.'%\') AND UPPER(direccion) NOT LIKE UPPER(\'%'.$string.'%\') AND UPPER(comentarios) LIKE UPPER(\'%'.$string.'%\'))';
|
|
break;
|
|
}
|
|
$agents = agents_get_agents($filter_description, array ('id_agente', 'nombre', 'direccion'));
|
|
if ($agents !== false) {
|
|
foreach ($agents as $agent) {
|
|
$data[] = array('id' => $agent['id_agente'],
|
|
'name' => io_safe_output($agent['nombre']),
|
|
'ip' => io_safe_output($agent['direccion']),
|
|
'filter' => 'description');
|
|
}
|
|
}
|
|
//Restore db connection
|
|
metaconsole_restore_db();
|
|
|
|
}
|
|
|
|
echo json_encode($data);
|
|
return;
|
|
}
|
|
?>
|