<?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', 'id_server' => $server['id']); } } //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', 'id_server' => $server['id']); } } //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', 'id_server' => $server['id']); } } //Restore db connection metaconsole_restore_db(); } echo json_encode($data); return; } ?>