wip events

This commit is contained in:
fbsanchez 2019-06-18 10:32:04 +02:00
parent a8a206fa10
commit f7cf6e1e8b
5 changed files with 117 additions and 84 deletions

View File

@ -1009,15 +1009,31 @@ function events_get_all(
if (!$user_is_admin) { if (!$user_is_admin) {
// XXX: Confirm there's no extra grants unhandled!. // XXX: Confirm there's no extra grants unhandled!.
$can_manage = '0 as user_can_manage';
if (!empty($EM_groups)) {
$can_manage = sprintf(
'(tbase.id_grupo IN (%s)) as user_can_manage',
join(', ', array_keys($EM_groups))
);
}
$can_write = '0 as user_can_write';
if (!empty($EW_groups)) {
$can_write = sprintf(
'(tbase.id_grupo IN (%s)) as user_can_write',
join(', ', array_keys($EW_groups))
);
}
$sql = sprintf( $sql = sprintf(
'SELECT 'SELECT
tbase.*, tbase.*,
(tbase.id_grupo IN (%s)) as user_can_manage, %s,
(tbase.id_grupo IN (%s)) as user_can_write %s
FROM FROM
(', (',
join(', ', array_keys($EM_groups)), $can_manage,
join(', ', array_keys($EW_groups)) $can_write
).$sql.') tbase'; ).$sql.') tbase';
} else { } else {
$sql = 'SELECT $sql = 'SELECT

View File

@ -3245,7 +3245,8 @@ function ui_print_datatable(array $parameters)
</script>'; </script>';
// Order. // Order.
$output = $filter.$extra.$table.$js; $err_msg = '<div id="error-'.$table_id.'"></div>';
$output = $err_msg.$filter.$extra.$table.$js;
ui_require_css_file('datatables.min', 'include/styles/js/'); ui_require_css_file('datatables.min', 'include/styles/js/');
ui_require_javascript_file('datatables.min'); ui_require_javascript_file('datatables.min');

View File

@ -668,7 +668,7 @@ function show_event_response_command_dialog(id, response, total_checked) {
}); });
} }
var processing = 0; var processed = 0;
function update_event(table, id_evento, type, row) { function update_event(table, id_evento, type, row) {
var inputs = $("#events_form :input"); var inputs = $("#events_form :input");
var values = {}; var values = {};
@ -678,7 +678,6 @@ function update_event(table, id_evento, type, row) {
}); });
var t1 = new Date(); var t1 = new Date();
processing += 1;
// Update events matching current filters and id_evento selected. // Update events matching current filters and id_evento selected.
$.ajax({ $.ajax({
type: "POST", type: "POST",
@ -691,24 +690,23 @@ function update_event(table, id_evento, type, row) {
id_evento: id_evento, id_evento: id_evento,
filter: values filter: values
}, },
success: function() { success: function(d) {
processed += 1;
var t2 = new Date(); var t2 = new Date();
var diff_g = t2.getTime() - t1.getTime(); var diff_g = t2.getTime() - t1.getTime();
var diff_s = diff_g / 1000; var diff_s = diff_g / 1000;
if (processed >= $(".chk_val:checked").length) {
// If operation takes less than 2 seconds, redraw. // If operation takes less than 2 seconds, redraw.
processing -= 1; if (diff_s < 2) {
if (diff_s < 2) { redraw = true;
redraw = true; }
} if (redraw) {
if (redraw) { table.draw(false);
if (processing == 0) { } else {
table.draw(false); $(row)
.closest("tr")
.remove();
} }
} else {
$(row)
.closest("tr")
.remove();
} }
} }
}); });
@ -731,14 +729,22 @@ function delete_event(table, id_evento, row) {
// Imported from old files. // Imported from old files.
function execute_event_response(event_list_btn) { function execute_event_response(event_list_btn) {
processed = 0;
$("#max_custom_event_resp_msg").hide(); $("#max_custom_event_resp_msg").hide();
$("#max_custom_selected").hide(); $("#max_custom_selected").hide();
var response_id = $("select[name=response_id]").val(); var response_id = $("select[name=response_id]").val();
var total_checked = $(".chk_val:checked").length;
// Check select an event.
if (total_checked == 0) {
$("#max_custom_selected").show();
return;
}
if (!isNaN(response_id)) { if (!isNaN(response_id)) {
// It is a custom response // It is a custom response
var response = get_response(response_id); var response = get_response(response_id);
// If cannot get response abort it // If cannot get response abort it
@ -746,16 +752,8 @@ function execute_event_response(event_list_btn) {
return; return;
} }
var total_checked = $(".chk_val:checked").length;
// Check select an event.
if (total_checked == 0) {
$("#max_custom_selected").show();
return;
}
// Limit number of events to apply custom responses // Limit number of events to apply custom responses
// to for performance reasons. // due performance reasons.
if (total_checked > $("#max_execution_event_response").val()) { if (total_checked > $("#max_execution_event_response").val()) {
$("#max_custom_event_resp_msg").show(); $("#max_custom_event_resp_msg").show();
return; return;
@ -801,30 +799,32 @@ function execute_event_response(event_list_btn) {
} }
} else { } else {
// It is not a custom response // It is not a custom response
var delay = 5000;
var $i = 0;
switch (response_id) { switch (response_id) {
case "in_progress_selected": case "in_progress_selected":
$(".chk_val").each(function() { $(".chk_val:checked").each(function() {
if ($(this).is(":checked")) { setTimeout(
in_process_event(dt_events, $(this).val(), this.parentElement); in_process_event(dt_events, $(this).val(), this.parentElement),
} total_checked * delay * $i++
);
}); });
dt_events.draw(false);
break; break;
case "validate_selected": case "validate_selected":
$(".chk_val").each(function() { $(".chk_val:checked").each(function() {
if ($(this).is(":checked")) { setTimeout(
validate_event(dt_events, $(this).val(), this.parentElement); validate_event(dt_events, $(this).val(), this.parentElement),
} total_checked * delay * $i++
);
}); });
dt_events.draw(false);
break; break;
case "delete_selected": case "delete_selected":
$(".chk_val").each(function() { $(".chk_val:checked").each(function() {
if ($(this).is(":checked")) { setTimeout(
delete_event(dt_events, $(this).val(), this.parentElement); delete_event(dt_events, $(this).val(), this.parentElement),
} total_checked * delay * $i++
);
}); });
dt_events.draw(false);
break; break;
} }
} }
@ -839,28 +839,20 @@ function check_massive_response_event(
var counter = 0; var counter = 0;
var end = 0; var end = 0;
$(".chk_val").each(function() { $(".chk_val:checked").each(function() {
if ($(this).is(":checked")) { var event_id = $(this).val();
var event_id = $(this).val(); var server_id = $("#hidden-server_id_" + event_id).val();
var server_id = $("#hidden-server_id_" + event_id).val(); response["target"] = get_response_target(
response["target"] = get_response_target( event_id,
event_id, response_id,
response_id, server_id,
server_id, response_command
response_command );
);
if (total_checked - 1 === counter) end = 1; if (total_checked - 1 === counter) end = 1;
show_massive_response_dialog( show_massive_response_dialog(event_id, response_id, response, counter, end);
event_id,
response_id,
response,
counter,
end
);
counter++; counter++;
}
}); });
} }

View File

@ -1,30 +1,48 @@
<?php <?php
/**
* Event statistics.
*
* @category Statistics view.
* @package Pandora FMS
* @subpackage Events.
* @version 1.0.0
* @license See below
*
* ______ ___ _______ _______ ________
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
*
* ============================================================================
* Copyright (c) 2005-2019 Artica Soluciones Tecnologicas
* Please see http://pandorafms.org for full contribution list
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation for version 2.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* ============================================================================
*/
// Pandora FMS - http://pandorafms.com // Begin.
// ==================================================
// Copyright (c) 2005-2010 Artica Soluciones Tecnologicas
// Please see http://pandorafms.org for full contribution list
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation for version 2.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// Load global vars
global $config; global $config;
require_once $config['homedir'].'/include/functions_graph.php'; require_once $config['homedir'].'/include/functions_graph.php';
check_login(); check_login();
if (! check_acl($config['id_user'], 0, 'ER') && ! check_acl($config['id_user'], 0, 'EW') && ! check_acl($config['id_user'], 0, 'EM')) { if (! check_acl($config['id_user'], 0, 'ER')
&& ! check_acl($config['id_user'], 0, 'EW')
&& ! check_acl($config['id_user'], 0, 'EM')
) {
db_pandora_audit('ACL Violation', 'Trying to access event viewer'); db_pandora_audit('ACL Violation', 'Trying to access event viewer');
include 'general/noaccess.php'; include 'general/noaccess.php';
return; return;
} }
// header // Header.
ui_print_page_header(__('Statistics'), 'images/op_events.png', false, false); ui_print_page_header(__('Statistics'), 'images/op_events.png', false, false);
echo '<table width=95%>'; echo '<table width=95%>';

View File

@ -93,7 +93,7 @@ $text_agent = get_parameter('filter[text_agent]');
$id_agent = get_parameter('filter[id_agent]'); $id_agent = get_parameter('filter[id_agent]');
$id_agent_module = get_parameter('filter[id_agent_module]'); $id_agent_module = get_parameter('filter[id_agent_module]');
$pagination = get_parameter('filter[pagination]'); $pagination = get_parameter('filter[pagination]');
$event_view_hr = get_parameter('filter[event_view_hr]', 8); $event_view_hr = get_parameter('filter[event_view_hr]', $config['event_view_hr']);
$id_user_ack = get_parameter('filter[id_user_ack]'); $id_user_ack = get_parameter('filter[id_user_ack]');
$group_rep = get_parameter('filter[group_rep]', 1); $group_rep = get_parameter('filter[group_rep]', 1);
$tag_with = get_parameter('filter[tag_with]', []); $tag_with = get_parameter('filter[tag_with]', []);
@ -1034,6 +1034,13 @@ $filter .= ui_toggle(
); );
try { try {
$checkbox_all = html_print_checkbox(
'all_validate_box',
1,
false,
true
);
$default_fields = [ $default_fields = [
'evento', 'evento',
'id_evento', 'id_evento',
@ -1070,7 +1077,7 @@ try {
'class' => 'action_buttons w120px', 'class' => 'action_buttons w120px',
],[ ],[
'text' => 'm', 'text' => 'm',
'extra' => "<input name='all_validate_box' type='checkbox' value='1' id='checkbox-all_validate_box' />", 'extra' => $checkbox_all,
'class' => 'w20px', 'class' => 'w20px',
], ],
]; ];
@ -1090,7 +1097,7 @@ try {
'class' => 'action_buttons w120px', 'class' => 'action_buttons w120px',
],[ ],[
'text' => 'm', 'text' => 'm',
'extra' => "<input name='all_validate_box' type='checkbox' value='1' id='checkbox-all_validate_box' />", 'extra' => $checkbox_all,
'class' => 'w20px no-text-imp', 'class' => 'w20px no-text-imp',
], ],
] ]
@ -1298,7 +1305,6 @@ html_print_input_hidden(
echo "<div id='event_details_window'></div>"; echo "<div id='event_details_window'></div>";
echo "<div id='event_response_window'></div>"; echo "<div id='event_response_window'></div>";
echo "<div id='event_response_command_window' title='".__('Parameters')."'></div>"; echo "<div id='event_response_command_window' title='".__('Parameters')."'></div>";
echo "<div id='error-".$table_id."'></div>";
// Load filter div for dialog. // Load filter div for dialog.
echo '<div id="load-modal-filter" style="display: none"></div>'; echo '<div id="load-modal-filter" style="display: none"></div>';