318 lines
13 KiB
PHP
318 lines
13 KiB
PHP
<?php
|
||
// Pandora - the Free monitoring system
|
||
// ====================================
|
||
// Copyright (c) 2004-2006 Sancho Lerena, slerena@gmail.com
|
||
// Copyright (c) 2005-2006 Artica Soluciones Tecnol<6F>icas 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 var
|
||
require("include/config.php");
|
||
if (comprueba_login() == 0)
|
||
$id_user = $_SESSION["id_usuario"];
|
||
if ( (give_acl($id_user, 0, "LM")==1) OR (give_acl($id_user, 0, "AW")==1) ){
|
||
|
||
if ((isset($_GET["operacion"])) AND (! isset($_POST["update_agent"]))){
|
||
// DATA COPY
|
||
if (isset($_POST["copiar"])) {
|
||
echo "<h2>".$lang_label["datacopy"]."</h2>";
|
||
// Initial checkings
|
||
|
||
// if selected more than 0 agents
|
||
$destino = $_POST["destino"];
|
||
if (count($destino) <= 0){
|
||
echo "<h3 class='error'>ERROR: ".$lang_label["noagents_cp"]."</h3>";
|
||
echo "</table>";
|
||
include ("general/footer.php");
|
||
exit;
|
||
}
|
||
$origen_modulo = $_POST["origen_modulo"];
|
||
if (count($origen_modulo) <= 0){
|
||
echo "<h3 class='error'>ERROR: ".$lang_label["nomodules_selected"]."</h3>";
|
||
echo "</table>";
|
||
include ("general/footer.php");
|
||
exit;
|
||
}
|
||
|
||
$multiple=1;
|
||
|
||
// Source
|
||
$id_origen = $_POST["origen"];
|
||
|
||
// If selected modules or alerts
|
||
if (isset($_POST["modules"]))
|
||
$modulos = 1;
|
||
else
|
||
$modulos = 0;
|
||
if (isset($_POST["alerts"]))
|
||
$alertas = 1;
|
||
else
|
||
$alertas = 0;
|
||
if (($alertas + $modulos) == 0){
|
||
echo "<h3 class='error'>ERROR: ".$lang_label["you_must_select_modules"]."</h3>";;
|
||
echo "</table>";
|
||
include ("general/footer.php");
|
||
exit;
|
||
}
|
||
|
||
// Copy
|
||
for ($a=0;$a <count($destino); $a++){ // For every agent in destination
|
||
$id_agente = $destino[$a];
|
||
echo "<br><br>".$lang_label["copyage"]."<b> [".dame_nombre_agente($id_origen)."] -> [".dame_nombre_agente($id_agente)."]</b>";
|
||
if ($multiple == 0)
|
||
$b=-1;
|
||
else
|
||
$b=0;
|
||
|
||
// Module read
|
||
if ($modulos ==1){
|
||
for ($b=$b; $b < count($origen_modulo); $b++){
|
||
if ($multiple == 0)
|
||
$sql1='SELECT * FROM tagente_modulo WHERE id_agente = '.$id_origen;
|
||
else
|
||
$sql1='SELECT * FROM tagente_modulo WHERE id_agente_modulo = '.$origen_modulo[$b];
|
||
$result1=mysql_query($sql1);
|
||
while ($row=mysql_fetch_array($result1)){
|
||
$o_id_agente_modulo = $row["id_agente_modulo"];
|
||
$o_id_tipo_modulo = $row["id_tipo_modulo"];
|
||
$o_nombre = $row["nombre"];
|
||
$d_id_agente = $id_agente; // Rapelace with destination agent id
|
||
|
||
// Read every module in source agent
|
||
$o_descripcion = $row["descripcion"];
|
||
$o_max = $row["max"];
|
||
$o_min = $row["min"];
|
||
$o_module_interval = $row["module_interval"];
|
||
$o_tcp_port = $row["tcp_port"];
|
||
$o_tcp_send = $row["tcp_send"];
|
||
$o_tcp_rcv = $row["tcp_rcv"];
|
||
$o_snmp_community = $row["snmp_community"];
|
||
$o_snmp_oid = $row["snmp_oid"];
|
||
$o_ip_target = $row["ip_target"];
|
||
$o_id_module_group = $row["id_module_group"];
|
||
|
||
// Write every module in destination agent
|
||
if ($o_nombre != "agent_keepalive") {
|
||
$sql = "INSERT INTO tagente_modulo (id_agente,id_tipo_modulo,descripcion,nombre, max, min, module_interval, tcp_port, tcp_send, tcp_rcv, snmp_community, snmp_oid, ip_target, id_module_group, flag) VALUES
|
||
(".$d_id_agente.",'".$o_id_tipo_modulo."','".$o_descripcion."','".$o_nombre."', '$o_max', '$o_min', '$o_module_interval', '$o_tcp_port','$o_tcp_send','$o_tcp_rcv','$o_snmp_community','$o_snmp_oid','$o_ip_target',$o_id_module_group, 1)";
|
||
$result2=mysql_query($sql);
|
||
// echo "DEBUG INSERT $sql <br>";
|
||
echo "<br> ".$lang_label["copymod"]." ->".$o_nombre;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
if ($multiple == 0)
|
||
$b=-1;
|
||
else
|
||
$b=0;
|
||
// Alertas
|
||
if ($alertas == 1){
|
||
for ($b=$b; $b < count($origen_modulo); $b++){
|
||
if ($multiple == 0)
|
||
$sql1='SELECT * FROM tagente_modulo WHERE id_agente = '.$id_origen;
|
||
else
|
||
$sql1='SELECT * FROM tagente_modulo WHERE id_agente_modulo = '.$origen_modulo[$b];
|
||
$result1=mysql_query($sql1);
|
||
while ($row=mysql_fetch_array($result1)){
|
||
$o_id_agente_modulo = $row["id_agente_modulo"];
|
||
$o_id_tipo_modulo = $row["id_tipo_modulo"];
|
||
$o_nombre = $row["nombre"];
|
||
$d_id_agente = $id_agente; // destination agent id
|
||
// For each agent module, given as $o_id_agente_modulo:
|
||
// Searching if destination agent has a agente_modulo with same type and name that source
|
||
$sqlp="SELECT * FROM tagente_modulo WHERE id_agente = ".$d_id_agente." AND nombre = '".$o_nombre."' AND id_tipo_modulo = ".$o_id_tipo_modulo;
|
||
$resultp=mysql_query($sqlp);
|
||
if ( $rowp=mysql_fetch_array($resultp)){
|
||
// If rowp success get ID
|
||
$d_id_agente_modulo = $rowp["id_agente_modulo"];
|
||
// Read every alert from source agent
|
||
$sql2='SELECT * FROM talerta_agente_modulo WHERE id_agente_modulo = '.$o_id_agente_modulo;
|
||
$result3=mysql_query($sql2);
|
||
while ($row3=mysql_fetch_array($result3)){
|
||
$o_id_alerta = $row3["id_alerta"];
|
||
$o_al_campo1 = $row3["al_campo1"];
|
||
$o_al_campo2 = $row3["al_campo2"];
|
||
$o_al_campo3 = $row3["al_campo3"];
|
||
$o_descripcion = $row3["descripcion"];
|
||
$o_dis_max = $row3["dis_max"];
|
||
$o_dis_min = $row3["dis_min"];
|
||
$o_time_threshold = $row3["time_threshold"];
|
||
$o_last_fired = "2001-01-01 00:00:00";
|
||
$o_max_alerts = $row3["max_alerts"];
|
||
$o_min_alerts = $row3["min_alerts"];
|
||
$o_times_fired = 0;
|
||
// Insert
|
||
$sql_al="INSERT INTO talerta_agente_modulo (id_agente_modulo, id_alerta, al_campo1, al_campo2, al_campo3, descripcion, dis_max, dis_min, time_threshold, last_fired, max_alerts, times_fired, min_alerts) VALUES ( ".$d_id_agente_modulo.",
|
||
".$o_id_alerta.",
|
||
'".$o_al_campo1."',
|
||
'".$o_al_campo2."',
|
||
'".$o_al_campo3."',
|
||
'".$o_descripcion."',
|
||
".$o_dis_max.",
|
||
".$o_dis_min.",
|
||
".$o_time_threshold.",
|
||
'".$o_last_fired."',
|
||
".$o_max_alerts.",
|
||
".$o_times_fired.", $o_min_alerts)";
|
||
$result_al=mysql_query($sql_al);
|
||
// echo "DEBUG SQL: $sql_al <br>";
|
||
echo "<br> ".$lang_label["copyale"]." ->".$o_descripcion;
|
||
}
|
||
} else
|
||
echo "<br><h3 class='error'>ERROR: ".$lang_label["notfoundmod"].$o_nombre.$lang_label["inagent"].dame_nombre_agente($d_id_agente)."</h3>";
|
||
} //while
|
||
} // for
|
||
}
|
||
}
|
||
} //end if copy modules or alerts
|
||
|
||
// DELETE DATA
|
||
elseif (isset($_POST["eliminar"])) {
|
||
echo "<h2>".$lang_label["deletedata"]."</h2>";
|
||
// Initial checkings
|
||
|
||
// if selected more than 0 agents
|
||
$destino = $_POST["destino"];
|
||
if (count($destino) <= 0){
|
||
echo "<h3 class='error'>ERROR: ".$lang_label["noagents_del"]."</h3>";
|
||
break;
|
||
}
|
||
|
||
// If selected modules or alerts
|
||
if (isset($_POST["modules"]))
|
||
$modulos = 1;
|
||
else
|
||
$modulos = 0;
|
||
if (isset($_POST["alerts"]))
|
||
$alertas = 1;
|
||
else
|
||
$alertas = 0;
|
||
if (($alertas + $modulos) == 0){
|
||
echo "<h3 class='error'>ERROR: ".$lang_label["del_sel_err"]."</h3>";
|
||
break;
|
||
}
|
||
|
||
// Delete
|
||
for ($a=0;$a <count($destino); $a++){ // for each agent
|
||
$id_agente = $destino[$a];
|
||
if ($modulos == 1){
|
||
echo "<br>".$lang_label["deletingdata"]." -> ".dame_nombre_agente($id_agente);
|
||
|
||
// Deleting data
|
||
$sql1='SELECT * FROM tagente_modulo WHERE id_agente = '.$id_agente;
|
||
$result1=mysql_query($sql1);
|
||
while ($row=mysql_fetch_array($result1)){
|
||
$sql_delete1="DELETE FROM tagente_datos WHERE id_agente_modulo=".$row["id_agente_modulo"];
|
||
$sql_delete2="DELETE FROM tagente_datos_inc WHERE id_agente_modulo=".$row["id_agente_modulo"];
|
||
$sql_delete3="DELETE FROM tagente_datos_string WHERE id_agente_modulo=".$row["id_agente_modulo"];
|
||
$sql_delete4 ="DELETE FROM talerta_agente_modulo WHERE id_agente_modulo = ".$row["id_agente_modulo"];
|
||
$result=mysql_query($sql_delete1);
|
||
$result=mysql_query($sql_delete2);
|
||
$result=mysql_query($sql_delete3);
|
||
$result=mysql_query($sql_delete4);
|
||
}
|
||
|
||
// Delete conf
|
||
$sql_delete5 ="DELETE FROM tagente_modulo WHERE id_agente = ".$id_agente; // delete from table tagente_modulo
|
||
$sql_delete6 ="DELETE FROM tagente_estado WHERE id_agente = ".$id_agente; // detele from table tagente_estado
|
||
$result=mysql_query($sql_delete5);
|
||
$result=mysql_query($sql_delete6);
|
||
}
|
||
// delete alerts definitions
|
||
if ($alertas == 1){
|
||
echo "<br>".$lang_label["deletingdata"]." -> ".dame_nombre_agente($id_agente);
|
||
|
||
// delete data
|
||
$sql1='SELECT * FROM tagente_modulo WHERE id_agente = '.$id_agente;
|
||
$result1=mysql_query($sql1);
|
||
while ($row=mysql_fetch_array($result1)){
|
||
$sql_delete1="DELETE FROM talerta_agente_modulo WHERE id_agente_modulo=".$row["id_agente_modulo"];
|
||
$result = mysql_query($sql_delete1);
|
||
} // while
|
||
}//if
|
||
}// for
|
||
}//delete
|
||
|
||
} else { // Form view
|
||
?>
|
||
|
||
<h2><?php echo $lang_label["agent_conf"] ?></h2>
|
||
<h3><?php echo $lang_label["config_manage"]; ?><a href="help/<?php echo substr($language_code,0,2);?>/chap3.php#323" target="_help" class="help"> <span><?php echo $lang_label["help"]; ?></span></a></h3>
|
||
<form method="post" action="index.php?sec=gagente&sec2=godmode/agentes/manage_config&operacion=1">
|
||
<table width=450 border=0 cellspacing=3 cellpadding=5>
|
||
<tr>
|
||
<td class="datost"><b><?php echo $lang_label["source_agent"]; ?></b><br><br>
|
||
<select name="origen" class="w130">
|
||
<?php
|
||
if ( (isset($_POST["update_agent"])) AND (isset($_POST["origen"])) ) {
|
||
echo "<option value=".$_POST["origen"].">".dame_nombre_agente($_POST["origen"]);
|
||
}
|
||
// Show combo with agents
|
||
$sql1='SELECT * FROM tagente order by nombre';
|
||
$result=mysql_query($sql1);
|
||
while ($row=mysql_fetch_array($result)){
|
||
if ( (isset($_POST["update_agent"])) AND (isset($_POST["origen"])) ){
|
||
if ( $_POST["origen"] != $row["id_agente"])
|
||
echo "<option value=".$row["id_agente"].">".$row["nombre"];
|
||
}
|
||
else
|
||
echo "<option value=".$row["id_agente"].">".$row["nombre"];
|
||
}
|
||
echo '</select> <input type=submit name="update_agent" class=sub value="'.$lang_label["get_info"].'"><br><br>';
|
||
echo "<b>".$lang_label["modules"]."</b><br><br>";
|
||
echo "<select name='origen_modulo[]' size=3 multiple=yes class='w130'>";
|
||
if ( (isset($_POST["update_agent"])) AND (isset($_POST["origen"])) ) {
|
||
// Populate Module/Agent combo
|
||
$agente_modulo = $_POST["origen"];
|
||
$sql1="SELECT * FROM tagente_modulo WHERE id_agente = ".$agente_modulo. " order by nombre";
|
||
$result = mysql_query($sql1);
|
||
while ($row=mysql_fetch_array($result)){
|
||
echo "<option value=".$row["id_agente_modulo"].">".$row["nombre"];
|
||
}
|
||
}
|
||
echo "</select>";
|
||
?>
|
||
<td class="datost"><b><?php echo $lang_label["copy_conf"]; ?></b><br><br>
|
||
<table>
|
||
<tr class=datos><td><?php echo $lang_label["modules"]; ?><td><input type="checkbox" name="modules" value="1" class="chk"><br>
|
||
<tr class=datos><td><?php echo $lang_label["alerts"]; ?><td><input type="checkbox" name="alerts" value="1" class="chk"><br>
|
||
</table>
|
||
|
||
<tr><td class="datost">
|
||
<b><?php echo $lang_label["toagent"]; ?></b><br><br>
|
||
<select name=destino[] multiple=yes size=10 class="w130">
|
||
<?php
|
||
// Show combo with agents
|
||
$sql1='SELECT * FROM tagente';
|
||
$result=mysql_query($sql1);
|
||
while ($row=mysql_fetch_array($result)){
|
||
echo "<option value=".$row["id_agente"].">".$row["nombre"];
|
||
}
|
||
?>
|
||
</select>
|
||
|
||
<td align="right" class="datosb">
|
||
<input type="submit" name="copiar" class="sub" value="<?php echo $lang_label["copy"].'" onClick="if (!confirm("'.$lang_label["are_you_sure"].'")) return false;>'; ?>
|
||
<input type="submit" name="eliminar" class="sub" value="<?php echo $lang_label["delete"].'" onClick="if (!confirm("'.$lang_label["are_you_sure"].'")) return false;>'; ?>
|
||
<tr><td colspan=2>
|
||
</div></td></tr>
|
||
</table>
|
||
|
||
<?php
|
||
}
|
||
} else {
|
||
audit_db($id_user,$REMOTE_ADDR, "ACL Violation","Trying to access Agent Config Management Admin section");
|
||
require ("general/noaccess.php");
|
||
}
|
||
?>
|