From c2da204b720bf804e6e03818c471164110630927 Mon Sep 17 00:00:00 2001 From: slerena Date: Wed, 20 Feb 2013 20:31:50 +0000 Subject: [PATCH] 2013-02-20 Sancho Lerena * lib/PandoraFMS/Core.pm: Fixed problem with SNMP alerts: they defined custom fields on it's own version of the alert template, and actions was overwriting it's information, so in the case of snmp alerts, template information has more priority than action. git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@7692 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f --- pandora_server/ChangeLog | 7 ++++ pandora_server/lib/PandoraFMS/Core.pm | 48 ++++++++++++++++----------- 2 files changed, 36 insertions(+), 19 deletions(-) diff --git a/pandora_server/ChangeLog b/pandora_server/ChangeLog index 0c7f991929..faa4b52228 100644 --- a/pandora_server/ChangeLog +++ b/pandora_server/ChangeLog @@ -1,3 +1,10 @@ +2013-02-20 Sancho Lerena + + * lib/PandoraFMS/Core.pm: Fixed problem with SNMP alerts: they + defined custom fields on it's own version of the alert template, + and actions was overwriting it's information, so in the case + of snmp alerts, template information has more priority than action. + 2013-02-18 Miguel de Dios * util/pandora_xml_stress.pl: fixed the output the string module diff --git a/pandora_server/lib/PandoraFMS/Core.pm b/pandora_server/lib/PandoraFMS/Core.pm index 1595f93c9a..f95fa89011 100644 --- a/pandora_server/lib/PandoraFMS/Core.pm +++ b/pandora_server/lib/PandoraFMS/Core.pm @@ -699,17 +699,33 @@ sub pandora_execute_action ($$$$$$$$$;$) { logger($pa_config, "Executing action '" . safe_output($action->{'name'}) . "' for alert '". safe_output($alert->{'name'}) . "' agent '" . (defined ($agent) ? safe_output($agent->{'nombre'}) : 'N/A') . "'.", 10); my $clean_name = safe_output($action->{'name'}); - - my $field1 = $action->{'field1'} ne "" ? $action->{'field1'} : $alert->{'field1'}; - my $field2 = $action->{'field2'} ne "" ? $action->{'field2'} : $alert->{'field2'}; - my $field3 = $action->{'field3'} ne "" ? $action->{'field3'} : $alert->{'field3'}; - my $field4 = $action->{'field4'} ne "" ? $action->{'field4'} : $alert->{'field4'}; - my $field5 = $action->{'field5'} ne "" ? $action->{'field5'} : $alert->{'field5'}; - my $field6 = $action->{'field6'} ne "" ? $action->{'field6'} : $alert->{'field6'}; - my $field7 = $action->{'field7'} ne "" ? $action->{'field7'} : $alert->{'field7'}; - my $field8 = $action->{'field8'} ne "" ? $action->{'field8'} : $alert->{'field8'}; - my $field9 = $action->{'field9'} ne "" ? $action->{'field9'} : $alert->{'field9'}; - my $field10 = $action->{'field10'} ne "" ? $action->{'field10'} : $alert->{'field10'}; + + my ($field1, $field2, $field3, $field4, $field5, $field6, $field7, $field8, $field9, $field10); + + if (!defined($alert->{'snmp_alert'})){ + # Regular alerts + $field1 = $action->{'field1'} ne "" ? $action->{'field1'} : $alert->{'field1'}; + $field2 = $action->{'field2'} ne "" ? $action->{'field2'} : $alert->{'field2'}; + $field3 = $action->{'field3'} ne "" ? $action->{'field3'} : $alert->{'field3'}; + $field4 = $action->{'field4'} ne "" ? $action->{'field4'} : $alert->{'field4'}; + $field5 = $action->{'field5'} ne "" ? $action->{'field5'} : $alert->{'field5'}; + $field6 = $action->{'field6'} ne "" ? $action->{'field6'} : $alert->{'field6'}; + $field7 = $action->{'field7'} ne "" ? $action->{'field7'} : $alert->{'field7'}; + $field8 = $action->{'field8'} ne "" ? $action->{'field8'} : $alert->{'field8'}; + $field9 = $action->{'field9'} ne "" ? $action->{'field9'} : $alert->{'field9'}; + $field10 = $action->{'field10'} ne "" ? $action->{'field10'} : $alert->{'field10'}; + } else { + $field1 = $alert->{'field1'} ne "" ? $alert->{'field1'} : $action->{'field1'}; + $field2 = $alert->{'field2'} ne "" ? $alert->{'field2'} : $action->{'field2'}; + $field3 = $alert->{'field3'} ne "" ? $alert->{'field3'} : $action->{'field3'}; + $field4 = $action->{'field4'} ne "" ? $action->{'field4'} : $alert->{'field4'}; + $field5 = $action->{'field5'} ne "" ? $action->{'field5'} : $alert->{'field5'}; + $field6 = $action->{'field6'} ne "" ? $action->{'field6'} : $alert->{'field6'}; + $field7 = $action->{'field7'} ne "" ? $action->{'field7'} : $alert->{'field7'}; + $field8 = $action->{'field8'} ne "" ? $action->{'field8'} : $alert->{'field8'}; + $field9 = $action->{'field9'} ne "" ? $action->{'field9'} : $alert->{'field9'}; + $field10 = $action->{'field10'} ne "" ? $action->{'field10'} : $alert->{'field10'}; + } # Recovery fields, thanks to Kato Atsushi if ($alert_mode == 0){ @@ -2672,8 +2688,6 @@ sub pandora_evaluate_snmp_alerts ($$$$$$$$$) { # Find those that apply to the given SNMP trap foreach my $alert (@snmp_alerts) { - logger($pa_config, "Evaluating SNMP alert ID " . $alert->{'id_as'} . ".", 10); - my $alert_data = ''; my ($times_fired, $internal_counter, $alert_type) = ($alert->{'times_fired'}, $alert->{'internal_counter'}, $alert->{'alert_type'}); @@ -2724,11 +2738,6 @@ sub pandora_evaluate_snmp_alerts ($$$$$$$$$) { # No match next if ($trap_custom_oid !~ m/^$custom_oid$/i); - # Match! - $macros{'_snmp_f1_'} = $1 if (defined($1)); - $macros{'_snmp_f2_'} = $2 if (defined($2)); - $macros{'_snmp_f3_'} = $3 if (defined($3)); - $alert_data .= " Custom: $trap_custom_oid"; } @@ -2755,7 +2764,7 @@ sub pandora_evaluate_snmp_alerts ($$$$$$$$$) { $alert->{'al_field1'} = subst_alert_macros ($alert->{'al_field1'}, \%macros); $alert->{'al_field2'} = subst_alert_macros ($alert->{'al_field2'}, \%macros); $alert->{'al_field3'} = subst_alert_macros ($alert->{'al_field3'}, \%macros); - + # Check time threshold $alert->{'last_fired'} = '1970-01-01 00:00:00' unless defined ($alert->{'last_fired'}); return unless ($alert->{'last_fired'} =~ /(\d+)\-(\d+)\-(\d+) +(\d+):(\d+):(\d+)/); @@ -2773,6 +2782,7 @@ sub pandora_evaluate_snmp_alerts ($$$$$$$$$) { ($times_fired++, $internal_counter++); my %alert = ( + 'snmp_alert' => 1, 'name' => '', 'agent' => 'N/A', 'alert_data' => 'N/A',