2007-05-24 Sancho Lerena <slerena@artica.es>

* conf/pandora_server.conf: Added support for dbname option.

        * pandora_snmpconsole: Version and bash header updated.

        * bin/pandora_config.pm: Added support for dbname option. Added
        some default options for DB.

        * bin/pandora_db.pm: Fixed stupid bug in alert execution.  Added
        support for dbname option and other minor fixes.

        * bin/pandora_server.pl,
        bin/pandora_network.pl,
        bin/pandora_snmpconsole.pl,
        bin/pandora_recon.pl:  Added support for dbname option.

        * pandora_server: Version update



git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@468 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
This commit is contained in:
slerena 2007-05-24 21:14:06 +00:00
parent 45a4ba6916
commit 5a7cc6bb9f
10 changed files with 79 additions and 44 deletions

View File

@ -1,3 +1,22 @@
2007-05-24 Sancho Lerena <slerena@artica.es>
* conf/pandora_server.conf: Added support for dbname option.
* pandora_snmpconsole: Version and bash header updated.
* bin/pandora_config.pm: Added support for dbname option. Added
some default options for DB.
* bin/pandora_db.pm: Fixed stupid bug in alert execution. Added
support for dbname option and other minor fixes.
* bin/pandora_server.pl,
bin/pandora_network.pl,
bin/pandora_snmpconsole.pl,
bin/pandora_recon.pl: Added support for dbname option.
* pandora_server: Version update
2007-05-21 Sancho Lerena <slerena@artica.es>
* pandora_network: Version banner update.

View File

