From 3c95d1748225d76ee880b45774e79b0b35ccf712 Mon Sep 17 00:00:00 2001 From: Daniel Maya Date: Tue, 20 Oct 2020 16:15:42 +0200 Subject: [PATCH 1/9] Fixed new_agent --- .../godmode/agentes/agent_manager.php | 17 ++++++++++------- .../godmode/agentes/modificar_agente.php | 1 - .../operation/agentes/estado_agente.php | 2 -- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/pandora_console/godmode/agentes/agent_manager.php b/pandora_console/godmode/agentes/agent_manager.php index f4014de907..d1c7ae5224 100644 --- a/pandora_console/godmode/agentes/agent_manager.php +++ b/pandora_console/godmode/agentes/agent_manager.php @@ -149,7 +149,7 @@ if (is_ajax()) { ui_require_javascript_file('openlayers.pandora'); -$new_agent = (bool) get_parameter('new_agent'); +$new_agent = (empty($id_agente)) ? true : false; if (! isset($id_agente) && ! $new_agent) { db_pandora_audit('ACL Violation', 'Trying to access agent manager witout an agent'); @@ -1222,6 +1222,7 @@ ui_require_jquery_file('bgiframe'); $(document).ready (function() { + var $id_agent = ''; var previous_primary_group_select; $("#grupo").on('focus', function () { previous_primary_group_select = this.value; @@ -1276,12 +1277,14 @@ ui_require_jquery_file('bgiframe'); } }); - paint_qrcode( - "", - "#qr_code_agent_view", - 128, - 128 - ); + if (typeof $id_agent !== 'undefined' && $id_agent !== '0') { + paint_qrcode( + "", + "#qr_code_agent_view", + 128, + 128 + ); + } $("#text-agente").prop('readonly', true); }); diff --git a/pandora_console/godmode/agentes/modificar_agente.php b/pandora_console/godmode/agentes/modificar_agente.php index d4036bd68c..2a3620a504 100644 --- a/pandora_console/godmode/agentes/modificar_agente.php +++ b/pandora_console/godmode/agentes/modificar_agente.php @@ -754,7 +754,6 @@ if (check_acl($config['id_user'], 0, 'AW')) { // Create agent button. echo '
'; echo '
'; - html_print_input_hidden('new_agent', 1); html_print_submit_button( __('Create agent'), 'crt-2', diff --git a/pandora_console/operation/agentes/estado_agente.php b/pandora_console/operation/agentes/estado_agente.php index c0e6d147c5..58c392664f 100644 --- a/pandora_console/operation/agentes/estado_agente.php +++ b/pandora_console/operation/agentes/estado_agente.php @@ -902,7 +902,6 @@ if (!empty($table->data)) { if (check_acl($config['id_user'], 0, 'AW') || check_acl($config['id_user'], 0, 'AM')) { echo '
'; echo ''; - html_print_input_hidden('new_agent', 1); html_print_submit_button(__('Create agent'), 'crt', false, 'class="sub next"'); echo ''; echo '
'; @@ -913,7 +912,6 @@ if (!empty($table->data)) { ui_print_info_message([ 'no_close' => true, 'message' => __('There are no defined agents') ]); echo '
'; echo '
'; - html_print_input_hidden('new_agent', 1); html_print_submit_button(__('Create agent'), 'crt', false, 'class="sub next"'); echo '
'; echo '
'; From 8b6b573bde71eaa6b195163059e734fe8909d0fa Mon Sep 17 00:00:00 2001 From: marcos Date: Wed, 21 Oct 2020 16:18:07 +0200 Subject: [PATCH 2/9] fixed error with value status field --- pandora_console/operation/events/events.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pandora_console/operation/events/events.php b/pandora_console/operation/events/events.php index 3ca4123b4f..196db1576e 100644 --- a/pandora_console/operation/events/events.php +++ b/pandora_console/operation/events/events.php @@ -1935,16 +1935,21 @@ function process_datatables_item(item) { /* Status */ img = ' __('Unknown'), 'class' => 'forced-title']); ?>'; + state = '0'; switch (item.estado) { case "": img = ' __('New event'), 'class' => 'forced-title']); ?>'; break; case "": + + state = '1'; img = ' __('Event validated'), 'class' => 'forced-title']); ?>'; break; case "": + state = '2'; + img = ' __('Event in process'), 'class' => 'forced-title']); ?>'; break; } @@ -1976,6 +1981,9 @@ function process_datatables_item(item) { } item.estado = '
'; + item.estado += ''; + item.estado += state; + item.estado += ''; item.estado += img; item.estado += '
'; From 5d69ca3126d13ee776a1493b6f2b029593a5d6ef Mon Sep 17 00:00:00 2001 From: fbsanchez Date: Wed, 21 Oct 2020 17:54:33 +0200 Subject: [PATCH 3/9] recursion taken in mind in group report --- .../include/functions_reporting.php | 29 ++++++++++++------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/pandora_console/include/functions_reporting.php b/pandora_console/include/functions_reporting.php index c480969f16..f71269f288 100755 --- a/pandora_console/include/functions_reporting.php +++ b/pandora_console/include/functions_reporting.php @@ -2972,7 +2972,11 @@ function reporting_group_report($report, $content) $return['data']['count_events'] = count($events); - $return['data']['group_stats'] = reporting_get_group_stats($content['id_group']); + $return['data']['group_stats'] = reporting_get_group_stats( + $content['id_group'], + 'AR', + (bool) $content['recursion'] + ); if ($config['metaconsole']) { metaconsole_restore_db(); @@ -8969,7 +8973,7 @@ function reporting_get_agents_detailed_event( * * @return array Group statistics */ -function reporting_get_group_stats($id_group=0, $access='AR') +function reporting_get_group_stats($id_group=0, $access='AR', $recursion=true) { global $config; @@ -9071,16 +9075,19 @@ function reporting_get_group_stats($id_group=0, $access='AR') // Store the groups where we are quering $covered_groups = []; $group_array = []; - foreach ($id_group as $group) { - $children = groups_get_children($group); - // Show empty groups only if they have children with agents - // $group_array = array(); - foreach ($children as $sub) { - // If the group is quering previously, we ingore it - if (!in_array($sub['id_grupo'], $covered_groups)) { - array_push($covered_groups, $sub['id_grupo']); - array_push($group_array, $sub['id_grupo']); + foreach ($id_group as $group) { + if ($recursion === true) { + $children = groups_get_children($group); + + // Show empty groups only if they have children with agents + // $group_array = array(); + foreach ($children as $sub) { + // If the group is quering previously, we ingore it + if (!in_array($sub['id_grupo'], $covered_groups)) { + array_push($covered_groups, $sub['id_grupo']); + array_push($group_array, $sub['id_grupo']); + } } } From f3de0540fc804abd1951e7845c6427b587c41a73 Mon Sep 17 00:00:00 2001 From: Luis Calvo Date: Thu, 22 Oct 2020 19:56:13 +0200 Subject: [PATCH 4/9] Fix continous reload page cased by automatic form submit --- pandora_console/godmode/reporting/visual_console_favorite.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pandora_console/godmode/reporting/visual_console_favorite.php b/pandora_console/godmode/reporting/visual_console_favorite.php index b9f4fe28d7..99f91c969c 100644 --- a/pandora_console/godmode/reporting/visual_console_favorite.php +++ b/pandora_console/godmode/reporting/visual_console_favorite.php @@ -115,7 +115,7 @@ if (!$own_info['is_admin'] && !check_acl($config['id_user'], 0, 'AW')) { $return_all_group, 'ag_group', $ag_group, - 'this.form.submit();', + '', '', 0, false, @@ -126,7 +126,7 @@ if (!$own_info['is_admin'] && !check_acl($config['id_user'], 0, 'AW')) { ); echo "
    • "; echo __('Group Recursion'); - html_print_checkbox('recursion', 1, $recursion, false, false, 'this.form.submit()'); + html_print_checkbox('recursion', 1, $recursion, false, false, ''); echo '
    • '; echo ""; echo '
  • '; From 5d812d58596e1d53bbc8c0ba6a02d4ce46fdcdd6 Mon Sep 17 00:00:00 2001 From: alejandro-campos Date: Fri, 23 Oct 2020 09:20:23 +0200 Subject: [PATCH 5/9] added new macros --- pandora_console/include/functions_events.php | 32 ++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/pandora_console/include/functions_events.php b/pandora_console/include/functions_events.php index 7a337fbdab..c150aec85a 100644 --- a/pandora_console/include/functions_events.php +++ b/pandora_console/include/functions_events.php @@ -3692,6 +3692,38 @@ function events_get_response_target( $event_response = db_get_row('tevent_response', 'id', $response_id); $target = io_safe_output($event_response['target']); + if (strpos($target, '_agent_alias_') !== false) { + if ($meta) { + $agente_table_name = 'tmetaconsole_agent'; + $filter = [ + 'id_tagente' => $event['id_agente'], + 'id_tmetaconsole_setup' => $server_id, + ]; + } else { + $agente_table_name = 'tagente'; + $filter = ['id_agente' => $event['id_agente']]; + } + + $alias = db_get_value_filter('alias', $agente_table_name, $filter); + $target = str_replace('_agent_alias_', io_safe_output($alias), $target); + } + + if (strpos($target, '_agent_name_') !== false) { + if ($meta) { + $agente_table_name = 'tmetaconsole_agent'; + $filter = [ + 'id_tagente' => $event['id_agente'], + 'id_tmetaconsole_setup' => $server_id, + ]; + } else { + $agente_table_name = 'tagente'; + $filter = ['id_agente' => $event['id_agente']]; + } + + $name = db_get_value_filter('nombre', $agente_table_name, $filter); + $target = str_replace('_agent_name_', io_safe_output($name), $target); + } + // Substitute each macro. if (strpos($target, '_agent_address_') !== false) { if ($meta) { From 170ee5b9a551696986357db0d9515247fc55d3ed Mon Sep 17 00:00:00 2001 From: Daniel Barbero Martin Date: Wed, 28 Oct 2020 15:36:38 +0100 Subject: [PATCH 6/9] fixed csv charts --- .../flot/jquery.flot.exportdata.pandora.js | 721 +++++++++--------- 1 file changed, 360 insertions(+), 361 deletions(-) diff --git a/pandora_console/include/graphs/flot/jquery.flot.exportdata.pandora.js b/pandora_console/include/graphs/flot/jquery.flot.exportdata.pandora.js index 6466a72835..47b8879ace 100644 --- a/pandora_console/include/graphs/flot/jquery.flot.exportdata.pandora.js +++ b/pandora_console/include/graphs/flot/jquery.flot.exportdata.pandora.js @@ -1,425 +1,424 @@ -(function ($) { - var options = { - export: { - export_data: false, // or true - labels_long: null, - homeurl: "", - }, - }; +(function($) { + var options = { + export: { + export_data: false, // or true + labels_long: null, + homeurl: "" + } + }; - function init(plot) { - plot.exportDataCSV = function (args) { - //amount = plot.getOptions().export.type, - //options = options || {}; + function init(plot) { + plot.exportDataCSV = function(args) { + //amount = plot.getOptions().export.type, + //options = options || {}; - // Options - var type = "csv"; - type = type.toLowerCase().trim(); + // Options + var type = "csv"; + type = type.toLowerCase().trim(); - var graphData, - dataObject, - dataObjects = plot.getData(), - result = []; + var graphData, + dataObject, + dataObjects = plot.getData(), + result = []; - // Throw errors - var retrieveDataOject = function (dataObjects) { - var result; + // Throw errors + var retrieveDataOject = function(dataObjects) { + var result; - if (typeof dataObjects === "undefined") - throw new Error("Empty parameter"); + if (typeof dataObjects === "undefined") + throw new Error("Empty parameter"); - // Try to retrieve the avg set (not 100% reliable, I know) - if (dataObjects.length == 1) { - result = dataObjects.shift(); - } - if (dataObjects.length > 1) { - dataObjects.forEach(function (element) { - if (/^Avg.:/i.test(element.label)) result = element; - }); + // Try to retrieve the avg set (not 100% reliable, I know) + if (dataObjects.length == 1) { + result = dataObjects.shift(); + } + if (dataObjects.length > 1) { + dataObjects.forEach(function(element) { + if (/^Avg.:/i.test(element.label)) result = element; + }); - // If the avg set is missing, retrieve the first set - if (typeof result === "undefined") result = dataObjects.shift(); - } + // If the avg set is missing, retrieve the first set + if (typeof result === "undefined") result = dataObjects.shift(); + } - if (typeof result === "undefined") throw new Error("Empty result"); + if (typeof result === "undefined") throw new Error("Empty result"); - return result; - }; + return result; + }; - // Throw errors - var processDataObject = function (dataObject) { - var result; + // Throw errors + var processDataObject = function(dataObject) { + var result; - if (typeof dataObject === "undefined") - throw new Error("Empty parameter"); + if (typeof dataObject === "undefined") + throw new Error("Empty parameter"); - if ( - typeof dataObject.data === "undefined" || - !(dataObject.data instanceof Array) - ) - throw new Error("Object malformed"); + if ( + typeof dataObject.data === "undefined" || + !(dataObject.data instanceof Array) + ) + throw new Error("Object malformed"); - /* { - * head: [,,...,], - * data: [ - * [,,...,], - * [,,...,], - * ..., - * [,,...,], - * ] - * } - */ - if (type === "csv") { - result = { - head: ["timestap", "date", "value", "label"], - data: [], - }; + /* { + * head: [,,...,], + * data: [ + * [,,...,], + * [,,...,], + * ..., + * [,,...,], + * ] + * } + */ + if (type === "csv") { + result = { + head: ["timestamp", "date", "value", "label"], + data: [] + }; - dataObject.data.forEach(function (item, index) { - var timestap = item[0]; + dataObject.data.forEach(function(item, index) { + var timestamp = item[0]; - var d = new Date(item[0]); - var monthNames = [ - "Jan", - "Feb", - "Mar", - "Apr", - "May", - "Jun", - "Jul", - "Aug", - "Sep", - "Oct", - "Nov", - "Dec", - ]; + var d = new Date(item[0]); + var monthNames = [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ]; - date_format = - (d.getDate() < 10 ? "0" : "") + - d.getDate() + - " " + - monthNames[d.getMonth()] + - " " + - d.getFullYear() + - " " + - (d.getHours() < 10 ? "0" : "") + - d.getHours() + - ":" + - (d.getMinutes() < 10 ? "0" : "") + - d.getMinutes() + - ":" + - (d.getSeconds() < 10 ? "0" : "") + - d.getSeconds(); + date_format = + (d.getDate() < 10 ? "0" : "") + + d.getDate() + + " " + + monthNames[d.getMonth()] + + " " + + d.getFullYear() + + " " + + (d.getHours() < 10 ? "0" : "") + + d.getHours() + + ":" + + (d.getMinutes() < 10 ? "0" : "") + + d.getMinutes() + + ":" + + (d.getSeconds() < 10 ? "0" : "") + + d.getSeconds(); - var date = date_format; + var date = date_format; - var value = item[1]; + var value = item[1]; - var clean_label = plot.getOptions().export.labels_long[ - dataObject.label - ]; - clean_label = clean_label.replace(new RegExp(" ", "g"), " "); - result.data.push([timestap, date, value, clean_label]); - }); - } else if (type === "json") { - /* [ - * { - * 'date': , - * 'value': - * } - * ], - * [ - * { - * 'date': , - * 'value': - * } - * ], - * ..., - * [ - * { - * 'date': , - * 'value': - * } - * ] - */ - result = []; + var clean_label = plot.getOptions().export.labels_long[ + dataObject.label + ]; + clean_label = clean_label.replace(new RegExp(" ", "g"), " "); + result.data.push([timestamp, date, value, clean_label]); + }); + } else if (type === "json") { + /* [ + * { + * 'date': , + * 'value': + * } + * ], + * [ + * { + * 'date': , + * 'value': + * } + * ], + * ..., + * [ + * { + * 'date': , + * 'value': + * } + * ] + */ + result = []; - dataObject.data.forEach(function (item, index) { - var date = "", - value = item[1]; + dataObject.data.forEach(function(item, index) { + var date = "", + value = item[1]; - // Long labels are preferred - if (typeof labels_long[index] !== "undefined") - date = labels_long[index]; - else if (typeof labels[index] !== "undefined") date = labels[index]; + // Long labels are preferred + if (typeof labels_long[index] !== "undefined") + date = labels_long[index]; + else if (typeof labels[index] !== "undefined") date = labels[index]; - result.push({ - date: date, - value: value, - label: dataObject.label, - }); - }); - } + result.push({ + date: date, + value: value, + label: dataObject.label + }); + }); + } - if (typeof result === "undefined") throw new Error("Empty result"); + if (typeof result === "undefined") throw new Error("Empty result"); - return result; - }; + return result; + }; - try { - var elements = []; - dataObject = retrieveDataOject(dataObjects); - if (dataObject) { - elements.push(processDataObject(dataObject)); - } - dataObjects.forEach(function (element) { - elements.push(processDataObject(element)); - }); - graphData = elements; + try { + var elements = []; + dataObject = retrieveDataOject(dataObjects); + if (dataObject) { + elements.push(processDataObject(dataObject)); + } + dataObjects.forEach(function(element) { + elements.push(processDataObject(element)); + }); + graphData = elements; + // Transform the object data into a string + // cause PHP has limitations in the number + // of POST params received. + var graphDataStr = JSON.stringify(graphData); - // Transform the object data into a string - // cause PHP has limitations in the number - // of POST params received. - var graphDataStr = JSON.stringify(graphData); + // Build form + var $form = $("
    "), + $dataInput = $(""), + $typeInput = $(""), + $separatorInput = $(""), + $excelInput = $(""); - // Build form - var $form = $("
    "), - $dataInput = $(""), - $typeInput = $(""), - $separatorInput = $(""), - $excelInput = $(""); + $dataInput + .prop("name", "data") + .prop("type", "text") + .prop("value", graphDataStr); - $dataInput - .prop("name", "data") - .prop("type", "text") - .prop("value", graphDataStr); + $typeInput + .prop("name", "type") + .prop("type", "text") + .prop("value", type); - $typeInput - .prop("name", "type") - .prop("type", "text") - .prop("value", type); + $separatorInput + .prop("name", "separator") + .prop("type", "text") + .prop("value", ";"); - $separatorInput - .prop("name", "separator") - .prop("type", "text") - .prop("value", ";"); + $excelInput + .prop("name", "excel_encoding") + .prop("type", "text") + .prop("value", 0); - $excelInput - .prop("name", "excel_encoding") - .prop("type", "text") - .prop("value", 0); + $form + .prop("method", "POST") + .prop( + "action", + plot.getOptions().export.homeurl + "include/graphs/export_data.php" + ) + .append($dataInput, $typeInput, $separatorInput, $excelInput) + .hide() + // Firefox made me write into the DOM for this :( + .appendTo("body") + .submit(); + } catch (e) { + alert("There was an error exporting the data"); + } + }; - $form - .prop("method", "POST") - .prop( - "action", - plot.getOptions().export.homeurl + "include/graphs/export_data.php" - ) - .append($dataInput, $typeInput, $separatorInput, $excelInput) - .hide() - // Firefox made me write into the DOM for this :( - .appendTo("body") - .submit(); - } catch (e) { - alert("There was an error exporting the data"); - } - }; + plot.exportDataJSON = function(args) { + //amount = plot.getOptions().export.type, + //options = options || {}; - plot.exportDataJSON = function (args) { - //amount = plot.getOptions().export.type, - //options = options || {}; + // Options + var type = "json"; + type = type.toLowerCase().trim(); - // Options - var type = "json"; - type = type.toLowerCase().trim(); + var graphData, + dataObject, + dataObjects = plot.getData(), + result = []; - var graphData, - dataObject, - dataObjects = plot.getData(), - result = []; + // Throw errors + var retrieveDataOject = function(dataObjects) { + var result; - // Throw errors - var retrieveDataOject = function (dataObjects) { - var result; + if (typeof dataObjects === "undefined") + throw new Error("Empty parameter"); - if (typeof dataObjects === "undefined") - throw new Error("Empty parameter"); + // Try to retrieve the avg set (not 100% reliable, I know) + if (dataObjects.length == 1) { + result = dataObjects.shift(); + } + if (dataObjects.length > 1) { + dataObjects.forEach(function(element) { + if (/^Avg.:/i.test(element.label)) result = element; + }); - // Try to retrieve the avg set (not 100% reliable, I know) - if (dataObjects.length == 1) { - result = dataObjects.shift(); - } - if (dataObjects.length > 1) { - dataObjects.forEach(function (element) { - if (/^Avg.:/i.test(element.label)) result = element; - }); + // If the avg set is missing, retrieve the first set + if (typeof result === "undefined") result = dataObjects.shift(); + } - // If the avg set is missing, retrieve the first set - if (typeof result === "undefined") result = dataObjects.shift(); - } + if (typeof result === "undefined") throw new Error("Empty result"); - if (typeof result === "undefined") throw new Error("Empty result"); + return result; + }; - return result; - }; + // Throw errors + var processDataObject = function(dataObject) { + var result; - // Throw errors - var processDataObject = function (dataObject) { - var result; + if (typeof dataObject === "undefined") + throw new Error("Empty parameter"); - if (typeof dataObject === "undefined") - throw new Error("Empty parameter"); + if ( + typeof dataObject.data === "undefined" || + !(dataObject.data instanceof Array) + ) + throw new Error("Object malformed"); - if ( - typeof dataObject.data === "undefined" || - !(dataObject.data instanceof Array) - ) - throw new Error("Object malformed"); + /* { + * head: [,,...,], + * data: [ + * [,,...,], + * [,,...,], + * ..., + * [,,...,], + * ] + * } + */ + if (type === "csv") { + result = { + head: ["date", "value", "label"], + data: [] + }; - /* { - * head: [,,...,], - * data: [ - * [,,...,], - * [,,...,], - * ..., - * [,,...,], - * ] - * } - */ - if (type === "csv") { - result = { - head: ["date", "value", "label"], - data: [], - }; + dataObject.data.forEach(function(item, index) { + var date = "", + value = item[1]; - dataObject.data.forEach(function (item, index) { - var date = "", - value = item[1]; + // Long labels are preferred + if ( + typeof plot.getOptions().export.labels_long[index] !== "undefined" + ) + date = plot.getOptions().export.labels_long[index]; + else if (typeof labels[index] !== "undefined") date = labels[index]; - // Long labels are preferred - if ( - typeof plot.getOptions().export.labels_long[index] !== "undefined" - ) - date = plot.getOptions().export.labels_long[index]; - else if (typeof labels[index] !== "undefined") date = labels[index]; + result.data.push([date, value, dataObject.label]); + }); + } else if (type === "json") { + /* [ + * { + * 'date': , + * 'value': + * } + * ], + * [ + * { + * 'date': , + * 'value': + * } + * ], + * ..., + * [ + * { + * 'date': , + * 'value': + * } + * ] + */ + result = []; - result.data.push([date, value, dataObject.label]); - }); - } else if (type === "json") { - /* [ - * { - * 'date': , - * 'value': - * } - * ], - * [ - * { - * 'date': , - * 'value': - * } - * ], - * ..., - * [ - * { - * 'date': , - * 'value': - * } - * ] - */ - result = []; + dataObject.data.forEach(function(item, index) { + var date = "", + value = item[1]; - dataObject.data.forEach(function (item, index) { - var date = "", - value = item[1]; + // Long labels are preferred + if (typeof labels_long[index] !== "undefined") + date = labels_long[index]; + else if (typeof labels[index] !== "undefined") date = labels[index]; - // Long labels are preferred - if (typeof labels_long[index] !== "undefined") - date = labels_long[index]; - else if (typeof labels[index] !== "undefined") date = labels[index]; + result.push({ + date: date, + value: value, + label: dataObject.label + }); + }); + } - result.push({ - date: date, - value: value, - label: dataObject.label, - }); - }); - } + if (typeof result === "undefined") throw new Error("Empty result"); - if (typeof result === "undefined") throw new Error("Empty result"); + return result; + }; - return result; - }; + try { + var elements = []; + var custom_graph = $("input:hidden[name=custom_graph]").value; - try { - var elements = []; - var custom_graph = $("input:hidden[name=custom_graph]").value; + if (custom_graph) { + dataObject = retrieveDataOject(dataObjects); + dataObjects.forEach(function(element) { + elements.push(processDataObject(element)); + }); + graphData = elements; + } else { + dataObject = retrieveDataOject(dataObjects); + elements.push(processDataObject(dataObject)); + graphData = elements; + } - if (custom_graph) { - dataObject = retrieveDataOject(dataObjects); - dataObjects.forEach(function (element) { - elements.push(processDataObject(element)); - }); - graphData = elements; - } else { - dataObject = retrieveDataOject(dataObjects); - elements.push(processDataObject(dataObject)); - graphData = elements; - } + // Transform the object data into a string + // cause PHP has limitations in the number + // of POST params received. + var graphDataStr = JSON.stringify(graphData); - // Transform the object data into a string - // cause PHP has limitations in the number - // of POST params received. - var graphDataStr = JSON.stringify(graphData); + // Build form + var $form = $("
    "), + $dataInput = $(""), + $typeInput = $(""), + $separatorInput = $(""), + $excelInput = $(""); - // Build form - var $form = $("
    "), - $dataInput = $(""), - $typeInput = $(""), - $separatorInput = $(""), - $excelInput = $(""); + $dataInput + .prop("name", "data") + .prop("type", "text") + .prop("value", graphDataStr); - $dataInput - .prop("name", "data") - .prop("type", "text") - .prop("value", graphDataStr); + $typeInput + .prop("name", "type") + .prop("type", "text") + .prop("value", type); - $typeInput - .prop("name", "type") - .prop("type", "text") - .prop("value", type); + $separatorInput + .prop("name", "separator") + .prop("type", "text") + .prop("value", ";"); - $separatorInput - .prop("name", "separator") - .prop("type", "text") - .prop("value", ";"); + $excelInput + .prop("name", "excel_encoding") + .prop("type", "text") + .prop("value", 0); - $excelInput - .prop("name", "excel_encoding") - .prop("type", "text") - .prop("value", 0); + $form + .prop("method", "POST") + .prop( + "action", + plot.getOptions().export.homeurl + "include/graphs/export_data.php" + ) + .append($dataInput, $typeInput, $separatorInput, $excelInput) + .hide() + // Firefox made me write into the DOM for this :( + .appendTo("body") + .submit(); + } catch (e) { + alert("There was an error exporting the data"); + } + }; + } - $form - .prop("method", "POST") - .prop( - "action", - plot.getOptions().export.homeurl + "include/graphs/export_data.php" - ) - .append($dataInput, $typeInput, $separatorInput, $excelInput) - .hide() - // Firefox made me write into the DOM for this :( - .appendTo("body") - .submit(); - } catch (e) { - alert("There was an error exporting the data"); - } - }; - } - - $.plot.plugins.push({ - init: init, - options: options, - name: "exportdata", - version: "0.1", - }); + $.plot.plugins.push({ + init: init, + options: options, + name: "exportdata", + version: "0.1" + }); })(jQuery); From f8511de008fa2a341dee4a071fdad41a6de4b6fc Mon Sep 17 00:00:00 2001 From: Marcos Alconada Date: Thu, 29 Oct 2020 16:39:00 +0100 Subject: [PATCH 7/9] fixed error 6495 --- pandora_console/godmode/servers/modificar_server.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandora_console/godmode/servers/modificar_server.php b/pandora_console/godmode/servers/modificar_server.php index 9062eab0a4..d7332b86b4 100644 --- a/pandora_console/godmode/servers/modificar_server.php +++ b/pandora_console/godmode/servers/modificar_server.php @@ -140,7 +140,7 @@ if (isset($_GET['server'])) { ui_print_error_message(__('There was a problem deleting the server')); } } else if (isset($_GET['update'])) { - $address = trim(get_parameter_post('address'), ' '); + $address = trim(io_safe_output(get_parameter_post('address')), ' '); $description = trim(get_parameter_post('description'), ' '); $id_server = get_parameter_post('server'); $exec_proxy = get_parameter_post('exec_proxy'); From 26e809dc37ec530d43b9f306e93f406cca52f827 Mon Sep 17 00:00:00 2001 From: fbsanchez Date: Thu, 29 Oct 2020 17:53:34 +0100 Subject: [PATCH 8/9] fix group alert report --- pandora_console/include/functions_alerts.php | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/pandora_console/include/functions_alerts.php b/pandora_console/include/functions_alerts.php index 2566e265be..5f3731164d 100644 --- a/pandora_console/include/functions_alerts.php +++ b/pandora_console/include/functions_alerts.php @@ -2871,17 +2871,8 @@ function alerts_get_agent_modules( ); $agent_modules = db_get_all_rows_sql($sql); } else { - $groups = groups_get_children($id_grupo, true); - if (empty($groups) === false) { - $groups = array_reduce( - $groups, - function ($carry, $item) { - $carry[] = $item['id_grupo']; - return $carry; - }, - [$id_grupo] - ); - + $groups = groups_get_children_ids($id_grupo, true); + if (count($groups) > 1) { $sql = sprintf( 'SELECT distinct(atm.id_agent_module) FROM talert_template_modules atm From 8e4c62a0e9cbf3f67967f40b4841ba4e01b03290 Mon Sep 17 00:00:00 2001 From: Marcos Alconada Date: Thu, 29 Oct 2020 18:20:33 +0100 Subject: [PATCH 9/9] fixed error --- pandora_console/extras/mr/42.sql | 2 ++ pandora_console/extras/pandoradb_migrate_6.0_to_7.0.mysql.sql | 1 + pandora_console/include/javascript/pandora.js | 3 +-- pandora_console/pandoradb_data.sql | 4 ++-- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/pandora_console/extras/mr/42.sql b/pandora_console/extras/mr/42.sql index 26f20e0f0a..f4bed54d16 100644 --- a/pandora_console/extras/mr/42.sql +++ b/pandora_console/extras/mr/42.sql @@ -31,4 +31,6 @@ ALTER TABLE `treport` ADD COLUMN `index_render` tinyint(1) NOT NULL DEFAULT 1; ALTER TABLE `treport_template` ADD COLUMN `cover_page_render` tinyint(1) NOT NULL DEFAULT 1; ALTER TABLE `treport_template` ADD COLUMN `index_render` tinyint(1) NOT NULL DEFAULT 1; +UPDATE `tconfig` SET value = '{"0.00000038580247":"Seconds to months","0.00000165343915":"Seconds to weeks","0.00001157407407":"Seconds to days","0.01666666666667":"Seconds to minutes","0.00000000093132":"Bytes to Gigabytes","0.00000095367432":"Bytes to Megabytes","0.00097656250000":"Bytes to Kilobytes","0.00000001653439":"Timeticks to weeks","0.00000011574074":"Timeticks to days"}' WHERE token = 'post_process_custom_values'; + COMMIT; \ No newline at end of file diff --git a/pandora_console/extras/pandoradb_migrate_6.0_to_7.0.mysql.sql b/pandora_console/extras/pandoradb_migrate_6.0_to_7.0.mysql.sql index 664a7749e1..b1e8f60aad 100644 --- a/pandora_console/extras/pandoradb_migrate_6.0_to_7.0.mysql.sql +++ b/pandora_console/extras/pandoradb_migrate_6.0_to_7.0.mysql.sql @@ -1405,6 +1405,7 @@ INSERT INTO `tconfig` (`token`, `value`) VALUES ('cr_incident_type', ''); INSERT INTO `tconfig` (`token`, `value`) VALUES ('cr_incident_status', ''); INSERT INTO `tconfig` (`token`, `value`) VALUES ('cr_incident_title', ''); INSERT INTO `tconfig` (`token`, `value`) VALUES ('cr_incident_content', ''); +INSERT INTO `tconfig` (`token`, `value`) VALUES ('post_process_custom_values', '{"0.00000038580247":"Seconds to months","0.00000165343915":"Seconds to weeks","0.00001157407407":"Seconds to days","0.01666666666667":"Seconds to minutes","0.00000000093132":"Bytes to Gigabytes","0.00000095367432":"Bytes to Megabytes","0.00097656250000":"Bytes to Kilobytes","0.00000001653439":"Timeticks to weeks","0.00000011574074":"Timeticks to days"}'); -- --------------------------------------------------------------------- -- Table `tconfig_os` diff --git a/pandora_console/include/javascript/pandora.js b/pandora_console/include/javascript/pandora.js index f99ae01c79..e7f007a425 100644 --- a/pandora_console/include/javascript/pandora.js +++ b/pandora_console/include/javascript/pandora.js @@ -786,13 +786,12 @@ function post_process_select_events_unit(name, selected) { function post_process_select_events(name) { $("." + name + "_toggler").click(function() { var value = $("#text-" + name + "_text").val(); - var count = $("#" + name + "_select option").filter(function(i, item) { if (Number($(item).val()) == Number(value)) return true; else return false; }).length; - if (count != 1) { + if (count < 1) { $("#" + name + "_select").append( $("