2006-09-29 Raul Mateos <raulofpandora@gmail.com>

* pandora_server/bin/*.pl and *.pm: Updated some comments from
	Spanish to English. Update build date.

git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@197 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
This commit is contained in:
raulmateos 2006-09-29 12:29:36 +00:00
parent 6b3f989cef
commit fdca6a60b1
7 changed files with 211 additions and 208 deletions

View File

@ -1,3 +1,8 @@
2006-09-29 Raul Mateos <raulofpandora@gmail.com>
* pandora_server/bin/*.pl and *.pm: Updated some comments from
Spanish to English. Update build date.
2006-09-13 Sancho Lerena <slerena@artica.es>
* pandora_network.pl: Fixed problems with OID index. Perl needs to
@ -5,5 +10,3 @@
SNMPv2-MIB::sysDescr. Also, other numerical indexes are referenced
different from system SNMP or PHP. IF-MIB::ifDescr.3 is
IF-MIB::ifDescr.2 for PERL's SNMP.

View File

@ -1,7 +1,7 @@
package pandora_config;
##################################################################################
##########################################################################
# Pandora Config package
##################################################################################
##########################################################################
# Copyright (c) 2004-2006 Sancho Lerena, slerena@gmail.com
# Copyright (c) 2005-2006 Artica Soluciones Tecnol<6F>icas S.L
#
@ -16,7 +16,7 @@ package pandora_config;
#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.
##################################################################################
##########################################################################
use warnings;
@ -36,17 +36,17 @@ our @EXPORT = qw( pandora_help_screen
# There is no global vars, all variables (setup) passed as hash reference
# version: Defines actual version of Pandora Server for this module only
my $pandora_version = "1.2 Beta2";
my $pandora_build="PS60629";
my $pandora_version = "1.2 Beta 3";
my $pandora_build="PS060929";
# Setup hash
my %pa_config;
# Delaracion de funciones publicas
##############################################################################
# Public functions
##########################################################################
# SUB pandora_help_screen()
# Show a help screen an exits
##############################################################################
##########################################################################
sub help_screen {
printf "\n\nSyntax: \n pandora_xxxxxxx.pl <fullpathname to PANDORA HOME directory> [ options ] \n\n";
@ -59,10 +59,10 @@ sub help_screen {
exit;
}
##############################################################################
##########################################################################
# SUB pandora_init ( %pandora_cfg )
# Makes the initial parameter parsing, initializing and error checking
##############################################################################
##########################################################################
sub pandora_init {
my $pa_config = $_[0];
@ -102,9 +102,9 @@ sub pandora_init {
}
}
##############################################################################
##########################################################################
# Read external configuration file
##############################################################################
##########################################################################
sub pandora_loadconfig {
my $pa_config = $_[0];
@ -145,7 +145,8 @@ sub pandora_loadconfig {
}
# Check for file
if ( ! -e $archivo_cfg ) {
printf "\n[ERROR] Cannot open configuration file at $archivo_cfg. \nPlease specify a valid Pandora Home Directory in command line. \n";
printf "\n[ERROR] Cannot open configuration file at $archivo_cfg. \n";
printf " Please specify a valid Pandora Home Directory in command line. \n";
exit 1;
}
# Collect items from config file and put in an array

View File

@ -1,9 +1,9 @@
package pandora_db;
##################################################################################
##########################################################################
# Pandora Database Package
##################################################################################
##########################################################################
# Copyright (c) 2004-2006 Sancho Lerena, slerena@gmail.com
# Copyright (c) 2005-2006 Artica Soluciones Tecnol<EFBFBD>icas S.L
# Copyright (c) 2005-2006 Artica Soluciones Tecnologicas S.L
#
#This program is free software; you can redistribute it and/or
#modify it under the terms of the GNU General Public License
@ -16,7 +16,7 @@ package pandora_db;
#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.
##################################################################################
##########################################################################
use warnings;
use Time::Local;
@ -68,11 +68,11 @@ our @EXPORT = qw( crea_agente_modulo
# 'Crea' in spanish means 'create'
# 'Dame' in spanish means 'give'
#################################################################################
##########################################################################
## SUB pandora_calcula_alerta
## (paconfig, timestamp,nombre_agente,tipo_modulo,nombre_modulo,datos,dbh)
## Given a datamodule, generate alert if needed
##################################################################################
##########################################################################
sub pandora_calcula_alerta (%$$$$$$) {
my $pa_config = $_[0];
@ -89,13 +89,13 @@ sub pandora_calcula_alerta (%$$$$$$) {
my $max;
my $min; # for calculate max & min to generate ALERTS
# Obtemos los ID's a traves del paquete de datos
# Get IDs from data packet
$id_agente = dame_agente_id($pa_config, $nombre_agente, $dbh);
$id_modulo = dame_modulo_id($pa_config, $tipo_modulo,$dbh);
$id_agente_modulo = dame_agente_modulo_id($pa_config, $id_agente,$id_modulo,$nombre_modulo,$dbh);
logger($pa_config, "DEBUG: calcula_alerta() Calculado id_agente_modulo a $id_agente_modulo",3);
# Buscamos si existe una alerta definida para esta combinacion agente/modulo
# If any alert from this combinatio of agent/module
my $query_idag = "select * from talerta_agente_modulo where id_agente_modulo = '$id_agente_modulo'";
my $s_idag = $dbh->prepare($query_idag);
$s_idag ->execute;
@ -156,7 +156,7 @@ sub pandora_calcula_alerta (%$$$$$$) {
# Check timegap
my $fecha_ultima_alerta = ParseDate($last_fired);
my $fecha_actual = ParseDate( $timestamp );
my $ahora_mysql = &UnixDate("today","%Y-%m-%d %H:%M:%S"); # If we need to update MYSQL ast_fired will use $ahora_mysql
my $ahora_mysql = &UnixDate("today","%Y-%m-%d %H:%M:%S"); # If we need to update MYSQL ast_fired will use $ahora_mysql
my $time_threshold = $threshold;
my $err; my $flag;
my $fecha_limite = DateCalc($fecha_ultima_alerta,"+ $time_threshold seconds",\$err);
@ -258,10 +258,10 @@ sub pandora_calcula_alerta (%$$$$$$) {
#################################################################################
##########################################################################
## SUB execute_alert (id_alert, field1, field2, field3, agent, timestamp, data)
## Do a execution of given alert with this parameters
##################################################################################
##########################################################################
sub execute_alert (%$$$$$$$$) {
my $pa_config = $_[0];
@ -324,10 +324,10 @@ sub execute_alert (%$$$$$$$$) {
}
#################################################################################
##########################################################################
## SUB pandora_writestate (pa_config, nombre_agente,tipo_modulo,nombre_modulo,valor_datos, estado)
## Alter data, chaning status of modules in state table
##################################################################################
##########################################################################
sub pandora_writestate (%$$$$$$) {
# my $timestamp = $_[0];
@ -343,9 +343,9 @@ sub pandora_writestate (%$$$$$$) {
my $timestamp = &UnixDate("today","%Y-%m-%d %H:%M:%S");
my @data;
my $cambio = 0; my $id_grupo;
# Obtenemos los identificadores
# OJO; no controlamos si los valores pasados como cadena son validos.
# PENDIENTE: Comprobacion de errores aqui.
# Get id
# BE CAREFUL: We don't verify the strings chains
# TO DO: Verify errors
my $id_agente = dame_agente_id($pa_config,$nombre_agente,$dbh);
my $id_modulo = dame_modulo_id($pa_config,$tipo_modulo,$dbh);
my $id_agente_modulo = dame_agente_modulo_id($pa_config,$id_agente, $id_modulo, $nombre_modulo,$dbh);
@ -353,7 +353,7 @@ sub pandora_writestate (%$$$$$$) {
goto fin_pandora_writestate;
}
# Check alert subroutine
eval { # Hacemos la comprobacion de las alertas aqui. OJO !
eval {
# Alerts checks for Agents, only for master servers
if ($pa_config->{"pandora_master"} == 1){
pandora_calcula_alerta($pa_config, $timestamp, $nombre_agente, $tipo_modulo, $nombre_modulo, $datos, $dbh);
@ -363,8 +363,8 @@ sub pandora_writestate (%$$$$$$) {
logger($pa_config, "ERROR: Error in SUB calcula_alerta(). ModuleName: $nombre_modulo ModuleType: $tipo_modulo AgentName: $nombre_agente",1);
logger($pa_config, "ERROR Code: $@",1)
}
# $id_agente apunta al ID del agente que queremos actualizar".dame_nombreagente_agentemodulo ($id_agente_modulo)."
# Vamos a ver si existe una entrada en la tabla tagente_estado
# $id_agente is agent ID to update ".dame_nombreagente_agentemodulo ($id_agente_modulo)."
# Let's see if there is any entry at tagente_estado table
my $idages = "select * from tagente_estado where id_agente_modulo = $id_agente_modulo";
my $s_idages = $dbh->prepare($idages);
$s_idages ->execute;
@ -399,9 +399,9 @@ sub pandora_writestate (%$$$$$$) {
fin_pandora_writestate:
}
#################################################################################
##########################################################################
#### MODULOS implementados en Pandora
#################################################################################
##########################################################################
# ----------------------------------------+
# Modulos genericos de Pandora |
@ -424,10 +424,10 @@ fin_pandora_writestate:
# generic_data_string. Store a string, max 255 chars.
#################################################################################
##########################################################################
## SUB pandora_accessupdate (pa_config, id_agent, dbh)
## Update agent access table
##################################################################################
##########################################################################
sub pandora_accessupdate (%$$) {
my $pa_config = $_[0];
@ -461,10 +461,10 @@ sub pandora_accessupdate (%$$) {
}
}
#################################################################################
##########################################################################
## SUB module_generic_proc (param_1, param_2, param_3)
## Procesa datos genericos sobre un proceso
##################################################################################
##########################################################################
## param_1 : Nombre de la estructura contenedora de datos (XML)
## paran_2 : Timestamp del paquete de datos
## param_3 : Agent name
@ -513,13 +513,13 @@ sub module_generic_proc (%$$$$$) {
}
}
#################################################################################
## SUB module_generic_data (par1, par2)
## Procesa datos generados por Modulo de adquisicion de datos numericos
##################################################################################
## param_1 : Nombre de la estructura contenedora de datos (XML)
## paran_2 : Timestamp del paquete de datos
## param_3 : Nombre del agente
##########################################################################
## SUB module_generic_data (param_1, param_2,param_3, param_4)
## Process generated data form numeric data module acquire
##########################################################################
## param_1 : XML name
## paran_2 : Timestamp
## param_3 : Agent name
## param_4 : Module type
sub module_generic_data (%$$$$$) {
@ -561,13 +561,13 @@ sub module_generic_data (%$$$$$) {
}
}
#################################################################################
## SUB module_generic_data_inc (par1, par2)
## Procesa datos generados por Modulo de adquisicion de datos numericos incrementales
##################################################################################
## param_1 : Nombre de la estructura contenedora de datos (XML)
## paran_2 : Timestamp del paquete de datos
## param_3 : Nombre del agente
##########################################################################
## SUB module_generic_data_inc (param_1, param_2,param_3, param_4)
## Process generated data form incremental numeric data module acquire
##########################################################################
## param_1 : XML name
## paran_2 : Timestamp
## param_3 : Agent name
## param_4 : Module type
sub module_generic_data_inc (%$$$$$) {
my $pa_config = $_[0];
@ -577,7 +577,7 @@ sub module_generic_data_inc (%$$$$$) {
my $module_type = $_[4];
my $dbh = $_[5];
# Leemos datos de la estructura
# Read structure data
my $m_name = $datos->{name}->[0];
my $a_desc = $datos->{description}->[0];
my $m_data = $datos->{data}->[0];
@ -642,7 +642,7 @@ sub module_generic_data_inc (%$$$$$) {
if ($no_existe == 1){
my $query = "insert into tagente_datos_inc (id_agente_modulo,datos,timestamp) VALUES ($id_agente_modulo,'$m_data','$timestamp')";
$dbh->do($query);
} else { # Si existe, modificamos
} else { # If exists, modfy
if ($diferencia > 0) {
my $query_idag = "update tagente_datos_inc set datos = '$m_data' where id_agente_modulo = $id_agente_modulo";
$s_idag = $dbh->prepare($query_idag);
@ -671,14 +671,15 @@ sub module_generic_data_inc (%$$$$$) {
}
}
#################################################################################
## SUB module_generic_data_string (par1, par2)
## Procesa datos generados por el modulo de adquisicion de datos alfanumericos
##################################################################################
## param_1 : Nombre de la estructura contenedora de datos (XML)
## paran_2 : Timestamp del paquete de datos
## param_3 : Nombre del agente
## param_4 : Modyle type
##########################################################################
## SUB module_generic_data (param_1, param_2,param_3, param_4)
## Process generated data form alfanumeric data module acquire
##########################################################################
## param_1 : XML name
## paran_2 : Timestamp
## param_3 : Agent name
## param_4 : Module type
sub module_generic_data_string (%$$$$$) {
my $pa_config = $_[0];
@ -688,7 +689,7 @@ sub module_generic_data_string (%$$$$$) {
my $module_type = $_[4];
my $dbh = $_[5];
# Leemos datos de la estructura
# Read Structure
my $m_name = $datos->{name}->[0];
my $m_data = $datos->{data}->[0];
my $a_desc = $datos->{description}->[0];
@ -709,11 +710,11 @@ sub module_generic_data_string (%$$$$$) {
}
#################################################################################
##########################################################################
## SUB pandora_writedata (pa_config, timestamp,nombre_agente,tipo_modulo,nombre_modulo,datos)
## Insert data in main table: tagente_datos
##################################################################################
##########################################################################
sub pandora_writedata (%$$$$$$$$$) {
my $pa_config = $_[0];
@ -841,10 +842,10 @@ sub pandora_writedata (%$$$$$$$$$) {
fin_DB_insert_datos:
}
#################################################################################
##########################################################################
## SUB pandora_serverkeepalive (pa_config, status, dbh)
## Update server status
##################################################################################
##########################################################################
sub pandora_serverkeepaliver (%$) {
my $pa_config= $_[0];
my $opmode = $_[1]; # 0 dataserver, 1 network server, 2 snmp console
@ -881,12 +882,12 @@ sub pandora_serverkeepaliver (%$) {
}
#################################################################################
##########################################################################
## SUB pandora_updateserver (pa_config, status, dbh)
## Update server status
##################################################################################
##########################################################################
sub pandora_updateserver (%$$$) {
my $pa_config= $_[0];
my $pa_config= $_[0];
my $servername = $_[1];
my $status = $_[2];
my $opmode = $_[3]; # 0 dataserver, 1 network server, 2 snmp console
@ -932,10 +933,10 @@ sub pandora_updateserver (%$$$) {
}
}
#################################################################################
##########################################################################
## SUB pandora_lastagentcontact (pa_config, timestamp,nombre_agente,os_data, agent_version,interval,dbh)
## Update last contact field in Agent Table
##################################################################################
##########################################################################
sub pandora_lastagentcontact (%$$$$$$) {
my $pa_config= $_[0];
@ -962,10 +963,10 @@ sub pandora_lastagentcontact (%$$$$$$) {
$sag ->finish();
}
#################################################################################
##########################################################################
## SUB pandora_event (pa_config, evento, id_grupo, id_agente)
## Write in internal audit system an entry.
##################################################################################
##########################################################################
sub pandora_event (%$$$$) {
my $pa_config = $_[0];
@ -982,10 +983,10 @@ sub pandora_event (%$$$$) {
$dbh->do($query);
}
#################################################################################
##########################################################################
## SUB pandora_audit (pa_config, escription, name, action, pandora_dbcfg_hash)
## Write in internal audit system an entry.
##################################################################################
##########################################################################
sub pandora_audit (%$$$$) {
my $pa_config = $_[0];
my $desc = $_[1];
@ -1014,10 +1015,10 @@ sub pandora_audit (%$$$$) {
}
}
#################################################################################
##########################################################################
## SUB dame_agente_id (nombre_agente)
## Return agent ID, use "nombre_agente" as name of agent.
##################################################################################
##########################################################################
sub dame_agente_id (%$$) {
my $pa_config = $_[0];
my $nombre_agente = $_[1];
@ -1025,7 +1026,7 @@ sub dame_agente_id (%$$) {
my $id_agente;my @data;
if (defined($nombre_agente)){
# Calculamos el ID del agente haciendo una select por su nombre.
# Calculate agent ID using select by its name
my $query_idag = "select * from tagente where nombre = '$nombre_agente'";
my $s_idag = $dbh->prepare($query_idag);
$s_idag ->execute;
@ -1042,10 +1043,10 @@ sub dame_agente_id (%$$) {
}
}
#################################################################################
##########################################################################
## SUB dame_server_id (pa_config, servername, dbh)
## Return serverID, using "nane" as name of server
##################################################################################
##########################################################################
sub dame_server_id (%$$) {
my $pa_config = $_[0];
my $name = $_[1];
@ -1066,10 +1067,10 @@ sub dame_server_id (%$$) {
return $id_server;
}
#################################################################################
##########################################################################
## SUB give_networkserver_status (id_server)
## Return NETWORK server status given its id
#################################################################################
##########################################################################
sub give_networkserver_status (%$$) {
my $pa_config = $_[0];
@ -1091,10 +1092,10 @@ sub give_networkserver_status (%$$) {
return $status;
}
#################################################################################
##########################################################################
## SUB dame_grupo_agente (id_agente)
## Return id_group of an agent given its id
#################################################################################
##########################################################################
sub dame_grupo_agente (%$$) {
my $pa_config = $_[0];
@ -1103,7 +1104,7 @@ sub dame_grupo_agente (%$$) {
my $id_grupo;
my @data;
# Calculamos el ID del agente haciendo una select por su id
# Calculate agent using select by its id
my $query_idag = "select * from tagente where id_agente = $id_agente";
my $s_idag = $dbh->prepare($query_idag);
$s_idag ->execute;
@ -1116,17 +1117,17 @@ sub dame_grupo_agente (%$$) {
return $id_grupo;
}
#################################################################################
##########################################################################
## SUB dame_comando_alerta (id_alerta)
## Return agent ID, use "nombre_agente" as name of agent.
##################################################################################
##########################################################################
sub dame_comando_alerta (%$$) {
my $pa_config = $_[0];
my $id_alerta = $_[1];
my $dbh = $_[2];
my @data;
# Calculamos el ID del agente haciendo una select por su nombre.
# Calculate agent ID using select by its name
my $query_idag = "select * from talerta where id_alerta = $id_alerta";
my $s_idag = $dbh->prepare($query_idag);
my $comando = "";
@ -1143,10 +1144,10 @@ sub dame_comando_alerta (%$$) {
}
#################################################################################
##########################################################################
## SUB dame_agente_nombre (id_agente)
## Return agent name, given "id_agente"
##################################################################################
##########################################################################
sub dame_agente_nombre (%$$) {
my $pa_config = $_[0];
my $id_agente = $_[1];
@ -1154,7 +1155,7 @@ sub dame_agente_nombre (%$$) {
my $nombre_agente;
my @data;
# Calculamos el ID del agente haciendo una select por su nombre.
# Calculate agent ID using select by its name
my $query_idag = "select * from tagente where id_agente = '$id_agente'";
my $s_idag = $dbh->prepare($query_idag);
$s_idag ->execute;
@ -1168,17 +1169,17 @@ sub dame_agente_nombre (%$$) {
}
#################################################################################
##########################################################################
## SUB dame_modulo_id (nombre_modulo)
## Return module ID, given "nombre_modulo" as module name
##################################################################################
##########################################################################
sub dame_modulo_id (%$$) {
my $pa_config = $_[0];
my $nombre_modulo = $_[1];
my $dbh = $_[2];
my $id_modulo; my @data;
# Calculamos el ID del agente haciendo una select por su nombre.
# Calculate agent ID using select by its name
my $query_idag = "select * from ttipo_modulo where nombre = '$nombre_modulo'";
my $s_idag = $dbh->prepare($query_idag);
$s_idag ->execute;
@ -1195,10 +1196,10 @@ sub dame_modulo_id (%$$) {
}
#################################################################################
##########################################################################
## SUB dame_agente_modulo_id (id_agente, id_tipomodulo, nombre)
## Return agente_modulo ID, from tabla tagente_modulo, given id_agente, id_tipomodulo and name
##################################################################################
##########################################################################
sub dame_agente_modulo_id (%$$$$) {
my $pa_config = $_[0];
my $id_agente = $_[1];
@ -1208,7 +1209,7 @@ sub dame_agente_modulo_id (%$$$$) {
my $id_agentemodulo;
my @data;
# Calculamos el ID del agente haciendo una select por su nombre.
# Calculate agent ID using select by its name
my $query_idag = "select * from tagente_modulo where id_agente = '$id_agente' and id_tipo_modulo = '$id_tipomodulo' and nombre = '$nombre'";
my $s_idag = $dbh->prepare($query_idag);
$s_idag ->execute;
@ -1224,17 +1225,17 @@ sub dame_agente_modulo_id (%$$$$) {
return $id_agentemodulo;
}
#################################################################################
##########################################################################
## SUB dame_nombreagente_agentemodulo (id_agente_modulo)
## Return agent name diven id_agente_modulo
##################################################################################
##########################################################################
sub dame_nombreagente_agentemodulo (%$$) {
my $pa_config = $_[0];
my $id_agentemodulo = $_[1];
my $dbh = $_[2];
my $id_agente; my @data;
# Calculamos el ID del agente haciendo una select por su nombre.
# Calculate agent ID using select by its name
my $query_idag = "select * from tagente_modulo where id_agente_modulo = ".$id_agentemodulo;
my $s_idag = $dbh->prepare($query_idag);
$s_idag ->execute;
@ -1252,17 +1253,17 @@ sub dame_nombreagente_agentemodulo (%$$) {
return $nombre_agente;
}
#################################################################################
##########################################################################
## SUB dame_nombretipomodulo_idtipomodulo (id_tipo_modulo)
## Return name of moduletype given id_tipo_modulo
##################################################################################
##########################################################################
sub dame_nombretipomodulo_idagentemodulo (%$$) {
my $pa_config = $_[0];
my $id_tipomodulo = $_[1];
my $dbh = $_[2];
my @data;
# Calculamos el ID del agente haciendo una select por su nombre.
# Calculate agent ID using select by its name
my $query_idag = "select * from ttipo_modulo where id_tipo = ".$id_tipomodulo;
my $s_idag = $dbh->prepare($query_idag);
$s_idag ->execute;
@ -1275,17 +1276,17 @@ sub dame_nombretipomodulo_idagentemodulo (%$$) {
return $tipo;
}
#################################################################################
##########################################################################
## SUB dame_learnagente (id_agente)
## Return 1 if agent is in learn mode, 0 if not
##################################################################################
##########################################################################
sub dame_learnagente (%$$) {
my $pa_config = $_[0];
my $id_agente = $_[1];
my $dbh = $_[2];
my @data;
# Calculamos el ID del agente haciendo una select por su nombre.
# Calculate agent ID using select by its name
my $query = "select * from tagente where id_agente = ".$id_agente;
my $s_idag = $dbh->prepare($query);
$s_idag ->execute;
@ -1299,17 +1300,17 @@ sub dame_learnagente (%$$) {
}
#################################################################################
##########################################################################
## SUB dame_id_tipo_modulo (id_agente_modulo)
## Return id_tipo of module with id_agente_modulo
##################################################################################
##########################################################################
sub dame_id_tipo_modulo (%$$) {
my $pa_config = $_[0];
my $id_agente_modulo = $_[1];
my $dbh = $_[2];
my $tipo; my @data;
# Calculamos el ID del agente haciendo una select por su nombre.
# Calculate agent ID using select by its name
my $query_idag = "select * from tagente_modulo where id_agente_modulo = ".$id_agente_modulo;
my $s_idag = $dbh->prepare($query_idag);
$s_idag ->execute;
@ -1325,17 +1326,17 @@ sub dame_id_tipo_modulo (%$$) {
return $tipo;
}
#################################################################################
##########################################################################
## SUB dame_intervalo (id_agente)
## Return interval for id_agente
##################################################################################
##########################################################################
sub dame_intervalo (%$$) {
my $pa_config = $_[0];
my $id_agente = $_[1];
my $dbh = $_[2];
my $tipo; my @data;
# Calculamos el ID del agente haciendo una select por su nombre.
# Calculate agent ID using select by its name
my $query_idag = "select * from tagente where id_agente = ".$id_agente;
my $s_idag = $dbh->prepare($query_idag);
$s_idag ->execute;
@ -1349,10 +1350,10 @@ sub dame_intervalo (%$$) {
return $tipo;
}
#################################################################################
##########################################################################
## SUB dame_desactivado (id_agente)
## Return disabled = 1 if disabled, 0 if not disabled
##################################################################################
##########################################################################
sub dame_desactivado (%$$) {
my $pa_config = $_[0];
my $id_agente = $_[1];
@ -1360,7 +1361,7 @@ sub dame_desactivado (%$$) {
my $desactivado;
my $tipo; my @data;
# Calculamos el ID del agente haciendo una select por su nombre.
# Calculate agent ID using select by its name
my $query_idag = "select * from tagente where id_agente = ".$id_agente;
my $s_idag = $dbh->prepare($query_idag);
$s_idag ->execute;
@ -1377,17 +1378,17 @@ sub dame_desactivado (%$$) {
return $desactivado;
}
#################################################################################
##########################################################################
## SUB dame_ultimo_contacto (id_agente)
## Return last_contact for id_agente
##################################################################################
##########################################################################
sub dame_ultimo_contacto (%$$) {
my $pa_config = $_[0];
my $id_agente = $_[1];
my $dbh = $_[2];
my $tipo; my @data;
# Calculamos el ID del agente haciendo una select por su nombre.
# Calculate agent ID using select by its name
my $query_idag = "select * from tagente where id_agente = ".$id_agente;
my $s_idag = $dbh->prepare($query_idag);
$s_idag ->execute;
@ -1400,10 +1401,10 @@ sub dame_ultimo_contacto (%$$) {
return $tipo;
}
#################################################################################
##########################################################################
## SUB crea_agente_modulo(nombre_agente, nombre_tipo_modulo, nombre_modulo)
## create an entry in tagente_modulo
##################################################################################
##########################################################################
sub crea_agente_modulo (%$$$$$$$) {
my $pa_config = $_[0];
my $nombre_agente = $_[1];

View File

@ -1,7 +1,7 @@
#!/usr/bin/perl
##################################################################################
##########################################################################
# Pandora Network Server
##################################################################################
##########################################################################
# Copyright (c) 2004-2006 Sancho Lerena, slerena@gmail.com
# Copyright (c) 2005-2006 Artica Soluciones Tecnologicas S.L
#
@ -16,7 +16,7 @@
# 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.
##################################################################################
##########################################################################
# Includes list
use strict;
@ -72,16 +72,16 @@ while ( 1 ){
#------------------------------------------------------------------------------------
#------------------------------------------------------------------------------------
#------------------------------------------------------------------------------------
#--------------------- Main Perl Code below this line-------------------------------
#--------------------- Main Perl Code below this line-----------------------
#------------------------------------------------------------------------------------
#------------------------------------------------------------------------------------
#------------------------------------------------------------------------------------
##########################################################################################
##########################################################################
# SUB pandora_network_subsystem
# Subsystem to process network modules
# This module runs each X seconds (server threshold) checking for network modules status
##########################################################################################
##########################################################################
sub pandora_network_subsystem {
# Init vars
@ -97,8 +97,8 @@ sub pandora_network_subsystem {
my $max; my $min; my $module_interval;
my $nombre; my $tcp_port; my $tcp_rcv; my $tcp_send; my $snmp_oid;
my $snmp_community; my $ip_target; my $id_module_group;
my $timestamp_viejo; # Almacena el timestamp del campo de la tabla tagente_estado
my $id_agente_estado; # ID de la tabla de tagente_estado (para hacer el update mas fino)
my $timestamp_viejo; # Stores timestamp from tagente_estado table
my $id_agente_estado; # ID from tagente_estado table
my $estado_cambio; # store tagente_estado cambio field
my $estado_estado; # Store tagente_estado estado field
my $agent_name; # Agent name
@ -119,12 +119,12 @@ sub pandora_network_subsystem {
while ( 1 ) {
logger ($pa_config,"Loop in Network Module Subsystem",10);
# For each element
# -Leo un modulo de tipo red (tipo 5, 6 o 7) o categoria grupo 2
# -Leo su ultima entrada en la tabla tagente_modulo
# -si timestamp de tagente_estado + module_interval <= timestamp actual
# ejecuto el modulo, le doy 15 sec y contino.
# si ejecuta bien, grabo datos y estado
# siguiente elemento
# -read net type module (type 5, 6 or 7) or group cathegory 2
# -read its last tagente_modulo table entry
# -if tagente_estado + module_interval timestamp<= present timestamp
# run module, sleep 15 secs. and continue
# if ok, store data and status
# next element
# Calculate ID Agent from a select where module_type (id_tipo_modulo) > 4 (network modules)
# Check for MASTER SERVERS only: check another agents if their servers are gone
@ -248,10 +248,10 @@ sub pandora_network_subsystem {
$dbh->disconnect();
}
##########################################################################################
##########################################################################
# SUB pandora_query_snmp (pa_config, oid, community, target, error, dbh)
# Makes a call to SNMP modules to get a value,
##########################################################################################
##########################################################################
sub pandora_query_snmp {
my $pa_config = $_[0];
my $snmp_oid = $_[1];
@ -300,10 +300,10 @@ sub pandora_query_snmp {
return $output;
}
######################################################################################
##########################################################################
# SUB exec_network_module (many parameters...)
# Execute network module task in separated thread
######################################################################################
##########################################################################
sub exec_network_module {
my $id_agente = $_[0];
my $id_agente_estado = $_[1];
@ -432,12 +432,10 @@ sub exec_network_module {
$module_data = $temp2;
$module_result =0;
} else { # TCP Data numeric (inc or data)
if ($temp2 ne ""){ # COMO OSTIAS PUEDO SABER EN PERL
# EL TIPO DEL CONTENIDO DE UNA VARIABLE
# ODIO EL PUTO PERL !!!
if ($temp2 ne ""){
if ($temp2 =~ /[A-Za-z\.\,\-\/\\\(\)\[\]]/){
$module_result=1; # Pequeña ñapita
$module_data = 0; # Datos invalidos
$module_result=1; # init
$module_data = 0; # invalid data
} else {
$module_data = int($temp2);
$module_result = 0; # Successful

View File

@ -1,7 +1,7 @@
#!/usr/bin/perl
##################################################################################
##########################################################################
# Pandora Data Server
##################################################################################
##########################################################################
# Copyright (c) 2004-2006 Sancho Lerena, slerena@gmail.com
# Copyright (c) 2005-2006 Artica Soluciones Tecnologicas S.L
#
@ -16,7 +16,7 @@
# 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.
##################################################################################
##########################################################################
# Includes list
use strict;
@ -25,13 +25,13 @@ use warnings;
use XML::Simple; # Useful XML functions
use Digest::MD5; # MD5 generation
use Time::Local; # DateTime basic manipulation
use DBI; # DB interface with MySQL
use DBI; # DB interface with MySQL
use Date::Manip; # Needed to manipulate DateTime formats of input, output and compare
use File::Copy; # Needed to manipulate files
use File::Copy; # Needed to manipulate files
use threads;
use threads::shared;
# Librerias / Modulos de pandora
# Pandora Modules
use pandora_config;
use pandora_tools;
use pandora_db;
@ -41,7 +41,7 @@ $| = 1;
my %pa_config;
# Inicio del bucle principal de programa
# Init main loop
pandora_init(\%pa_config,"Pandora Server");
# Read config file for Global variables
@ -65,7 +65,7 @@ pandora_dataserver(\%pa_config);
#------------------------------------------------------------------------------------
#------------------------------------------------------------------------------------
#------------------------------------------------------------------------------------
#--------------------- Main Perl Code below this line-------------------------------
#--------------------- Main Perl Code below this line-----------------------
#------------------------------------------------------------------------------------
#------------------------------------------------------------------------------------
#------------------------------------------------------------------------------------
@ -73,9 +73,9 @@ pandora_dataserver(\%pa_config);
##############################################################################
##########################################################################
# Main loop
##############################################################################
##########################################################################
sub pandora_dataserver {
my $pa_config = $_[0];
@ -99,7 +99,7 @@ sub pandora_dataserver {
$agent_filename = $1;
$file_md5 = "$pa_config->{'incomingdir'}/$agent_filename.checksum";
if (( -e $file_md5 ) or ($pa_config->{'pandora_check'} == 0)){ # If check is disabled, ignore if file_md5 exists
# Comprobamos integridad
# Verify integrity
my $check_result;
$check_result = md5check ($file_data,$file_md5);
if (($pa_config->{'pandora_check'} == 0) || ($check_result == 1)){
@ -142,7 +142,7 @@ sub pandora_dataserver {
unlink ($file_md5);
}
}
} # No existe fichero de checksum, ignoramos el archivo
} # No checksum file, ignore file
}
}
closedir(DIR);
@ -151,10 +151,10 @@ sub pandora_dataserver {
}
} # End of main loop function
#################################################################################
##########################################################################
## SUB pandora_keepalived
## Pandora Keepalive alert daemon subsystem
##################################################################################
##########################################################################
sub pandora_keepalived {
my $pa_config = $_[0];
@ -168,13 +168,13 @@ sub pandora_keepalived {
}
#################################################################################
##########################################################################
## SUB keep_alive_check ()
## Calculate a global keep alive check for agents without data and an alert defined
##################################################################################
##########################################################################
sub keep_alive_check {
# Buscamos si existe una alerta definida para cada item de la tablacombinacion agente/modulo
# Search of any defined alert for any agent/module table entry
my $pa_config = $_[0];
my $dbh = $_[1];
@ -281,11 +281,11 @@ sub keep_alive_check {
$s_idag->finish();
}
#################################################################################
## SUB procesa_datos (par1)
## Procesa un paquete de datos (XML preprocesado)
##################################################################################
## param_1 : Nombre de la estructura contenedora de datos (XML)
##########################################################################
## SUB procesa_datos (param_1)
## Process data packet (XML file)
##########################################################################
## param_1 : XML datafile name
sub procesa_datos {
my $pa_config = $_[0];

View File

@ -1,9 +1,9 @@
#!/usr/bin/perl
##################################################################################
##########################################################################
# Pandora Server. SNMP Console
##################################################################################
##########################################################################
# Copyright (c) 2004-2006 Sancho Lerena, slerena@gmail.com
# Copyright (c) 2005-2006 Artica Soluciones Tecnol<EFBFBD>icas S.L
# Copyright (c) 2005-2006 Artica Soluciones Tecnologicas S.L
#
#This program is free software; you can redistribute it and/or
#modify it under the terms of the GNU General Public License
@ -16,7 +16,7 @@
#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.
##################################################################################
##########################################################################
# Includes list
use strict;
@ -55,10 +55,10 @@ if ( $pa_config{"daemon"} eq "1" ) {
pandora_snmptrapd (\%pa_config);
#################################################################################
##########################################################################
## SUB pandora_snmptrapd
## Pandora SNMP Trap console/daemon subsystem
##################################################################################
##########################################################################
sub pandora_snmptrapd {
my $pa_config = $_[0];
@ -96,7 +96,7 @@ sub pandora_snmptrapd {
}
$logfile_size = (stat($snmp_logfile))[7];
if ($logfile_size < $index_data[1]){ # El tama? del log es ahora mas peq. que la ultima vez que lo leimos -> es uno nuevo
if ($logfile_size < $index_data[1]){ # Log size smaller last time we read it -> new one
unlink ($snmp_logfile.".index");
$index_data[0]=0;
$index_data[1]=0;
@ -169,10 +169,10 @@ sub pandora_snmptrapd {
}
#################################################################################
##########################################################################
## SUB calcula_alerta_snmp($source,$oid,$custom_value,$timestamp);
## Given an SNMP Trap received with this data, execute Alert or not
##################################################################################
##########################################################################
sub calcula_alerta_snmp {
# Parameters passed as arguments
@ -231,14 +231,14 @@ sub calcula_alerta_snmp {
}
if ($alert_fired == 1){ # Exists condition to fire alarm.
# Comprobar que est?por debajo del rango de time_threshold
# Verify if under time_threshold
my $fecha_ultima_alerta = ParseDate($last_fired);
my $fecha_actual = ParseDate( $timestamp );
my $ahora_mysql = &UnixDate("today","%Y-%m-%d %H:%M:%S"); # If we need to update MYSQL last_fired will use $ahora_mysql
my $ahora_mysql = &UnixDate("today","%Y-%m-%d %H:%M:%S"); # If we need to update MYSQL last_fired will use $ahora_mysql
my $err; my $flag;
my $fecha_limite = DateCalc($fecha_ultima_alerta,"+ $time_threshold seconds",\$err);
# Comprobar que est?por encima (sumando esta) del minimo de alertas
# Comprobar que est?por debajo (sumando esta) del m?imo de alertas
# verify if upper min alerts
# Verify if under min alerts
$flag = Date_Cmp($fecha_actual,$fecha_limite);
if ( $flag >= 0 ) { # Out limits !, reset $times_fired, but do not write to
# database until a real alarm was fired

View File

@ -1,9 +1,9 @@
package pandora_tools;
##################################################################################
##########################################################################
# Pandora Tools Package
##################################################################################
##########################################################################
# Copyright (c) 2004-2006 Sancho Lerena, slerena@gmail.com
# Copyright (c) 2005-2006 Artica Soluciones Tecnológicas S.L
# Copyright (c) 2005-2006 Artica Soluciones Tecnologicas S.L
#
#This program is free software; you can redistribute it and/or
#modify it under the terms of the GNU General Public License
@ -16,7 +16,7 @@ package pandora_tools;
#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.
##################################################################################
##########################################################################
use warnings;
use Time::Local;
@ -37,10 +37,10 @@ our @EXPORT = qw( daemonize
);
##########################################################################################
##########################################################################
# Sub daemonize ()
# Put program in background (for daemon mode)
##########################################################################################
##########################################################################
sub daemonize {
chdir '/tmp' or die "Can't chdir to /tmp: $!";
@ -54,14 +54,14 @@ sub daemonize {
}
# ----------------------------------------+
# Otras funciones generales de Pandora |
# ----------------------------------------+
# -------------------------------------------+
# Pandora other General functions |
# -------------------------------------------+
#################################################################################
##########################################################################
# SUB is_numeric
# Return TRUE if given argument is numeric
#################################################################################
##########################################################################
sub getnum {
use POSIX qw(strtod);
@ -79,12 +79,12 @@ sub getnum {
sub is_numeric { defined getnum($_[0]) }
#################################################################################
# SUB md5check (par1, par2)
# Comprobacion MD5 del archivo
#################################################################################
# param_1 : Nombre de archivo datos
# param_2 : Nombre de archivo con MD5
##########################################################################
# SUB md5check (param_1, param_2)
# Verify MD5 file .checksum
##########################################################################
# param_1 : Name of data file
# param_2 : Name of md5 file
sub md5check {
my $buf;
@ -115,12 +115,12 @@ sub md5check {
}
}
#################################################################################
# SUB logger (pa_config, par1, par2)
# Vuelca informacion a un archivo (para hacer log)
#################################################################################
# param_1 : Nombre de archivo datos
# param_2 : Datos
##########################################################################
# SUB logger (pa_config, param_1, param_2)
# Log to file
##########################################################################
# param_1 : Data file
# param_2 : Data
sub logger {
my $pa_config = $_[0];
@ -146,9 +146,9 @@ sub logger {
}
}
##############################################################################
##########################################################################
# limpia_cadena (string) - Purge a string for any forbidden characters (esc, etc)
##############################################################################
##########################################################################
sub limpia_cadena {
my $micadena;
$micadena = $_[0];
@ -157,12 +157,12 @@ sub limpia_cadena {
return $micadena;
}
##############################################################################
##########################################################################
# sub float_equal (num1, num2, decimals)
# This function make possible to compare two float numbers, using only x decimals
# in comparation.
# Taken from Perl Cookbook, O'Reilly. Thanks, guys.
##############################################################################
##########################################################################
sub float_equal {
my ($A, $B, $dp) = @_;
return sprintf("%.${dp}g", $A) eq sprintf("%.${dp}g", $B);