@ -118,9 +118,10 @@ sub pandora_loadconfig {
# Default values
$pa_config->{'version'} = $pandora_version;
$pa_config->{'build'} = $pandora_build;
$pa_config->{"dbuser"} ="";
$pa_config->{"dbpass"} = "";
$pa_config->{"dbhost"} = "";
$pa_config->{"dbuser"} ="pandora";
$pa_config->{"dbpass"} = "pandora";
$pa_config->{"dbhost"} = "localhost";
$pa_config->{"dbname"} = "pandora";
$pa_config->{"basepath"}=$pa_config->{'pandora_path'}; # Compatibility with Pandora 1.1
$pa_config->{"incomingdir"}=$pa_config->{'pandora_path'}."/data_in";
$pa_config->{"server_threshold"}=30;
@ -205,6 +206,7 @@ sub pandora_loadconfig {
$pa_config->{"errorlogfile"} = $tbuf;
}
}
elsif ($parametro =~ m/^dbname\s(.*)/i) { $pa_config->{'dbname'}= $1; }
elsif ($parametro =~ m/^dbuser\s(.*)/i) { $pa_config->{'dbuser'}= $1; }
elsif ($parametro =~ m/^dbpass\s(.*)/i) { $pa_config->{'dbpass'}= $1; }
elsif ($parametro =~ m/^dbhost\s(.*)/i) { $pa_config->{'dbhost'}= $1; }
@ -291,7 +293,7 @@ sub pandora_loadconfig {
my $dbh;
# Check valid Database variables and update server status
eval {
$dbh = DBI->connect("DBI:mysql:pandora:$pa_config->{'dbhost'}:3306", $pa_config->{'dbuser'}, $pa_config->{'dbpass'}, { RaiseError => 1, AutoCommit => 1 });
$dbh = DBI->connect("DBI:mysql:$pa_config->{'dbname'}:$pa_config->{'dbhost'}:3306", $pa_config->{'dbuser'}, $pa_config->{'dbpass'}, { RaiseError => 1, AutoCommit => 1 });
pandora_updateserver ($pa_config, $pa_config->{'servername'},1, $opmode, $dbh); # Alive status
};
if ($@) {

View File

@ -267,7 +267,7 @@ sub execute_alert (%$$$$$$$$$$) {
my @datarow;
if ($idag->rows != 0) {
while (@datarow = $idag->fetchrow_array()) {
$comand = $datarow[2];
$command = $datarow[2];
$alert_name = $datarow[1];
}
}
@ -276,26 +276,26 @@ sub execute_alert (%$$$$$$$$$$) {
logger($pa_config, "Alert ($alert_name) TRIGGERED for $agent",2);
if ($id_alert != 3){ # id_alerta 3 is reserved for internal audit system
$comand =~ s/_field1_/"$field1"/ig;
$comand =~ s/_field2_/"$field2"/ig;
$comand =~ s/_field3_/"$field3"/ig;
$comand=~ s/_agent_/$agent/ig;
$comand =~ s/_timestamp_/$timestamp/ig;
$comand =~ s/_data_/$data/ig;
$command =~ s/_field1_/"$field1"/ig;
$command =~ s/_field2_/"$field2"/ig;
$command =~ s/_field3_/"$field3"/ig;
$command=~ s/_agent_/$agent/ig;
$command =~ s/_timestamp_/$timestamp/ig;
$command =~ s/_data_/$data/ig;
# Clean up some "tricky" characters
$comand =~ s/&gt;/>/g;
$command =~ s/&gt;/>/g;
# EXECUTING COMMAND !!!
eval {
my $exit_value = system ($comand);
my $exit_value = system ($command);
$exit_value = $? >> 8; # Shift 8 bits to get a "classic" errorlevel
if ($exit_value != 0) {
logger($pa_config, "Executed command for triggered alert '$alert_name' had errors (errorlevel =! 0) ",1);
logger($pa_config, "Executed command was $comand ",2);
logger($pa_config, "Executed command was $command ",5);
}
};
if ($@){
logger($pa_config, "WARNING: Alert command don't retun from execution. ( $comand )", 0 );
logger($pa_config, "ERROR Code: $@",0);
logger($pa_config, "WARNING: Alert command don't retun from execution. ( $command )", 0 );
logger($pa_config, "ERROR Code: $@",1);
}
} else { # id_alerta = 3, is a internal system audit
logger($pa_config, "Internal audit lauch for agent name $agent",3);
@ -776,6 +776,9 @@ sub pandora_writedata (%$$$$$$$$$$){
# much more faster to do comparations...
my $utimestamp; # integer version of timestamp
$utimestamp = &UnixDate($timestamp,"%s"); # convert from human to integer
if (! defined($utimestamp)){ # If problems getting timestamp data
$utimestamp = &UnixDate("today","%s");
}
my $needscreate = 0;
# take max and min values for this id_agente_module
@ -1074,7 +1077,7 @@ sub pandora_audit (%$$$$) {
# In startup audit, DBH not passed
if (! defined($dbh)){
$local_dbh = 1;
$dbh = DBI->connect("DBI:mysql:pandora:$pa_config->{'dbhost'}:3306", $pa_config->{'dbuser'}, $pa_config->{'dbpass'}, { RaiseError => 1, AutoCommit => 1 });
$dbh = DBI->connect("DBI:mysql:$pa_config->{'dbname'}:$pa_config->{'dbhost'}:3306", $pa_config->{'dbuser'}, $pa_config->{'dbpass'}, { RaiseError => 1, AutoCommit => 1 });
}
my $timestamp = &UnixDate("today","%Y-%m-%d %H:%M:%S");
my $utimestamp; # integer version of timestamp

View File

@ -83,7 +83,8 @@ print " [*] Threads loaded and running \n";
# Last thread is the main process
my $dbhost = $pa_config{'dbhost'};
my $dbh = DBI->connect("DBI:mysql:pandora:$dbhost:3306", $pa_config{'dbuser'}, $pa_config{'dbpass'}, { RaiseError => 1, AutoCommit => 1 });
my $dbname = $pa_config{'dbname'};
my $dbh = DBI->connect("DBI:mysql:$dbname:$dbhost:3306", $pa_config{'dbuser'}, $pa_config{'dbpass'}, { RaiseError => 1, AutoCommit => 1 });
while (1) {
pandora_serverkeepaliver (\%pa_config, 1, $dbh);
@ -131,7 +132,7 @@ sub pandora_network_subsystem {
# SNMP DATA, SNMP DATA_STRING
my $nettypedesc;
# Connect ONCE to Database, we pass DBI handler to all subprocess.
my $dbh = DBI->connect("DBI:mysql:pandora:$pa_config->{'dbhost'}:3306", $pa_config->{'dbuser'}, $pa_config->{'dbpass'}, { RaiseError => 1, AutoCommit => 1 });
my $dbh = DBI->connect("DBI:mysql:$pa_config->{'dbname'}:$pa_config->{'dbhost'}:3306", $pa_config->{'dbuser'}, $pa_config->{'dbpass'}, { RaiseError => 1, AutoCommit => 1 });
my $id_agente;
my $id_agente_modulo;

View File

@ -56,7 +56,8 @@ my $pa_config = \%pa_config;
my $dbhost = $pa_config->{'dbhost'};
my $dbuser = $pa_config->{'dbuser'};
my $dbpass = $pa_config->{'dbpass'};
my $dbh = DBI->connect("DBI:mysql:pandora:$dbhost:3306", $dbuser, $dbpass, { RaiseError => 1, AutoCommit => 1 });
my $dbname = $pa_config->{'dbname'};
my $dbh = DBI->connect("DBI:mysql:$dbname:$dbhost:3306", $dbuser, $dbpass, { RaiseError => 1, AutoCommit => 1 });
# Daemonize of configured
if ( $pa_config{"daemon"} eq "1" ) {
@ -92,7 +93,7 @@ while ( 1 ){
sub pandora_recon_subsystem {
# Init vars
my $pa_config = $_[0];
my $dbh = DBI->connect("DBI:mysql:pandora:$pa_config->{'dbhost'}:3306", $pa_config->{'dbuser'}, $pa_config->{'dbpass'}, { RaiseError => 1, AutoCommit => 1 });
my $dbh = DBI->connect("DBI:mysql:$pa_config->{'dbname'}:$pa_config->{'dbhost'}:3306", $pa_config->{'dbuser'}, $pa_config->{'dbpass'}, { RaiseError => 1, AutoCommit => 1 });
my $server_id = dame_server_id($pa_config, $pa_config->{'servername'}."_Recon", $dbh);
my $query_sql; # for use in SQL
my $exec_sql; # for use in SQL
@ -136,7 +137,7 @@ sub pandora_exec_task {
my $query_sql; # for use in SQL
my $exec_sql; # for use in SQL
my @sql_data; # for use in SQL
my $dbh = DBI->connect("DBI:mysql:pandora:$pa_config->{'dbhost'}:3306", $pa_config->{'dbuser'}, $pa_config->{'dbpass'}, { RaiseError => 1, AutoCommit => 1 });
my $dbh = DBI->connect("DBI:mysql:$pa_config->{'dbname'}:$pa_config->{'dbhost'}:3306", $pa_config->{'dbuser'}, $pa_config->{'dbpass'}, { RaiseError => 1, AutoCommit => 1 });
$query_sql = "SELECT * FROM trecon_task WHERE id_rt = $id_task";
$exec_sql = $dbh->prepare($query_sql);

View File

@ -71,7 +71,7 @@ sub pandora_dataserver {
my @file_list;
my $onefile; # Each item of incoming directory
my $agent_filename;
my $dbh = DBI->connect("DBI:mysql:pandora:$pa_config->{'dbhost'}:3306",$pa_config->{"dbuser"}, $pa_config->{"dbpass"},{ RaiseError => 1, AutoCommit => 1 });
my $dbh = DBI->connect("DBI:mysql:$pa_config->{'dbname'}:$pa_config->{'dbhost'}:3306",$pa_config->{"dbuser"}, $pa_config->{"dbpass"},{ RaiseError => 1, AutoCommit => 1 });
while ( 1 ) { # Pandora module processor main loop
opendir(DIR, $pa_config->{'incomingdir'} ) or die "[FATAL] Cannot open Incoming data directory at $pa_config->{'incomingdir'}: $!";
@ -148,7 +148,7 @@ sub pandora_dataserver {
sub pandora_keepalived {
my $pa_config = $_[0];
my $dbh = DBI->connect("DBI:mysql:pandora:$pa_config->{'dbhost'}:3306",$pa_config->{"dbuser"}, $pa_config->{"dbpass"},{ RaiseError => 1, AutoCommit => 1 });
my $dbh = DBI->connect("DBI:mysql:$pa_config->{'dbname'}:$pa_config->{'dbhost'}:3306",$pa_config->{"dbuser"}, $pa_config->{"dbpass"},{ RaiseError => 1, AutoCommit => 1 });
while ( 1 ){
sleep $pa_config->{"server_threshold"};
threads->yield;
@ -305,12 +305,17 @@ sub procesa_datos {
$interval = $datos->{'interval'};
$os_version = $datos->{'os_version'};
# Set default interval if not defined in agent (This is very very odd whatever!).
if (!defined($interval)){
$interval = 300;
}
# Check for parameteres, not all version agents gives the same parameters !
if (length($interval) == 0){
$interval = -1; # No update for interval !
}
if (length($os_version) == 0){
if ((!defined ($os_version)) || (length($os_version) == 0)){
$os_version = "N/A";
}

View File

@ -110,7 +110,7 @@ sub pandora_snmptrapd {
}
}
# open database, only ONCE. We pass reference to DBI handler ($dbh) to all subprocess
my $dbh = DBI->connect("DBI:mysql:pandora:$pa_config->{'dbhost'}:3306",$pa_config->{'dbuser'}, $pa_config->{'dbpass'}, { RaiseError => 1, AutoCommit => 1 });
my $dbh = DBI->connect("DBI:mysql:$pa_config->{'dbname'}:$pa_config->{'dbhost'}:3306",$pa_config->{'dbuser'}, $pa_config->{'dbpass'}, { RaiseError => 1, AutoCommit => 1 });
# Main loop for reading file
while ( 1 ){

View File

@ -6,7 +6,7 @@
# if not given, it takes localhost. It's preferable to setup one
# because machine name could change by some reason.
#servername
servername endor
# incomingdir: Defines directory where incoming data packets are stored
# You could set directory relative to base path or absolute, starting with /
@ -23,9 +23,13 @@ log_file /var/log/pandora_server.log
errorlog_file /var/log/pandora_server.error
# dbname: Database name (pandora by default
dbname pandora13
# dbuser: Database user name (pandora by default)
dbuser root
dbuser pandora
# daemon: Runs in daemon mode (background) if 1, if 0 runs in foreground
# this could be setup on command line with -D option
@ -34,7 +38,7 @@ dbuser root
# dbpass: Database password
dbpass none
dbpass pandora
# dbhost: Database hostname or IP address
@ -43,11 +47,11 @@ dbhost localhost
# verbosity: level of detail on errors/messages (0 default, 1 verbose, 2 debug.... 10 noisy)
# -v in command line (verbose) or -d (debug)
verbosity 10
verbosity 1
# Alert threshold
alert_threshold 60
alert_threshold 45
# Master Server, 1 if master server (normal mode), 0 for slave mode (slave in multi-server setup)
@ -76,13 +80,13 @@ reconserver 1
# Network timeout (in seconds) for timeout in network connections for Network agents
network_timeout 5
network_timeout 8
# Server keepalive (in seconds)
server_keepalive 30
server_keepalive 50
# Server Threshold: defines number of seconds of main loop (in sec)
server_threshold 10
server_threshold 15

View File

@ -2,7 +2,7 @@
# Pandora Data Server startup script
# Sancho Lerena, <slerena@gmail.com>
# Linux Version (generic)
# v1.2 (Ene/2006)
# v1.3 (May/2006)
# Configurable path and filenames
PANDORA_HOME="/usr/share/pandora_server"

View File

@ -1,8 +1,8 @@
#!/bin/sh
#!/bin/bash
# Startup script for Pandora SNMP Console
# Sancho Lerena, <slerena@gmail.com>
# Linux Version(generico)
# v1.2 (Ene/2006)
# Linux Version(generic)
# v1.3 (May/2006)
# Compatible with NetSNMP 5.1 or higher