2010-08-10 Ramon Novoa <rnovoa@artica.es>

* lib/PandoraFMS/SNMPServer.pm: Added support for SNMP filters.




git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@3124 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
This commit is contained in:
ramonn 2010-08-10 17:58:36 +00:00
parent e58d4e4fbf
commit 5e6aed9fe8
2 changed files with 26 additions and 2 deletions

View File

@ -1,3 +1,7 @@
2010-08-10 Ramon Novoa <rnovoa@artica.es>
* lib/PandoraFMS/SNMPServer.pm: Added support for SNMP filters.
2010-08-10 Sancho Lerena <slerena@artica.es> 2010-08-10 Sancho Lerena <slerena@artica.es>
* lib/PandoraFMS/Config.pm: Updated build and development version. * lib/PandoraFMS/Config.pm: Updated build and development version.

View File

@ -114,6 +114,7 @@ sub pandora_snmptrapd {
while (my $line = <SNMPLOGFILE>) { while (my $line = <SNMPLOGFILE>) {
$last_line++; $last_line++;
$last_size = (stat ($log_file))[7]; $last_size = (stat ($log_file))[7];
chomp ($line);
# Update index file # Update index file
open INDEXFILE, '>' . $idx_file; open INDEXFILE, '>' . $idx_file;
@ -124,7 +125,7 @@ sub pandora_snmptrapd {
next if ($line =~ m/NET-SNMP/); next if ($line =~ m/NET-SNMP/);
# Unknown data # Unknown data
next if ($line !~ m/\[\*\*\]/); next if ($line !~ m/\[\*\*\]/ || matches_filter ($dbh, $pa_config, $line) == 1);
logger($pa_config, "Reading trap '$line'", 10); logger($pa_config, "Reading trap '$line'", 10);
my ($date, $time, $source, $oid, $type, $type_desc, $value, $data) = ('', '', '', '', '', '', '', ''); my ($date, $time, $source, $oid, $type, $type_desc, $value, $data) = ('', '', '', '', '', '', '', '');
@ -173,5 +174,24 @@ sub stop () {
$self->SUPER::stop (); $self->SUPER::stop ();
} }
########################################################################################
# Returns 1 if the given string matches any SNMP filter, 0 otherwise.
########################################################################################
sub matches_filter ($$$) {
my ($dbh, $pa_config, $string) = @_;
# Get filters
my @filters = get_db_rows ($dbh, 'SELECT filter FROM tsnmp_filter');
foreach my $filter (@filters) {
my $regexp = $filter->{'filter'};
if ($string =~ m/$regexp/i) {
logger($pa_config, "Trap '$string' matches filter '$regexp'. Discarding...", 10);
return 1;
}
}
return 0;
}
1; 1;
__END__ __END__