From 8780571a74085fa0a26cf90c7b269938311ec0d8 Mon Sep 17 00:00:00 2001 From: daniel Date: Wed, 27 Feb 2019 10:59:44 +0100 Subject: [PATCH 1/2] add new functionality in event response Former-commit-id: 2cf28b95c068c40e79b8f05b212aad0f720de79b --- pandora_console/include/ajax/events.php | 96 +++++++++++++- .../include/javascript/pandora_events.js | 82 ++++++++++-- .../operation/events/events.build_table.php | 119 ++++++++++++------ pandora_console/operation/events/events.php | 1 + 4 files changed, 243 insertions(+), 55 deletions(-) diff --git a/pandora_console/include/ajax/events.php b/pandora_console/include/ajax/events.php index 9d327bb540..0d7d3f5a9f 100644 --- a/pandora_console/include/ajax/events.php +++ b/pandora_console/include/ajax/events.php @@ -54,6 +54,7 @@ $table_events = get_parameter('table_events', 0); $total_events = (bool) get_parameter('total_events'); $total_event_graph = (bool) get_parameter('total_event_graph'); $graphic_event_group = (bool) get_parameter('graphic_event_group'); +$get_table_response_command = (bool) get_parameter('get_table_response_command'); if ($get_event_name) { $event_id = get_parameter('event_id'); @@ -116,6 +117,7 @@ if ($get_response_target) { } echo events_get_response_target($event_id, $response_id, $server_id); + return; } @@ -129,6 +131,7 @@ if ($get_response) { } echo json_encode($event_response); + return; } @@ -136,6 +139,7 @@ if ($perform_event_response) { global $config; $command = get_parameter('target', ''); + $response_id = get_parameter('response_id'); $event_response = db_get_row('tevent_response', 'id', $response_id); @@ -148,7 +152,11 @@ if ($perform_event_response) { 'nano', ]; - $server_data = db_get_row('tserver', 'id_server', $event_response['server_to_exec']); + $server_data = db_get_row( + 'tserver', + 'id_server', + $event_response['server_to_exec'] + ); if (in_array(strtolower($command), $commandExclusions)) { echo 'Only stdin/stdout commands are supported'; @@ -234,13 +242,29 @@ if ($dialogue_event_response) { ); echo '
'; - echo "'; + echo "'; echo "
"; if ($end) { echo "
'; } } else { @@ -796,3 +820,67 @@ if ($graphic_event_group) { echo $prueba; return; } + +if ($get_table_response_command) { + global $config; + + $response_id = get_parameter('event_response_id'); + $params_string = db_get_value( + 'params', + 'tevent_response', + 'id', + $response_id + ); + + $params = explode(',', $params_string); + + $table = new stdClass; + $table->id = 'events_responses_table_command'; + $table->width = '90%'; + $table->styleTable = 'text-align:center; margin: 0 auto;'; + + $table->style = []; + $table->style[0] = 'text-align:center;'; + $table->style[1] = 'text-align:center;'; + + $table->head = []; + $table->head[0] = __('Commands'); + $table->head[0] .= ui_print_help_tip( + __('These commands will apply to all selected events'), + true + ); + $table->head[1] = __('Value'); + + if (isset($params) === true + && is_array($params) === true + ) { + foreach ($params as $key => $value) { + $table->data[$key][0] = $value; + $table->data[$key][1] = html_print_input_text( + $value.'-'.$key, + '', + '', + 50, + 255, + true, + false, + false, + '', + 'response_command_input' + ); + } + } + + echo '
'; + echo html_print_table($table, true); + echo '
'; + echo html_print_submit_button( + __('Execute'), + 'enter_command', + false, + 'class="sub next" style="float:right; margin-top:15px; margin-right:25px;"', + true + ); + + return; +} diff --git a/pandora_console/include/javascript/pandora_events.js b/pandora_console/include/javascript/pandora_events.js index 8fbef6b03d..42d67fffd6 100644 --- a/pandora_console/include/javascript/pandora_events.js +++ b/pandora_console/include/javascript/pandora_events.js @@ -241,6 +241,7 @@ function show_massive_response_dialog( }, close: function(event, ui) { $(".chk_val").prop("checked", false); + $("#event_response_command_window").dialog("close"); }, width: response["modal_width"], height: response["modal_height"] @@ -375,7 +376,12 @@ function add_row_param(id_table, param) { } // Get an event response from db -function get_response_target(event_id, response_id, server_id) { +function get_response_target( + event_id, + response_id, + server_id, + response_command +) { var ajax_file = $("#hidden-ajax_file").val(); var target = ""; @@ -400,15 +406,21 @@ function get_response_target(event_id, response_id, server_id) { } }); - // Replace the custom params macros + // Replace the custom params macros. var response_params = get_response_params(response_id); - if (response_params.length > 1 || response_params[0] != "") { for (i = 0; i < response_params.length; i++) { - target = target.replace( - "_" + response_params[i] + "_", - $("#" + response_params[i]).val() - ); + if (!response_command) { + target = target.replace( + "_" + response_params[i] + "_", + $("#" + response_params[i]).val() + ); + } else { + target = target.replace( + "_" + response_params[i] + "_", + response_command[response_params[i] + "-" + i] + ); + } } } @@ -459,10 +471,6 @@ function perform_response_massive(target, response_id, out_iterator) { $("#response_loading_command_" + out_iterator).show(); $("#response_out_" + out_iterator).html(""); - var finished = 0; - var time = Math.round(+new Date() / 1000); - var timeout = time + 10; - var params = []; params.push("page=include/ajax/events"); params.push("perform_event_response=1"); @@ -487,7 +495,7 @@ function perform_response_massive(target, response_id, out_iterator) { return false; } -// Change the status of an event to new, in process or validated +// Change the status of an event to new, in process or validated. function event_change_status(event_ids) { var ajax_file = $("#hidden-ajax_file").val(); @@ -681,3 +689,53 @@ function show_events_group_agent(id_insert, id_agent, server_id) { } }); } + +function show_event_response_command_dialog(id, response, total_checked) { + var ajax_file = $("#hidden-ajax_file").val(); + + var params = []; + params.push("page=include/ajax/events"); + params.push("get_table_response_command=1"); + params.push("event_response_id=" + id); + + jQuery.ajax({ + data: params.join("&"), + type: "POST", + url: (action = ajax_file), + dataType: "html", + success: function(data) { + $("#event_response_command_window") + .hide() + .empty() + .append(data) + .dialog({ + resizable: true, + draggable: true, + modal: false, + open: function() { + $("#response_loading_dialog").hide(); + $("#button-submit_event_response").show(); + }, + width: 600, + height: 300 + }) + .show(); + + $("#submit-enter_command").on("click", function(e) { + e.preventDefault(); + var response_command = []; + + $(".response_command_input").each(function() { + response_command[$(this).attr("name")] = $(this).val(); + }); + + check_massive_response_event( + id, + response, + total_checked, + response_command + ); + }); + } + }); +} diff --git a/pandora_console/operation/events/events.build_table.php b/pandora_console/operation/events/events.build_table.php index a9e319c82a..d38bd1918e 100644 --- a/pandora_console/operation/events/events.build_table.php +++ b/pandora_console/operation/events/events.build_table.php @@ -988,6 +988,10 @@ if ($group_rep == 2) { 'A maximum of %s event custom responses can be selected', $config['max_execution_event_response'] ).''; + echo ''; echo ''; } } @@ -995,12 +999,14 @@ if ($group_rep == 2) { ?> "; echo "
"; +echo "
"; ui_require_jquery_file('bgiframe'); ui_require_javascript_file('pandora_events'); From 798567bf8efa4a5e28fcfbee1a421eb37a4cac19 Mon Sep 17 00:00:00 2001 From: daniel Date: Thu, 7 Mar 2019 09:05:38 +0100 Subject: [PATCH 2/2] fixed minor errors change word command for parameters Former-commit-id: 6e6e56bded99331c606f7a9f6179826afee22d16 --- pandora_console/include/ajax/events.php | 2 +- pandora_console/operation/events/events.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pandora_console/include/ajax/events.php b/pandora_console/include/ajax/events.php index 0d7d3f5a9f..6b7be8eb28 100644 --- a/pandora_console/include/ajax/events.php +++ b/pandora_console/include/ajax/events.php @@ -844,7 +844,7 @@ if ($get_table_response_command) { $table->style[1] = 'text-align:center;'; $table->head = []; - $table->head[0] = __('Commands'); + $table->head[0] = __('Parameters'); $table->head[0] .= ui_print_help_tip( __('These commands will apply to all selected events'), true diff --git a/pandora_console/operation/events/events.php b/pandora_console/operation/events/events.php index f84e92571e..9fb78b084c 100644 --- a/pandora_console/operation/events/events.php +++ b/pandora_console/operation/events/events.php @@ -611,7 +611,7 @@ if ($delete) { echo "
"; echo "
"; -echo "
"; +echo "
"; ui_require_jquery_file('bgiframe'); ui_require_javascript_file('pandora_events');