// Additions to Pandora FMS 1.2 graph code and new XML reporting template management
// Copyright (c) 2005-2007 Artica Soluciones Tecnologicas, info@artica.es
//
// 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; 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.
// 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.
// Load global vars
require("include/config.php");
if (give_acl ($id_user, 0, "AR") != 1) {
audit_db ($id_user, $REMOTE_ADDR, "ACL Violation",
"Trying to access Agent view (Grouped)");
require ("general/noaccess.php");
exit;
}
echo "
".$lang_label["ag_title"]." > ".$lang_label["group_view"]."
".$lang_label["help"]."
";
$mis_grupos = list_group2 ($id_user);
// Update network modules for this group
// Check for Network FLAG change request
if (isset ($_GET["update_netgroup"])) {
if (give_acl ($id_user, $_GET["update_netgroup"], "AW") == 1) {
$sql = "SELECT * FROM tagente WHERE id_grupo = ".
$_GET["update_netgroup"];
$result = mysql_query ($sql);
while ($row = mysql_fetch_array ($result)) {
$id_agente = $row["id_agente"];
$query2 ="UPDATE tagente_modulo SET flag=1
WHERE id_agente = ".$id_agente;
$res = mysql_query ($query2);
}
}
}
$contador_grupo = 0;
$contador_agente = 0;
$array_index = 0;
// Prepare data to show
// For each valid group for this user, take data from agent and modules
foreach ($mis_grupos as $migrupo) {
if ($migrupo != "") {
$grupo[$array_index]["agent"] = 0;
$grupo[$array_index]["ok"] = 0;
$grupo[$array_index]["down"] = 0;
$grupo[$array_index]["bad"] = 0;
$grupo[$array_index]["alerts"] = 0;
$grupo[$array_index]["data"] = 0;
$grupo[$array_index]["icon"] = dame_grupo_icono ($migrupo);
$grupo[$array_index]["id_grupo"] = $migrupo;
$existen_agentes =0;
$sql1 = "SELECT intervalo, id_agente
FROM tagente WHERE disabled=0
AND id_grupo = ".$migrupo;
if ($result1 = mysql_query ($sql1)) {
while ($row1 = mysql_fetch_array ($result1)) {
$existen_agentes = 1;
$intervalo = $row1["intervalo"];
$id_agente = $row1["id_agente"];
// Check for recent alerts
if ($config_show_lastalerts == 1)
if (check_alert_fired($id_agente) == 1) {
$grupo[$array_index]["alerts"]++;
}
$grupo[$array_index]["agent"]++;
$grupo[$array_index]["group"] = dame_nombre_grupo ($migrupo);
// Estado grupo, agent
$contador_agente++;
$sql3 = "SELECT estado, utimestamp, id_agente_modulo,
datos FROM tagente_estado
WHERE id_agente = ".$row1["id_agente"];
$result3 = mysql_query ($sql3);
while ($row3 = mysql_fetch_array ($result3)) {
$estado = $row3["estado"];
$ahora = date ("Y/m/d H:i:s");
if ($config_show_unknown != 0){
// Get module interval
$sql4 = "SELECT module_interval
FROM tagente_modulo
WHERE id_agente_modulo = ".$row3["id_agente_modulo"];
$result4 = mysql_query ($sql4);
if ($row4 = mysql_fetch_array ($result4)) {
$module_interval = $row4["module_interval"];
if ($module_interval > 0) {
$intervalo_comp = $module_interval;
} else {
$intervalo_comp = $intervalo;
}
}
$ultimo_contacto_modulo = $row3["utimestamp"];
// Defines if module is down (interval x 2 > time last contact)
if ($ultimo_contacto_modulo != 0) {
$seconds = strtotime ($ahora) -
$ultimo_contacto_modulo;
if ($seconds >= ($intervalo_comp * 2)) {
$grupo[$array_index]["down"]++;
} elseif ($estado != 100) {
if ($row3["datos"] != 0) {
$grupo[$array_index]["ok"]++;
} else {
$grupo[$array_index]["bad"]++;
}
} elseif ($estado == 100) // For data module, not monitors
$grupo[$array_index]["data"]++; // Data module
}
// do not use module interval neither down check
} elseif ($estado != 100) {
if ($row3["datos"] != 0) {
$grupo[$array_index]["ok"]++;
} else {
$grupo[$array_index]["bad"]++;
}
} elseif ($estado == 100) // For data module, not monitors
$grupo[$array_index]["data"]++; // Data module
}
}
}
if ($existen_agentes == 1){
$array_index++;
}
}
}
// Draw data
if ($contador_agente != 0) {
$ancho = ceil(sqrt($array_index+1));
$real_count =0;
echo "";
} else {
echo "".$lang_label["no_agent_def"]."
";
}
?>