Merge branch '1351-AND-filters-added-to-snmp-filters-(so-much-wow)-dev' into 'develop'
1351 and filters added to snmp filters (so much wow) dev See merge request artica/pandorafms!978
This commit is contained in:
commit
89c08ede12
|
@ -28,6 +28,7 @@ $update_filter = (int) get_parameter ('update_filter', -2);
|
|||
$delete_filter = (int) get_parameter ('delete_filter', -1);
|
||||
$description = (string) get_parameter ('description', '');
|
||||
$filter = (string) get_parameter ('filter', '');
|
||||
$index_post = (int) get_parameter('index_post', 0);
|
||||
|
||||
// Create/update header
|
||||
if ($edit_filter > -2) {
|
||||
|
@ -44,9 +45,35 @@ else {// Overview header
|
|||
|
||||
// Create/update filter
|
||||
if ($update_filter > -2) {
|
||||
// UPDATE
|
||||
if ($update_filter > -1) {
|
||||
$values = array('description' => $description, 'filter' => $filter);
|
||||
$result = db_process_sql_update('tsnmp_filter', $values, array('id_snmp_filter' => $update_filter));
|
||||
$new_unified_id = (db_get_value_sql("SELECT unified_filters_id FROM tsnmp_filter WHERE id_snmp_filter = " . $update_filter));
|
||||
$elements = get_parameter('elements', array());
|
||||
|
||||
$elements = explode(",", $elements);
|
||||
foreach ($elements as $e) {
|
||||
$filter = get_parameter('filter_' . $e);
|
||||
$values = array('description' => $description, 'filter' => $filter, 'unified_filters_id' => $new_unified_id);
|
||||
$result = db_process_sql_update('tsnmp_filter', $values, array('id_snmp_filter' => $e));
|
||||
}
|
||||
if (count($elements) == 1) {
|
||||
$new_unified_id = (db_get_value_sql("SELECT MAX(unified_filters_id) FROM tsnmp_filter")) + 1;
|
||||
|
||||
$filter = get_parameter('filter_' . $elements[0]);
|
||||
$values = array('description' => $description, 'filter' => $filter, 'unified_filters_id' => $new_unified_id);
|
||||
$result = db_process_sql_update('tsnmp_filter', $values, array('id_snmp_filter' => $elements[0]));
|
||||
}
|
||||
for ($i = 1; $i < $index_post; $i++) {
|
||||
$filter = get_parameter('filter_' . $i);
|
||||
if ($filter != "") {
|
||||
$values = array(
|
||||
'description' => $description,
|
||||
'filter' => $filter,
|
||||
'unified_filters_id' => $new_unified_id);
|
||||
$result = db_process_sql_insert('tsnmp_filter', $values);
|
||||
}
|
||||
}
|
||||
|
||||
if ($result === false) {
|
||||
ui_print_error_message (__('There was a problem updating the filter'));
|
||||
}
|
||||
|
@ -54,11 +81,29 @@ if ($update_filter > -2) {
|
|||
ui_print_success_message (__('Successfully updated'));
|
||||
}
|
||||
}
|
||||
// CREATE
|
||||
else {
|
||||
$new_unified_id = (db_get_value_sql("SELECT MAX(unified_filters_id) FROM tsnmp_filter")) + 1;
|
||||
|
||||
if ($index_post == 1) {
|
||||
$filter = get_parameter('filter_0');
|
||||
$values = array(
|
||||
'description' => $description,
|
||||
'filter' => $filter);
|
||||
'filter' => $filter,
|
||||
'unified_filters_id' => 0);
|
||||
$result = db_process_sql_insert('tsnmp_filter', $values);
|
||||
}
|
||||
else {
|
||||
for ($i = 0; $i < $index_post; $i++) {
|
||||
$filter = get_parameter('filter_' . $i);
|
||||
$values = array(
|
||||
'description' => $description,
|
||||
'filter' => $filter,
|
||||
'unified_filters_id' => $new_unified_id);
|
||||
$result = db_process_sql_insert('tsnmp_filter', $values);
|
||||
}
|
||||
}
|
||||
|
||||
if ($result === false) {
|
||||
ui_print_error_message (__('There was a problem creating the filter'));
|
||||
}
|
||||
|
@ -68,7 +113,15 @@ if ($update_filter > -2) {
|
|||
}
|
||||
}
|
||||
else if ($delete_filter > -1) { // Delete
|
||||
$unified_id_to_delete = (db_get_value_sql("SELECT unified_filters_id FROM tsnmp_filter WHERE id_snmp_filter = " . $delete_filter));
|
||||
|
||||
if ($unified_id_to_delete == 0) {
|
||||
$result = db_process_sql_delete('tsnmp_filter', array('id_snmp_filter' => $delete_filter));
|
||||
}
|
||||
else {
|
||||
$result = db_process_sql_delete('tsnmp_filter', array('unified_filters_id' => $unified_id_to_delete));
|
||||
}
|
||||
|
||||
if ($result === false) {
|
||||
ui_print_error_message (__('There was a problem deleting the filter'));
|
||||
}
|
||||
|
@ -88,19 +141,50 @@ if ($edit_filter > -1) {
|
|||
|
||||
// Create/update form
|
||||
if ($edit_filter > -2) {
|
||||
$index = $index_post;
|
||||
$table->data = array ();
|
||||
$table->id = 'filter_table';
|
||||
$table->width = '100%';
|
||||
$table->class = 'databox filters';
|
||||
$table->data[0][0] = __('Description');
|
||||
$table->data[0][1] = html_print_input_text ('description', $description, '', 60, 100, true);
|
||||
$table->data[1][0] = __('Filter');
|
||||
$table->data[1][1] = html_print_input_text ('filter', $filter, '', 60, 100, true);
|
||||
if ($edit_filter > -1) {
|
||||
$filters = db_get_all_rows_sql("SELECT * FROM tsnmp_filter WHERE unified_filters_id = (SELECT unified_filters_id FROM tsnmp_filter WHERE id_snmp_filter = " . $edit_filter . ")");
|
||||
$j = 1;
|
||||
foreach ($filters as $f) {
|
||||
if ($j != 1) {
|
||||
$table->data[$j][0] = "";
|
||||
}
|
||||
$table->data[$j][1] = html_print_input_text ('filter_' . $f['id_snmp_filter'], $f['filter'], '', 60, 100, true);
|
||||
if ($j == 1) {
|
||||
$table->data[$j][1] .= ui_print_help_tip (__("This field contains a substring, could be part of a IP address, a numeric OID, or a plain substring") . SEPARATOR_COLUMN, true);
|
||||
}
|
||||
else {
|
||||
$table->data[$j][1] .= html_print_image('images/cross.png', true, array('id' => 'delete_filter_' . $f['id_snmp_filter'], 'alt' => __('Click to add new filter'), 'title' => __('Click to add new filter')));
|
||||
}
|
||||
$j++;
|
||||
$index++;
|
||||
}
|
||||
}
|
||||
else {
|
||||
$table->data[1][1] = html_print_input_text ('filter_' . $index, $filter, '', 60, 100, true);
|
||||
$table->data[1][1] .= ui_print_help_tip (__("This field contains a substring, could be part of a IP address, a numeric OID, or a plain substring") . SEPARATOR_COLUMN, true);
|
||||
|
||||
}
|
||||
$index++;
|
||||
echo '<form action="index.php?sec=snmpconsole&sec2=godmode/snmpconsole/snmp_filters" method="post">';
|
||||
html_print_input_hidden ('update_filter', $edit_filter);
|
||||
html_print_input_hidden ('index_post', $index);
|
||||
if ($edit_filter > -1) {
|
||||
$filters_to_post = array();
|
||||
foreach ($filters as $fil) {
|
||||
$filters_to_post[] = $fil['id_snmp_filter'];
|
||||
}
|
||||
html_print_input_hidden ('elements', implode(",", $filters_to_post));
|
||||
}
|
||||
html_print_table ($table);
|
||||
echo '<div class="action-buttons" style="width: '.$table->width.'">';
|
||||
html_print_image('images/add.png', false, array('id' => 'add_filter', 'alt' => __('Click to add new filter'), 'title' => __('Click to add new filter'), 'style' => 'float:left;'));
|
||||
if ($edit_filter > -1) {
|
||||
html_print_submit_button (__('Update'), 'submit_button', false, 'class="sub upd"');
|
||||
}
|
||||
|
@ -112,11 +196,11 @@ if ($edit_filter > -2) {
|
|||
// Overview
|
||||
}
|
||||
else {
|
||||
$result = db_get_all_rows_in_table ("tsnmp_filter");
|
||||
if ($result === false) {
|
||||
$result = array ();
|
||||
require_once ($config['homedir'] . "/general/firts_task/snmp_filters.php");
|
||||
return;
|
||||
$result_unified = db_get_all_rows_sql("SELECT DISTINCT(unified_filters_id) FROM tsnmp_filter ORDER BY unified_filters_id ASC");
|
||||
|
||||
$aglomerate_result = array();
|
||||
foreach ($result_unified as $res) {
|
||||
$aglomerate_result[$res['unified_filters_id']] = db_get_all_rows_sql("SELECT * FROM tsnmp_filter WHERE unified_filters_id = " . $res['unified_filters_id'] . " ORDER BY id_snmp_filter ASC");
|
||||
}
|
||||
|
||||
$table->data = array ();
|
||||
|
@ -134,16 +218,43 @@ else {
|
|||
$table->size[2] = "50px";
|
||||
$table->align[2] = 'center';
|
||||
|
||||
foreach ($result as $row) {
|
||||
foreach ($aglomerate_result as $ind => $row) {
|
||||
if ($ind == 0) {
|
||||
foreach ($row as $r) {
|
||||
$data = array ();
|
||||
$data[0] = '<a href="index.php?sec=snmpconsole&sec2=godmode/snmpconsole/snmp_filters&edit_filter='.$row['id_snmp_filter'].'">' . $row['description'] . '</a>';
|
||||
$data[1] = $row['filter'];
|
||||
$data[2] = '<a href="index.php?sec=snmpconsole&sec2=godmode/snmpconsole/snmp_filters&edit_filter='.$row['id_snmp_filter'].'">' .
|
||||
$data[0] = '<a href="index.php?sec=snmpconsole&sec2=godmode/snmpconsole/snmp_filters&edit_filter='.$r['id_snmp_filter'].'">' . $r['description'] . '</a>';
|
||||
$data[1] = $r['filter'];
|
||||
$data[2] = '<a href="index.php?sec=snmpconsole&sec2=godmode/snmpconsole/snmp_filters&edit_filter='.$r['id_snmp_filter'].'">' .
|
||||
html_print_image("images/config.png", true, array("border" => '0', "alt" => __('Update'))) . '</a>' .
|
||||
' <a onclick="if (confirm(\'' . __('Are you sure?') . '\')) return true; else return false;" href="index.php?sec=snmpconsole&sec2=godmode/snmpconsole/snmp_filters&delete_filter='.$row['id_snmp_filter'].'">' .
|
||||
' <a onclick="if (confirm(\'' . __('Are you sure?') . '\')) return true; else return false;" href="index.php?sec=snmpconsole&sec2=godmode/snmpconsole/snmp_filters&delete_filter='.$r['id_snmp_filter'].'">' .
|
||||
html_print_image("images/cross.png", true, array("border" => '0', "alt" => __('Delete'))) . '</a>';
|
||||
array_push ($table->data, $data);
|
||||
}
|
||||
}
|
||||
else {
|
||||
$ind2 = 0;
|
||||
$compose_filter = array();
|
||||
$compose_id = "";
|
||||
$compose_action = "";
|
||||
foreach ($row as $i => $r) {
|
||||
if ($ind2 == 0) {
|
||||
$compose_id = '<a href="index.php?sec=snmpconsole&sec2=godmode/snmpconsole/snmp_filters&edit_filter='.$r['id_snmp_filter'].'">' . $r['description'] . '</a>';
|
||||
$compose_action = '<a href="index.php?sec=snmpconsole&sec2=godmode/snmpconsole/snmp_filters&edit_filter='.$r['id_snmp_filter'].'">' .
|
||||
html_print_image("images/config.png", true, array("border" => '0', "alt" => __('Update'))) . '</a>' .
|
||||
' <a onclick="if (confirm(\'' . __('Are you sure?') . '\')) return true; else return false;" href="index.php?sec=snmpconsole&sec2=godmode/snmpconsole/snmp_filters&delete_filter='.$r['id_snmp_filter'].'">' .
|
||||
html_print_image("images/cross.png", true, array("border" => '0', "alt" => __('Delete'))) . '</a>';
|
||||
$ind2++;
|
||||
}
|
||||
$compose_filter[] = $r['filter'];
|
||||
}
|
||||
$data = array ();
|
||||
$data[0] = $compose_id;
|
||||
$data[1] = implode(" AND ", $compose_filter);
|
||||
$data[2] = $compose_action;
|
||||
array_push ($table->data, $data);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (!empty ($table->data)) {
|
||||
html_print_table ($table);
|
||||
|
@ -157,3 +268,44 @@ else {
|
|||
echo '</form></div>';
|
||||
}
|
||||
?>
|
||||
|
||||
<script type="text/javascript">
|
||||
var id = "<?php echo $index; ?>";
|
||||
|
||||
$(document).ready (function () {
|
||||
$('#add_filter').click(function(e) {
|
||||
$('#filter_table').append('<tr id="filter_table-' + id + '" style="" class="datos"><td id="filter_table-' + id + '-0" style="" class="datos "></td><td id="filter_table-' + id + '-1" style="" class="datos "><input type="text" name="filter_' + id + '" value="" id="text-filter_' + id + '" size="60" maxlength="100"><img src="http://localhost/pandora_console/images/cross.png" onclick="delete_this_row(' + id + ');" data-title="Click to delete the filter" data-use_title_for_force_title="1" class="forced_title" alt="Click to delete the filter"></td></tr>');
|
||||
|
||||
id++;
|
||||
|
||||
$('#hidden-index_post').val(id);
|
||||
});
|
||||
|
||||
$('[id^=delete_filter_]').click(function(e) {
|
||||
var elem_id = this.id;
|
||||
var id_array = elem_id.split("delete_filter_");
|
||||
var id = id_array[1];
|
||||
|
||||
params = {};
|
||||
params['page'] = "include/ajax/snmp.ajax";
|
||||
params['delete_snmp_filter'] = 1;
|
||||
params['filter_id'] = id;
|
||||
|
||||
jQuery.ajax ({
|
||||
data: params,
|
||||
type: "POST",
|
||||
url: "ajax.php",
|
||||
dataType: "html",
|
||||
success: function(data){
|
||||
var elem = $('#hidden-elements').val();
|
||||
$('#hidden-elements').val(elem - 1);
|
||||
$('#' + elem_id).parent().parent().remove();
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
function delete_this_row (id_row) {
|
||||
$('#filter_table-' + id_row).remove();
|
||||
}
|
||||
</script>
|
||||
|
|
|
@ -20,6 +20,7 @@ require_once("include/functions_snmp.php");
|
|||
$save_snmp_translation = (bool)get_parameter('save_snmp_translation', 0);
|
||||
$delete_snmp_translation = (bool)get_parameter('delete_snmp_translation', 0);
|
||||
$update_snmp_translation = (bool)get_parameter('update_snmp_translation', 0);
|
||||
$delete_snmp_filter = (bool)get_parameter('delete_snmp_filter', 0);
|
||||
|
||||
/* skins image checks */
|
||||
if ($save_snmp_translation) {
|
||||
|
@ -56,4 +57,12 @@ if ($update_snmp_translation) {
|
|||
|
||||
return;
|
||||
}
|
||||
|
||||
if ($delete_snmp_filter) {
|
||||
$filter_id = get_parameter('filter_id');
|
||||
html_debug($filter_id, true);
|
||||
db_process_sql_delete('tsnmp_filter', array('id_snmp_filter' => $filter_id));
|
||||
|
||||
return;
|
||||
}
|
||||
?>
|
||||
|
|
|
@ -1717,6 +1717,7 @@ CREATE TABLE IF NOT EXISTS `tsnmp_filter` (
|
|||
`id_snmp_filter` int(10) unsigned NOT NULL auto_increment,
|
||||
`description` varchar(255) default '',
|
||||
`filter` varchar(255) default '',
|
||||
`unified_filters_id` int(10) not null default 0,
|
||||
PRIMARY KEY (`id_snmp_filter`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
|
||||
|
|
|
@ -196,10 +196,10 @@ sub pandora_snmptrapd {
|
|||
my ($pa_config, $line, $server_id, $dbh) = @_;
|
||||
|
||||
(my $trap_ver, $line) = split(/\[\*\*\]/, $line, 2);
|
||||
|
||||
print STDERR "ANTES";
|
||||
# Process SNMP filter
|
||||
next if (matches_filter ($dbh, $pa_config, $line) == 1);
|
||||
|
||||
print STDERR "DESPUES";
|
||||
logger($pa_config, "Reading trap '$line'", 10);
|
||||
my ($date, $time, $source, $oid, $type, $type_desc, $value, $data) = ('', '', '', '', '', '', '', '');
|
||||
|
||||
|
@ -345,8 +345,13 @@ sub pandora_snmptrapd {
|
|||
sub matches_filter ($$$) {
|
||||
my ($dbh, $pa_config, $string) = @_;
|
||||
|
||||
my @filter_unique_functions = get_db_rows ($dbh, 'SELECT DISTINCT(unified_filters_id) FROM tsnmp_filter ORDER BY unified_filters_id');
|
||||
|
||||
foreach my $filter_unique_func (@filter_unique_functions) {
|
||||
# Get filters
|
||||
my @filters = get_db_rows ($dbh, 'SELECT filter FROM tsnmp_filter');
|
||||
my @filters = get_db_rows ($dbh, 'SELECT filter FROM tsnmp_filter WHERE unified_filters_id = ' . $filter_unique_func->{'unified_filters_id'});
|
||||
|
||||
my $eval_acum = 1;
|
||||
foreach my $filter (@filters) {
|
||||
my $regexp = safe_output($filter->{'filter'}) ;
|
||||
my $eval_result;
|
||||
|
@ -356,11 +361,18 @@ sub matches_filter ($$$) {
|
|||
$string =~ m/$regexp/i ;
|
||||
};
|
||||
|
||||
if ($eval_result) {
|
||||
logger($pa_config, "Trap '$string' matches filter '$regexp'. Discarding...", 10);
|
||||
return 1;
|
||||
if ($eval_result && $eval_acum) {
|
||||
$eval_acum = 1;
|
||||
}
|
||||
else {
|
||||
$eval_acum = 0;
|
||||
last;
|
||||
}
|
||||
}
|
||||
|
||||
if ($eval_acum) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
Loading…
Reference in New Issue