2007-01-01 Raul Mateos <raulofpandora@gmail.com>

* include/functions_db.php: Add new function to obtain group list.
	
	* godmode/alertas/configurar_alerta.php: Clear code. Clear sytle.
	
	* operation/agentes/estado_grupo: Clear code. Clear style. Use new
	list_group2 function. Simplify SQL queries.
	
	* operation/events/events.php: Clear code. Clear style.

git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@345 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
This commit is contained in:
raulmateos 2007-01-01 18:41:27 +00:00
parent fe14f7964c
commit 42402f6416
5 changed files with 280 additions and 227 deletions

View File

@ -1,3 +1,14 @@
2007-01-01 Raul Mateos <raulofpandora@gmail.com>
* include/functions_db.php: Add new function to obtain group list.
* godmode/alertas/configurar_alerta.php: Clear code. Clear sytle.
* operation/agentes/estado_grupo: Clear code. Clear style. Use new
list_group2 function. Simplify SQL queries.
* operation/events/events.php: Clear code. Clear style.
2006-12-31 Raul Mateos <raulofpandora@gmail.com> 2006-12-31 Raul Mateos <raulofpandora@gmail.com>
* include/functions.php, functions_db.php: Move list_group from f*.php * include/functions.php, functions_db.php: Move list_group from f*.php

View File

@ -1,11 +1,23 @@
<?php <?php
// Pandora - The Free Monitoring System
// This code is protected by GPL license.
// Este codigo esta protegido por la licencia GPL.
// Sancho Lerena <slerena@gmail.com>, 2003-2006
// Raul Mateos <raulofpandora@gmail.com>, 2005-2006
// Cargamos variables globales // Pandora - the Free monitoring system
// ====================================
// Copyright (c) 2004-2006 Sancho Lerena, slerena@gmail.com
// Copyright (c) 2005-2006 Artica Soluciones Tecnologicas S.L, info@artica.es
// Copyright (c) 2004-2006 Raul Mateos Martin, raulofpandora@gmail.com
// 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.
// Load global vars
require("include/config.php"); require("include/config.php");
if ( (give_acl($id_user, 0, "LM")==1)){ if ( (give_acl($id_user, 0, "LM")==1)){
// Var init // Var init
@ -32,16 +44,21 @@ if ( (give_acl($id_user, 0, "LM")==1)){
$creacion_alerta = 0; $creacion_alerta = 0;
if (isset($_GET["creacion"])){ if (isset($_GET["creacion"])){
// Conecto con la BBDD
$creacion_alerta = 1; $creacion_alerta = 1;
// Codigo de creacion de la alerta
} }
?> echo "<h2>".$lang_label["alert_config"]."</h2>";
<h2><?php echo $lang_label["alert_config"];?></h2> echo "<h3>";
<h3><?php if (isset($_GET["creacion"])){echo $lang_label["create_alert"];} if (isset($_GET["id_alerta"])){echo $lang_label["mod_alert"];} ?><a href="help/<?php echo $help_code;?>/chap3.php#3221" target="_help" class="help">&nbsp;<span><?php echo $lang_label["help"];?></span></a></h3> if (isset($_GET["creacion"])){
echo $lang_label["create_alert"];
}
if (isset($_GET["id_alerta"])){
echo $lang_label["mod_alert"];
}
echo '<a href="help/'.$help_code.'/chap3.php#3221" target="_help" class="help">
<span>'.$lang_label["help"].'</span></a>';
echo "</h3>";
?>
<table width="500" cellspacing="3" cellpadding="3"> <table width="500" cellspacing="3" cellpadding="3">
<form name="alerta" method="post" action="index.php?sec=galertas&sec2=godmode/alertas/modificar_alerta&id_alerta=<?php echo $id_alerta ?>"> <form name="alerta" method="post" action="index.php?sec=galertas&sec2=godmode/alertas/modificar_alerta&id_alerta=<?php echo $id_alerta ?>">
@ -77,8 +94,12 @@ _data_<br>
</textarea> </textarea>
<tr><td colspan='3'><div class='raya'></div></td></tr> <tr><td colspan='3'><div class='raya'></div></td></tr>
<tr><td colspan="3" align="right"> <tr><td colspan="3" align="right">
<?php if (isset($_GET["creacion"])){echo "<input name='crtbutton' type='submit' class='sub' value='".$lang_label["create"]."'>";} <?php
else {echo "<input name='uptbutton' type='submit' class='sub' value='".$lang_label["update"]."'>";} ?> if (isset($_GET["creacion"])){
echo "<input name='crtbutton' type='submit' class='sub' value='".$lang_label["create"]."'>";
} else {
echo "<input name='uptbutton' type='submit' class='sub' value='".$lang_label["update"]."'>";
} ?>
</form> </form>
</table> </table>

View File

@ -595,6 +595,25 @@ function list_group ($id_user){
return ($mis_grupos); return ($mis_grupos);
} }
// ----------------------------------------------------------------------
// Defines an array
// to put all groups with Agent Read permission
// ----------------------------------------------------------------------
function list_group2 ($id_user){
$mis_grupos[]=""; // Define array mis_grupos to put here all groups with Agent Read permission
$sql='SELECT id_grupo FROM tgrupo';
$result=mysql_query($sql);
while ($row=mysql_fetch_array($result)){
if ($row["id_grupo"] != 1){
if (give_acl($id_user,$row["id_grupo"], "AR") == 1){
$mis_grupos[]=$row["id_grupo"]; //Put in an array all the groups the user belongs
}
}
}
return ($mis_grupos);
}
// --------------------------------------------------------------- // ---------------------------------------------------------------
// Return Group iconname given its name // Return Group iconname given its name
// --------------------------------------------------------------- // ---------------------------------------------------------------

View File

@ -1,6 +1,6 @@
<?php <?php
// Pandora - the Free Distributed Monitoring System // Pandora - the Free Monitoring System
// ================================================ // ================================================
// Copyright (c) 2004-2006 Sancho Lerena, slerena@gmail.com // Copyright (c) 2004-2006 Sancho Lerena, slerena@gmail.com
// Copyright (c) 2005-2006 Artica Soluciones Tecnologicas S.L, info@artica.es // Copyright (c) 2005-2006 Artica Soluciones Tecnologicas S.L, info@artica.es
@ -23,230 +23,230 @@ require("include/config.php");
if (comprueba_login () == 0) { if (comprueba_login () == 0) {
if (give_acl ($id_user, 0, "AR") == 1) { if (give_acl ($id_user, 0, "AR") == 1) {
echo "<h2>".$lang_label["ag_title"]."</h2>"; echo "<h2>".$lang_label["ag_title"]."</h2>";
echo "<h3>".$lang_label["group_view"]."<a href='help/".$help_code."/chap3.php#324' target='_help' class='help'>&nbsp;<span>".$lang_label["help"]."</span></a></h3>"; echo "<h3>".$lang_label["group_view"]."
$iduser_temp = $_SESSION['id_usuario']; <a href='help/".$help_code."/chap3.php#324' target='_help' class='help'>
<span>".$lang_label["help"]."</span>
</a></h3>";
$sql1 = 'SELECT * FROM tgrupo'; $mis_grupos=list_group2 ($id_user);
$result2 = mysql_query ($sql1);
if (mysql_num_rows ($result2)) { // Update network modules for this group
while ($row = mysql_fetch_array ($result2)) { // Check for Network FLAG change request
if ($row["id_grupo"] != 1 && if (isset ($_GET["update_netgroup"])) {
give_acl($iduser_temp,$row["id_grupo"], "AR") == 1) { if (give_acl ($id_user, $_GET["update_netgroup"], "AW") == 1) {
$mis_grupos[]=$row["id_grupo"]; //All my groups in an array $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);
} }
} }
}
// Update network modules for this group $contador_grupo = 0;
// Check for Network FLAG change request $contador_agente = 0;
if (isset ($_GET["update_netgroup"])) { $array_index = 0;
if (give_acl ($id_user, $_GET["update_netgroup"], "AW") == 1) {
$sql = "SELECT * FROM tagente WHERE id_grupo = ". // Recorro cada grupo para ver el estado de todos los modulos
$_GET["update_netgroup"]; foreach ($mis_grupos as $migrupo) {
$result = mysql_query ($sql); if ($migrupo != "") {
while ($row = mysql_fetch_array ($result)) { $grupo[$array_index]["agent"] = 0;
$id_agente = $row["id_agente"]; $grupo[$array_index]["ok"] = 0;
$query2 ="UPDATE tagente_modulo SET flag=1 $grupo[$array_index]["down"] = 0;
WHERE id_agente = ".$id_agente; $grupo[$array_index]["bad"] = 0;
$res = mysql_query ($query2); $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;
$contador_grupo = 0;
$contador_agente = 0; $sql1 = "SELECT intervalo, id_agente
$array_index = 0; FROM tagente WHERE disabled=0
AND id_grupo =".$migrupo;
// Recorro cada grupo para ver el estado de todos los modulos if ($result1 = mysql_query ($sql1)) {
foreach ($mis_grupos as $migrupo) { while ($row1 = mysql_fetch_array ($result1)) {
if ($migrupo != "") { $existen_agentes = 1;
$grupo[$array_index]["agent"] = 0; $intervalo = $row1["intervalo"];
$grupo[$array_index]["ok"] = 0; $id_agente = $row1["id_agente"];
$grupo[$array_index]["down"] = 0;
$grupo[$array_index]["bad"] = 0; // Check for recent alerts
$grupo[$array_index]["alerts"] = 0; if (check_alert_fired($id_agente) == 1) {
$grupo[$array_index]["data"] = 0; $grupo[$array_index]["alerts"]++;
$grupo[$array_index]["icon"] = dame_grupo_icono ($migrupo); }
$grupo[$array_index]["id_grupo"] = $migrupo;
$existen_agentes =0; $grupo[$array_index]["agent"]++;
$grupo[$array_index]["group"] = dame_nombre_grupo ($migrupo);
$sql1 = "SELECT * FROM tagente WHERE disabled=0 // Estado grupo, agent
AND id_grupo =".$migrupo; $contador_agente++;
if ($result1 = mysql_query ($sql1)) { $sql3 = "SELECT estado, timestamp, id_agente_modulo,
while ($row1 = mysql_fetch_array ($result1)) { datos FROM tagente_estado
$existen_agentes = 1; WHERE id_agente = ".$row1["id_agente"];
$intervalo = $row1["intervalo"]; $result3 = mysql_query ($sql3);
$id_agente = $row1["id_agente"]; while ($row3 = mysql_fetch_array ($result3)) {
$estado = $row3["estado"];
// Check for recent alerts // Get module interval
if (check_alert_fired($id_agente) == 1) { $ahora = date ("Y/m/d H:i:s");
$grupo[$array_index]["alerts"]++; $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;
}
} }
$grupo[$array_index]["agent"]++; $ultimo_contacto_modulo = $row3["timestamp"];
$grupo[$array_index]["group"] = dame_nombre_grupo ($migrupo);
// Estado grupo, agent // Defines if module is down (interval x 2 > time last contact)
$contador_agente++; if ($ultimo_contacto_modulo != "0000-00-00 00:00:00") {
$sql3 = "SELECT * FROM tagente_estado WHERE id_agente = ".$row1["id_agente"]; $seconds = strtotime ($ahora) -
$result3 = mysql_query ($sql3); strtotime ($ultimo_contacto_modulo);
while ($row3 = mysql_fetch_array ($result3)) { if ($seconds >= ($intervalo_comp * 2)) {
$estado = $row3["estado"]; $grupo[$array_index]["down"]++;
// Get module interval } elseif ($estado != 100) {
$ahora = date ("Y/m/d H:i:s"); if ($row3["datos"] != 0) {
$sql4 = "SELECT * FROM tagente_modulo WHERE id_agente_modulo = ".$row3["id_agente_modulo"]; $grupo[$array_index]["ok"]++;
$result4 = mysql_query ($sql4);
if ($row4 = mysql_fetch_array ($result4)) {
$module_interval = $row4["module_interval"];
if ($module_interval > 0) {
$intervalo_comp = $module_interval;
} else { } else {
$intervalo_comp = $intervalo; $grupo[$array_index]["bad"]++;
} }
} } elseif ($estado == 100) // For data module, not monitors
$grupo[$array_index]["data"]++; // Data module
$ultimo_contacto_modulo = $row3["timestamp"];
// Defines if module is down (interval x 2 > time last contact)
if ($ultimo_contacto_modulo != "0000-00-00 00:00:00") {
$seconds = strtotime ($ahora) - strtotime ($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
}
} }
} }
} }
if ($existen_agentes == 1){
$array_index++;
}
}
}
if ($contador_agente != 0) {
$ancho = ceil(sqrt($array_index+1));
$real_count =0;
echo "<table cellpadding=10 cellspacing=10>";
for ($table=0; $table < $ancho; $table++) {
echo "<tr class='bot'>";
for ($table_row=0; $table_row < $ancho; $table_row++) {
if ($real_count < $array_index) {
$group_name = $grupo[$real_count]["group"];
$icono_grupo = $grupo[$real_count]["icon"];
$icono_type = "";
if ($grupo[$real_count]["down"] > 0) {
$icono_type = "
<img src='images/dot_down.gif' alt=''>";
}
if ($grupo[$real_count]["bad"] > 0) {
$icono_type = $icono_type."
<img src='images/dot_red.gif' alt=''>";
}
if ($grupo[$real_count]["ok"] > 0) {
$icono_type = $icono_type."
<img src='images/dot_green.gif' alt=''>";
}
if ($grupo[$real_count]["data"] > 0) {
$icono_type = $icono_type."
<img src='images/dot_white.gif' alt=''>";
}
// Show yellow light if there are recent alerts fired for this group
if ($grupo[$real_count]["alerts"] > 0 ){
$icono_type=$icono_type."
<img src='images/dot_yellow.gif' alt=''>";
}
// TOOLTIP.
$celda = "<td class='bot' width='100'>
<a href='index.php?sec=estado&amp;
sec2=operation/agentes/estado_agente&amp;
refr=60&amp;
group_id=".$grupo[$real_count]["id_grupo"]."'
class='info'>
<img class='top'
src='images/groups/".$icono_grupo."_1.gif' alt=''>
<span>
<table cellspacing='2' cellpadding='0'
style='margin-left:20px'>
<tr><td colspan='2' width='91' class='lb'>".
$lang_label["agents"].": </td></tr>
<tr><td colspan='2' class='datos' align='center'><b>".
$grupo[$real_count]["agent"]."</b></td></tr>
</table>
<table cellspacing='2' cellpadding='0'
style='margin-left:20px'>
<tr>
<td colspan='2' width='90' class='lb'>".
ucfirst($lang_label["monitors"]).":</td>
</tr>
<tr>
<td class='datos'>
<img src='images/b_green.gif' align='top' alt='' >
".$lang_label["ok"].": </td>
<td class='datos'>
<font class='greenb'>".$grupo[$real_count]["ok"]."</font>
</td>
</tr>
<tr>
<td class='datos'>
<img src='images/b_down.gif' align='top' alt=''>
".$lang_label["down"].": </td>
<td class='datos'><font class='#a9aa9a'>".
$grupo[$real_count]["down"]."</font></td>
</tr>
<tr>
<td class='datos'>
<img src='images/b_red.gif' align='top' alt=''>
".$lang_label["fail"].": </td>
<td class='datos'><font class='redb'>".
$grupo[$real_count]["bad"]."</font></td>
</tr>
<tr>
<td class='datos'>
<img src='images/b_yellow.gif' align='top' alt=''>
".$lang_label["alerts"].": </td>
<td class='datos'><font class='grey'>".
$grupo[$real_count]["alerts"]."</font></td>
</tr>
</table>
</span></a>";
// Render network exec module button, only when this group is writtable by user
if (give_acl ($id_user, $grupo[$real_count]["id_grupo"], "AW") == 1) {
$celda .= "<a href='index.php?
sec=estado&
sec2=operation/agentes/estado_grupo&
update_netgroup=".$grupo[$real_count]["id_grupo"]."'>
<img src='images/target.gif'></a>";
}
$celda .= "<br><br>".
$icono_type."<br><br>
<span class='gr'>".$group_name."</span>";
echo $celda;
}
$real_count++;
}
echo "</tr>";
} }
echo "</table>"; if ($existen_agentes == 1){
} else { $array_index++;
echo "<div class='nf'>".$lang_label["no_agent_def"]."</div>"; }
} }
}
if ($contador_agente != 0) {
$ancho = ceil(sqrt($array_index+1));
$real_count =0;
echo "<table cellpadding=10 cellspacing=10>";
for ($table=0; $table < $ancho; $table++) {
echo "<tr class='bot'>";
for ($table_row=0; $table_row < $ancho; $table_row++) {
if ($real_count < $array_index) {
$group_name = $grupo[$real_count]["group"];
$icono_grupo = $grupo[$real_count]["icon"];
$icono_type = "";
if ($grupo[$real_count]["down"] > 0) {
$icono_type = "
<img src='images/dot_down.gif' alt=''>";
}
if ($grupo[$real_count]["bad"] > 0) {
$icono_type = $icono_type."
<img src='images/dot_red.gif' alt=''>";
}
if ($grupo[$real_count]["ok"] > 0) {
$icono_type = $icono_type."
<img src='images/dot_green.gif' alt=''>";
}
if ($grupo[$real_count]["data"] > 0) {
$icono_type = $icono_type."
<img src='images/dot_white.gif' alt=''>";
}
// Show yellow light if there are recent alerts fired for this group
if ($grupo[$real_count]["alerts"] > 0 ){
$icono_type=$icono_type."
<img src='images/dot_yellow.gif' alt=''>";
}
// TOOLTIP.
$celda = "<td class='bot' width='100'>
<a href='index.php?sec=estado&amp;
sec2=operation/agentes/estado_agente&amp;
refr=60&amp;
group_id=".$grupo[$real_count]["id_grupo"]."'
class='info'>
<img class='top'
src='images/groups/".$icono_grupo."_1.gif' alt=''>
<span>
<table cellspacing='2' cellpadding='0'
style='margin-left:20px'>
<tr><td colspan='2' width='91' class='lb'>".
$lang_label["agents"].": </td></tr>
<tr><td colspan='2' class='datos' align='center'><b>".
$grupo[$real_count]["agent"]."</b></td></tr>
</table>
<table cellspacing='2' cellpadding='0'
style='margin-left:20px'>
<tr>
<td colspan='2' width='90' class='lb'>".
ucfirst($lang_label["monitors"]).":</td>
</tr>
<tr>
<td class='datos'>
<img src='images/b_green.gif' align='top' alt='' >
".$lang_label["ok"].": </td>
<td class='datos'>
<font class='greenb'>".$grupo[$real_count]["ok"]."</font>
</td>
</tr>
<tr>
<td class='datos'>
<img src='images/b_down.gif' align='top' alt=''>
".$lang_label["down"].": </td>
<td class='datos'><font class='#a9aa9a'>".
$grupo[$real_count]["down"]."</font></td>
</tr>
<tr>
<td class='datos'>
<img src='images/b_red.gif' align='top' alt=''>
".$lang_label["fail"].": </td>
<td class='datos'><font class='redb'>".
$grupo[$real_count]["bad"]."</font></td>
</tr>
<tr>
<td class='datos'>
<img src='images/b_yellow.gif' align='top' alt=''>
".$lang_label["alerts"].": </td>
<td class='datos'><font class='grey'>".
$grupo[$real_count]["alerts"]."</font></td>
</tr>
</table>
</span></a>";
// Render network exec module button, only when this group is writtable by user
if (give_acl ($id_user, $grupo[$real_count]["id_grupo"], "AW") == 1) {
$celda .= "&nbsp;<a href='index.php?
sec=estado&
sec2=operation/agentes/estado_grupo&
update_netgroup=".$grupo[$real_count]["id_grupo"]."'>
<img src='images/target.gif'></a>";
}
$celda .= "<br><br>".
$icono_type."<br><br>
<span class='gr'>".$group_name."</span>";
echo $celda;
}
$real_count++;
}
echo "</tr>";
}
echo "</table>";
} else { } else {
echo "<div class='nf'>".$lang_label["no_agent"]."</div>"; echo "<div class='nf'>".$lang_label["no_agent_def"]."</div>";
} }
} else { } else {
audit_db ($id_user, $REMOTE_ADDR, "ACL Violation", echo "<div class='nf'>".$lang_label["no_agent"]."</div>";
"Trying to access Agent view (Grouped)");
require ("general/noaccess.php");
} }
} else {
audit_db ($id_user, $REMOTE_ADDR, "ACL Violation",
"Trying to access Agent view (Grouped)");
require ("general/noaccess.php");
} }
?> ?>

View File

@ -64,9 +64,12 @@ if (comprueba_login() == 0) {
if (give_acl($id_user, $id_group, "IM") ==1){ if (give_acl($id_user, $id_group, "IM") ==1){
$sql2="DELETE FROM tevento WHERE id_evento =".$id_evento; $sql2="DELETE FROM tevento WHERE id_evento =".$id_evento;
$result2=mysql_query($sql2); $result2=mysql_query($sql2);
if ($result) {echo "<h3 class='suc'>".$lang_label["delete_event_ok"]."</h3>";} if ($result) {
echo "<h3 class='suc'>".$lang_label["delete_event_ok"]."</h3>";
}
} else { } else {
audit_db($id_user,$REMOTE_ADDR, "ACL Violation","Trying to delete event ID".$id_evento); audit_db($id_user,$REMOTE_ADDR, "ACL Violation",
"Trying to delete event ID".$id_evento);
} }
} }
@ -121,7 +124,6 @@ if (comprueba_login() == 0) {
} }
} }
echo "<h2>".$lang_label["events"]."</h2>"; echo "<h2>".$lang_label["events"]."</h2>";
echo "<h3>".$lang_label["event_main_view"]."<a href='help/".$help_code."/chap5.php#5' target='_help' class='help'>&nbsp;<span>".$lang_label["help"]."</span></a></h3>"; echo "<h3>".$lang_label["event_main_view"]."<a href='help/".$help_code."/chap5.php#5' target='_help' class='help'>&nbsp;<span>".$lang_label["help"]."</span></a></h3>";
echo "<table cellpadding='3' cellspacing='3'><tr>"; echo "<table cellpadding='3' cellspacing='3'><tr>";