From a12851d0a2c4b0713ce92db816e6c958b6f68268 Mon Sep 17 00:00:00 2001 From: alejandro-campos Date: Wed, 1 Apr 2020 16:37:30 +0200 Subject: [PATCH 001/299] fix broken snmp modules real time graphs when community string has certain chars --- pandora_console/extensions/realtime_graphs.php | 2 +- pandora_console/include/functions_modules.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pandora_console/extensions/realtime_graphs.php b/pandora_console/extensions/realtime_graphs.php index e487d49ee5..8940b36c2d 100644 --- a/pandora_console/extensions/realtime_graphs.php +++ b/pandora_console/extensions/realtime_graphs.php @@ -199,8 +199,8 @@ function pandora_realtime_graphs() html_print_input_hidden('custom_action', urlencode(base64_encode(' ')), false); html_print_input_hidden('incremental_base', '0'); - echo ''; echo ''; + echo ''; echo ''; // Store servers timezone offset to be retrieved from js diff --git a/pandora_console/include/functions_modules.php b/pandora_console/include/functions_modules.php index 668250b86c..42ac1fe30f 100755 --- a/pandora_console/include/functions_modules.php +++ b/pandora_console/include/functions_modules.php @@ -3308,7 +3308,7 @@ function get_module_realtime_link_graph($module) 'agent_alias' => urlencode(modules_get_agentmodule_agent_alias($module['id_agente_modulo'])), 'module_name' => urlencode($module['nombre']), 'snmp_address' => $module['ip_target'], - 'snmp_community' => $module['snmp_community'], + 'snmp_community' => urlencode($module['snmp_community']), 'snmp_oid' => $module['snmp_oid'], 'snmp_ver' => $module['tcp_send'], 'hide_header' => 1, From d6ac646046329e40edc7145ce0bf7de2d36df96b Mon Sep 17 00:00:00 2001 From: alejandro-campos Date: Tue, 21 Apr 2020 17:57:36 +0200 Subject: [PATCH 002/299] fixed bug: update owner_user when validating an event --- pandora_console/include/functions_events.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pandora_console/include/functions_events.php b/pandora_console/include/functions_events.php index 7fad691c74..3e71596c36 100644 --- a/pandora_console/include/functions_events.php +++ b/pandora_console/include/functions_events.php @@ -612,12 +612,14 @@ function events_update_status($id_evento, $status, $filter=null, $history=false) 'UPDATE %s SET estado = %d, ack_utimestamp = %d, - id_usuario = "%s" + id_usuario = "%s", + owner_user = "%s" WHERE id_evento IN (%s)', $table, $status, time(), $config['id_user'], + $config['id_user'], join(',', $target_ids) ); } From 750b8397a3630c15c1e572658ef2edf1d52075c9 Mon Sep 17 00:00:00 2001 From: alejandro-campos Date: Thu, 23 Apr 2020 12:35:52 +0200 Subject: [PATCH 003/299] fix bad route of background image --- pandora_console/include/functions_visual_map.php | 4 ---- 1 file changed, 4 deletions(-) diff --git a/pandora_console/include/functions_visual_map.php b/pandora_console/include/functions_visual_map.php index 0cc7d1f8ac..24c07a6487 100755 --- a/pandora_console/include/functions_visual_map.php +++ b/pandora_console/include/functions_visual_map.php @@ -3596,11 +3596,7 @@ function visual_map_print_visual_map( $proportion_width = ($mapWidth / $layout['width']); if ($layout['background'] != 'None.png') { - if (is_metaconsole()) { - $backgroundImage = '/include/Image/image_functions.php?getFile=1&thumb=1&thumb_size='.$mapWidth.'x'.$mapHeight.'&file='.$config['homeurl'].'images/console/background/'.$layout['background']; - } else { $backgroundImage = '/include/Image/image_functions.php?getFile=1&thumb=1&thumb_size='.$mapWidth.'x'.$mapHeight.'&file='.$config['homedir'].'/images/console/background/'.($layout['background']); - } } } else { $mapWidth = $layout['width']; From 086bc289868502f46ee8c8a779c35b802fc63c6b Mon Sep 17 00:00:00 2001 From: alejandro-campos Date: Mon, 27 Apr 2020 17:27:54 +0200 Subject: [PATCH 004/299] Changed target ip selector in WMI server policy modules --- .../agentes/module_manager_editor_wmi.php | 60 ++++++++++++++++++- 1 file changed, 59 insertions(+), 1 deletion(-) diff --git a/pandora_console/godmode/agentes/module_manager_editor_wmi.php b/pandora_console/godmode/agentes/module_manager_editor_wmi.php index 09501c358b..9a85c3c19d 100644 --- a/pandora_console/godmode/agentes/module_manager_editor_wmi.php +++ b/pandora_console/godmode/agentes/module_manager_editor_wmi.php @@ -43,7 +43,47 @@ if (empty($update_module_id)) { $data = []; $data[0] = __('Target IP').' '.ui_print_help_icon('wmi_module_tab', true); -$data[1] = html_print_input_text('ip_target', $ip_target, '', 15, 60, true); + +if ($page == 'enterprise/godmode/policies/policy_modules') { + if ($ip_target != 'auto' && $ip_target != '') { + $custom_ip_target = $ip_target; + $ip_target = 'custom'; + } else if ($ip_target == '') { + $ip_target = 'force_pri'; + $custom_ip_target = ''; + } else { + $custom_ip_target = ''; + } + + $target_ip_values = []; + $target_ip_values['auto'] = __('Auto'); + $target_ip_values['force_pri'] = __('Force primary key'); + $target_ip_values['custom'] = __('Custom'); + + $data[1] = html_print_select( + $target_ip_values, + 'ip_target', + $ip_target, + '', + '', + '', + true, + false, + false, + '', + false, + 'width:200px;' + ); + + $data[1] .= html_print_input_text('custom_ip_target', $custom_ip_target, '', 15, 60, true); +} else { + if ($ip_target == 'auto') { + $ip_target = agents_get_address($id_agente); + } + + $data[1] = html_print_input_text('ip_target', $ip_target, '', 15, 60, true); +} + $data[2] = __('Namespace').ui_print_help_tip(__('Optional. WMI namespace. If unsure leave blank.'), true); $data[3] = html_print_input_text( 'tcp_send', @@ -136,3 +176,21 @@ $data[3] = html_print_input_text( ); push_table_simple($data, 'key_field'); +?> + From 4f52a693ac993c0fea9cb9398bde7a639f069daf Mon Sep 17 00:00:00 2001 From: Luis Calvo Date: Wed, 13 May 2020 14:37:20 +0200 Subject: [PATCH 005/299] CSV flot export fixes --- .../flot/jquery.flot.exportdata.pandora.js | 623 +++++++++--------- 1 file changed, 316 insertions(+), 307 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 0b745d8ff5..6466a72835 100644 --- a/pandora_console/include/graphs/flot/jquery.flot.exportdata.pandora.js +++ b/pandora_console/include/graphs/flot/jquery.flot.exportdata.pandora.js @@ -1,227 +1,19 @@ (function ($) { var options = { - export: { - export_data: false, // or true - labels_long: null, - homeurl: '' - } - }; - + export: { + export_data: false, // or true + labels_long: null, + homeurl: "", + }, + }; + function init(plot) { plot.exportDataCSV = function (args) { //amount = plot.getOptions().export.type, //options = options || {}; // Options - var type = 'csv'; - type = type.toLowerCase().trim(); - - var graphData, - dataObject, - dataObjects = plot.getData(), - result = []; - - // Throw errors - var retrieveDataOject = function (dataObjects, custom) { - var result; - 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(custom){ - if (/^Avg.:/i.test(element.label)){ - result = element; - } - } else { - result = element; - } - }); - - // 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'); - - return result; - } - - // Throw errors - var processDataObject = function (dataObject) { - var result; - - if (typeof dataObject === 'undefined') - throw new Error('Empty parameter'); - - 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: [] - }; - - dataObject.data.forEach(function (item, index) { - var timestap = item[0]; - - 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(); - - var date = date_format; - - 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]); - }); - } - /* [ - * { - * 'date': , - * 'value': - * } - * ], - * [ - * { - * 'date': , - * 'value': - * } - * ], - * ..., - * [ - * { - * 'date': , - * 'value': - * } - * ] - */ - else if (type === 'json') { - result = []; - - 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]; - - result.push({ - 'date': date, - 'value': value, - 'label': dataObject.label - }); - }); - } - - if (typeof result === 'undefined') - throw new Error('Empty result'); - - return result; - } - - try { - var elements = []; - var custom_graph = $('#hidden-custom_graph').val(); - - if (custom_graph) { - dataObject = retrieveDataOject(dataObjects,0); - dataObjects.forEach(function (element) { - elements.push(processDataObject(element)); - }); - graphData = elements; - } - else { - dataObject = retrieveDataOject(dataObjects,1); - 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); - - // Build form - var $form = $('
'), - $dataInput = $(''), - $typeInput = $(''), - $separatorInput = $(''), - $excelInput = $(''); - - $dataInput - .prop('name', 'data') - .prop('type', 'text') - .prop('value', graphDataStr); - - $typeInput - .prop('name', 'type') - .prop('type', 'text') - .prop('value', type); - - $separatorInput - .prop('name', 'separator') - .prop('type', 'text') - .prop('value', ';'); - - $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'); - } - } - - plot.exportDataJSON = function (args) { - //amount = plot.getOptions().export.type, - //options = options || {}; - - // Options - var type = 'json'; + var type = "csv"; type = type.toLowerCase().trim(); var graphData, @@ -233,8 +25,8 @@ 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) { @@ -242,31 +34,30 @@ } if (dataObjects.length > 1) { dataObjects.forEach(function (element) { - if (/^Avg.:/i.test(element.label)) - result = 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 (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; - } + }; // 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: [,,...,], @@ -278,74 +69,291 @@ * ] * } */ - if (type === 'csv') { - + if (type === "csv") { result = { - head: ['date', 'value','label'], - data: [] + head: ["timestap", "date", "value", "label"], + data: [], }; dataObject.data.forEach(function (item, index) { - var date = '', value = item[1]; + var timestap = item[0]; - // 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]; + var d = new Date(item[0]); + var monthNames = [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec", + ]; - result.data.push([date, value,dataObject.label]); + 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 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]); }); - } - /* [ - * { - * 'date': , - * 'value': - * } - * ], - * [ - * { - * 'date': , - * 'value': - * } - * ], - * ..., - * [ - * { - * 'date': , - * 'value': - * } - * ] - */ - else if (type === 'json') { + } else if (type === "json") { + /* [ + * { + * 'date': , + * 'value': + * } + * ], + * [ + * { + * 'date': , + * 'value': + * } + * ], + * ..., + * [ + * { + * 'date': , + * 'value': + * } + * ] + */ result = []; dataObject.data.forEach(function (item, index) { - var date = '', value = item[1]; + var date = "", + value = item[1]; // Long labels are preferred - if (typeof labels_long[index] !== 'undefined') + if (typeof labels_long[index] !== "undefined") date = labels_long[index]; - else if (typeof labels[index] !== 'undefined') - date = labels[index]; + else if (typeof labels[index] !== "undefined") date = labels[index]; result.push({ - 'date': date, - 'value': value, - 'label': dataObject.label + 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; - } + }; try { var elements = []; - var custom_graph = $('input:hidden[name=custom_graph]').value; + 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); + + // Build form + var $form = $("
"), + $dataInput = $(""), + $typeInput = $(""), + $separatorInput = $(""), + $excelInput = $(""); + + $dataInput + .prop("name", "data") + .prop("type", "text") + .prop("value", graphDataStr); + + $typeInput + .prop("name", "type") + .prop("type", "text") + .prop("value", type); + + $separatorInput + .prop("name", "separator") + .prop("type", "text") + .prop("value", ";"); + + $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"); + } + }; + + plot.exportDataJSON = function (args) { + //amount = plot.getOptions().export.type, + //options = options || {}; + + // Options + var type = "json"; + type = type.toLowerCase().trim(); + + var graphData, + dataObject, + dataObjects = plot.getData(), + result = []; + + // Throw errors + var retrieveDataOject = function (dataObjects) { + var result; + + 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; + }); + + // 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"); + + return result; + }; + + // Throw errors + var processDataObject = function (dataObject) { + var result; + + if (typeof dataObject === "undefined") + throw new Error("Empty parameter"); + + 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: [], + }; + + 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]; + + 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]; + + // 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, + }); + }); + } + + if (typeof result === "undefined") throw new Error("Empty result"); + + return result; + }; + + try { + var elements = []; + var custom_graph = $("input:hidden[name=custom_graph]").value; if (custom_graph) { dataObject = retrieveDataOject(dataObjects); @@ -353,8 +361,7 @@ elements.push(processDataObject(element)); }); graphData = elements; - } - else { + } else { dataObject = retrieveDataOject(dataObjects); elements.push(processDataObject(dataObject)); graphData = elements; @@ -366,51 +373,53 @@ var graphDataStr = JSON.stringify(graphData); // Build form - var $form = $('
'), - $dataInput = $(''), - $typeInput = $(''), - $separatorInput = $(''), - $excelInput = $(''); + var $form = $("
"), + $dataInput = $(""), + $typeInput = $(""), + $separatorInput = $(""), + $excelInput = $(""); $dataInput - .prop('name', 'data') - .prop('type', 'text') - .prop('value', graphDataStr); + .prop("name", "data") + .prop("type", "text") + .prop("value", graphDataStr); $typeInput - .prop('name', 'type') - .prop('type', 'text') - .prop('value', type); + .prop("name", "type") + .prop("type", "text") + .prop("value", type); $separatorInput - .prop('name', 'separator') - .prop('type', 'text') - .prop('value', ';'); + .prop("name", "separator") + .prop("type", "text") + .prop("value", ";"); $excelInput - .prop('name', 'excel_encoding') - .prop('type', 'text') - .prop('value', 0); + .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') + .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') + .appendTo("body") .submit(); + } catch (e) { + alert("There was an error exporting the data"); } - catch (e) { - alert('There was an error exporting the data'); - } - } + }; } - $.plot.plugins.push({ - init: init, - options: options, - name: 'exportdata', - version: '0.1' - }); -})(jQuery); \ No newline at end of file + $.plot.plugins.push({ + init: init, + options: options, + name: "exportdata", + version: "0.1", + }); +})(jQuery); From 347f6b1bf3b3de73ad5738b923223f8bc8216fb3 Mon Sep 17 00:00:00 2001 From: marcos Date: Mon, 18 May 2020 10:15:20 +0200 Subject: [PATCH 006/299] add return error if group = 0 on new agent api --- pandora_console/include/functions_api.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pandora_console/include/functions_api.php b/pandora_console/include/functions_api.php index 76e10533aa..9d8cae52b2 100644 --- a/pandora_console/include/functions_api.php +++ b/pandora_console/include/functions_api.php @@ -1506,6 +1506,12 @@ function api_set_new_agent($thrash1, $thrash2, $other, $thrash3) return; } + if ((int) $other['data'][3] == 0) { + $agent_creation_error = __('The agent could not be created, for security reasons use a group another than 0'); + returnError('generic error', $agent_creation_error); + return; + } + $alias = io_safe_input(trim(preg_replace('/[\/\\\|%#&$]/', '', $other['data'][0]))); $direccion_agente = io_safe_input($other['data'][1]); $nombre_agente = hash('sha256', $direccion_agente.'|'.$direccion_agente.'|'.time().'|'.sprintf('%04d', rand(0, 10000))); From ee55c1be8502f41329c3b84164dabdcf20d28cee Mon Sep 17 00:00:00 2001 From: alejandro-campos Date: Mon, 18 May 2020 12:40:43 +0200 Subject: [PATCH 007/299] fixed bug in get_events_with_user call --- pandora_console/include/functions_api.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pandora_console/include/functions_api.php b/pandora_console/include/functions_api.php index 37ead3a465..70f9364780 100644 --- a/pandora_console/include/functions_api.php +++ b/pandora_console/include/functions_api.php @@ -10712,7 +10712,7 @@ function get_events_with_user($trash1, $trash2, $other, $returnType, $user_in_db $data['type'] = 'array'; $data['data'] = $result; - // returnData($returnType, $data, $separator); + returnData($returnType, $data, $separator); if (empty($result)) { return false; } @@ -10752,6 +10752,8 @@ function api_get_events($trash1, $trash2, $other, $returnType, $user_in_db=null) returnError('ERROR_API_PANDORAFMS', $returnType); } } + + return; } if ($other['type'] == 'string') { From 7a35e8550c89554d513a15b0c5e3ff7e34200b48 Mon Sep 17 00:00:00 2001 From: Luis Calvo Date: Tue, 19 May 2020 18:53:09 +0200 Subject: [PATCH 008/299] Fixed collections symlinks --- .../include/functions_filemanager.php | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/pandora_console/include/functions_filemanager.php b/pandora_console/include/functions_filemanager.php index a3cf4ac0a5..cf587f8081 100644 --- a/pandora_console/include/functions_filemanager.php +++ b/pandora_console/include/functions_filemanager.php @@ -369,11 +369,21 @@ if ($delete_file) { $config['filemanager']['message'] = ui_print_success_message(__('Deleted'), '', true); if (is_dir($filename)) { - rmdir($filename); - $config['filemanager']['delete'] = 1; + if (rmdir($filename)) { + $config['filemanager']['delete'] = 1; + } else { + $config['filemanager']['delete'] = 0; + } } else { - unlink($filename); - $config['filemanager']['delete'] = 1; + if (unlink($filename)) { + $config['filemanager']['delete'] = 1; + } else { + $config['filemanager']['delete'] = 0; + } + } + + if ($config['filemanager']['delete'] == 0) { + $config['filemanager']['message'] = ui_print_error_message(__('Deleted'), '', true); } } } @@ -743,7 +753,7 @@ function filemanager_file_explorer( if (($editor) && (!$readOnly)) { if (($typefile != 'bin') && ($typefile != 'pdf') && ($typefile != 'png') && ($typefile != 'jpg') - && ($typefile != 'iso') && ($typefile != 'docx') && ($typefile != 'doc') + && ($typefile != 'iso') && ($typefile != 'docx') && ($typefile != 'doc') && ($fileinfo['mime'] != MIME_DIR) ) { $hash = md5($fileinfo['realpath'].$config['dbpass']); $data[4] .= "".html_print_image('images/edit.png', true, ['style' => 'margin-top: 2px;', 'title' => __('Edit file')]).''; From 3857d04df16a72e2144cc5a8bf2835faaa52654c Mon Sep 17 00:00:00 2001 From: Daniel Barbero Martin Date: Wed, 20 May 2020 10:54:07 +0200 Subject: [PATCH 009/299] Fixed input type number size in Firefox --- pandora_console/include/functions_html.php | 7 ------- 1 file changed, 7 deletions(-) diff --git a/pandora_console/include/functions_html.php b/pandora_console/include/functions_html.php index adf978d13f..477e23eb1e 100644 --- a/pandora_console/include/functions_html.php +++ b/pandora_console/include/functions_html.php @@ -1758,13 +1758,6 @@ function html_print_input_number(array $settings):string $settings['maxlength'] = 255; } - // Check Size. - if (isset($settings['size']) === false - || $settings['size'] === 0 - ) { - $settings['size'] = 255; - } - foreach ($settings as $attribute => $attr_value) { // Check valid attribute. if (in_array($attribute, $valid_attrs) === false) { From 78e5438e54dd9d530ad17f3c3dde1650e0003257 Mon Sep 17 00:00:00 2001 From: Daniel Barbero Martin Date: Wed, 20 May 2020 12:30:19 +0200 Subject: [PATCH 010/299] Fixed error time refresh initial page CV --- pandora_console/index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandora_console/index.php b/pandora_console/index.php index 4d643de5ae..22948247da 100755 --- a/pandora_console/index.php +++ b/pandora_console/index.php @@ -1160,7 +1160,7 @@ if ($searchPage) { if (($home_url == '') || ($id_visualc == false)) { $str = 'sec=network&sec2=operation/visual_console/index&refr=60'; } else { - $str = 'sec=network&sec2=operation/visual_console/render_view&id='.$id_visualc.'&refr=60'; + $str = 'sec=network&sec2=operation/visual_console/render_view&id='.$id_visualc; } parse_str($str, $res); From db630a75dbd70ef8b28e9cbd9bce519b7532dd2b Mon Sep 17 00:00:00 2001 From: Daniel Barbero Martin Date: Wed, 20 May 2020 16:39:19 +0200 Subject: [PATCH 011/299] Fixed SLA error counter check --- .../include/functions_reporting.php | 40 ++++++++++++++++--- 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/pandora_console/include/functions_reporting.php b/pandora_console/include/functions_reporting.php index 98eb1b5025..be2203489d 100755 --- a/pandora_console/include/functions_reporting.php +++ b/pandora_console/include/functions_reporting.php @@ -6147,7 +6147,13 @@ function reporting_advanced_sla( $time_total += $time_interval; if ($time_interval > 0) { - $total_checks++; + if (isset($current_data['type']) === false + || ((int) $current_data['type'] === 0 + && $i !== 0) + ) { + $total_checks++; + } + if ((isset($current_data['datos'])) && ($current_data['datos'] !== false) ) { @@ -6159,7 +6165,7 @@ function reporting_advanced_sla( $match = preg_match('/'.$max_value.'/', $current_data['datos']); } - // Take notice of $inverse_interval value, + // Take notice of $inverse_interval value. if ($inverse_interval == 0) { $sla_check_value = $match; } else { @@ -6176,19 +6182,41 @@ function reporting_advanced_sla( // Not unknown nor not init values. if ($sla_check_value) { - $ok_checks++; + if (isset($current_data['type']) === false + || ((int) $current_data['type'] === 0 + && $i !== 0) + ) { + $ok_checks++; + } + $time_in_ok += $time_interval; } else { - $bad_checks++; + if (isset($current_data['type']) === false + || ((int) $current_data['type'] === 0 + && $i !== 0) + ) { + $bad_checks++; + } + $time_in_error += $time_interval; } } else { if ($current_data['datos'] === null) { $time_in_unknown += $time_interval; - $unknown_checks++; + if (isset($current_data['type']) === false + || ((int) $current_data['type'] === 0 + && $i !== 0) + ) { + $unknown_checks++; + } } else if ($current_data['datos'] === false) { $time_in_not_init += $time_interval; - $not_init_checks++; + if (isset($current_data['type']) === false + || ((int) $current_data['type'] === 0 + && $i !== 0) + ) { + $not_init_checks++; + } } } } From a73ec18867e595751f0565585598ff2a4ddf9fb5 Mon Sep 17 00:00:00 2001 From: Daniel Barbero Martin Date: Thu, 21 May 2020 09:13:39 +0200 Subject: [PATCH 012/299] Fixed errors filter search with pagination --- pandora_console/godmode/reporting/reporting_builder.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pandora_console/godmode/reporting/reporting_builder.php b/pandora_console/godmode/reporting/reporting_builder.php index 60464ee953..cfd1a14b9a 100755 --- a/pandora_console/godmode/reporting/reporting_builder.php +++ b/pandora_console/godmode/reporting/reporting_builder.php @@ -767,9 +767,14 @@ switch ($action) { ) ); - if (count($reports)) { + $filters = [ + 'search' => $search, + 'id_group' => $id_group, + ]; + $filtersStr = http_build_query($filters, '', '&'); $url = 'index.php?sec=reporting&sec2=godmode/reporting/reporting_builder'; + $url .= '&'.$filtersStr; ui_pagination($total_reports, $url, $offset, $pagination); $table = new stdClass(); From ed08867ab0421ba9434a42ca6d5ff12612439522 Mon Sep 17 00:00:00 2001 From: "ismael.moreno" Date: Thu, 21 May 2020 18:52:06 +0200 Subject: [PATCH 013/299] Fixed spaces in module name --- pandora_agents/unix/plugins/inventory | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pandora_agents/unix/plugins/inventory b/pandora_agents/unix/plugins/inventory index 6ef6233d23..b361bb43ac 100755 --- a/pandora_agents/unix/plugins/inventory +++ b/pandora_agents/unix/plugins/inventory @@ -567,12 +567,12 @@ if ($enable_all == 1 || $enabled{'software'} == 1) { #init_services if ($enable_all == 1 || $enabled{'init_services'} == 1) { - get_servicies_init_machine ('Init_services', \%modules); + get_servicies_init_machine ('Init services', \%modules); } #filesystem if ($enable_all == 1 || $enabled{'filesystem'} == 1) { - get_file_system('Filesystem', \%modules); + get_file_system('File system', \%modules); } #processes From ab8916a0daf5147638d01d35745ef444f862424a Mon Sep 17 00:00:00 2001 From: Daniel Barbero Martin Date: Fri, 22 May 2020 09:39:10 +0200 Subject: [PATCH 014/299] Fixed error functions date default type --- pandora_console/include/functions.php | 28 ++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/pandora_console/include/functions.php b/pandora_console/include/functions.php index eaea211d2a..284b8c83b7 100644 --- a/pandora_console/include/functions.php +++ b/pandora_console/include/functions.php @@ -477,7 +477,8 @@ function set_user_language() /** - * INTERNAL (use ui_print_timestamp for output): Transform an amount of time in seconds into a human readable + * INTERNAL (use ui_print_timestamp for output): + * Transform an amount of time in seconds into a human readable * strings of minutes, hours or days. * * @param integer $seconds Seconds elapsed time @@ -488,17 +489,11 @@ function set_user_language() */ function human_time_description_raw($seconds, $exactly=false, $units='large') { - switch ($units) { - case 'large': - $secondsString = __('seconds'); - $daysString = __('days'); - $monthsString = __('months'); - $yearsString = __('years'); - $minutesString = __('minutes'); - $hoursString = __('hours'); - $nowString = __('Now'); - break; + if (isset($units) === false || empty($units) === true) { + $units = 'large'; + } + switch ($units) { case 'tiny': $secondsString = __('s'); $daysString = __('d'); @@ -508,6 +503,17 @@ function human_time_description_raw($seconds, $exactly=false, $units='large') $hoursString = __('h'); $nowString = __('N'); break; + + default: + case 'large': + $secondsString = __('seconds'); + $daysString = __('days'); + $monthsString = __('months'); + $yearsString = __('years'); + $minutesString = __('minutes'); + $hoursString = __('hours'); + $nowString = __('Now'); + break; } if (empty($seconds)) { From 1d167d4aba0aff44b66bbfb65325544568c73540 Mon Sep 17 00:00:00 2001 From: alejandro-campos Date: Mon, 25 May 2020 11:12:29 +0200 Subject: [PATCH 015/299] fixed agent id strange behavior in events table --- pandora_console/operation/events/events.php | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/pandora_console/operation/events/events.php b/pandora_console/operation/events/events.php index 1c91ebaf54..ba029bfb17 100644 --- a/pandora_console/operation/events/events.php +++ b/pandora_console/operation/events/events.php @@ -1962,17 +1962,7 @@ function process_datatables_item(item) { /* Agent ID link */ if (item.id_agente > 0) { - - item.id_agente = '' + item.id_agente + ''; - - item.id_agente = '' + item.agent_name + ''; - + item.id_agente = '' + item.id_agente + ''; } else { item.id_agente = ''; } From 4d7341917c46a16917fe747663ebf280da1a350f Mon Sep 17 00:00:00 2001 From: alejandro-campos Date: Mon, 25 May 2020 13:10:46 +0200 Subject: [PATCH 016/299] Added cases when critical, warning or normal alert has been fired --- pandora_console/include/functions_api.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pandora_console/include/functions_api.php b/pandora_console/include/functions_api.php index 76e10533aa..6ee93eb409 100644 --- a/pandora_console/include/functions_api.php +++ b/pandora_console/include/functions_api.php @@ -2048,31 +2048,31 @@ function api_get_all_agents($thrash1, $thrash2, $other, $returnType) // Filter by status switch ($other['data'][2]) { case 'warning': - if ($status == 2) { + if ($status == AGENT_MODULE_STATUS_WARNING || $status == AGENT_MODULE_STATUS_WARNING_ALERT) { $result_agents[] = $agent; } break; case 'critical': - if ($status == 1) { + if ($status == AGENT_MODULE_STATUS_CRITICAL_BAD || $status == AGENT_MODULE_STATUS_CRITICAL_ALERT) { $result_agents[] = $agent; } break; case 'unknown': - if ($status == 3) { + if ($status == AGENT_MODULE_STATUS_UNKNOWN) { $result_agents[] = $agent; } break; case 'normal': - if ($status == 0) { + if ($status == AGENT_MODULE_STATUS_NORMAL || $status == AGENT_MODULE_STATUS_NORMAL_ALERT) { $result_agents[] = $agent; } break; case 'alert_fired': - if ($status == 4) { + if ($status == AGENT_STATUS_ALERT_FIRED) { $result_agents[] = $agent; } break; From 37058537aa9638f7835362730f3d92f38db26140 Mon Sep 17 00:00:00 2001 From: fbsanchez Date: Mon, 25 May 2020 17:06:23 +0200 Subject: [PATCH 017/299] Fix #5779 --- pandora_console/godmode/massive/massive_operations.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandora_console/godmode/massive/massive_operations.php b/pandora_console/godmode/massive/massive_operations.php index 0fb08d0034..d7aec41af8 100755 --- a/pandora_console/godmode/massive/massive_operations.php +++ b/pandora_console/godmode/massive/massive_operations.php @@ -246,7 +246,7 @@ ui_print_page_header( $help_header, true, $onheader, - true, + false, 'massivemodal' ); From 8898340b780023bd83a85ecdbce166c3630d37b5 Mon Sep 17 00:00:00 2001 From: fbsanchez Date: Mon, 25 May 2020 18:49:28 +0200 Subject: [PATCH 018/299] Comparison values max_execution_time --- pandora_console/include/class/ConsoleSupervisor.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandora_console/include/class/ConsoleSupervisor.php b/pandora_console/include/class/ConsoleSupervisor.php index 77a6388df2..5964a6c9f9 100644 --- a/pandora_console/include/class/ConsoleSupervisor.php +++ b/pandora_console/include/class/ConsoleSupervisor.php @@ -1349,7 +1349,7 @@ class ConsoleSupervisor $this->cleanNotifications('NOTIF.PHP.INPUT_TIME'); } - if ($PHPmax_execution_time !== '0') { + if ((int) $PHPmax_execution_time !== 0) { $url = 'http://php.net/manual/en/info.configuration.php#ini.max-execution-time'; if ($config['language'] == 'es') { $url = 'http://php.net/manual/es/info.configuration.php#ini.max-execution-time'; From b9877a9cf65b3a28feea9c82227ad1f9067fee8b Mon Sep 17 00:00:00 2001 From: alejandro-campos Date: Tue, 26 May 2020 11:05:53 +0200 Subject: [PATCH 019/299] fixed ajax call params when using url characters --- .../javascript/pandora_snmp_browser.js | 35 +++++++++---------- 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/pandora_console/include/javascript/pandora_snmp_browser.js b/pandora_console/include/javascript/pandora_snmp_browser.js index ef746aa5f4..dcb21359dc 100644 --- a/pandora_console/include/javascript/pandora_snmp_browser.js +++ b/pandora_console/include/javascript/pandora_snmp_browser.js @@ -229,27 +229,26 @@ function snmpGet(oid) { custom_action = ""; } - // Prepare the AJAX call - var params = [ - "target_ip=" + target_ip, - "community=" + community, - "oid=" + oid, - "snmp_browser_version=" + snmp_version, - "snmp3_browser_auth_user=" + snmp3_auth_user, - "snmp3_browser_security_level=" + snmp3_security_level, - "snmp3_browser_auth_method=" + snmp3_auth_method, - "snmp3_browser_auth_pass=" + snmp3_auth_pass, - "snmp3_browser_privacy_method=" + snmp3_privacy_method, - "snmp3_browser_privacy_pass=" + snmp3_privacy_pass, - "server_to_exec=" + server_to_exec, - "action=" + "snmpget", - "custom_action=" + custom_action, - "page=include/ajax/snmp_browser.ajax" - ]; + var params = {}; + + params["target_ip"] = target_ip; + params["community"] = community; + params["oid"] = oid; + params["snmp_browser_version"] = snmp_version; + params["snmp3_browser_auth_user"] = snmp3_auth_user; + params["snmp3_browser_security_level"] = snmp3_security_level; + params["snmp3_browser_auth_method"] = snmp3_auth_method; + params["snmp3_browser_auth_pass"] = snmp3_auth_pass; + params["snmp3_browser_privacy_method"] = snmp3_privacy_method; + params["snmp3_browser_privacy_pass"] = snmp3_privacy_pass; + params["server_to_exec"] = server_to_exec; + params["action"] = "snmpget"; + params["custom_action"] = custom_action; + params["page"] = "include/ajax/snmp_browser.ajax"; // SNMP get! jQuery.ajax({ - data: params.join("&"), + data: params, type: "POST", url: (action = ajax_url), async: true, From e8a3cb698d538fb4c2a6ba248ebcaeebb567e4ce Mon Sep 17 00:00:00 2001 From: fbsanchez Date: Tue, 26 May 2020 11:26:49 +0200 Subject: [PATCH 020/299] Time selector adjustment --- pandora_console/include/functions_html.php | 16 ++++++++-------- pandora_console/include/javascript/pandora.js | 8 ++++---- pandora_console/include/styles/wizard.css | 3 +-- 3 files changed, 13 insertions(+), 14 deletions(-) diff --git a/pandora_console/include/functions_html.php b/pandora_console/include/functions_html.php index adf978d13f..2a4e8aff92 100644 --- a/pandora_console/include/functions_html.php +++ b/pandora_console/include/functions_html.php @@ -1088,8 +1088,8 @@ function html_print_extended_select_for_time( } ob_start(); - // Use the no_meta parameter because this image is only in the base console - echo '
'; + // Use the no_meta parameter because this image is only in the base console. + echo '
'; html_print_select( $fields, $uniq_name.'_select', @@ -1104,7 +1104,7 @@ function html_print_extended_select_for_time( $readonly, 'font-size: xx-small;'.$select_style ); - // The advanced control is only for admins + // The advanced control is only for admins. if ($admin) { echo ' '.html_print_image( 'images/pencil.png', @@ -1123,7 +1123,7 @@ function html_print_extended_select_for_time( echo '
'; - echo '
'; + echo '
'; html_print_input_text($uniq_name.'_text', $selected, '', $size, 255, false, $readonly, false, '', $class); html_print_input_hidden($name, $selected, false, $uniq_name); @@ -1154,15 +1154,15 @@ function html_print_extended_select_for_time( echo '
'; echo ""; $returnString = ob_get_clean(); diff --git a/pandora_console/include/javascript/pandora.js b/pandora_console/include/javascript/pandora.js index c91339f0c6..89fa9c63f3 100644 --- a/pandora_console/include/javascript/pandora.js +++ b/pandora_console/include/javascript/pandora.js @@ -838,7 +838,7 @@ function post_process_select_events(name) { function period_select_init(name, allow_zero) { // Manual mode is hidden by default $("#" + name + "_manual").css("display", "none"); - $("#" + name + "_default").css("display", "flex"); + $("#" + name + "_default").css("display", "inline"); // If the text input is empty, we put on it 5 minutes by default if ($("#text-" + name + "_text").val() == "") { @@ -852,7 +852,7 @@ function period_select_init(name, allow_zero) { } } else if ($("#text-" + name + "_text").val() == 0 && allow_zero != true) { $("#" + name + "_units option:last").prop("selected", false); - $("#" + name + "_manual").css("display", "flex"); + $("#" + name + "_manual").css("display", "inline"); $("#" + name + "_default").css("display", "none"); } } @@ -941,13 +941,13 @@ function selectFirst(name) { */ function toggleBoth(name) { if ($("#" + name + "_default").css("display") == "none") { - $("#" + name + "_default").css("display", "flex"); + $("#" + name + "_default").css("display", "inline"); } else { $("#" + name + "_default").css("display", "none"); } if ($("#" + name + "_manual").css("display") == "none") { - $("#" + name + "_manual").css("display", "flex"); + $("#" + name + "_manual").css("display", "inline"); } else { $("#" + name + "_manual").css("display", "none"); } diff --git a/pandora_console/include/styles/wizard.css b/pandora_console/include/styles/wizard.css index 69209ce17c..b2e9b044b1 100644 --- a/pandora_console/include/styles/wizard.css +++ b/pandora_console/include/styles/wizard.css @@ -70,9 +70,8 @@ ul.wizard li > textarea { } .wizard .discovery_inline_input { - display: flex; + display: inline; align-content: end; - flex: 0; align-self: flex-start; } From e8ca0c72edf8c39a176cdc7673447602e0462979 Mon Sep 17 00:00:00 2001 From: fbsanchez Date: Tue, 26 May 2020 13:13:51 +0200 Subject: [PATCH 021/299] Fixed snmp_read_mib call --- .../include/functions_snmp_browser.php | 45 ++++++++++++++++--- 1 file changed, 40 insertions(+), 5 deletions(-) diff --git a/pandora_console/include/functions_snmp_browser.php b/pandora_console/include/functions_snmp_browser.php index 224a4ecc3f..89f7615b08 100644 --- a/pandora_console/include/functions_snmp_browser.php +++ b/pandora_console/include/functions_snmp_browser.php @@ -238,8 +238,17 @@ function snmp_browser_print_tree( /** * Build the SNMP tree for the given SNMP agent. * - * @param target_ip string IP of the SNMP agent. - * @param community string SNMP community to use. + * @param string $target_ip Target_ip. + * @param string $community Community. + * @param string $starting_oid Starting_oid. + * @param string $version Version. + * @param string $snmp3_auth_user Snmp3_auth_user. + * @param string $snmp3_security_level Snmp3_security_level. + * @param string $snmp3_auth_method Snmp3_auth_method. + * @param string $snmp3_auth_pass Snmp3_auth_pass. + * @param string $snmp3_privacy_method Snmp3_privacy_method. + * @param string $snmp3_privacy_pass Snmp3_privacy_pass. + * @param string|null $snmp3_context_engine_id Snmp3_context_engine_id. * * @return array The SNMP tree. */ @@ -253,7 +262,8 @@ function snmp_browser_get_tree( $snmp3_auth_method='', $snmp3_auth_pass='', $snmp3_privacy_method='', - $snmp3_privacy_pass='' + $snmp3_privacy_pass='', + $snmp3_context_engine_id=null ) { global $config; @@ -277,6 +287,7 @@ function snmp_browser_get_tree( default: $snmp_version = SNMP::VERSION_2c; + break; } $snmp_session = new SNMP($snmp_version, $target_ip, $community); @@ -284,10 +295,34 @@ function snmp_browser_get_tree( // Set security if SNMP Version is 3. if ($snmp_version == SNMP::VERSION_3) { - $snmp_session->setSecurity($snmp3_security_level, $snmp3_auth_method, $snmp3_auth_pass, $snmp3_privacy_method, $snmp3_privacy_pass); + $snmp_session->setSecurity( + $snmp3_security_level, + $snmp3_auth_method, + $snmp3_auth_pass, + $snmp3_privacy_method, + $snmp3_privacy_pass, + $community, + $snmp3_context_engine_id + ); } - snmp_read_mib($config['homedir'].'/attachment/mibs'); + $mibs_dir = $config['homedir'].'/attachment/mibs'; + $_dir = opendir($mibs_dir); + + // Future. Recomemended: Use a global config limit of MIBs loaded. + while (($mib_file = readdir($_dir)) !== false) { + if ($mib_file == '..' || $mib_file == '.') { + continue; + } + + $rs = snmp_read_mib($mibs_dir.'/'.$mib_file); + if ($rs !== true) { + error_log('Failed while reading MIB file: '.$mib_file); + } + } + + closedir($_dir); + $output = $snmp_session->walk($starting_oid); if ($output == false) { $output = $snmp_session->getError(); From 24ddb370a75bb34b52898ea5c4d612cad86ac49b Mon Sep 17 00:00:00 2001 From: Luis Calvo Date: Tue, 26 May 2020 13:38:03 +0200 Subject: [PATCH 022/299] Fixed user list for UM --- pandora_console/general/logon_ok.php | 2 +- pandora_console/godmode/users/user_list.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pandora_console/general/logon_ok.php b/pandora_console/general/logon_ok.php index cdbc09c9f9..f705e88ea1 100644 --- a/pandora_console/general/logon_ok.php +++ b/pandora_console/general/logon_ok.php @@ -153,7 +153,7 @@ $table->rowclass[] = ''; $table->data[] = $tdata; // Users. -if (users_is_admin()) { +if (users_is_admin() || check_acl($config['id_user'], 0, 'UM')) { $tdata = []; $tdata[0] = reporting_get_stats_users($data); $table->rowclass[] = ''; diff --git a/pandora_console/godmode/users/user_list.php b/pandora_console/godmode/users/user_list.php index 8fb461a355..0562b478a1 100644 --- a/pandora_console/godmode/users/user_list.php +++ b/pandora_console/godmode/users/user_list.php @@ -419,7 +419,7 @@ else { $result = array_intersect($g, $own_groups); // Show users without profile too. - if (!$usr['is_admin'] && !empty($result) || (!$usr['is_admin'] && db_get_all_rows_field_filter('tusuario_perfil', 'id_usuario', $usr['id_user']) === false)) { + if (!empty($result) || (db_get_all_rows_field_filter('tusuario_perfil', 'id_usuario', $usr['id_user']) === false)) { $info[$key] = $usr; } From 1c8a80923d40c6bbb7849a75ffa7ec1c68c1b4a2 Mon Sep 17 00:00:00 2001 From: Manuel Montes Date: Tue, 26 May 2020 13:40:59 +0200 Subject: [PATCH 023/299] Fixed visual bug in agent acccess rate from treview --- pandora_console/include/functions_graph.php | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/pandora_console/include/functions_graph.php b/pandora_console/include/functions_graph.php index 5a1d482e1d..d462929cff 100644 --- a/pandora_console/include/functions_graph.php +++ b/pandora_console/include/functions_graph.php @@ -2441,10 +2441,14 @@ function graphic_agentaccess( } else { $options['generals']['pdf']['width'] = 350; $options['generals']['pdf']['height'] = 125; + if (!empty($data_array)) { + $imgbase64 = ''; + } else { + $imgbase64 .= vbar_graph($data_array, $options, 2); + } - $imgbase64 = ''; return $imgbase64; } } From fae026a089683d265f8e09228e9bceea095862a1 Mon Sep 17 00:00:00 2001 From: fbsanchez Date: Tue, 26 May 2020 13:48:43 +0200 Subject: [PATCH 024/299] Form fixes --- pandora_console/extensions/quick_shell.php | 6 ++--- pandora_console/include/functions_config.php | 26 +++++++++++--------- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/pandora_console/extensions/quick_shell.php b/pandora_console/extensions/quick_shell.php index 644e9aa564..ecd9300614 100644 --- a/pandora_console/extensions/quick_shell.php +++ b/pandora_console/extensions/quick_shell.php @@ -318,15 +318,15 @@ function quickShellSettings() ); $gotty_host = get_parameter( 'gotty_host', - $config['gotty_host'] + '' ); $gotty_ssh_port = get_parameter( 'gotty_ssh_port', - $config['gotty_ssh_port'] + '' ); $gotty_telnet_port = get_parameter( 'gotty_telnet_port', - $config['gotty_telnet_port'] + '' ); $gotty_user = get_parameter( diff --git a/pandora_console/include/functions_config.php b/pandora_console/include/functions_config.php index 96f266fc1e..e003461c5b 100644 --- a/pandora_console/include/functions_config.php +++ b/pandora_console/include/functions_config.php @@ -354,18 +354,6 @@ function config_update_config() if (!config_update_value('email_password', io_input_password(get_parameter('email_password')))) { $error_update[] = __('Email password'); } - - if (!config_update_value('ws_bind_address', get_parameter('ws_bind_address'))) { - $error_update[] = __('WebSocket bind address'); - } - - if (!config_update_value('ws_port', get_parameter('ws_port'))) { - $error_update[] = __('WebSocket port'); - } - - if (!config_update_value('ws_proxy_url', get_parameter('ws_proxy_url'))) { - $error_update[] = __('WebSocket proxy url'); - } break; case 'enterprise': @@ -1599,6 +1587,20 @@ function config_update_config() } break; + case 'websocket_engine': + if (!config_update_value('ws_bind_address', get_parameter('ws_bind_address'))) { + $error_update[] = __('WebSocket bind address'); + } + + if (!config_update_value('ws_port', get_parameter('ws_port'))) { + $error_update[] = __('WebSocket port'); + } + + if (!config_update_value('ws_proxy_url', get_parameter('ws_proxy_url'))) { + $error_update[] = __('WebSocket proxy url'); + } + break; + default: // Ignore. break; From 2481bcc669d7238c48473596be648beb9f2fd770 Mon Sep 17 00:00:00 2001 From: fbsanchez Date: Tue, 26 May 2020 13:56:39 +0200 Subject: [PATCH 025/299] Update default value for use_xml_timestamp --- pandora_server/lib/PandoraFMS/Config.pm | 3 ++- pandora_server/lib/PandoraFMS/DataServer.pm | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/pandora_server/lib/PandoraFMS/Config.pm b/pandora_server/lib/PandoraFMS/Config.pm index 5babae0d3c..c19aed0317 100644 --- a/pandora_server/lib/PandoraFMS/Config.pm +++ b/pandora_server/lib/PandoraFMS/Config.pm @@ -399,7 +399,8 @@ sub pandora_load_config { $pa_config->{'max_log_generation'} = 1; # Ignore the timestamp in the XML and use the file timestamp instead - $pa_config->{'use_xml_timestamp'} = 0; + # If 1 => uses timestamp from received XML #5763. + $pa_config->{'use_xml_timestamp'} = 1; # Server restart delay in seconds $pa_config->{'restart_delay'} = 60; diff --git a/pandora_server/lib/PandoraFMS/DataServer.pm b/pandora_server/lib/PandoraFMS/DataServer.pm index f82a58a120..69efd9f45a 100644 --- a/pandora_server/lib/PandoraFMS/DataServer.pm +++ b/pandora_server/lib/PandoraFMS/DataServer.pm @@ -234,6 +234,7 @@ sub data_consumer ($$) { } # Ignore the timestamp in the XML and use the file timestamp instead + # If 1 => uses timestamp from received XML #5763. $xml_data->{'timestamp'} = strftime ("%Y-%m-%d %H:%M:%S", localtime((stat($file_name))[9])) if ($pa_config->{'use_xml_timestamp'} eq '0' || ! defined ($xml_data->{'timestamp'})); # Double check that the file exists From 2ae11577cee1c4d73da892406be480eae11e9cb2 Mon Sep 17 00:00:00 2001 From: Manuel Montes Date: Tue, 26 May 2020 14:42:06 +0200 Subject: [PATCH 026/299] Added case insensitive in agent search --- pandora_console/godmode/users/user_list.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pandora_console/godmode/users/user_list.php b/pandora_console/godmode/users/user_list.php index 8fb461a355..24f2a38a65 100644 --- a/pandora_console/godmode/users/user_list.php +++ b/pandora_console/godmode/users/user_list.php @@ -367,11 +367,11 @@ if ($search) { $found = false; if (!empty($filter_search)) { - if (preg_match('/.*'.$filter_search.'.*/', $user_info['fullname']) != 0) { + if (preg_match('/.*'.strtolower($filter_search).'.*/', strtolower($user_info['fullname'])) != 0) { $found = true; } - if (preg_match('/.*'.$filter_search.'.*/', $user_info['id_user']) != 0) { + if (preg_match('/.*'.strtolower($filter_search).'.*/', strtolower($user_info['id_user'])) != 0) { $found = true; } From f2f1eaf58e35e0dff8e36470ba35a5d3f881ad9a Mon Sep 17 00:00:00 2001 From: Daniel Barbero Martin Date: Tue, 26 May 2020 14:44:52 +0200 Subject: [PATCH 027/299] Fixed values legend charts sparse --- pandora_console/include/functions.php | 8 ++++++++ pandora_console/include/graphs/flot/pandora.flot.js | 8 +++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/pandora_console/include/functions.php b/pandora_console/include/functions.php index eaea211d2a..d409096b06 100644 --- a/pandora_console/include/functions.php +++ b/pandora_console/include/functions.php @@ -3718,6 +3718,14 @@ function series_type_graph_array($data, $show_elements_graph) } } + if ((int) $value['min'] === PHP_INT_MAX) { + $value['min'] = 0; + } + + if ((int) $value['max'] === (-PHP_INT_MAX)) { + $value['max'] = 0; + } + $data_return['legend'][$key] .= __('Min:').remove_right_zeros( number_format( $value['min'], diff --git a/pandora_console/include/graphs/flot/pandora.flot.js b/pandora_console/include/graphs/flot/pandora.flot.js index 175173160c..48aaa94ee5 100644 --- a/pandora_console/include/graphs/flot/pandora.flot.js +++ b/pandora_console/include/graphs/flot/pandora.flot.js @@ -3009,7 +3009,7 @@ function number_format(number, force_integer, unit, short_data, divisor) { var decimals = 2; if (unit == "KB") { - return number + unit; + return Math.round(number * decimals) + unit; } // Set maximum decimal precision to 99 in case short_data is not set. @@ -3038,6 +3038,12 @@ function number_format(number, force_integer, unit, short_data, divisor) { if (divisor) { number = Math.round(number * decimals) / decimals; + } else { + number = Math.round(number * decimals); + } + + if (isNaN(number)) { + number = 0; } return number + " " + shorts[pos] + unit; From 6866beef52eb76b3d4c313f1e719c2ed59e1a143 Mon Sep 17 00:00:00 2001 From: alejandro-campos Date: Tue, 26 May 2020 17:44:38 +0200 Subject: [PATCH 028/299] fixed bad constants --- pandora_console/include/constants.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pandora_console/include/constants.php b/pandora_console/include/constants.php index e6c4108615..6fc34abbec 100644 --- a/pandora_console/include/constants.php +++ b/pandora_console/include/constants.php @@ -149,8 +149,8 @@ define('COL_IGNORED', '#DDD'); define('COL_ALERTFIRED', '#F36201'); define('COL_MINOR', '#F099A2'); define('COL_MAJOR', '#C97A4A'); -define('COL_INFORMATIONAL', '#E4E4E4'); -define('COL_MAINTENANCE', '#4a83f3'); +define('COL_INFORMATIONAL', '#4a83f3'); +define('COL_MAINTENANCE', '#E4E4E4'); define('COL_GRAPH1', '#C397F2'); define('COL_GRAPH2', '#FFE66C'); From 8abd447af1ed4bfdf3115b730a1cfcb78ae1dc57 Mon Sep 17 00:00:00 2001 From: alejandro-campos Date: Wed, 27 May 2020 16:11:48 +0200 Subject: [PATCH 029/299] minor fix in snmp browser --- .../include/javascript/pandora_snmp_browser.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/pandora_console/include/javascript/pandora_snmp_browser.js b/pandora_console/include/javascript/pandora_snmp_browser.js index ef746aa5f4..38864e2bf4 100644 --- a/pandora_console/include/javascript/pandora_snmp_browser.js +++ b/pandora_console/include/javascript/pandora_snmp_browser.js @@ -625,6 +625,20 @@ function snmp_browser_create_modules(module_target, return_post = true) { ); $("input[name=create_modules_" + module_target + "]").addClass("sub spinn"); + $("#dialog_error").on("dialogclose", function(event) { + $("input[name=create_modules_" + module_target + "]").removeClass( + "sub spinn" + ); + $("input[name=create_modules_" + module_target + "]").addClass("sub add"); + }); + + $("#dialog_success").on("dialogclose", function(event) { + $("input[name=create_modules_" + module_target + "]").removeClass( + "sub spinn" + ); + $("input[name=create_modules_" + module_target + "]").addClass("sub add"); + }); + $.ajax({ method: "post", url: "ajax.php", From 6ba1a272745ad4e5e9a9b3d2d99f69ab3d2e0a0d Mon Sep 17 00:00:00 2001 From: alejandro-campos Date: Wed, 27 May 2020 18:51:25 +0200 Subject: [PATCH 030/299] added error to dialog submission when no agents or policies have been selected --- .../include/ajax/snmp_browser.ajax.php | 16 +++++++ .../operation/snmpconsole/snmp_browser.php | 45 +++++++++++++------ 2 files changed, 47 insertions(+), 14 deletions(-) diff --git a/pandora_console/include/ajax/snmp_browser.ajax.php b/pandora_console/include/ajax/snmp_browser.ajax.php index 5eaa01d659..3ef830fe09 100644 --- a/pandora_console/include/ajax/snmp_browser.ajax.php +++ b/pandora_console/include/ajax/snmp_browser.ajax.php @@ -112,6 +112,17 @@ if (is_ajax()) { $output .= '
'; $output .= '
'; + // Dialog no agent selected. + $output .= ''; + echo $output; } @@ -158,6 +169,11 @@ if (is_ajax()) { $id_target = explode(',', $id_items[0]); } + if (empty($id_items[0])) { + echo json_encode([0 => -1]); + exit; + } + $snmp_extradata = get_parameter('snmp_extradata', ''); if (!is_array($snmp_extradata)) { diff --git a/pandora_console/operation/snmpconsole/snmp_browser.php b/pandora_console/operation/snmpconsole/snmp_browser.php index 8db508da27..5b7dc97a63 100644 --- a/pandora_console/operation/snmpconsole/snmp_browser.php +++ b/pandora_console/operation/snmpconsole/snmp_browser.php @@ -241,20 +241,37 @@ function snmp_show_result_message(data) { if (dato.length !== 0) { $("#error_text").text(""); - dato.forEach(function (valor, indice, array) { - $("#error_text").append("
" + valor); - }); - $("#dialog_error").dialog({ - resizable: true, - draggable: true, - modal: true, - height: 300, - width: 500, - overlay: { - opacity: 0.5, - background: "black" - } - }); + if (dato[0] ===- 1) { + $("#dialog_no_agents_selected").dialog({ + resizable: true, + draggable: true, + modal: true, + height: 300, + width: 500, + overlay: { + opacity: 0.5, + background: "black" + } + }); + } else { + $("#error_text").text(""); + + dato.forEach(function (valor, indice, array) { + $("#error_text").append("
" + valor); + }); + $("#dialog_error").dialog({ + resizable: true, + draggable: true, + modal: true, + height: 300, + width: 500, + overlay: { + opacity: 0.5, + background: "black" + } + }); + } + } else { $("#dialog_success").dialog({ resizable: true, From 6157030cff2c336aeaf29979c00940315f70df9a Mon Sep 17 00:00:00 2001 From: alejandro-campos Date: Wed, 27 May 2020 18:52:50 +0200 Subject: [PATCH 031/299] added error to dialog submission when no agents or policies have been selected --- pandora_console/operation/snmpconsole/snmp_browser.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandora_console/operation/snmpconsole/snmp_browser.php b/pandora_console/operation/snmpconsole/snmp_browser.php index 5b7dc97a63..0a5e2266e7 100644 --- a/pandora_console/operation/snmpconsole/snmp_browser.php +++ b/pandora_console/operation/snmpconsole/snmp_browser.php @@ -241,7 +241,7 @@ function snmp_show_result_message(data) { if (dato.length !== 0) { $("#error_text").text(""); - if (dato[0] ===- 1) { + if (dato[0] === -1) { $("#dialog_no_agents_selected").dialog({ resizable: true, draggable: true, From 476ebe70a70cf5af7427b7a8f2f5c4484d0ec0d6 Mon Sep 17 00:00:00 2001 From: alejandro-campos Date: Thu, 28 May 2020 14:47:36 +0200 Subject: [PATCH 032/299] fixes in reports front page default setup --- .../godmode/setup/setup_visuals.php | 27 +++++++++++++------ 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/pandora_console/godmode/setup/setup_visuals.php b/pandora_console/godmode/setup/setup_visuals.php index 58e31d7edd..733e2f666e 100755 --- a/pandora_console/godmode/setup/setup_visuals.php +++ b/pandora_console/godmode/setup/setup_visuals.php @@ -1093,7 +1093,7 @@ $row++; } } - // Logo + // Logo. $table_report->data['custom_report_front-logo'][0] = __('Custom report front').' - '.__('Custom logo').ui_print_help_tip( __("The dir of custom logos is in your www Console in 'images/custom_logo'. You can upload more files (ONLY JPEG AND PNG) in upload tool in console."), true @@ -1107,7 +1107,7 @@ $row++; '', true ); - // Preview + // Preview. $table_report->data['custom_report_front-preview'][0] = __('Custom report front').' - '.'Preview'; if (empty($config['custom_report_front_logo'])) { $config['custom_report_front_logo'] = 'images/pandora_logo_white.jpg'; @@ -1115,23 +1115,32 @@ $row++; $table_report->data['custom_report_front-preview'][1] = ''.html_print_image($config['custom_report_front_logo'], true).''; - // Header + // Header. $table_report->data['custom_report_front-header'][0] = __('Custom report front').' - '.__('Header'); + + // Do not remove io_safe_output in textarea. TinyMCE avoids XSS injection. $table_report->data['custom_report_front-header'][1] = html_print_textarea( 'custom_report_front_header', 5, 15, - $config['custom_report_front_header'], + io_safe_output($config['custom_report_front_header']), 'style="width: 38em;"', true ); - // First page + // First page. + // Do not remove io_safe_output in textarea. TinyMCE avoids XSS injection. + if ($config['custom_report_front']) { + $firstpage_content = $config['custom_report_front_firstpage']; + } else { + $firstpage_content = io_safe_output($config['custom_report_front_firstpage']); + } + $table_report->data['custom_report_front-first_page'][0] = __('Custom report front').' - '.__('First page'); $custom_report_front_firstpage = str_replace( '(_URLIMAGE_)', ui_get_full_url(false, true, false, false), - $config['custom_report_front_firstpage'] + io_safe_output($firstpage_content) ); $table_report->data['custom_report_front-first_page'][1] = html_print_textarea( 'custom_report_front_firstpage', @@ -1142,13 +1151,15 @@ $row++; true ); - // Footer + // Footer. $table_report->data['custom_report_front-footer'][0] = __('Custom report front').' - '.__('Footer'); + + // Do not remove io_safe_output in textarea. TinyMCE avoids XSS injection. $table_report->data['custom_report_front-footer'][1] = html_print_textarea( 'custom_report_front_footer', 5, 15, - $config['custom_report_front_footer'], + io_safe_output($config['custom_report_front_footer']), 'style="width: 38em;"', true ); From b7c0f0e4c3dffa8614b57a2afa0f1ab92c5eebde Mon Sep 17 00:00:00 2001 From: Kike Date: Thu, 28 May 2020 15:50:49 +0200 Subject: [PATCH 033/299] Fixed sintax error for some OS --- pandora_agents/unix/pandora_agent_installer | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pandora_agents/unix/pandora_agent_installer b/pandora_agents/unix/pandora_agent_installer index 1a9e6ebbe0..dd69f50e8a 100755 --- a/pandora_agents/unix/pandora_agent_installer +++ b/pandora_agents/unix/pandora_agent_installer @@ -164,7 +164,7 @@ uninstall () { rm -f $DESTDIR/etc/logrotate.d/pandora_agent # Remove systemd service if exists - if [ $(systemctl --v | grep systemd | wc -l) != 0 ] + if [ `systemctl --v 2> /dev/null | grep systemd | wc -l` != 0 ] then PANDORA_AGENT_SERVICE="/etc/systemd/system/pandora_agent_daemon.service" rm -f $PANDORA_AGENT_SERVICE @@ -480,7 +480,7 @@ install () { fi # Create systemd service - if [ $(systemctl --v | grep systemd | wc -l) != 0 ] + if [ `systemctl --v 2> /dev/null | grep systemd | wc -l` != 0 ] then echo "Creating systemd service for pandora_agent_daemon" From 09672921cea6a87ac073e66fdb67265e04224ea8 Mon Sep 17 00:00:00 2001 From: alejandro-campos Date: Thu, 28 May 2020 16:47:27 +0200 Subject: [PATCH 034/299] removed overflow property --- .../operation/visual_console/legacy_public_view.php | 1 - pandora_console/operation/visual_console/legacy_view.php | 1 - pandora_console/operation/visual_console/view.php | 7 ++++++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/pandora_console/operation/visual_console/legacy_public_view.php b/pandora_console/operation/visual_console/legacy_public_view.php index 4a316eee60..0d678e8970 100644 --- a/pandora_console/operation/visual_console/legacy_public_view.php +++ b/pandora_console/operation/visual_console/legacy_public_view.php @@ -196,7 +196,6 @@ $ignored_params['refr'] = ''; $('body').css('background-color',''); $('body').css('margin','0'); - $('body').css('overflow','hidden'); $(".module_graph .menu_graph").css('display','none'); $(".parent_graph").each(function(){ diff --git a/pandora_console/operation/visual_console/legacy_view.php b/pandora_console/operation/visual_console/legacy_view.php index d81f9b0f6e..f0928e15e3 100644 --- a/pandora_console/operation/visual_console/legacy_view.php +++ b/pandora_console/operation/visual_console/legacy_view.php @@ -250,7 +250,6 @@ if ($config['pure']) { body.pure { min-height: 100px; margin: 0px; - overflow: hidden; height: 100%; ; } @@ -500,6 +499,12 @@ ui_require_css_file('form'); return item; }); +console.log(container); +console.log(props, true); +console.log(items, true); +console.log(baseUrl, true); +console.log(handleUpdate); + var visualConsoleManager = createVisualConsole( container, props, From f9b2d8ed40062a35e6ffdc0590030e53c4fb9601 Mon Sep 17 00:00:00 2001 From: alejandro-campos Date: Thu, 28 May 2020 16:48:46 +0200 Subject: [PATCH 035/299] removed overflow property --- pandora_console/operation/visual_console/view.php | 6 ------ 1 file changed, 6 deletions(-) diff --git a/pandora_console/operation/visual_console/view.php b/pandora_console/operation/visual_console/view.php index 6556bf9c4d..312b100391 100644 --- a/pandora_console/operation/visual_console/view.php +++ b/pandora_console/operation/visual_console/view.php @@ -499,12 +499,6 @@ ui_require_css_file('form'); return item; }); -console.log(container); -console.log(props, true); -console.log(items, true); -console.log(baseUrl, true); -console.log(handleUpdate); - var visualConsoleManager = createVisualConsole( container, props, From aa0a78311246a9e75ad7af849dd6cfe7fdfcad33 Mon Sep 17 00:00:00 2001 From: Daniel Barbero Martin Date: Thu, 28 May 2020 17:03:10 +0200 Subject: [PATCH 036/299] Remove visual console mobile --- pandora_console/mobile/index.php | 10 ---------- pandora_console/mobile/operation/home.php | 14 +------------- 2 files changed, 1 insertion(+), 23 deletions(-) diff --git a/pandora_console/mobile/index.php b/pandora_console/mobile/index.php index 28a934369f..71b6db82ac 100644 --- a/pandora_console/mobile/index.php +++ b/pandora_console/mobile/index.php @@ -349,16 +349,6 @@ switch ($action) { $agent = new Agent(); $agent->show(); break; - - case 'visualmaps': - $visualmaps = new Visualmaps(); - $visualmaps->show(); - break; - - case 'visualmap': - $visualmap = new Visualmap(); - $visualmap->show(); - break; } break; } diff --git a/pandora_console/mobile/operation/home.php b/pandora_console/mobile/operation/home.php index 11213e88eb..b172d16021 100644 --- a/pandora_console/mobile/operation/home.php +++ b/pandora_console/mobile/operation/home.php @@ -80,14 +80,8 @@ class Home 'menu_item' => true, 'icon' => 'modules', ]; - $items['visualmaps'] = [ - 'name' => __('Visual consoles'), - 'filename' => 'visualmaps.php', - 'menu_item' => true, - 'icon' => 'visual_console', - ]; - // Not in home + // Not in home. $items['agent'] = [ 'name' => __('Agent'), 'filename' => 'agent.php', @@ -100,12 +94,6 @@ class Home 'menu_item' => false, 'icon' => '', ]; - $items['visualmap'] = [ - 'name' => __('Visualmap'), - 'filename' => 'visualmap.php', - 'menu_item' => false, - 'icon' => '', - ]; } $this->pagesItems = $items; From 720a2dcfc931f98c1d4a992610a165b56fb3892b Mon Sep 17 00:00:00 2001 From: Daniel Maya Date: Fri, 29 May 2020 12:27:32 +0200 Subject: [PATCH 037/299] Fixed warning_alert status --- .../include/functions_visual_map.php | 35 +++++++++---------- 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/pandora_console/include/functions_visual_map.php b/pandora_console/include/functions_visual_map.php index 2cddd5d8c0..bcb5f1ce60 100755 --- a/pandora_console/include/functions_visual_map.php +++ b/pandora_console/include/functions_visual_map.php @@ -3220,13 +3220,9 @@ function visual_map_get_image_status_element($layoutData, $status=false) switch ($status) { case 1: - // Critical (BAD). - $img .= '_bad.png'; - break; - case 4: - // Critical (ALERT). - $img = '4'.$img.'_bad.png'; + // Critical or critical alert (BAD). + $img .= '_bad.png'; break; case 0: @@ -3235,13 +3231,9 @@ function visual_map_get_image_status_element($layoutData, $status=false) break; case 2: - // Warning. - $img .= '_warning.png'; - break; - case 10: - // Warning (ALERT). - $img = '4'.$img.'_warning.png'; + // Warning or warning alert. + $img .= '_warning.png'; break; case 3: @@ -4079,6 +4071,7 @@ function visual_map_get_layout_status($layout_id, $status_data=[], $depth=0) case 'default': $num_items_critical_alert = $num_elements_by_status[VISUAL_MAP_STATUS_CRITICAL_ALERT]; $num_items_critical = $num_elements_by_status[VISUAL_MAP_STATUS_CRITICAL_BAD]; + $num_items_warning_alert = $num_elements_by_status[VISUAL_MAP_STATUS_WARNING_ALERT]; $num_items_warning = $num_elements_by_status[VISUAL_MAP_STATUS_WARNING]; $num_items_unknown = $num_elements_by_status[VISUAL_MAP_STATUS_UNKNOWN]; @@ -4086,6 +4079,8 @@ function visual_map_get_layout_status($layout_id, $status_data=[], $depth=0) return VISUAL_MAP_STATUS_CRITICAL_ALERT; } else if ($num_items_critical > 0) { return VISUAL_MAP_STATUS_CRITICAL_BAD; + } else if ($num_items_warning_alert > 0) { + return VISUAL_MAP_STATUS_WARNING_ALERT; } else if ($num_items_warning > 0) { return VISUAL_MAP_STATUS_WARNING; } else if ($num_items_unknown > 0) { @@ -4099,17 +4094,18 @@ function visual_map_get_layout_status($layout_id, $status_data=[], $depth=0) $num_items = count($valid_layout_items); $num_items_critical_alert = $num_elements_by_status[VISUAL_MAP_STATUS_CRITICAL_ALERT]; $num_items_critical = $num_elements_by_status[VISUAL_MAP_STATUS_CRITICAL_BAD]; + $num_items_warning_alert = $num_elements_by_status[VISUAL_MAP_STATUS_WARNING_ALERT]; $num_items_warning = $num_elements_by_status[VISUAL_MAP_STATUS_WARNING]; $num_items_unknown = $num_elements_by_status[VISUAL_MAP_STATUS_UNKNOWN]; - if ($num_items_critical > 0 + if (($num_items_critical > 0 || $num_items_critical_alert > 0) && ((($num_items_critical_alert + $num_items_critical) * 100) / $num_items) >= $weight ) { return ($num_items_critical_alert > 0) ? VISUAL_MAP_STATUS_CRITICAL_ALERT : VISUAL_MAP_STATUS_CRITICAL_BAD; - } else if ($num_items_warning > 0 - && (($num_items_warning * 100) / $num_items) >= $weight + } else if (($num_items_warning > 0 || $num_items_warning_alert > 0) + && (($num_items_warning_alert + $num_items_warning * 100) / $num_items) >= $weight ) { - return VISUAL_MAP_STATUS_WARNING; + return ($num_items_warning_alert > 0) ? VISUAL_MAP_STATUS_WARNING_ALERT : VISUAL_MAP_STATUS_WARNING; } else if ($num_items_unknown > 0 && (($num_items_unknown * 100) / $num_items) >= $weight ) { @@ -4123,9 +4119,12 @@ function visual_map_get_layout_status($layout_id, $status_data=[], $depth=0) $num_items_critical = ($num_elements_by_status[VISUAL_MAP_STATUS_CRITICAL_BAD] + $num_elements_by_status[VISUAL_MAP_STATUS_CRITICAL_ALERT]); $critical_percentage = (($num_items_critical * 100) / count($valid_layout_items)); - if ($critical_percentage >= $status_data['linked_layout_status_as_service_critical']) { + $num_items_warning = ($num_elements_by_status[VISUAL_MAP_STATUS_WARNING] + $num_elements_by_status[VISUAL_MAP_STATUS_WARNING_ALERT]); + $warning_percentage = (($num_items_warning * 100) / count($valid_layout_items)); + + if ($critical_percentage >= $status_data['linked_layout_status_as_service_critical'] && $critical_percentage !== 0) { return VISUAL_MAP_STATUS_CRITICAL_BAD; - } else if ($critical_percentage >= $status_data['linked_layout_status_as_service_warning']) { + } else if ($critical_percentage >= $status_data['linked_layout_status_as_service_warning'] && $warning_percentage !== 0) { return VISUAL_MAP_STATUS_WARNING; } else { return VISUAL_MAP_STATUS_NORMAL; From 8eb3a982e1f785ed4e22aac3c8398391004ccf1a Mon Sep 17 00:00:00 2001 From: Daniel Barbero Martin Date: Mon, 1 Jun 2020 14:48:53 +0200 Subject: [PATCH 038/299] Fixed error in gauges --- pandora_console/include/chart_generator.php | 1 + pandora_console/include/functions_graph.php | 9 +++++- pandora_console/include/graphs/fgraph.php | 6 ++-- .../include/graphs/functions_d3.php | 5 +-- pandora_console/include/graphs/pandora.d3.js | 32 +++++++++++-------- 5 files changed, 34 insertions(+), 19 deletions(-) diff --git a/pandora_console/include/chart_generator.php b/pandora_console/include/chart_generator.php index edd8208b05..7a61677b85 100644 --- a/pandora_console/include/chart_generator.php +++ b/pandora_console/include/chart_generator.php @@ -189,6 +189,7 @@ if (file_exists('languages/'.$user_language.'.mo') === true) { echo '
'; switch ($type_graph_pdf) { case 'combined': + $params['pdf'] = true; echo graphic_combined_module( $module_list, $params, diff --git a/pandora_console/include/functions_graph.php b/pandora_console/include/functions_graph.php index 5a1d482e1d..1f45714edb 100644 --- a/pandora_console/include/functions_graph.php +++ b/pandora_console/include/functions_graph.php @@ -2003,6 +2003,12 @@ function graphic_combined_module( } } + if (isset($params['pdf']) === true && $params['pdf'] === true) { + $transitionDuration = 0; + } else { + $transitionDuration = 500; + } + $output = stacked_gauge( $graph_values, $new_width, @@ -2018,7 +2024,8 @@ function graphic_combined_module( $config['fontpath'], $fixed_font_size, '', - $homeurl + $homeurl, + $transitionDuration ); break; diff --git a/pandora_console/include/graphs/fgraph.php b/pandora_console/include/graphs/fgraph.php index 1d79129610..6f341381c5 100644 --- a/pandora_console/include/graphs/fgraph.php +++ b/pandora_console/include/graphs/fgraph.php @@ -638,7 +638,8 @@ function stacked_gauge( $font='', $font_size='', $unit='', - $homeurl='' + $homeurl='', + $transitionDuration=500 ) { include_once 'functions_d3.php'; @@ -656,7 +657,8 @@ function stacked_gauge( $unit, $font, ($font_size + 2), - $no_data_image + $no_data_image, + $transitionDuration ); } diff --git a/pandora_console/include/graphs/functions_d3.php b/pandora_console/include/graphs/functions_d3.php index 659270744a..8719531abc 100644 --- a/pandora_console/include/graphs/functions_d3.php +++ b/pandora_console/include/graphs/functions_d3.php @@ -294,7 +294,8 @@ function d3_gauges( $unit, $font, $font_size, - $no_data_image + $no_data_image, + $transitionDuration ) { global $config; @@ -310,7 +311,7 @@ function d3_gauges( $output .= ""; return $output; diff --git a/pandora_console/include/graphs/pandora.d3.js b/pandora_console/include/graphs/pandora.d3.js index bfebebe99c..d308514ce3 100644 --- a/pandora_console/include/graphs/pandora.d3.js +++ b/pandora_console/include/graphs/pandora.d3.js @@ -1005,7 +1005,8 @@ function createGauge( critical_inverse, font_size, height, - font + font, + transitionDuration ) { var gauges; @@ -1014,7 +1015,8 @@ function createGauge( label: etiqueta, min: undefined != min ? min : 0, max: undefined != max ? max : 100, - font_size: font_size + font_size: font_size, + transitionDuration: transitionDuration }; if (value == null) { @@ -1128,7 +1130,7 @@ function createGauge( gauges = new Gauge(name, config, font); gauges.render(); - gauges.redraw(value); + gauges.redraw(value, config.transitionDuration); $(".gauge>text").each(function() { label = $(this).text(); @@ -1155,12 +1157,17 @@ function createGauge( $(this).text(text); } }); - config = false; - max_warning2 = false; - min_warning2 = false; } -function createGauges(data, width, height, font_size, no_data_image, font) { +function createGauges( + data, + width, + height, + font_size, + no_data_image, + font, + transitionDuration +) { var nombre, label, minimun_warning, @@ -1211,7 +1218,8 @@ function createGauges(data, width, height, font_size, no_data_image, font) { critical_inverse, font_size, height, - font + font, + transitionDuration ); } } @@ -1247,7 +1255,7 @@ function Gauge(placeholderName, configuration, font) { this.config.yellowColor = configuration.yellowColor || "#FF9900"; this.config.redColor = configuration.redColor || "#DC3912"; - this.config.transitionDuration = configuration.transitionDuration || 500; + this.config.transitionDuration = configuration.transitionDuration; }; this.render = function() { @@ -1481,11 +1489,7 @@ function Gauge(placeholderName, configuration, font) { var pointer = pointerContainer.selectAll("path"); pointer .transition() - .duration( - undefined != transitionDuration - ? transitionDuration - : this.config.transitionDuration - ) + .duration(undefined != transitionDuration ? transitionDuration : 0) //.delay(0) //.ease("linear") //.attr("transform", function(d) From 531efcfefe1582191b612b93d232c82defac7336 Mon Sep 17 00:00:00 2001 From: fbsanchez Date: Mon, 1 Jun 2020 15:32:56 +0200 Subject: [PATCH 039/299] Minor style fix --- pandora_console/general/first_task/HA_cluster_builder.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pandora_console/general/first_task/HA_cluster_builder.php b/pandora_console/general/first_task/HA_cluster_builder.php index 7ae56a4287..8261ee5c08 100644 --- a/pandora_console/general/first_task/HA_cluster_builder.php +++ b/pandora_console/general/first_task/HA_cluster_builder.php @@ -53,8 +53,8 @@ ui_print_info_message(['no_close' => true, 'message' => __('There are no HA clus
"; - echo "
"; + echo ""; + echo ""; ?> Date: Tue, 2 Jun 2020 09:48:59 +0200 Subject: [PATCH 040/299] fixed image not found --- pandora_console/general/mysqlerr.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandora_console/general/mysqlerr.php b/pandora_console/general/mysqlerr.php index 67d38c56f8..79e6372c33 100644 --- a/pandora_console/general/mysqlerr.php +++ b/pandora_console/general/mysqlerr.php @@ -106,7 +106,7 @@ img.modalclose { - images/icono_cerrar.png'> + /images/icono_cerrar.png'>
From 7676852bd0ea3ca27b434dde9d3ed67f14a34c52 Mon Sep 17 00:00:00 2001 From: marcos Date: Tue, 2 Jun 2020 17:26:43 +0200 Subject: [PATCH 041/299] set event in progress on api --- pandora_console/include/functions_api.php | 46 +++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/pandora_console/include/functions_api.php b/pandora_console/include/functions_api.php index 76e10533aa..82538fa1ee 100644 --- a/pandora_console/include/functions_api.php +++ b/pandora_console/include/functions_api.php @@ -16021,3 +16021,49 @@ function api_get_event_mcid($server_id, $console_event_id, $trash2, $returnType) return; } } + + +/** + * Function to set events in progress status. + * + * @param [int] $event_id Id event (Node or Meta). + * @param [int] $server_id Id node event in tmetaconsole_event. + * @param [string] $trash2 don't use. + * @param [string] $returnType + * + * Example + * http://172.17.0.1/pandora_console/include/api.php?op=set&op2=event_in_progress&return_type=json&id=0&id2=0&apipass=1234&user=admin&pass=pandora + * + * @return void + */ +function api_set_event_in_progress($event_id, $server_id, $trash2, $returnType) +{ + global $config; + + if (is_metaconsole()) { + $event = db_process_sql_update( + 'tmetaconsole_event', + ['estado' => 2], + [ + 'id_source_event' => $event_id, + 'server_id' => $server_id, + ] + ); + if ($event !== false) { + returnData($returnType, ['type' => 'string', 'data' => $event]); + } else { + returnError('id_not_found', 'string'); + } + } else { + $event = db_process_sql_update( + 'tevento', + ['estado' => 2], + ['id_evento' => $event_id] + ); + if ($event !== false) { + returnData($returnType, ['type' => 'string', 'data' => $event]); + } else { + returnError('id_not_found', 'string'); + } + } +} From 0a6f16a40ebc3f272b50946bf52f4137e5ca535d Mon Sep 17 00:00:00 2001 From: fbsanchez Date: Wed, 3 Jun 2020 14:01:08 +0200 Subject: [PATCH 042/299] Improved coment --- pandora_console/include/functions_io.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pandora_console/include/functions_io.php b/pandora_console/include/functions_io.php index f0e2037cf2..6390f78f96 100755 --- a/pandora_console/include/functions_io.php +++ b/pandora_console/include/functions_io.php @@ -217,8 +217,8 @@ function io_safe_output_array(&$item, $key=false, $utf8=true) * plain ascii file, to render to console, or to put in any kind of data field * who doesn't make the HTML render by itself. * - * @param mixed String or array of strings to be cleaned. - * @param boolean $utf8 Flag, set the output encoding in utf8, by default true. + * @param string|array $value String or array of strings to be cleaned. + * @param boolean $utf8 Flag, set the output encoding in utf8, by default true. * * @return unknown_type */ From e270776a01011015ccdca34de347a6a9e95ce27d Mon Sep 17 00:00:00 2001 From: marcos Date: Wed, 3 Jun 2020 15:56:19 +0200 Subject: [PATCH 043/299] create new api/cli function to set event on progress --- pandora_console/include/functions_api.php | 8 ++++---- pandora_server/util/pandora_manage.pl | 24 ++++++++++++++++++++++- 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/pandora_console/include/functions_api.php b/pandora_console/include/functions_api.php index 82538fa1ee..f5fb12ee1d 100644 --- a/pandora_console/include/functions_api.php +++ b/pandora_console/include/functions_api.php @@ -16027,12 +16027,12 @@ function api_get_event_mcid($server_id, $console_event_id, $trash2, $returnType) * Function to set events in progress status. * * @param [int] $event_id Id event (Node or Meta). - * @param [int] $server_id Id node event in tmetaconsole_event. + * @param [int] $server_id Id node event in tmetaconsole_event (optional). * @param [string] $trash2 don't use. * @param [string] $returnType * * Example - * http://172.17.0.1/pandora_console/include/api.php?op=set&op2=event_in_progress&return_type=json&id=0&id2=0&apipass=1234&user=admin&pass=pandora + * http://127.0.0.1/pandora_console/include/api.php?op=set&op2=event_in_progress&return_type=json&id=0&id2=0&apipass=1234&user=admin&pass=pandora * * @return void */ @@ -16045,8 +16045,8 @@ function api_set_event_in_progress($event_id, $server_id, $trash2, $returnType) 'tmetaconsole_event', ['estado' => 2], [ - 'id_source_event' => $event_id, - 'server_id' => $server_id, + 'server_id' => $server_id, + 'id_evento' => $event_id, ] ); if ($event !== false) { diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl index 839d937db3..ee7ea1586b 100755 --- a/pandora_server/util/pandora_manage.pl +++ b/pandora_server/util/pandora_manage.pl @@ -243,6 +243,8 @@ sub help_screen{ help_screen_line('--duplicate_visual_console', ' []', 'Duplicate a visual console'); help_screen_line('--export_json_visual_console', ' [] []', 'Creates a json with the visual console elements information'); + print "\nEVENTS\n\n" unless $param ne ''; + help_screen_line('--event_in_progress', ' ', 'Set event in progress'); print "\n"; exit; @@ -254,7 +256,7 @@ sub help_screen{ sub api_call($$$;$$$$) { my ($pa_config, $op, $op2, $id, $id2, $other, $return_type) = @_; my $content = undef; - + eval { # Set the parameters for the POST request. my $params = {}; @@ -7676,6 +7678,9 @@ sub pandora_manage_main ($$$) { elsif ($param eq '--reset_agent_counts') { param_check($ltotal, 1, 0); cli_reset_agent_counts(); + }elsif ($param eq '--event_in_progress') { + param_check($ltotal, 2, 0); + cli_event_in_progress(); } else { print_log "[ERROR] Invalid option '$param'.\n\n"; @@ -8325,3 +8330,20 @@ sub cli_reset_agent_counts() { print "$result \n\n "; } + + +############################################################################## +# Set an event in progress. +# Related option: --event_in_progress +############################################################################## + +sub cli_event_in_progress() { + my ($event_id, $server_id) = @ARGV[2..3]; + + # Call the API. + my $result = api_call( + $conf, 'set', 'event_in_progress', $event_id, $server_id + ); + + print "\n$result\n"; +} \ No newline at end of file From 165e3663a62dfac640784d8f770bd600cf6e84a2 Mon Sep 17 00:00:00 2001 From: marcos Date: Wed, 3 Jun 2020 16:23:01 +0200 Subject: [PATCH 044/299] fixed error --- pandora_console/operation/search_main.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandora_console/operation/search_main.php b/pandora_console/operation/search_main.php index 718fd45be5..b28da67611 100644 --- a/pandora_console/operation/search_main.php +++ b/pandora_console/operation/search_main.php @@ -23,7 +23,7 @@ $searchUsers = check_acl($config['id_user'], 0, 'UM'); $searchPolicies = check_acl($config['id_user'], 0, 'AW'); $searchHelps = true; -echo '
'; +echo '
'; $anyfound = false; From 43701f953dae05a6d3fa39edb7ec3e91bb29687b Mon Sep 17 00:00:00 2001 From: alejandro-campos Date: Wed, 3 Jun 2020 17:37:12 +0200 Subject: [PATCH 045/299] fixed ad authentication --- pandora_console/include/auth/mysql.php | 45 ++++++++++++++------------ 1 file changed, 25 insertions(+), 20 deletions(-) diff --git a/pandora_console/include/auth/mysql.php b/pandora_console/include/auth/mysql.php index ed5e56782a..064be4a93e 100644 --- a/pandora_console/include/auth/mysql.php +++ b/pandora_console/include/auth/mysql.php @@ -85,7 +85,7 @@ function process_user_login($login, $pass, $api=false) return process_user_login_local($login, $pass, $api); } else { $login_remote = process_user_login_remote($login, io_safe_output($pass), $api); - if ($login_remote == false) { + if ($login_remote == false && $config['fallback_local_auth']) { return process_user_login_local($login, $pass, $api); } else { return $login_remote; @@ -258,27 +258,32 @@ function process_user_login_remote($login, $pass, $api=false) return false; } - if (($config['auth'] === 'ad') - && (isset($config['ad_advanced_config']) && $config['ad_advanced_config']) - ) { - $return = enterprise_hook( - 'prepare_permissions_groups_of_user_ad', - [ - $login, - $pass, - false, - true, - defined('METACONSOLE'), - ] - ); + if (($config['auth'] === 'ad')) { + // Check if autocreate remote users is active. + if ($config['autocreate_remote_users'] == 1) { + change_local_user_pass_ldap($login, $pass); + } - if ($return === 'error_permissions') { - $config['auth_error'] = __('Problems with configuration permissions. Please contact with Administrator'); - return false; - } else { - if ($return === 'permissions_changed') { - $config['auth_error'] = __('Your permissions have changed. Please, login again.'); + if (isset($config['ad_advanced_config']) && $config['ad_advanced_config']) { + $return = enterprise_hook( + 'prepare_permissions_groups_of_user_ad', + [ + $login, + $pass, + false, + true, + defined('METACONSOLE'), + ] + ); + + if ($return === 'error_permissions') { + $config['auth_error'] = __('Problems with configuration permissions. Please contact with Administrator'); return false; + } else { + if ($return === 'permissions_changed') { + $config['auth_error'] = __('Your permissions have changed. Please, login again.'); + return false; + } } } } else if ($config['auth'] === 'ldap') { From 4904718c414aa961778017af198e47c29476556e Mon Sep 17 00:00:00 2001 From: marcos Date: Thu, 4 Jun 2020 11:08:51 +0200 Subject: [PATCH 046/299] add confirm dialog when delete one item in events table --- .../include/javascript/pandora_events.js | 25 +++++++++++++++---- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/pandora_console/include/javascript/pandora_events.js b/pandora_console/include/javascript/pandora_events.js index e176b863ad..c9af47ed2b 100644 --- a/pandora_console/include/javascript/pandora_events.js +++ b/pandora_console/include/javascript/pandora_events.js @@ -712,7 +712,7 @@ function update_event(table, id_evento, type, event_rep, row) { values[this.name] = $(this).val(); }); var t1 = new Date(); - + console.log("al ajax directo"); // Update events matching current filters and id_evento selected. $.ajax({ async: true, @@ -791,10 +791,25 @@ function delete_event(table, id_evento, event_rep, row) { processed += 1; return; } - - button.children[0]; - button.children[0].src = "images/spinner.gif"; - return update_event(table, id_evento, { delete_event: 1 }, event_rep, row); + confirmDialog({ + title: "ATTENTION", + message: + "

Are you sure?

", + cancel: "Cancel", + ok: "Ok", + onAccept: function() { + // Continue execution. + button.children[0]; + button.children[0].src = "images/spinner.gif"; + return update_event( + table, + id_evento, + { delete_event: 1 }, + event_rep, + row + ); + } + }); } // Imported from old files. From 67d5a2834646bfbcd5582590a0646d93dc563cff Mon Sep 17 00:00:00 2001 From: marcos Date: Thu, 4 Jun 2020 13:50:36 +0200 Subject: [PATCH 047/299] add confirm dialog on meta and node recursive --- .../include/javascript/pandora_events.js | 245 ++++++++++-------- 1 file changed, 140 insertions(+), 105 deletions(-) diff --git a/pandora_console/include/javascript/pandora_events.js b/pandora_console/include/javascript/pandora_events.js index c9af47ed2b..ddd2f42578 100644 --- a/pandora_console/include/javascript/pandora_events.js +++ b/pandora_console/include/javascript/pandora_events.js @@ -712,8 +712,7 @@ function update_event(table, id_evento, type, event_rep, row) { values[this.name] = $(this).val(); }); var t1 = new Date(); - console.log("al ajax directo"); - // Update events matching current filters and id_evento selected. + $.ajax({ async: true, type: "POST", @@ -751,6 +750,7 @@ function update_event(table, id_evento, type, event_rep, row) { } }); } +// Update events matching current filters and id_evento selected. function validate_event(table, id_evento, event_rep, row) { var button = document.getElementById("val-" + id_evento); @@ -791,14 +791,16 @@ function delete_event(table, id_evento, event_rep, row) { processed += 1; return; } + button.children[0]; + button.children[0].src = "images/spinner.gif"; + var message = + "

Are you sure?

"; confirmDialog({ title: "ATTENTION", - message: - "

Are you sure?

", + message: message, cancel: "Cancel", ok: "Ok", onAccept: function() { - // Continue execution. button.children[0]; button.children[0].src = "images/spinner.gif"; return update_event( @@ -808,116 +810,149 @@ function delete_event(table, id_evento, event_rep, row) { event_rep, row ); + }, + onDeny: function() { + button.children[0]; + button.children[0].src = "images/cross.png"; + return; } }); } -// Imported from old files. -function execute_event_response(event_list_btn) { - processed = 0; - $("#max_custom_event_resp_msg").hide(); - $("#max_custom_selected").hide(); - - 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(); +function execute_delete_event_reponse(table, id_evento, event_rep, row) { + var button = document.getElementById("del-" + id_evento); + if (!button) { + // Button does not exist. Ignore. + processed += 1; return; } + button.children[0]; + button.children[0].src = "images/spinner.gif"; + return update_event(table, id_evento, { delete_event: 1 }, event_rep, row); +} - if (!isNaN(response_id)) { - // It is a custom response - var response = get_response(response_id); +// Imported from old files. +function execute_event_response(event_list_btn) { + var message = + "

Are you sure?

"; + confirmDialog({ + title: "ATTENTION", + message: message, + cancel: "Cancel", + ok: "Ok", + onAccept: function() { + // Continue execution. + processed = 0; + $("#max_custom_event_resp_msg").hide(); + $("#max_custom_selected").hide(); - // If cannot get response abort it - if (response == null) { + 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)) { + // It is a custom response + var response = get_response(response_id); + + // If cannot get response abort it + if (response == null) { + return; + } + + // Limit number of events to apply custom responses + // due performance reasons. + if (total_checked > $("#max_execution_event_response").val()) { + $("#max_custom_event_resp_msg").show(); + return; + } + + var response_command = []; + $(".response_command_input").each(function() { + response_command[$(this).attr("name")] = $(this).val(); + }); + + if (event_list_btn) { + $("#button-submit_event_response").hide(function() { + $("#response_loading_dialog").show(function() { + var check_params = get_response_params(response_id); + + if (check_params[0] !== "") { + show_event_response_command_dialog( + response_id, + response, + total_checked + ); + } else { + check_massive_response_event( + response_id, + response, + total_checked, + response_command + ); + } + }); + }); + } else { + $("#button-btn_str").hide(function() { + $("#execute_again_loading").show(function() { + check_massive_response_event( + response_id, + response, + total_checked, + response_command + ); + }); + }); + } + } else { + // It is not a custom response + switch (response_id) { + case "in_progress_selected": + $(".chk_val:checked").each(function() { + // Parent: TD. GrandParent: TR. + in_process_event( + dt_events, + $(this).val(), + $(this).attr("event_rep"), + this.parentElement.parentElement + ); + }); + break; + case "validate_selected": + $(".chk_val:checked").each(function() { + validate_event( + dt_events, + $(this).val(), + $(this).attr("event_rep"), + this.parentElement.parentElement + ); + }); + break; + case "delete_selected": + console.log($(this)); + $(".chk_val:checked").each(function() { + execute_delete_event_reponse( + dt_events, + $(this).val(), + $(this).attr("event_rep"), + this.parentElement.parentElement + ); + }); + break; + } + } + }, + onDeny: function() { + processed += 1; return; } - - // Limit number of events to apply custom responses - // due performance reasons. - if (total_checked > $("#max_execution_event_response").val()) { - $("#max_custom_event_resp_msg").show(); - return; - } - - var response_command = []; - $(".response_command_input").each(function() { - response_command[$(this).attr("name")] = $(this).val(); - }); - - if (event_list_btn) { - $("#button-submit_event_response").hide(function() { - $("#response_loading_dialog").show(function() { - var check_params = get_response_params(response_id); - - if (check_params[0] !== "") { - show_event_response_command_dialog( - response_id, - response, - total_checked - ); - } else { - check_massive_response_event( - response_id, - response, - total_checked, - response_command - ); - } - }); - }); - } else { - $("#button-btn_str").hide(function() { - $("#execute_again_loading").show(function() { - check_massive_response_event( - response_id, - response, - total_checked, - response_command - ); - }); - }); - } - } else { - // It is not a custom response - switch (response_id) { - case "in_progress_selected": - $(".chk_val:checked").each(function() { - // Parent: TD. GrandParent: TR. - in_process_event( - dt_events, - $(this).val(), - $(this).attr("event_rep"), - this.parentElement.parentElement - ); - }); - break; - case "validate_selected": - $(".chk_val:checked").each(function() { - validate_event( - dt_events, - $(this).val(), - $(this).attr("event_rep"), - this.parentElement.parentElement - ); - }); - break; - case "delete_selected": - $(".chk_val:checked").each(function() { - delete_event( - dt_events, - $(this).val(), - $(this).attr("event_rep"), - this.parentElement.parentElement - ); - }); - break; - } - } + }); } function check_massive_response_event( From 07593e446625cb2e5069a6ab31aee09ecbc2139f Mon Sep 17 00:00:00 2001 From: marcos Date: Thu, 4 Jun 2020 14:00:30 +0200 Subject: [PATCH 048/299] fixed code --- pandora_console/include/javascript/pandora_events.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/pandora_console/include/javascript/pandora_events.js b/pandora_console/include/javascript/pandora_events.js index ddd2f42578..a5e5b0c36e 100644 --- a/pandora_console/include/javascript/pandora_events.js +++ b/pandora_console/include/javascript/pandora_events.js @@ -791,8 +791,6 @@ function delete_event(table, id_evento, event_rep, row) { processed += 1; return; } - button.children[0]; - button.children[0].src = "images/spinner.gif"; var message = "

Are you sure?

"; confirmDialog({ From 6690bfdad854c51cf687373bbbf23a715c540e06 Mon Sep 17 00:00:00 2001 From: Jose Gonzalez Date: Thu, 4 Jun 2020 21:07:53 +0200 Subject: [PATCH 049/299] Blocked create and update of remote component group when meta has centralized management --- .../godmode/modules/manage_nc_groups.php | 55 ++++++++++++------- 1 file changed, 35 insertions(+), 20 deletions(-) diff --git a/pandora_console/godmode/modules/manage_nc_groups.php b/pandora_console/godmode/modules/manage_nc_groups.php index 16a9cccaad..c4ba21febc 100644 --- a/pandora_console/godmode/modules/manage_nc_groups.php +++ b/pandora_console/godmode/modules/manage_nc_groups.php @@ -46,14 +46,15 @@ if (defined('METACONSOLE')) { $sec = 'gmodules'; } - -$create = (bool) get_parameter('create'); -$update = (bool) get_parameter('update'); -$delete = (bool) get_parameter('delete'); -$new = (bool) get_parameter('new'); -$id = (int) get_parameter('id'); -$multiple_delete = (bool) get_parameter('multiple_delete', 0); -$pure = get_parameter('pure', 0); +if (is_management_allowed() === true) { + $create = (bool) get_parameter('create'); + $update = (bool) get_parameter('update'); + $delete = (bool) get_parameter('delete'); + $new = (bool) get_parameter('new'); + $id = (int) get_parameter('id'); + $multiple_delete = (bool) get_parameter('multiple_delete', 0); + $pure = get_parameter('pure', 0); +} if ($create) { $name = (string) get_parameter('name'); @@ -186,7 +187,7 @@ if ($multiple_delete) { ); } -if (($id || $new) && !$delete && !$multiple_delete) { +if (($id || $new) && !$delete && !$multiple_delete && is_management_allowed() === true) { include_once 'manage_nc_groups_form.php'; return; } @@ -229,7 +230,10 @@ $table->class = 'info_table'; $table->head = []; $table->head['checkbox'] = html_print_checkbox('all_delete', 0, false, true, false); $table->head[0] = __('Name'); -$table->head[1] = __('Action'); +if (is_management_allowed() === true) { + $table->head[1] = __('Action'); +} + $table->style = []; $table->style[0] = 'font-weight: bold'; $table->align = []; @@ -258,31 +262,42 @@ foreach ($groups as $group) { } $table->cellclass[][1] = 'action_buttons'; - $data[1] = "
".html_print_image('images/cross.png', true, ['title' => __('Delete')]).''; + } array_push($table->data, $data); } +if (is_management_allowed() === false) { + ui_print_warning_message(__('This node is configured with centralized mode. This page is for read only. Go to metaconsole to manage the component groups.')); +} + if (isset($data)) { echo "
"; html_print_input_hidden('multiple_delete', 1); html_print_table($table); - echo "
"; - html_print_submit_button(__('Delete'), 'delete_btn', false, 'class="sub delete"'); - echo '
'; + if (is_management_allowed() === true) { + echo "
"; + html_print_submit_button(__('Delete'), 'delete_btn', false, 'class="sub delete"'); + echo '
'; + } + echo '
'; } else { ui_print_info_message(['no_close' => true, 'message' => __('There are no defined component groups') ]); } +if (is_management_allowed() === true) { + echo '
'; + echo '
'; + html_print_input_hidden('new', 1); + html_print_submit_button(__('Create'), 'crt', false, 'class="sub next"'); + echo '
'; + echo '
'; +} -echo '
'; -echo '
'; -html_print_input_hidden('new', 1); -html_print_submit_button(__('Create'), 'crt', false, 'class="sub next"'); -echo '
'; -echo '
'; enterprise_hook('close_meta_frame'); ?> From c8d8b1a3125f63e588134e35e0bba1d3097a60af Mon Sep 17 00:00:00 2001 From: artica Date: Fri, 5 Jun 2020 01:00:17 +0200 Subject: [PATCH 050/299] Auto-updated build strings. --- pandora_agents/unix/DEBIAN/control | 2 +- pandora_agents/unix/DEBIAN/make_deb_package.sh | 2 +- pandora_agents/unix/pandora_agent | 2 +- pandora_agents/unix/pandora_agent.redhat.spec | 2 +- pandora_agents/unix/pandora_agent.spec | 2 +- pandora_agents/unix/pandora_agent_installer | 2 +- pandora_agents/win32/installer/pandora.mpi | 2 +- pandora_agents/win32/pandora.cc | 2 +- pandora_agents/win32/versioninfo.rc | 2 +- pandora_console/DEBIAN/control | 2 +- pandora_console/DEBIAN/make_deb_package.sh | 2 +- pandora_console/include/config_process.php | 2 +- pandora_console/install.php | 2 +- pandora_console/pandora_console.redhat.spec | 2 +- pandora_console/pandora_console.rhel7.spec | 2 +- pandora_console/pandora_console.spec | 2 +- pandora_server/DEBIAN/control | 2 +- pandora_server/DEBIAN/make_deb_package.sh | 2 +- pandora_server/lib/PandoraFMS/Config.pm | 2 +- pandora_server/lib/PandoraFMS/PluginTools.pm | 2 +- pandora_server/pandora_server.redhat.spec | 2 +- pandora_server/pandora_server.spec | 2 +- pandora_server/pandora_server_installer | 2 +- pandora_server/util/pandora_db.pl | 2 +- pandora_server/util/pandora_manage.pl | 2 +- 25 files changed, 25 insertions(+), 25 deletions(-) diff --git a/pandora_agents/unix/DEBIAN/control b/pandora_agents/unix/DEBIAN/control index a4d1533cc0..a71231e1e0 100644 --- a/pandora_agents/unix/DEBIAN/control +++ b/pandora_agents/unix/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-agent-unix -Version: 7.0NG.746-200604 +Version: 7.0NG.746-200605 Architecture: all Priority: optional Section: admin diff --git a/pandora_agents/unix/DEBIAN/make_deb_package.sh b/pandora_agents/unix/DEBIAN/make_deb_package.sh index e90002d182..e7cebce719 100644 --- a/pandora_agents/unix/DEBIAN/make_deb_package.sh +++ b/pandora_agents/unix/DEBIAN/make_deb_package.sh @@ -14,7 +14,7 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -pandora_version="7.0NG.746-200604" +pandora_version="7.0NG.746-200605" echo "Test if you has the tools for to make the packages." whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null diff --git a/pandora_agents/unix/pandora_agent b/pandora_agents/unix/pandora_agent index 12bfe89f86..a0b6fca01d 100755 --- a/pandora_agents/unix/pandora_agent +++ b/pandora_agents/unix/pandora_agent @@ -55,7 +55,7 @@ my $Sem = undef; my $ThreadSem = undef; use constant AGENT_VERSION => '7.0NG.746'; -use constant AGENT_BUILD => '200604'; +use constant AGENT_BUILD => '200605'; # Agent log default file size maximum and instances use constant DEFAULT_MAX_LOG_SIZE => 600000; diff --git a/pandora_agents/unix/pandora_agent.redhat.spec b/pandora_agents/unix/pandora_agent.redhat.spec index 9e4e2e3e73..babf0b6103 100644 --- a/pandora_agents/unix/pandora_agent.redhat.spec +++ b/pandora_agents/unix/pandora_agent.redhat.spec @@ -3,7 +3,7 @@ # %define name pandorafms_agent_unix %define version 7.0NG.746 -%define release 200604 +%define release 200605 Summary: Pandora FMS Linux agent, PERL version Name: %{name} diff --git a/pandora_agents/unix/pandora_agent.spec b/pandora_agents/unix/pandora_agent.spec index ed5e222ba9..ce52b66743 100644 --- a/pandora_agents/unix/pandora_agent.spec +++ b/pandora_agents/unix/pandora_agent.spec @@ -3,7 +3,7 @@ # %define name pandorafms_agent_unix %define version 7.0NG.746 -%define release 200604 +%define release 200605 Summary: Pandora FMS Linux agent, PERL version Name: %{name} diff --git a/pandora_agents/unix/pandora_agent_installer b/pandora_agents/unix/pandora_agent_installer index 689c072d56..97f89b4094 100755 --- a/pandora_agents/unix/pandora_agent_installer +++ b/pandora_agents/unix/pandora_agent_installer @@ -10,7 +10,7 @@ # ********************************************************************** PI_VERSION="7.0NG.746" -PI_BUILD="200604" +PI_BUILD="200605" OS_NAME=`uname -s` FORCE=0 diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi index 4a41758591..7315981b8f 100644 --- a/pandora_agents/win32/installer/pandora.mpi +++ b/pandora_agents/win32/installer/pandora.mpi @@ -186,7 +186,7 @@ UpgradeApplicationID {} Version -{200604} +{200605} ViewReadme {Yes} diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc index 10630b3ed7..1e243f6935 100644 --- a/pandora_agents/win32/pandora.cc +++ b/pandora_agents/win32/pandora.cc @@ -30,7 +30,7 @@ using namespace Pandora; using namespace Pandora_Strutils; #define PATH_SIZE _MAX_PATH+1 -#define PANDORA_VERSION ("7.0NG.746(Build 200604)") +#define PANDORA_VERSION ("7.0NG.746(Build 200605)") string pandora_path; string pandora_dir; diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc index 38aa2f163a..714e5a1672 100644 --- a/pandora_agents/win32/versioninfo.rc +++ b/pandora_agents/win32/versioninfo.rc @@ -11,7 +11,7 @@ BEGIN VALUE "LegalCopyright", "Artica ST" VALUE "OriginalFilename", "PandoraAgent.exe" VALUE "ProductName", "Pandora FMS Windows Agent" - VALUE "ProductVersion", "(7.0NG.746(Build 200604))" + VALUE "ProductVersion", "(7.0NG.746(Build 200605))" VALUE "FileVersion", "1.0.0.0" END END diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control index 9767c83385..c65042ded3 100644 --- a/pandora_console/DEBIAN/control +++ b/pandora_console/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-console -Version: 7.0NG.746-200604 +Version: 7.0NG.746-200605 Architecture: all Priority: optional Section: admin diff --git a/pandora_console/DEBIAN/make_deb_package.sh b/pandora_console/DEBIAN/make_deb_package.sh index 491290e22e..9f3f0070ba 100644 --- a/pandora_console/DEBIAN/make_deb_package.sh +++ b/pandora_console/DEBIAN/make_deb_package.sh @@ -14,7 +14,7 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -pandora_version="7.0NG.746-200604" +pandora_version="7.0NG.746-200605" package_pear=0 package_pandora=1 diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php index 6b16cac79a..33cf5b74f6 100644 --- a/pandora_console/include/config_process.php +++ b/pandora_console/include/config_process.php @@ -20,7 +20,7 @@ /** * Pandora build version and version */ -$build_version = 'PC200604'; +$build_version = 'PC200605'; $pandora_version = 'v7.0NG.746'; // Do not overwrite default timezone set if defined. diff --git a/pandora_console/install.php b/pandora_console/install.php index 948f2258e8..357c1bbfe1 100644 --- a/pandora_console/install.php +++ b/pandora_console/install.php @@ -129,7 +129,7 @@
[ qw() ] ); diff --git a/pandora_server/pandora_server.redhat.spec b/pandora_server/pandora_server.redhat.spec index 84e4e78993..faa610a675 100644 --- a/pandora_server/pandora_server.redhat.spec +++ b/pandora_server/pandora_server.redhat.spec @@ -3,7 +3,7 @@ # %define name pandorafms_server %define version 7.0NG.746 -%define release 200604 +%define release 200605 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec index 379404429f..637df12096 100644 --- a/pandora_server/pandora_server.spec +++ b/pandora_server/pandora_server.spec @@ -3,7 +3,7 @@ # %define name pandorafms_server %define version 7.0NG.746 -%define release 200604 +%define release 200605 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer index b812a576e3..17fb278f4e 100755 --- a/pandora_server/pandora_server_installer +++ b/pandora_server/pandora_server_installer @@ -9,7 +9,7 @@ # ********************************************************************** PI_VERSION="7.0NG.746" -PI_BUILD="200604" +PI_BUILD="200605" MODE=$1 if [ $# -gt 1 ]; then diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl index aec504351b..4f6d741673 100755 --- a/pandora_server/util/pandora_db.pl +++ b/pandora_server/util/pandora_db.pl @@ -35,7 +35,7 @@ use PandoraFMS::Config; use PandoraFMS::DB; # version: define current version -my $version = "7.0NG.746 PS200604"; +my $version = "7.0NG.746 PS200605"; # Pandora server configuration my %conf; diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl index cc7afc4a1f..11dd17de30 100755 --- a/pandora_server/util/pandora_manage.pl +++ b/pandora_server/util/pandora_manage.pl @@ -36,7 +36,7 @@ use Encode::Locale; Encode::Locale::decode_argv; # version: define current version -my $version = "7.0NG.746 PS200604"; +my $version = "7.0NG.746 PS200605"; # save program name for logging my $progname = basename($0); From 44b2c59572f7aa63edecd8c1c68390c74e5e178c Mon Sep 17 00:00:00 2001 From: Daniel Barbero Martin Date: Fri, 5 Jun 2020 11:01:00 +0200 Subject: [PATCH 051/299] Fixed error link builder in VC --- pandora_console/godmode/reporting/map_builder.php | 6 ------ .../godmode/reporting/visual_console_favorite.php | 7 ------- 2 files changed, 13 deletions(-) diff --git a/pandora_console/godmode/reporting/map_builder.php b/pandora_console/godmode/reporting/map_builder.php index 1a17896383..75aaa35d2d 100644 --- a/pandora_console/godmode/reporting/map_builder.php +++ b/pandora_console/godmode/reporting/map_builder.php @@ -71,12 +71,6 @@ if ($is_enterprise !== ENTERPRISE_NOT_HOOK && $vconsoles_manage) { 'active' => false, 'text' => ''.html_print_image('images/wand.png', true, ['title' => __('Visual Console Template Wizard')]).'', ]; - if ($is_metaconsole) { - $buttons['visual_console_manager'] = [ - 'active' => false, - 'text' => ''.html_print_image('images/builder.png', true, ['title' => __('Visual Console Manager')]).'', - ]; - } } if (!$is_metaconsole) { diff --git a/pandora_console/godmode/reporting/visual_console_favorite.php b/pandora_console/godmode/reporting/visual_console_favorite.php index 201fdab148..b9f4fe28d7 100644 --- a/pandora_console/godmode/reporting/visual_console_favorite.php +++ b/pandora_console/godmode/reporting/visual_console_favorite.php @@ -64,13 +64,6 @@ if ($is_enterprise !== ENTERPRISE_NOT_HOOK && $vconsoles_manage) { 'active' => false, 'text' => ''.html_print_image('images/wand.png', true, ['title' => __('Visual Console Template Wizard')]).'', ]; - - if ($is_metaconsole) { - $buttons['visual_console_manager'] = [ - 'active' => false, - 'text' => ''.html_print_image('images/builder.png', true, ['title' => __('Visual Console Manager')]).'', - ]; - } } if (!$is_metaconsole) { From 4e75219371b405175312a5d5c6052a9b02ba0a22 Mon Sep 17 00:00:00 2001 From: Jose Gonzalez Date: Fri, 5 Jun 2020 11:09:40 +0200 Subject: [PATCH 052/299] Added missing _id_module_ macro in Plugin server --- pandora_server/lib/PandoraFMS/PluginServer.pm | 1 + 1 file changed, 1 insertion(+) diff --git a/pandora_server/lib/PandoraFMS/PluginServer.pm b/pandora_server/lib/PandoraFMS/PluginServer.pm index 666ac88c58..4fec47bb14 100644 --- a/pandora_server/lib/PandoraFMS/PluginServer.pm +++ b/pandora_server/lib/PandoraFMS/PluginServer.pm @@ -227,6 +227,7 @@ sub data_consumer ($$) { _moduledescription_ => (defined ($module)) ? $module->{'descripcion'} : '', _modulestatus_ => undef, _moduletags_ => undef, + _id_module_ => (defined ($module)) ? $module->{'id_agente_modulo'} : '', _id_agent_ => (defined ($module)) ? $module->{'id_agente'} : '', _id_group_ => (defined ($group)) ? $group->{'id_grupo'} : '', _interval_ => (defined ($module) && $module->{'module_interval'} != 0) ? $module->{'module_interval'} : (defined ($agent)) ? $agent->{'intervalo'} : '', From cc83ae35df5e8b861c78318d92b409046b93e8bd Mon Sep 17 00:00:00 2001 From: artica Date: Sat, 6 Jun 2020 01:00:17 +0200 Subject: [PATCH 053/299] Auto-updated build strings. --- pandora_agents/unix/DEBIAN/control | 2 +- pandora_agents/unix/DEBIAN/make_deb_package.sh | 2 +- pandora_agents/unix/pandora_agent | 2 +- pandora_agents/unix/pandora_agent.redhat.spec | 2 +- pandora_agents/unix/pandora_agent.spec | 2 +- pandora_agents/unix/pandora_agent_installer | 2 +- pandora_agents/win32/installer/pandora.mpi | 2 +- pandora_agents/win32/pandora.cc | 2 +- pandora_agents/win32/versioninfo.rc | 2 +- pandora_console/DEBIAN/control | 2 +- pandora_console/DEBIAN/make_deb_package.sh | 2 +- pandora_console/include/config_process.php | 2 +- pandora_console/install.php | 2 +- pandora_console/pandora_console.redhat.spec | 2 +- pandora_console/pandora_console.rhel7.spec | 2 +- pandora_console/pandora_console.spec | 2 +- pandora_server/DEBIAN/control | 2 +- pandora_server/DEBIAN/make_deb_package.sh | 2 +- pandora_server/lib/PandoraFMS/Config.pm | 2 +- pandora_server/lib/PandoraFMS/PluginTools.pm | 2 +- pandora_server/pandora_server.redhat.spec | 2 +- pandora_server/pandora_server.spec | 2 +- pandora_server/pandora_server_installer | 2 +- pandora_server/util/pandora_db.pl | 2 +- pandora_server/util/pandora_manage.pl | 2 +- 25 files changed, 25 insertions(+), 25 deletions(-) diff --git a/pandora_agents/unix/DEBIAN/control b/pandora_agents/unix/DEBIAN/control index a71231e1e0..ae23669da3 100644 --- a/pandora_agents/unix/DEBIAN/control +++ b/pandora_agents/unix/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-agent-unix -Version: 7.0NG.746-200605 +Version: 7.0NG.746-200606 Architecture: all Priority: optional Section: admin diff --git a/pandora_agents/unix/DEBIAN/make_deb_package.sh b/pandora_agents/unix/DEBIAN/make_deb_package.sh index e7cebce719..2ed2171e78 100644 --- a/pandora_agents/unix/DEBIAN/make_deb_package.sh +++ b/pandora_agents/unix/DEBIAN/make_deb_package.sh @@ -14,7 +14,7 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -pandora_version="7.0NG.746-200605" +pandora_version="7.0NG.746-200606" echo "Test if you has the tools for to make the packages." whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null diff --git a/pandora_agents/unix/pandora_agent b/pandora_agents/unix/pandora_agent index a0b6fca01d..93f7f07de8 100755 --- a/pandora_agents/unix/pandora_agent +++ b/pandora_agents/unix/pandora_agent @@ -55,7 +55,7 @@ my $Sem = undef; my $ThreadSem = undef; use constant AGENT_VERSION => '7.0NG.746'; -use constant AGENT_BUILD => '200605'; +use constant AGENT_BUILD => '200606'; # Agent log default file size maximum and instances use constant DEFAULT_MAX_LOG_SIZE => 600000; diff --git a/pandora_agents/unix/pandora_agent.redhat.spec b/pandora_agents/unix/pandora_agent.redhat.spec index babf0b6103..367613bf8f 100644 --- a/pandora_agents/unix/pandora_agent.redhat.spec +++ b/pandora_agents/unix/pandora_agent.redhat.spec @@ -3,7 +3,7 @@ # %define name pandorafms_agent_unix %define version 7.0NG.746 -%define release 200605 +%define release 200606 Summary: Pandora FMS Linux agent, PERL version Name: %{name} diff --git a/pandora_agents/unix/pandora_agent.spec b/pandora_agents/unix/pandora_agent.spec index ce52b66743..4c315f969a 100644 --- a/pandora_agents/unix/pandora_agent.spec +++ b/pandora_agents/unix/pandora_agent.spec @@ -3,7 +3,7 @@ # %define name pandorafms_agent_unix %define version 7.0NG.746 -%define release 200605 +%define release 200606 Summary: Pandora FMS Linux agent, PERL version Name: %{name} diff --git a/pandora_agents/unix/pandora_agent_installer b/pandora_agents/unix/pandora_agent_installer index 97f89b4094..d489f735b8 100755 --- a/pandora_agents/unix/pandora_agent_installer +++ b/pandora_agents/unix/pandora_agent_installer @@ -10,7 +10,7 @@ # ********************************************************************** PI_VERSION="7.0NG.746" -PI_BUILD="200605" +PI_BUILD="200606" OS_NAME=`uname -s` FORCE=0 diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi index 7315981b8f..c14b80ec5c 100644 --- a/pandora_agents/win32/installer/pandora.mpi +++ b/pandora_agents/win32/installer/pandora.mpi @@ -186,7 +186,7 @@ UpgradeApplicationID {} Version -{200605} +{200606} ViewReadme {Yes} diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc index 1e243f6935..e3aca7e17f 100644 --- a/pandora_agents/win32/pandora.cc +++ b/pandora_agents/win32/pandora.cc @@ -30,7 +30,7 @@ using namespace Pandora; using namespace Pandora_Strutils; #define PATH_SIZE _MAX_PATH+1 -#define PANDORA_VERSION ("7.0NG.746(Build 200605)") +#define PANDORA_VERSION ("7.0NG.746(Build 200606)") string pandora_path; string pandora_dir; diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc index 714e5a1672..a40bfea86f 100644 --- a/pandora_agents/win32/versioninfo.rc +++ b/pandora_agents/win32/versioninfo.rc @@ -11,7 +11,7 @@ BEGIN VALUE "LegalCopyright", "Artica ST" VALUE "OriginalFilename", "PandoraAgent.exe" VALUE "ProductName", "Pandora FMS Windows Agent" - VALUE "ProductVersion", "(7.0NG.746(Build 200605))" + VALUE "ProductVersion", "(7.0NG.746(Build 200606))" VALUE "FileVersion", "1.0.0.0" END END diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control index c65042ded3..20dd24c444 100644 --- a/pandora_console/DEBIAN/control +++ b/pandora_console/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-console -Version: 7.0NG.746-200605 +Version: 7.0NG.746-200606 Architecture: all Priority: optional Section: admin diff --git a/pandora_console/DEBIAN/make_deb_package.sh b/pandora_console/DEBIAN/make_deb_package.sh index 9f3f0070ba..c349d42ade 100644 --- a/pandora_console/DEBIAN/make_deb_package.sh +++ b/pandora_console/DEBIAN/make_deb_package.sh @@ -14,7 +14,7 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -pandora_version="7.0NG.746-200605" +pandora_version="7.0NG.746-200606" package_pear=0 package_pandora=1 diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php index 33cf5b74f6..74b6abd80c 100644 --- a/pandora_console/include/config_process.php +++ b/pandora_console/include/config_process.php @@ -20,7 +20,7 @@ /** * Pandora build version and version */ -$build_version = 'PC200605'; +$build_version = 'PC200606'; $pandora_version = 'v7.0NG.746'; // Do not overwrite default timezone set if defined. diff --git a/pandora_console/install.php b/pandora_console/install.php index 357c1bbfe1..a4eafc1e66 100644 --- a/pandora_console/install.php +++ b/pandora_console/install.php @@ -129,7 +129,7 @@
[ qw() ] ); diff --git a/pandora_server/pandora_server.redhat.spec b/pandora_server/pandora_server.redhat.spec index faa610a675..e59a4f2474 100644 --- a/pandora_server/pandora_server.redhat.spec +++ b/pandora_server/pandora_server.redhat.spec @@ -3,7 +3,7 @@ # %define name pandorafms_server %define version 7.0NG.746 -%define release 200605 +%define release 200606 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec index 637df12096..62b9c5b2f6 100644 --- a/pandora_server/pandora_server.spec +++ b/pandora_server/pandora_server.spec @@ -3,7 +3,7 @@ # %define name pandorafms_server %define version 7.0NG.746 -%define release 200605 +%define release 200606 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer index 17fb278f4e..ee6632ed8f 100755 --- a/pandora_server/pandora_server_installer +++ b/pandora_server/pandora_server_installer @@ -9,7 +9,7 @@ # ********************************************************************** PI_VERSION="7.0NG.746" -PI_BUILD="200605" +PI_BUILD="200606" MODE=$1 if [ $# -gt 1 ]; then diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl index 4f6d741673..3f21de9a78 100755 --- a/pandora_server/util/pandora_db.pl +++ b/pandora_server/util/pandora_db.pl @@ -35,7 +35,7 @@ use PandoraFMS::Config; use PandoraFMS::DB; # version: define current version -my $version = "7.0NG.746 PS200605"; +my $version = "7.0NG.746 PS200606"; # Pandora server configuration my %conf; diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl index 11dd17de30..69b868303f 100755 --- a/pandora_server/util/pandora_manage.pl +++ b/pandora_server/util/pandora_manage.pl @@ -36,7 +36,7 @@ use Encode::Locale; Encode::Locale::decode_argv; # version: define current version -my $version = "7.0NG.746 PS200605"; +my $version = "7.0NG.746 PS200606"; # save program name for logging my $progname = basename($0); From 78e8ef2711f7289986721e9d6da44595a065d60c Mon Sep 17 00:00:00 2001 From: artica Date: Sun, 7 Jun 2020 01:00:15 +0200 Subject: [PATCH 054/299] Auto-updated build strings. --- pandora_agents/unix/DEBIAN/control | 2 +- pandora_agents/unix/DEBIAN/make_deb_package.sh | 2 +- pandora_agents/unix/pandora_agent | 2 +- pandora_agents/unix/pandora_agent.redhat.spec | 2 +- pandora_agents/unix/pandora_agent.spec | 2 +- pandora_agents/unix/pandora_agent_installer | 2 +- pandora_agents/win32/installer/pandora.mpi | 2 +- pandora_agents/win32/pandora.cc | 2 +- pandora_agents/win32/versioninfo.rc | 2 +- pandora_console/DEBIAN/control | 2 +- pandora_console/DEBIAN/make_deb_package.sh | 2 +- pandora_console/include/config_process.php | 2 +- pandora_console/install.php | 2 +- pandora_console/pandora_console.redhat.spec | 2 +- pandora_console/pandora_console.rhel7.spec | 2 +- pandora_console/pandora_console.spec | 2 +- pandora_server/DEBIAN/control | 2 +- pandora_server/DEBIAN/make_deb_package.sh | 2 +- pandora_server/lib/PandoraFMS/Config.pm | 2 +- pandora_server/lib/PandoraFMS/PluginTools.pm | 2 +- pandora_server/pandora_server.redhat.spec | 2 +- pandora_server/pandora_server.spec | 2 +- pandora_server/pandora_server_installer | 2 +- pandora_server/util/pandora_db.pl | 2 +- pandora_server/util/pandora_manage.pl | 2 +- 25 files changed, 25 insertions(+), 25 deletions(-) diff --git a/pandora_agents/unix/DEBIAN/control b/pandora_agents/unix/DEBIAN/control index ae23669da3..cd7ad5d579 100644 --- a/pandora_agents/unix/DEBIAN/control +++ b/pandora_agents/unix/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-agent-unix -Version: 7.0NG.746-200606 +Version: 7.0NG.746-200607 Architecture: all Priority: optional Section: admin diff --git a/pandora_agents/unix/DEBIAN/make_deb_package.sh b/pandora_agents/unix/DEBIAN/make_deb_package.sh index 2ed2171e78..e3247538a6 100644 --- a/pandora_agents/unix/DEBIAN/make_deb_package.sh +++ b/pandora_agents/unix/DEBIAN/make_deb_package.sh @@ -14,7 +14,7 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -pandora_version="7.0NG.746-200606" +pandora_version="7.0NG.746-200607" echo "Test if you has the tools for to make the packages." whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null diff --git a/pandora_agents/unix/pandora_agent b/pandora_agents/unix/pandora_agent index 93f7f07de8..0fa55a5ad4 100755 --- a/pandora_agents/unix/pandora_agent +++ b/pandora_agents/unix/pandora_agent @@ -55,7 +55,7 @@ my $Sem = undef; my $ThreadSem = undef; use constant AGENT_VERSION => '7.0NG.746'; -use constant AGENT_BUILD => '200606'; +use constant AGENT_BUILD => '200607'; # Agent log default file size maximum and instances use constant DEFAULT_MAX_LOG_SIZE => 600000; diff --git a/pandora_agents/unix/pandora_agent.redhat.spec b/pandora_agents/unix/pandora_agent.redhat.spec index 367613bf8f..867ea2f914 100644 --- a/pandora_agents/unix/pandora_agent.redhat.spec +++ b/pandora_agents/unix/pandora_agent.redhat.spec @@ -3,7 +3,7 @@ # %define name pandorafms_agent_unix %define version 7.0NG.746 -%define release 200606 +%define release 200607 Summary: Pandora FMS Linux agent, PERL version Name: %{name} diff --git a/pandora_agents/unix/pandora_agent.spec b/pandora_agents/unix/pandora_agent.spec index 4c315f969a..6939d751f8 100644 --- a/pandora_agents/unix/pandora_agent.spec +++ b/pandora_agents/unix/pandora_agent.spec @@ -3,7 +3,7 @@ # %define name pandorafms_agent_unix %define version 7.0NG.746 -%define release 200606 +%define release 200607 Summary: Pandora FMS Linux agent, PERL version Name: %{name} diff --git a/pandora_agents/unix/pandora_agent_installer b/pandora_agents/unix/pandora_agent_installer index d489f735b8..261d09882f 100755 --- a/pandora_agents/unix/pandora_agent_installer +++ b/pandora_agents/unix/pandora_agent_installer @@ -10,7 +10,7 @@ # ********************************************************************** PI_VERSION="7.0NG.746" -PI_BUILD="200606" +PI_BUILD="200607" OS_NAME=`uname -s` FORCE=0 diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi index c14b80ec5c..c3c8d5e39f 100644 --- a/pandora_agents/win32/installer/pandora.mpi +++ b/pandora_agents/win32/installer/pandora.mpi @@ -186,7 +186,7 @@ UpgradeApplicationID {} Version -{200606} +{200607} ViewReadme {Yes} diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc index e3aca7e17f..764bd98a5b 100644 --- a/pandora_agents/win32/pandora.cc +++ b/pandora_agents/win32/pandora.cc @@ -30,7 +30,7 @@ using namespace Pandora; using namespace Pandora_Strutils; #define PATH_SIZE _MAX_PATH+1 -#define PANDORA_VERSION ("7.0NG.746(Build 200606)") +#define PANDORA_VERSION ("7.0NG.746(Build 200607)") string pandora_path; string pandora_dir; diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc index a40bfea86f..eb45f021ce 100644 --- a/pandora_agents/win32/versioninfo.rc +++ b/pandora_agents/win32/versioninfo.rc @@ -11,7 +11,7 @@ BEGIN VALUE "LegalCopyright", "Artica ST" VALUE "OriginalFilename", "PandoraAgent.exe" VALUE "ProductName", "Pandora FMS Windows Agent" - VALUE "ProductVersion", "(7.0NG.746(Build 200606))" + VALUE "ProductVersion", "(7.0NG.746(Build 200607))" VALUE "FileVersion", "1.0.0.0" END END diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control index 20dd24c444..544d65c9e7 100644 --- a/pandora_console/DEBIAN/control +++ b/pandora_console/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-console -Version: 7.0NG.746-200606 +Version: 7.0NG.746-200607 Architecture: all Priority: optional Section: admin diff --git a/pandora_console/DEBIAN/make_deb_package.sh b/pandora_console/DEBIAN/make_deb_package.sh index c349d42ade..fb8ebf3755 100644 --- a/pandora_console/DEBIAN/make_deb_package.sh +++ b/pandora_console/DEBIAN/make_deb_package.sh @@ -14,7 +14,7 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -pandora_version="7.0NG.746-200606" +pandora_version="7.0NG.746-200607" package_pear=0 package_pandora=1 diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php index 74b6abd80c..f55928a040 100644 --- a/pandora_console/include/config_process.php +++ b/pandora_console/include/config_process.php @@ -20,7 +20,7 @@ /** * Pandora build version and version */ -$build_version = 'PC200606'; +$build_version = 'PC200607'; $pandora_version = 'v7.0NG.746'; // Do not overwrite default timezone set if defined. diff --git a/pandora_console/install.php b/pandora_console/install.php index a4eafc1e66..eb20ab0740 100644 --- a/pandora_console/install.php +++ b/pandora_console/install.php @@ -129,7 +129,7 @@
[ qw() ] ); diff --git a/pandora_server/pandora_server.redhat.spec b/pandora_server/pandora_server.redhat.spec index e59a4f2474..5789f503ef 100644 --- a/pandora_server/pandora_server.redhat.spec +++ b/pandora_server/pandora_server.redhat.spec @@ -3,7 +3,7 @@ # %define name pandorafms_server %define version 7.0NG.746 -%define release 200606 +%define release 200607 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec index 62b9c5b2f6..6405921ef3 100644 --- a/pandora_server/pandora_server.spec +++ b/pandora_server/pandora_server.spec @@ -3,7 +3,7 @@ # %define name pandorafms_server %define version 7.0NG.746 -%define release 200606 +%define release 200607 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer index ee6632ed8f..e43e0ab828 100755 --- a/pandora_server/pandora_server_installer +++ b/pandora_server/pandora_server_installer @@ -9,7 +9,7 @@ # ********************************************************************** PI_VERSION="7.0NG.746" -PI_BUILD="200606" +PI_BUILD="200607" MODE=$1 if [ $# -gt 1 ]; then diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl index 3f21de9a78..6507de6e01 100755 --- a/pandora_server/util/pandora_db.pl +++ b/pandora_server/util/pandora_db.pl @@ -35,7 +35,7 @@ use PandoraFMS::Config; use PandoraFMS::DB; # version: define current version -my $version = "7.0NG.746 PS200606"; +my $version = "7.0NG.746 PS200607"; # Pandora server configuration my %conf; diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl index 69b868303f..117a2fb08e 100755 --- a/pandora_server/util/pandora_manage.pl +++ b/pandora_server/util/pandora_manage.pl @@ -36,7 +36,7 @@ use Encode::Locale; Encode::Locale::decode_argv; # version: define current version -my $version = "7.0NG.746 PS200606"; +my $version = "7.0NG.746 PS200607"; # save program name for logging my $progname = basename($0); From 9a7035d014bc7a316b82d914c0be55c85ded782d Mon Sep 17 00:00:00 2001 From: artica Date: Mon, 8 Jun 2020 01:00:14 +0200 Subject: [PATCH 055/299] Auto-updated build strings. --- pandora_agents/unix/DEBIAN/control | 2 +- pandora_agents/unix/DEBIAN/make_deb_package.sh | 2 +- pandora_agents/unix/pandora_agent | 2 +- pandora_agents/unix/pandora_agent.redhat.spec | 2 +- pandora_agents/unix/pandora_agent.spec | 2 +- pandora_agents/unix/pandora_agent_installer | 2 +- pandora_agents/win32/installer/pandora.mpi | 2 +- pandora_agents/win32/pandora.cc | 2 +- pandora_agents/win32/versioninfo.rc | 2 +- pandora_console/DEBIAN/control | 2 +- pandora_console/DEBIAN/make_deb_package.sh | 2 +- pandora_console/include/config_process.php | 2 +- pandora_console/install.php | 2 +- pandora_console/pandora_console.redhat.spec | 2 +- pandora_console/pandora_console.rhel7.spec | 2 +- pandora_console/pandora_console.spec | 2 +- pandora_server/DEBIAN/control | 2 +- pandora_server/DEBIAN/make_deb_package.sh | 2 +- pandora_server/lib/PandoraFMS/Config.pm | 2 +- pandora_server/lib/PandoraFMS/PluginTools.pm | 2 +- pandora_server/pandora_server.redhat.spec | 2 +- pandora_server/pandora_server.spec | 2 +- pandora_server/pandora_server_installer | 2 +- pandora_server/util/pandora_db.pl | 2 +- pandora_server/util/pandora_manage.pl | 2 +- 25 files changed, 25 insertions(+), 25 deletions(-) diff --git a/pandora_agents/unix/DEBIAN/control b/pandora_agents/unix/DEBIAN/control index cd7ad5d579..0dd301b279 100644 --- a/pandora_agents/unix/DEBIAN/control +++ b/pandora_agents/unix/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-agent-unix -Version: 7.0NG.746-200607 +Version: 7.0NG.746-200608 Architecture: all Priority: optional Section: admin diff --git a/pandora_agents/unix/DEBIAN/make_deb_package.sh b/pandora_agents/unix/DEBIAN/make_deb_package.sh index e3247538a6..d50e91910f 100644 --- a/pandora_agents/unix/DEBIAN/make_deb_package.sh +++ b/pandora_agents/unix/DEBIAN/make_deb_package.sh @@ -14,7 +14,7 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -pandora_version="7.0NG.746-200607" +pandora_version="7.0NG.746-200608" echo "Test if you has the tools for to make the packages." whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null diff --git a/pandora_agents/unix/pandora_agent b/pandora_agents/unix/pandora_agent index 0fa55a5ad4..162d35a9fa 100755 --- a/pandora_agents/unix/pandora_agent +++ b/pandora_agents/unix/pandora_agent @@ -55,7 +55,7 @@ my $Sem = undef; my $ThreadSem = undef; use constant AGENT_VERSION => '7.0NG.746'; -use constant AGENT_BUILD => '200607'; +use constant AGENT_BUILD => '200608'; # Agent log default file size maximum and instances use constant DEFAULT_MAX_LOG_SIZE => 600000; diff --git a/pandora_agents/unix/pandora_agent.redhat.spec b/pandora_agents/unix/pandora_agent.redhat.spec index 867ea2f914..ca8cbadcd7 100644 --- a/pandora_agents/unix/pandora_agent.redhat.spec +++ b/pandora_agents/unix/pandora_agent.redhat.spec @@ -3,7 +3,7 @@ # %define name pandorafms_agent_unix %define version 7.0NG.746 -%define release 200607 +%define release 200608 Summary: Pandora FMS Linux agent, PERL version Name: %{name} diff --git a/pandora_agents/unix/pandora_agent.spec b/pandora_agents/unix/pandora_agent.spec index 6939d751f8..65a10b77a2 100644 --- a/pandora_agents/unix/pandora_agent.spec +++ b/pandora_agents/unix/pandora_agent.spec @@ -3,7 +3,7 @@ # %define name pandorafms_agent_unix %define version 7.0NG.746 -%define release 200607 +%define release 200608 Summary: Pandora FMS Linux agent, PERL version Name: %{name} diff --git a/pandora_agents/unix/pandora_agent_installer b/pandora_agents/unix/pandora_agent_installer index 261d09882f..d364284eb7 100755 --- a/pandora_agents/unix/pandora_agent_installer +++ b/pandora_agents/unix/pandora_agent_installer @@ -10,7 +10,7 @@ # ********************************************************************** PI_VERSION="7.0NG.746" -PI_BUILD="200607" +PI_BUILD="200608" OS_NAME=`uname -s` FORCE=0 diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi index c3c8d5e39f..1bfa0b58a2 100644 --- a/pandora_agents/win32/installer/pandora.mpi +++ b/pandora_agents/win32/installer/pandora.mpi @@ -186,7 +186,7 @@ UpgradeApplicationID {} Version -{200607} +{200608} ViewReadme {Yes} diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc index 764bd98a5b..bd048d925b 100644 --- a/pandora_agents/win32/pandora.cc +++ b/pandora_agents/win32/pandora.cc @@ -30,7 +30,7 @@ using namespace Pandora; using namespace Pandora_Strutils; #define PATH_SIZE _MAX_PATH+1 -#define PANDORA_VERSION ("7.0NG.746(Build 200607)") +#define PANDORA_VERSION ("7.0NG.746(Build 200608)") string pandora_path; string pandora_dir; diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc index eb45f021ce..83c10b276a 100644 --- a/pandora_agents/win32/versioninfo.rc +++ b/pandora_agents/win32/versioninfo.rc @@ -11,7 +11,7 @@ BEGIN VALUE "LegalCopyright", "Artica ST" VALUE "OriginalFilename", "PandoraAgent.exe" VALUE "ProductName", "Pandora FMS Windows Agent" - VALUE "ProductVersion", "(7.0NG.746(Build 200607))" + VALUE "ProductVersion", "(7.0NG.746(Build 200608))" VALUE "FileVersion", "1.0.0.0" END END diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control index 544d65c9e7..6fb556e0d4 100644 --- a/pandora_console/DEBIAN/control +++ b/pandora_console/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-console -Version: 7.0NG.746-200607 +Version: 7.0NG.746-200608 Architecture: all Priority: optional Section: admin diff --git a/pandora_console/DEBIAN/make_deb_package.sh b/pandora_console/DEBIAN/make_deb_package.sh index fb8ebf3755..6d9c01a1af 100644 --- a/pandora_console/DEBIAN/make_deb_package.sh +++ b/pandora_console/DEBIAN/make_deb_package.sh @@ -14,7 +14,7 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -pandora_version="7.0NG.746-200607" +pandora_version="7.0NG.746-200608" package_pear=0 package_pandora=1 diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php index f55928a040..1091b024d2 100644 --- a/pandora_console/include/config_process.php +++ b/pandora_console/include/config_process.php @@ -20,7 +20,7 @@ /** * Pandora build version and version */ -$build_version = 'PC200607'; +$build_version = 'PC200608'; $pandora_version = 'v7.0NG.746'; // Do not overwrite default timezone set if defined. diff --git a/pandora_console/install.php b/pandora_console/install.php index eb20ab0740..7ccfa3ff85 100644 --- a/pandora_console/install.php +++ b/pandora_console/install.php @@ -129,7 +129,7 @@
[ qw() ] ); diff --git a/pandora_server/pandora_server.redhat.spec b/pandora_server/pandora_server.redhat.spec index 5789f503ef..e293a8ba15 100644 --- a/pandora_server/pandora_server.redhat.spec +++ b/pandora_server/pandora_server.redhat.spec @@ -3,7 +3,7 @@ # %define name pandorafms_server %define version 7.0NG.746 -%define release 200607 +%define release 200608 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec index 6405921ef3..331187a494 100644 --- a/pandora_server/pandora_server.spec +++ b/pandora_server/pandora_server.spec @@ -3,7 +3,7 @@ # %define name pandorafms_server %define version 7.0NG.746 -%define release 200607 +%define release 200608 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer index e43e0ab828..c958c422de 100755 --- a/pandora_server/pandora_server_installer +++ b/pandora_server/pandora_server_installer @@ -9,7 +9,7 @@ # ********************************************************************** PI_VERSION="7.0NG.746" -PI_BUILD="200607" +PI_BUILD="200608" MODE=$1 if [ $# -gt 1 ]; then diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl index 6507de6e01..354ea2905e 100755 --- a/pandora_server/util/pandora_db.pl +++ b/pandora_server/util/pandora_db.pl @@ -35,7 +35,7 @@ use PandoraFMS::Config; use PandoraFMS::DB; # version: define current version -my $version = "7.0NG.746 PS200607"; +my $version = "7.0NG.746 PS200608"; # Pandora server configuration my %conf; diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl index 117a2fb08e..3d76f3c082 100755 --- a/pandora_server/util/pandora_manage.pl +++ b/pandora_server/util/pandora_manage.pl @@ -36,7 +36,7 @@ use Encode::Locale; Encode::Locale::decode_argv; # version: define current version -my $version = "7.0NG.746 PS200607"; +my $version = "7.0NG.746 PS200608"; # save program name for logging my $progname = basename($0); From c6b1e92bda7de0322c97e55d2116721c84f0f0ae Mon Sep 17 00:00:00 2001 From: Jose Gonzalez Date: Mon, 8 Jun 2020 08:44:24 +0200 Subject: [PATCH 056/299] Modified match for forbidden words. Now not allows spaces or scaped chars. Other cases must not be problemathic --- pandora_console/include/functions.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandora_console/include/functions.php b/pandora_console/include/functions.php index 724fe11fd6..8805a0b1e2 100644 --- a/pandora_console/include/functions.php +++ b/pandora_console/include/functions.php @@ -2136,7 +2136,7 @@ function check_sql($sql) { // We remove "*" to avoid things like SELECT * FROM tusuario // Check that it not delete_ as "delete_pending" (this is a common field in pandora tables). - if (preg_match('/\*|delete[^_]|drop|alter|modify|password|pass|insert|update/i', $sql)) { + if (preg_match('/([ ]*(delete|drop|alter|modify|password|pass|insert|update)\b[ \\]+)/i', $sql)) { return ''; } From ab61cf1fc54e959cbf9fe9526f38ba36b4c2428b Mon Sep 17 00:00:00 2001 From: alejandro-campos Date: Mon, 8 Jun 2020 10:48:48 +0200 Subject: [PATCH 057/299] changed console and audit log locations --- pandora_console/.gitignore | 2 + pandora_console/extensions/pandora_logs.php | 6 +- .../godmode/setup/setup_general.php | 9 +- .../include/class/ConsoleSupervisor.php | 96 ++++++++++++++++++- .../include/class/Diagnostics.class.php | 2 +- pandora_console/include/config_process.php | 4 - pandora_console/include/functions.php | 2 +- pandora_console/include/functions_config.php | 20 ++-- pandora_console/include/functions_db.php | 6 +- pandora_console/index.php | 8 ++ pandora_console/log/.htaccess | 6 ++ .../pandora_console_logrotate_centos | 2 +- .../pandora_console_logrotate_suse | 2 +- .../pandora_console_logrotate_ubuntu | 2 +- pandora_console/pandora_websocket_engine | 2 +- .../pandora_websocket_engine.service | 6 +- pandora_console/ws.php | 4 +- pandora_server/util/pandora_logrotate | 6 +- 18 files changed, 148 insertions(+), 37 deletions(-) create mode 100644 pandora_console/log/.htaccess diff --git a/pandora_console/.gitignore b/pandora_console/.gitignore index 14c3e02e3d..66b97267ac 100644 --- a/pandora_console/.gitignore +++ b/pandora_console/.gitignore @@ -6,7 +6,9 @@ attachment/collection attachment/files_repo include/config.php pandora_console.log +log/console.log enterprise *.bak audit.log +log/audit.log install_old.php diff --git a/pandora_console/extensions/pandora_logs.php b/pandora_console/extensions/pandora_logs.php index bbdac372cd..038997f156 100644 --- a/pandora_console/extensions/pandora_logs.php +++ b/pandora_console/extensions/pandora_logs.php @@ -69,7 +69,11 @@ function pandoralogs_extension_main() $logs_directory = (!empty($config['server_log_dir'])) ? io_safe_output($config['server_log_dir']) : '/var/log/pandora'; - view_logfile($config['homedir'].'/pandora_console.log'); + // Do not attempt to show console log if disabled. + if ($config['console_log_enabled']) { + view_logfile($config['homedir'].'/log/console.log'); + } + view_logfile($logs_directory.'/pandora_server.log'); view_logfile($logs_directory.'/pandora_server.error'); } diff --git a/pandora_console/godmode/setup/setup_general.php b/pandora_console/godmode/setup/setup_general.php index d28a5e43fe..bbf1fbc6d7 100644 --- a/pandora_console/godmode/setup/setup_general.php +++ b/pandora_console/godmode/setup/setup_general.php @@ -329,15 +329,18 @@ $table->data[$i++][1] = html_print_input_text( $table->data[$i][0] = __('Include agents manually disabled'); $table->data[$i++][1] = html_print_checkbox_switch('include_agents', 1, $config['include_agents'], true); -$table->data[$i][0] = __('Audit log directory'); -$table->data[$i++][1] = html_print_input_text('auditdir', io_safe_output($config['auditdir']), '', 30, 100, true); - $table->data[$i][0] = __('Set alias as name by default in agent creation'); $table->data[$i++][1] = html_print_checkbox_switch('alias_as_name', 1, $config['alias_as_name'], true); $table->data[$i][0] = __('Unique IP'); $table->data[$i++][1] = html_print_checkbox_switch('unique_ip', 1, $config['unique_ip'], true); +$table->data[$i][0] = __('Enable console log').ui_print_help_tip(__('Log location').': pandora_console/log/console.log', true); +$table->data[$i++][1] = html_print_checkbox_switch('console_log_enabled', 1, $config['console_log_enabled'], true); + +$table->data[$i][0] = __('Enable audit log').ui_print_help_tip(__('Log location').': pandora_console/log/audit.log', true); +$table->data[$i++][1] = html_print_checkbox_switch('audit_log_enabled', 1, $config['audit_log_enabled'], true); + echo '
'; echo '
'; diff --git a/pandora_console/include/class/ConsoleSupervisor.php b/pandora_console/include/class/ConsoleSupervisor.php index 069b47b29a..3e5287cb4c 100644 --- a/pandora_console/include/class/ConsoleSupervisor.php +++ b/pandora_console/include/class/ConsoleSupervisor.php @@ -226,6 +226,19 @@ class ConsoleSupervisor * NOTIF.HAMASTER.MESSAGE */ $this->checkHaStatus(); + + /* + * Check if the Pandora Console log + * file remains in old location. + */ + $this->checkPandoraConsoleLogOldLocation(); + + /* + * Check if the audit log file + * remains in old location. + */ + $this->checkAuditLogOldLocation(); + } @@ -461,6 +474,17 @@ class ConsoleSupervisor */ $this->checkHaStatus(); + /* + * Check if the audit log file + * remains in old location. + */ + $this->checkAuditLogOldLocation(); + + /* + Check if AllowOverride is None or All. + */ + $this->checkAllowOverrideEnabled(); + } @@ -2253,8 +2277,8 @@ class ConsoleSupervisor ui_get_full_url(false) ); $message_conf_cron .= ENTERPRISE_DIR.'/'.EXTENSIONS_DIR; - $message_conf_cron .= '/cron/cron.php >> '; - $message_conf_cron .= $config['homedir'].'/pandora_console.log'; + $message_conf_cron .= '/cron/cron.php >> '; + $message_conf_cron .= $config['homedir'].'/log/console.log'; } if (isset($config['cron_last_run']) === true) { @@ -2483,4 +2507,72 @@ class ConsoleSupervisor } + /* + * Check if Pandora console log file remains in old location. + * + * @return void + */ + public function checkPandoraConsoleLogOldLocation() + { + global $config; + + if (file_exists($config['homedir'].'/pandora_console.log')) { + $title_pandoraconsole_old_log = __( + 'Pandora FMS console log file changed location', + $config['homedir'] + ); + $message_pandoraconsole_old_log = __( + 'Pandora FMS console log file has been moved to new location %s/pandora_console/log/pandora. Currently you have an outdated and inoperative version of this file at %s. Please, consider deleting it.', + $config['homedir'], + $config['homedir'] + ); + + $this->notify( + [ + 'type' => 'NOTIF.PANDORACONSOLE.LOG.OLD', + 'title' => __($title_pandoraconsole_old_log), + 'message' => __($message_pandoraconsole_old_log), + 'url' => '#', + ] + ); + } else { + $this->cleanNotifications('NOTIF.PANDORACONSOLE.LOG.OLD'); + } + } + + + /** + * Check if audit log file remains in old location. + * + * @return void + */ + public function checkAuditLogOldLocation() + { + global $config; + + if (file_exists($config['homedir'].'/audit.log')) { + $title_audit_old_log = __( + 'Pandora FMS audit log file changed location', + $config['homedir'] + ); + $message_audit_old_log = __( + 'Pandora FMS audit log file has been moved to new location %s/pandora_console/log/pandora. Currently you have an outdated and inoperative version of this file at %s. Please, consider deleting it.', + $config['homedir'], + $config['homedir'] + ); + + $this->notify( + [ + 'type' => 'NOTIF.AUDIT.LOG.OLD', + 'title' => __($title_audit_old_log), + 'message' => __($message_audit_old_log), + 'url' => '#', + ] + ); + } else { + $this->cleanNotifications('NOTIF.AUDIT.LOG.OLD'); + } + } + + } diff --git a/pandora_console/include/class/Diagnostics.class.php b/pandora_console/include/class/Diagnostics.class.php index bcf36551d7..257b9926e5 100644 --- a/pandora_console/include/class/Diagnostics.class.php +++ b/pandora_console/include/class/Diagnostics.class.php @@ -1008,7 +1008,7 @@ class Diagnostics extends Wizard $pathErrLogs = '/var/log/pandora/pandora_server.error'; $errors = $this->getLogInfo($pathErrLogs); - $pathConsoleLogs = $config['homedir'].'/pandora_console.log'; + $pathConsoleLogs = $config['homedir'].'/log/pandora_console.log'; $console = $this->getLogInfo($pathConsoleLogs); $result = [ diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php index 7e56caff42..3923ea6c2f 100644 --- a/pandora_console/include/config_process.php +++ b/pandora_console/include/config_process.php @@ -51,8 +51,6 @@ if ($develop_bypass != 1) { } ini_set('display_errors', 0); - ini_set('log_errors', 1); - ini_set('error_log', $config['homedir'].'/pandora_console.log'); } else { // Develop mode, show all notices and errors on Console (and log it) if (version_compare(PHP_VERSION, '5.3.0') >= 0) { @@ -62,8 +60,6 @@ if ($develop_bypass != 1) { } ini_set('display_errors', 1); - ini_set('log_errors', 1); - ini_set('error_log', $config['homedir'].'/pandora_console.log'); } // Check if mysqli is available diff --git a/pandora_console/include/functions.php b/pandora_console/include/functions.php index 724fe11fd6..37b3b2e0b6 100644 --- a/pandora_console/include/functions.php +++ b/pandora_console/include/functions.php @@ -3997,7 +3997,7 @@ function generate_hash_to_api() * @param string Key to identify the profiler run. * @param string Way to display the result * "link" (default): Click into word "Performance" to display the profilling info. - * "console": Display with a message in pandora_console.log. + * "console": Display with a message in console.log. */ function pandora_xhprof_display_result($key='', $method='link') { diff --git a/pandora_console/include/functions_config.php b/pandora_console/include/functions_config.php index 96f266fc1e..71c4589af7 100644 --- a/pandora_console/include/functions_config.php +++ b/pandora_console/include/functions_config.php @@ -319,8 +319,12 @@ function config_update_config() $error_update[] = __('alias_as_name'); } - if (!config_update_value('auditdir', get_parameter('auditdir'))) { - $error_update[] = __('Audit log directory'); + if (!config_update_value('console_log_enabled', get_parameter('console_log_enabled'))) { + $error_update[] = __('Console log enabled'); + } + + if (!config_update_value('audit_log_enabled', get_parameter('audit_log_enabled'))) { + $error_update[] = __('Audit log enabled'); } if (!config_update_value('unique_ip', get_parameter('unique_ip'))) { @@ -1924,14 +1928,12 @@ function config_process_config() config_update_value('alias_as_name', 0); } - if (!isset($config['auditdir'])) { - $auditdir = '/var/www/html/pandora_console'; - if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') { - // Windows. - $auditdir = $config['homedir']; - } + if (!isset($config['console_log_enabled'])) { + config_update_value('console_log_enabled', 0); + } - config_update_value('auditdir', $auditdir); + if (!isset($config['audit_log_enabled'])) { + config_update_value('audit_log_enabled', 0); } if (!isset($config['elasticsearch_ip'])) { diff --git a/pandora_console/include/functions_db.php b/pandora_console/include/functions_db.php index a99ab2e41e..7b4525b408 100644 --- a/pandora_console/include/functions_db.php +++ b/pandora_console/include/functions_db.php @@ -251,10 +251,8 @@ function db_pandora_audit($accion, $descripcion, $user_id=false, $ip=true, $info $valor = ''.$values['fecha'].' - '.io_safe_output($id).' - '.io_safe_output($accion).' - '.$ip.' - '.io_safe_output($descripcion)."\n"; - if (empty($config['auditdir'])) { - file_put_contents($config['homedir'].'/audit.log', $valor, FILE_APPEND); - } else { - file_put_contents($config['auditdir'].'/audit.log', $valor, FILE_APPEND); + if ($config['audit_log_enabled']) { + file_put_contents($config['homedir'].'/log/audit.log', $valor, FILE_APPEND); } enterprise_include_once('include/functions_audit.php'); diff --git a/pandora_console/index.php b/pandora_console/index.php index 6619b75b78..550885d520 100755 --- a/pandora_console/index.php +++ b/pandora_console/index.php @@ -141,6 +141,14 @@ if ((! file_exists('include/config.php')) require_once 'include/config.php'; require_once 'include/functions_config.php'; +if (isset($config['console_log_enabled']) && $config['console_log_enabled'] == 1) { + ini_set('log_errors', 1); + ini_set('error_log', $config['homedir'].'/log/console.log'); +} else { + ini_set('log_errors', 0); + ini_set('error_log', 0); +} + if (isset($config['error'])) { $login_screen = $config['error']; include 'general/error_screen.php'; diff --git a/pandora_console/log/.htaccess b/pandora_console/log/.htaccess new file mode 100644 index 0000000000..6f6064119f --- /dev/null +++ b/pandora_console/log/.htaccess @@ -0,0 +1,6 @@ +# pandora disable log access + + +Order Allow,Deny +Deny from All + diff --git a/pandora_console/pandora_console_logrotate_centos b/pandora_console/pandora_console_logrotate_centos index 3666165272..d3d824e1bd 100644 --- a/pandora_console/pandora_console_logrotate_centos +++ b/pandora_console/pandora_console_logrotate_centos @@ -1,5 +1,5 @@ # Centos, Redhat, Fedora -/var/www/html/pandora_console/pandora_console.log { +/var/www/html/pandora_console/log/console.log { weekly missingok size 100000 diff --git a/pandora_console/pandora_console_logrotate_suse b/pandora_console/pandora_console_logrotate_suse index 8f0380a4d5..53f18c326a 100644 --- a/pandora_console/pandora_console_logrotate_suse +++ b/pandora_console/pandora_console_logrotate_suse @@ -1,5 +1,5 @@ # OpenSUSE, SLES -/srv/www/htdocs/pandora_console/pandora_console.log { +/srv/www/htdocs/pandora_console/log/console.log { weekly missingok size 100000 diff --git a/pandora_console/pandora_console_logrotate_ubuntu b/pandora_console/pandora_console_logrotate_ubuntu index a7acfaa6e5..d8aecc325c 100644 --- a/pandora_console/pandora_console_logrotate_ubuntu +++ b/pandora_console/pandora_console_logrotate_ubuntu @@ -1,5 +1,5 @@ # DEBIAN / UBUNTU -/var/www/pandora_console/pandora_console.log { +/var/www/pandora_console/log/console.log { weekly missingok size 100000 diff --git a/pandora_console/pandora_websocket_engine b/pandora_console/pandora_websocket_engine index 871009eb9d..fb5b7551bb 100755 --- a/pandora_console/pandora_websocket_engine +++ b/pandora_console/pandora_websocket_engine @@ -31,7 +31,7 @@ fi export WS_ENGINE="/var/www/html/pandora_console/ws.php" export PHP=/usr/bin/php -export WS_LOG="/var/www/html/pandora_console/pandora_console.log" +export WS_LOG="/var/log/pandora/web_socket.log" export GOTTY="/tmp/" # Environment variables diff --git a/pandora_console/pandora_websocket_engine.service b/pandora_console/pandora_websocket_engine.service index fe19ff1490..118db6a7b2 100644 --- a/pandora_console/pandora_websocket_engine.service +++ b/pandora_console/pandora_websocket_engine.service @@ -6,13 +6,13 @@ After=syslog.target network.target User=apache Type=simple -ExecStart=php /var/www/html/pandora_console/ws.php >> /var/www/html/pandora_console/pandora_console.log 2>&1 +ExecStart=php /var/www/html/pandora_console/ws.php >> /var/log/pandora/web_socket.log 2>&1 TimeoutStopSec=20 KillMode=process Restart=always RestartSec=2 -StandardOutput=file:/var/www/html/pandora_console/pandora_console.log -StandardError=file:/var/www/html/pandora_console/pandora_console.log +StandardOutput=file:/var/log/pandora/web_socket.log +StandardError=file:/var/log/pandora/web_socket.log [Install] WantedBy=multi-user.target diff --git a/pandora_console/ws.php b/pandora_console/ws.php index 6c7a513185..2902384eac 100644 --- a/pandora_console/ws.php +++ b/pandora_console/ws.php @@ -124,12 +124,12 @@ if (substr($os, 0, 3) !== 'win') { // Launch gotty - SSH. $cmd = $base_cmd.' --port '.$config['gotty_ssh_port']; - $cmd .= ' ssh >> '.__DIR__.'/pandora_console.log 2>&1 &'; + $cmd .= ' ssh >> /var/log/pandora/web_socket.log 2>&1 &'; shell_exec($cmd); // Launch gotty - telnet. $cmd = $base_cmd.' --port '.$config['gotty_telnet_port']; - $cmd .= ' telnet >> '.__DIR__.'/pandora_console.log 2>&1 &'; + $cmd .= ' telnet >> /var/log/pandora/web_socket.log 2>&1 &'; shell_exec($cmd); } } diff --git a/pandora_server/util/pandora_logrotate b/pandora_server/util/pandora_logrotate index f954d3738a..757381ca8c 100644 --- a/pandora_server/util/pandora_logrotate +++ b/pandora_server/util/pandora_logrotate @@ -12,7 +12,7 @@ } # DEBIAN / UBUNTU -/var/www/pandora_console/pandora_console.log { +/var/www/pandora_console/log/console.log { weekly missingok size 100000 @@ -24,7 +24,7 @@ } # OpenSUSE, SLES -/srv/www/htdocs/pandora_console/pandora_console.log { +/srv/www/htdocs/pandora_console/log/console.log { weekly missingok size 100000 @@ -36,7 +36,7 @@ } # Centos, Redhat, Fedora -/var/www/html/pandora_console/pandora_console.log { +/var/www/html/pandora_console/log/console.log { weekly missingok size 100000 From b9d5ab9c4a2d7bf41ddb117f7a3873a3f06e3499 Mon Sep 17 00:00:00 2001 From: daniel Date: Mon, 8 Jun 2020 11:24:46 +0200 Subject: [PATCH 058/299] Fixed errors new tab base64 image --- pandora_console/include/ajax/module.php | 9 ++++++++- pandora_console/include/javascript/pandora.js | 6 ++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/pandora_console/include/ajax/module.php b/pandora_console/include/ajax/module.php index fae72f34fa..ed6d72ef70 100755 --- a/pandora_console/include/ajax/module.php +++ b/pandora_console/include/ajax/module.php @@ -372,7 +372,13 @@ if (check_login()) { $data[] = date('d F Y h:i:s A', $row['utimestamp']); } else if (is_snapshot_data($row[$attr[0]])) { if ($config['command_snapshot']) { - $data[] = ""; + $imagetab = ''; + $image = ''; + $data[] = ''.$image.''; } else { $data[] = ''.wordwrap(io_safe_input($row[$attr[0]]), 60, "
\n", true).'
'; } @@ -1099,6 +1105,7 @@ if (check_login()) { $rowIndex++; } + ui_require_javascript_file('pandora.js'); ?> '; From 11dbe46a96a82aff3a4ae5c5af469fd1bf21f816 Mon Sep 17 00:00:00 2001 From: fbsanchez Date: Mon, 8 Jun 2020 15:23:09 +0200 Subject: [PATCH 060/299] Allowed toggled rows --- .../godmode/wizards/Wizard.main.php | 27 ++++++++++++++----- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/pandora_console/godmode/wizards/Wizard.main.php b/pandora_console/godmode/wizards/Wizard.main.php index 7320934826..9af64a7c39 100644 --- a/pandora_console/godmode/wizards/Wizard.main.php +++ b/pandora_console/godmode/wizards/Wizard.main.php @@ -832,7 +832,7 @@ class Wizard $first_block_printed = true; } - $output .= '
'; + $row_output = '
'; foreach ($row['columns'] as $column) { $width = isset($column['width']) ? 'width: '.$column['width'].';' : 'width: 100%;'; @@ -841,23 +841,36 @@ class Wizard $extra_styles = isset($column['style']) ? $column['style'] : ''; $class = isset($column['class']) ? $column['class'] : ''; - $output .= '
'; + $row_output .= '
'; foreach ($column['inputs'] as $input) { if (is_array($input)) { if ($input['arguments']['type'] != 'submit') { - $output .= $this->printBlockAsGrid($input, true); + $row_output .= $this->printBlockAsGrid($input, true); } else { $output_submit .= $this->printBlockAsGrid($input, true); } } else { - $output .= $input; + $row_output .= $input; } } - $output .= '
'; + $row_output .= '
'; + } + + if (isset($row['toggle'])) { + $output .= ui_print_toggle( + [ + 'content' => $row_output, + 'name' => $row['toggle_label'], + 'hidden_default' => ! (bool) $row['toggle'], + 'return' => true, + ] + ); + } else { + $output .= $row_output; } $output .= '
'; From 7c3f30a277355e028255940bb841d963f52b6ab8 Mon Sep 17 00:00:00 2001 From: Jose Gonzalez Date: Mon, 8 Jun 2020 16:44:09 +0200 Subject: [PATCH 061/299] Get the name of policy in tpolicies --- pandora_server/lib/PandoraFMS/Core.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandora_server/lib/PandoraFMS/Core.pm b/pandora_server/lib/PandoraFMS/Core.pm index 58c990019c..7304344d9a 100644 --- a/pandora_server/lib/PandoraFMS/Core.pm +++ b/pandora_server/lib/PandoraFMS/Core.pm @@ -1190,7 +1190,7 @@ sub pandora_execute_action ($$$$$$$$$;$) { _server_name_ => (defined ($agent)) ? $agent->{'server_name'} : '', _target_ip_ => (defined ($module)) ? $module->{'ip_target'} : '', _target_port_ => (defined ($module)) ? $module->{'tcp_port'} : '', - _policy_ => undef, + _policy_ => (defined ($module)) ? get_db_value ($dbh, "SELECT name FROM tpolicies WHERE id = ?", $module->{'id_policy_module'}) : '', _plugin_parameters_ => (defined ($module)) ? $module->{'plugin_parameter'} : '', _email_tag_ => undef, _phone_tag_ => undef, From 754023f90891ded8107f22a156cb442311b9d2c8 Mon Sep 17 00:00:00 2001 From: alejandro-campos Date: Mon, 8 Jun 2020 17:12:33 +0200 Subject: [PATCH 062/299] fix XSS --- pandora_console/godmode/wizards/HostDevices.class.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/pandora_console/godmode/wizards/HostDevices.class.php b/pandora_console/godmode/wizards/HostDevices.class.php index 9cb9505a5b..80810b7cf2 100755 --- a/pandora_console/godmode/wizards/HostDevices.class.php +++ b/pandora_console/godmode/wizards/HostDevices.class.php @@ -692,9 +692,7 @@ class HostDevices extends Wizard if ($this->page == 1) { $title = __( '"%s" features', - io_safe_output( - $this->task['name'] - ) + $this->task['name'] ); } From 120b78b5c55126a41eb04e3f4c967a59749c4310 Mon Sep 17 00:00:00 2001 From: Jose Gonzalez Date: Mon, 8 Jun 2020 17:36:32 +0200 Subject: [PATCH 063/299] Control vulnerable fields --- pandora_console/godmode/tag/edit_tag.php | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/pandora_console/godmode/tag/edit_tag.php b/pandora_console/godmode/tag/edit_tag.php index 2db4cfed33..96b4e158e3 100644 --- a/pandora_console/godmode/tag/edit_tag.php +++ b/pandora_console/godmode/tag/edit_tag.php @@ -31,11 +31,10 @@ $id_tag = (int) get_parameter('id_tag', 0); $update_tag = (int) get_parameter('update_tag', 0); $create_tag = (int) get_parameter('create_tag', 0); $name_tag = (string) get_parameter('name_tag', ''); -$description_tag = (string) get_parameter('description_tag', ''); -$description_tag = io_safe_input(strip_tags(io_safe_output($description_tag))); +$description_tag = io_safe_input(strip_tags(io_safe_output((string) get_parameter('description_tag')))); $url_tag = (string) get_parameter('url_tag', ''); -$email_tag = (string) get_parameter('email_tag', ''); -$phone_tag = (string) get_parameter('phone_tag', ''); +$email_tag = io_safe_input(strip_tags(io_safe_output(((string) get_parameter('email_tag'))))); +$phone_tag = io_safe_input(strip_tags(io_safe_output(((string) get_parameter('phone_tag'))))); $tab = (string) get_parameter('tab', 'list'); if (defined('METACONSOLE')) { From d45b1e44ee0f1b6cc06366ae78125693a4e85103 Mon Sep 17 00:00:00 2001 From: Kevin Date: Mon, 8 Jun 2020 18:10:21 +0200 Subject: [PATCH 064/299] Deleted Perl-YAML-Tiny from mandatory dependencies --- pandora_agents/unix/pandora_agent.redhat.spec | 2 +- pandora_agents/unix/pandora_agent.spec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pandora_agents/unix/pandora_agent.redhat.spec b/pandora_agents/unix/pandora_agent.redhat.spec index 9e4e2e3e73..af019b8b17 100644 --- a/pandora_agents/unix/pandora_agent.redhat.spec +++ b/pandora_agents/unix/pandora_agent.redhat.spec @@ -24,7 +24,7 @@ Requires(preun): chkconfig /bin/rm /usr/sbin/userdel Requires: fileutils textutils unzip Requires: util-linux procps grep Requires: /sbin/ip /bin/awk -Requires: perl perl(Sys::Syslog) perl(IO::Compress::Zip) perl(YAML::Tiny) +Requires: perl perl(Sys::Syslog) perl(IO::Compress::Zip) # Required by plugins #Requires: sh-utils sed passwd net-tools rpm AutoReq: 0 diff --git a/pandora_agents/unix/pandora_agent.spec b/pandora_agents/unix/pandora_agent.spec index ed5e222ba9..33ad9868ce 100644 --- a/pandora_agents/unix/pandora_agent.spec +++ b/pandora_agents/unix/pandora_agent.spec @@ -20,7 +20,7 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-buildroot BuildArch: noarch #PreReq: %fillup_prereq %insserv_prereq /usr/bin/sed /usr/bin/grep /usr/sbin/useradd Requires(pre,preun):/usr/bin/sed /usr/bin/grep /usr/sbin/useradd -Requires: coreutils unzip perl perl(Sys::Syslog) perl(IO::Compress::Zip) perl(YAML::Tiny) +Requires: coreutils unzip perl perl(Sys::Syslog) perl(IO::Compress::Zip) AutoReq: 0 Provides: %{name}-%{version} From a30f73d6c2970b4c921e58e5b4468bda77b7ca04 Mon Sep 17 00:00:00 2001 From: artica Date: Tue, 9 Jun 2020 01:00:18 +0200 Subject: [PATCH 065/299] Auto-updated build strings. --- pandora_agents/unix/DEBIAN/control | 2 +- pandora_agents/unix/DEBIAN/make_deb_package.sh | 2 +- pandora_agents/unix/pandora_agent | 2 +- pandora_agents/unix/pandora_agent.redhat.spec | 2 +- pandora_agents/unix/pandora_agent.spec | 2 +- pandora_agents/unix/pandora_agent_installer | 2 +- pandora_agents/win32/installer/pandora.mpi | 2 +- pandora_agents/win32/pandora.cc | 2 +- pandora_agents/win32/versioninfo.rc | 2 +- pandora_console/DEBIAN/control | 2 +- pandora_console/DEBIAN/make_deb_package.sh | 2 +- pandora_console/include/config_process.php | 2 +- pandora_console/install.php | 2 +- pandora_console/pandora_console.redhat.spec | 2 +- pandora_console/pandora_console.rhel7.spec | 2 +- pandora_console/pandora_console.spec | 2 +- pandora_server/DEBIAN/control | 2 +- pandora_server/DEBIAN/make_deb_package.sh | 2 +- pandora_server/lib/PandoraFMS/Config.pm | 2 +- pandora_server/lib/PandoraFMS/PluginTools.pm | 2 +- pandora_server/pandora_server.redhat.spec | 2 +- pandora_server/pandora_server.spec | 2 +- pandora_server/pandora_server_installer | 2 +- pandora_server/util/pandora_db.pl | 2 +- pandora_server/util/pandora_manage.pl | 2 +- 25 files changed, 25 insertions(+), 25 deletions(-) diff --git a/pandora_agents/unix/DEBIAN/control b/pandora_agents/unix/DEBIAN/control index 0dd301b279..91f1551288 100644 --- a/pandora_agents/unix/DEBIAN/control +++ b/pandora_agents/unix/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-agent-unix -Version: 7.0NG.746-200608 +Version: 7.0NG.746-200609 Architecture: all Priority: optional Section: admin diff --git a/pandora_agents/unix/DEBIAN/make_deb_package.sh b/pandora_agents/unix/DEBIAN/make_deb_package.sh index d50e91910f..b7d12ad61d 100644 --- a/pandora_agents/unix/DEBIAN/make_deb_package.sh +++ b/pandora_agents/unix/DEBIAN/make_deb_package.sh @@ -14,7 +14,7 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -pandora_version="7.0NG.746-200608" +pandora_version="7.0NG.746-200609" echo "Test if you has the tools for to make the packages." whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null diff --git a/pandora_agents/unix/pandora_agent b/pandora_agents/unix/pandora_agent index 162d35a9fa..8e7691ae39 100755 --- a/pandora_agents/unix/pandora_agent +++ b/pandora_agents/unix/pandora_agent @@ -55,7 +55,7 @@ my $Sem = undef; my $ThreadSem = undef; use constant AGENT_VERSION => '7.0NG.746'; -use constant AGENT_BUILD => '200608'; +use constant AGENT_BUILD => '200609'; # Agent log default file size maximum and instances use constant DEFAULT_MAX_LOG_SIZE => 600000; diff --git a/pandora_agents/unix/pandora_agent.redhat.spec b/pandora_agents/unix/pandora_agent.redhat.spec index ca8cbadcd7..3ee225b4d2 100644 --- a/pandora_agents/unix/pandora_agent.redhat.spec +++ b/pandora_agents/unix/pandora_agent.redhat.spec @@ -3,7 +3,7 @@ # %define name pandorafms_agent_unix %define version 7.0NG.746 -%define release 200608 +%define release 200609 Summary: Pandora FMS Linux agent, PERL version Name: %{name} diff --git a/pandora_agents/unix/pandora_agent.spec b/pandora_agents/unix/pandora_agent.spec index 65a10b77a2..5d86f42c13 100644 --- a/pandora_agents/unix/pandora_agent.spec +++ b/pandora_agents/unix/pandora_agent.spec @@ -3,7 +3,7 @@ # %define name pandorafms_agent_unix %define version 7.0NG.746 -%define release 200608 +%define release 200609 Summary: Pandora FMS Linux agent, PERL version Name: %{name} diff --git a/pandora_agents/unix/pandora_agent_installer b/pandora_agents/unix/pandora_agent_installer index d364284eb7..9a0b6c68ab 100755 --- a/pandora_agents/unix/pandora_agent_installer +++ b/pandora_agents/unix/pandora_agent_installer @@ -10,7 +10,7 @@ # ********************************************************************** PI_VERSION="7.0NG.746" -PI_BUILD="200608" +PI_BUILD="200609" OS_NAME=`uname -s` FORCE=0 diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi index 1bfa0b58a2..6a7e527c5f 100644 --- a/pandora_agents/win32/installer/pandora.mpi +++ b/pandora_agents/win32/installer/pandora.mpi @@ -186,7 +186,7 @@ UpgradeApplicationID {} Version -{200608} +{200609} ViewReadme {Yes} diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc index bd048d925b..4a74065ff8 100644 --- a/pandora_agents/win32/pandora.cc +++ b/pandora_agents/win32/pandora.cc @@ -30,7 +30,7 @@ using namespace Pandora; using namespace Pandora_Strutils; #define PATH_SIZE _MAX_PATH+1 -#define PANDORA_VERSION ("7.0NG.746(Build 200608)") +#define PANDORA_VERSION ("7.0NG.746(Build 200609)") string pandora_path; string pandora_dir; diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc index 83c10b276a..8420db0322 100644 --- a/pandora_agents/win32/versioninfo.rc +++ b/pandora_agents/win32/versioninfo.rc @@ -11,7 +11,7 @@ BEGIN VALUE "LegalCopyright", "Artica ST" VALUE "OriginalFilename", "PandoraAgent.exe" VALUE "ProductName", "Pandora FMS Windows Agent" - VALUE "ProductVersion", "(7.0NG.746(Build 200608))" + VALUE "ProductVersion", "(7.0NG.746(Build 200609))" VALUE "FileVersion", "1.0.0.0" END END diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control index 6fb556e0d4..6fc8c22bb2 100644 --- a/pandora_console/DEBIAN/control +++ b/pandora_console/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-console -Version: 7.0NG.746-200608 +Version: 7.0NG.746-200609 Architecture: all Priority: optional Section: admin diff --git a/pandora_console/DEBIAN/make_deb_package.sh b/pandora_console/DEBIAN/make_deb_package.sh index 6d9c01a1af..0c5a4417bb 100644 --- a/pandora_console/DEBIAN/make_deb_package.sh +++ b/pandora_console/DEBIAN/make_deb_package.sh @@ -14,7 +14,7 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -pandora_version="7.0NG.746-200608" +pandora_version="7.0NG.746-200609" package_pear=0 package_pandora=1 diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php index 1091b024d2..786ac47d9f 100644 --- a/pandora_console/include/config_process.php +++ b/pandora_console/include/config_process.php @@ -20,7 +20,7 @@ /** * Pandora build version and version */ -$build_version = 'PC200608'; +$build_version = 'PC200609'; $pandora_version = 'v7.0NG.746'; // Do not overwrite default timezone set if defined. diff --git a/pandora_console/install.php b/pandora_console/install.php index 7ccfa3ff85..77eb8b9e7a 100644 --- a/pandora_console/install.php +++ b/pandora_console/install.php @@ -129,7 +129,7 @@
[ qw() ] ); diff --git a/pandora_server/pandora_server.redhat.spec b/pandora_server/pandora_server.redhat.spec index e293a8ba15..80d1ade9ea 100644 --- a/pandora_server/pandora_server.redhat.spec +++ b/pandora_server/pandora_server.redhat.spec @@ -3,7 +3,7 @@ # %define name pandorafms_server %define version 7.0NG.746 -%define release 200608 +%define release 200609 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec index 331187a494..52f0f55f79 100644 --- a/pandora_server/pandora_server.spec +++ b/pandora_server/pandora_server.spec @@ -3,7 +3,7 @@ # %define name pandorafms_server %define version 7.0NG.746 -%define release 200608 +%define release 200609 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer index c958c422de..fb0959023f 100755 --- a/pandora_server/pandora_server_installer +++ b/pandora_server/pandora_server_installer @@ -9,7 +9,7 @@ # ********************************************************************** PI_VERSION="7.0NG.746" -PI_BUILD="200608" +PI_BUILD="200609" MODE=$1 if [ $# -gt 1 ]; then diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl index 354ea2905e..c2201aaf14 100755 --- a/pandora_server/util/pandora_db.pl +++ b/pandora_server/util/pandora_db.pl @@ -35,7 +35,7 @@ use PandoraFMS::Config; use PandoraFMS::DB; # version: define current version -my $version = "7.0NG.746 PS200608"; +my $version = "7.0NG.746 PS200609"; # Pandora server configuration my %conf; diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl index 3d76f3c082..856f5ee22e 100755 --- a/pandora_server/util/pandora_manage.pl +++ b/pandora_server/util/pandora_manage.pl @@ -36,7 +36,7 @@ use Encode::Locale; Encode::Locale::decode_argv; # version: define current version -my $version = "7.0NG.746 PS200608"; +my $version = "7.0NG.746 PS200609"; # save program name for logging my $progname = basename($0); From 73cf98fc02d03b13586f8d5cb77b2c7091b84325 Mon Sep 17 00:00:00 2001 From: Jose Gonzalez Date: Tue, 9 Jun 2020 10:22:54 +0200 Subject: [PATCH 066/299] Cleaned tags for affected fields --- pandora_console/include/functions_config.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pandora_console/include/functions_config.php b/pandora_console/include/functions_config.php index 96f266fc1e..b7d23fbb7d 100644 --- a/pandora_console/include/functions_config.php +++ b/pandora_console/include/functions_config.php @@ -1212,8 +1212,8 @@ function config_update_config() // -------------------------------------------------- // CUSTOM VALUES POST PROCESS // -------------------------------------------------- - $custom_value = get_parameter('custom_value'); - $custom_text = get_parameter('custom_text'); + $custom_value = io_safe_input(strip_tags(io_safe_output(get_parameter('custom_value')))); + $custom_text = io_safe_input(strip_tags(io_safe_output(get_parameter('custom_text')))); $custom_value_add = (bool) get_parameter('custom_value_add', 0); $custom_value_to_delete = get_parameter('custom_value_to_delete', 0); @@ -1284,8 +1284,8 @@ function config_update_config() // -------------------------------------------------- // MODULE CUSTOM UNITS // -------------------------------------------------- - $custom_unit = get_parameter('custom_module_unit'); - $custom_unit_to_delete = get_parameter('custom_module_unit_to_delete', ''); + $custom_unit = io_safe_input(strip_tags(io_safe_output(get_parameter('custom_module_unit')))); + $custom_unit_to_delete = io_safe_input(strip_tags(io_safe_output(get_parameter('custom_module_unit_to_delete', '')))); if (!empty($custom_unit)) { if (!add_custom_module_unit( From cfe30d5b7d5431141b211fa8666bde6fe7f8b4cf Mon Sep 17 00:00:00 2001 From: marcos Date: Tue, 9 Jun 2020 10:37:11 +0200 Subject: [PATCH 067/299] fixed vulnerability on special days --- .../godmode/alerts/alert_special_days.php | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/pandora_console/godmode/alerts/alert_special_days.php b/pandora_console/godmode/alerts/alert_special_days.php index 7dd02c28bd..d3f2c41ed1 100644 --- a/pandora_console/godmode/alerts/alert_special_days.php +++ b/pandora_console/godmode/alerts/alert_special_days.php @@ -118,6 +118,10 @@ if ($create_special_day) { $values['id_group'] = (string) get_parameter('id_group'); $values['description'] = (string) get_parameter('description'); + $aviable_description = true; + if (preg_match(' + '; + } + // NOTE: jquery.flot.threshold is not te original file. Is patched to allow multiple thresholds and filled area - $output = ' + $output .= ' diff --git a/pandora_console/mobile/operation/tactical.php b/pandora_console/mobile/operation/tactical.php index b7844d9e9a..2495885c98 100755 --- a/pandora_console/mobile/operation/tactical.php +++ b/pandora_console/mobile/operation/tactical.php @@ -31,7 +31,7 @@ class Tactical $this->correct_acl = false; } - include_javascript_dependencies_flot_graph(); + include_javascript_dependencies_flot_graph(false, true); } From 1fd19802ac57bee688407ed56a856c026721912d Mon Sep 17 00:00:00 2001 From: Jose Gonzalez Date: Fri, 12 Jun 2020 14:11:41 +0200 Subject: [PATCH 098/299] Added api function for update events --- pandora_console/include/api.php | 7 ++ pandora_console/include/functions_api.php | 84 +++++++++++++++++++++++ 2 files changed, 91 insertions(+) diff --git a/pandora_console/include/api.php b/pandora_console/include/api.php index f263350685..ed366f64c6 100644 --- a/pandora_console/include/api.php +++ b/pandora_console/include/api.php @@ -261,6 +261,13 @@ if ($correctLogin) { } break; + case 'event': + // Preventive check for users if not available write events + if (! check_acl($config['id_user'], $event['id_grupo'], 'EW')) { + return false; + } + break; + default: // Ignore. break; diff --git a/pandora_console/include/functions_api.php b/pandora_console/include/functions_api.php index 76e10533aa..4e75b955e8 100644 --- a/pandora_console/include/functions_api.php +++ b/pandora_console/include/functions_api.php @@ -8790,6 +8790,11 @@ function otherParameter2Filter($other, $return_as_array=false, $use_agent_name=f } } + // Esto es extraño, hablar con Tati + /* + $filter['1'] = $filter['sql']; + unset($filter['sql']); */ + if (isset($other['data'][4]) && $other['data'][4] != '') { $idTemplate = db_get_value_filter('id', 'talert_templates', ['name' => $other['data'][4]]); if ($idTemplate !== false) { @@ -10721,6 +10726,85 @@ function get_events_with_user($trash1, $trash2, $other, $returnType, $user_in_db } +/** + * Update an event + * + * @param string $id_event Id of the event for change. + * @param string $unused1 Without use. + * @param array $params Dictionary with field,value format with the data for update. + * @param string $unused2 Without use. + * @param string $unused3 Without use. + * + * @return void + */ +function api_set_event($id_event, $unused1, $params, $unused2, $unused3) +{ + // Get the event + $event = events_get_event($id_event); + // If event not exists, end the execution. + if ($event === false) { + returnError( + 'event_not_exists', + 'Event not exists' + ); + return false; + } + + $paramsSerialize = []; + // Serialize the data for update + if ($params['type'] === 'array') { + // Keys that is not available to change + $invalidKeys = [ + 'id_evento', + 'id_agente', + 'id_grupo', + 'timestamp', + 'utimestamp', + 'id_agentmodule', + 'id_alert_am', + 'criticity', + 'user_comment', + 'tags', + 'source', + 'id_extra', + 'critical_instructions', + 'warning_instructions', + 'unknown_instructions', + 'ack_utimestamp', + 'data', + ]; + + foreach ($params['data'] as $key_value) { + list($key, $value) = explode(',', $key_value, 2); + if (in_array($key, $invalidKeys) == false) { + $paramsSerialize[$key] = $value; + } + } + } + + // TODO. Stablish security for prevent sql injection? + // Update the row + $result = db_process_sql_update( + 'tevento', + $paramsSerialize, + [ 'id_evento' => $id_event ] + ); + + // If update results failed + if (empty($result) === true || $result === false) { + returnError( + 'failed_event_update', + __('Failed event update') + ); + return false; + } else { + returnData('string', ['data' => 'Event updated']); + } + + return; +} + + /** * * @param $trash1 From 7b12d6c4c465f6e3bdd0f3b554e7a000ba2e4368 Mon Sep 17 00:00:00 2001 From: artica Date: Sat, 13 Jun 2020 01:00:44 +0200 Subject: [PATCH 099/299] Auto-updated build strings. --- pandora_agents/unix/DEBIAN/control | 2 +- pandora_agents/unix/DEBIAN/make_deb_package.sh | 2 +- pandora_agents/unix/pandora_agent | 2 +- pandora_agents/unix/pandora_agent.redhat.spec | 2 +- pandora_agents/unix/pandora_agent.spec | 2 +- pandora_agents/unix/pandora_agent_installer | 2 +- pandora_agents/win32/installer/pandora.mpi | 2 +- pandora_agents/win32/pandora.cc | 2 +- pandora_agents/win32/versioninfo.rc | 2 +- pandora_console/DEBIAN/control | 2 +- pandora_console/DEBIAN/make_deb_package.sh | 2 +- pandora_console/include/config_process.php | 2 +- pandora_console/install.php | 2 +- pandora_console/pandora_console.redhat.spec | 2 +- pandora_console/pandora_console.rhel7.spec | 2 +- pandora_console/pandora_console.spec | 2 +- pandora_server/DEBIAN/control | 2 +- pandora_server/DEBIAN/make_deb_package.sh | 2 +- pandora_server/lib/PandoraFMS/Config.pm | 2 +- pandora_server/lib/PandoraFMS/PluginTools.pm | 2 +- pandora_server/pandora_server.redhat.spec | 2 +- pandora_server/pandora_server.spec | 2 +- pandora_server/pandora_server_installer | 2 +- pandora_server/util/pandora_db.pl | 2 +- pandora_server/util/pandora_manage.pl | 2 +- 25 files changed, 25 insertions(+), 25 deletions(-) diff --git a/pandora_agents/unix/DEBIAN/control b/pandora_agents/unix/DEBIAN/control index aa2702ac7d..9b9801f45b 100644 --- a/pandora_agents/unix/DEBIAN/control +++ b/pandora_agents/unix/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-agent-unix -Version: 7.0NG.746-200612 +Version: 7.0NG.746-200613 Architecture: all Priority: optional Section: admin diff --git a/pandora_agents/unix/DEBIAN/make_deb_package.sh b/pandora_agents/unix/DEBIAN/make_deb_package.sh index 878c9ebed3..8b7247e5ba 100644 --- a/pandora_agents/unix/DEBIAN/make_deb_package.sh +++ b/pandora_agents/unix/DEBIAN/make_deb_package.sh @@ -14,7 +14,7 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -pandora_version="7.0NG.746-200612" +pandora_version="7.0NG.746-200613" echo "Test if you has the tools for to make the packages." whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null diff --git a/pandora_agents/unix/pandora_agent b/pandora_agents/unix/pandora_agent index 54e0609e6e..bc4a0275a1 100755 --- a/pandora_agents/unix/pandora_agent +++ b/pandora_agents/unix/pandora_agent @@ -55,7 +55,7 @@ my $Sem = undef; my $ThreadSem = undef; use constant AGENT_VERSION => '7.0NG.746'; -use constant AGENT_BUILD => '200612'; +use constant AGENT_BUILD => '200613'; # Agent log default file size maximum and instances use constant DEFAULT_MAX_LOG_SIZE => 600000; diff --git a/pandora_agents/unix/pandora_agent.redhat.spec b/pandora_agents/unix/pandora_agent.redhat.spec index 3d794681e5..2f60e657d8 100644 --- a/pandora_agents/unix/pandora_agent.redhat.spec +++ b/pandora_agents/unix/pandora_agent.redhat.spec @@ -3,7 +3,7 @@ # %define name pandorafms_agent_unix %define version 7.0NG.746 -%define release 200612 +%define release 200613 Summary: Pandora FMS Linux agent, PERL version Name: %{name} diff --git a/pandora_agents/unix/pandora_agent.spec b/pandora_agents/unix/pandora_agent.spec index 54661b8c5c..d023513a1a 100644 --- a/pandora_agents/unix/pandora_agent.spec +++ b/pandora_agents/unix/pandora_agent.spec @@ -3,7 +3,7 @@ # %define name pandorafms_agent_unix %define version 7.0NG.746 -%define release 200612 +%define release 200613 Summary: Pandora FMS Linux agent, PERL version Name: %{name} diff --git a/pandora_agents/unix/pandora_agent_installer b/pandora_agents/unix/pandora_agent_installer index ab67a79eee..32f82d2e22 100755 --- a/pandora_agents/unix/pandora_agent_installer +++ b/pandora_agents/unix/pandora_agent_installer @@ -10,7 +10,7 @@ # ********************************************************************** PI_VERSION="7.0NG.746" -PI_BUILD="200612" +PI_BUILD="200613" OS_NAME=`uname -s` FORCE=0 diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi index 69cdcd335b..2aaae3c5c9 100644 --- a/pandora_agents/win32/installer/pandora.mpi +++ b/pandora_agents/win32/installer/pandora.mpi @@ -186,7 +186,7 @@ UpgradeApplicationID {} Version -{200612} +{200613} ViewReadme {Yes} diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc index 2988bcc3ce..d468c7c19d 100644 --- a/pandora_agents/win32/pandora.cc +++ b/pandora_agents/win32/pandora.cc @@ -30,7 +30,7 @@ using namespace Pandora; using namespace Pandora_Strutils; #define PATH_SIZE _MAX_PATH+1 -#define PANDORA_VERSION ("7.0NG.746(Build 200612)") +#define PANDORA_VERSION ("7.0NG.746(Build 200613)") string pandora_path; string pandora_dir; diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc index f939e85581..853454f2ac 100644 --- a/pandora_agents/win32/versioninfo.rc +++ b/pandora_agents/win32/versioninfo.rc @@ -11,7 +11,7 @@ BEGIN VALUE "LegalCopyright", "Artica ST" VALUE "OriginalFilename", "PandoraAgent.exe" VALUE "ProductName", "Pandora FMS Windows Agent" - VALUE "ProductVersion", "(7.0NG.746(Build 200612))" + VALUE "ProductVersion", "(7.0NG.746(Build 200613))" VALUE "FileVersion", "1.0.0.0" END END diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control index 554a289b1b..580fca20e7 100644 --- a/pandora_console/DEBIAN/control +++ b/pandora_console/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-console -Version: 7.0NG.746-200612 +Version: 7.0NG.746-200613 Architecture: all Priority: optional Section: admin diff --git a/pandora_console/DEBIAN/make_deb_package.sh b/pandora_console/DEBIAN/make_deb_package.sh index 37ec4980df..6aa0a18eeb 100644 --- a/pandora_console/DEBIAN/make_deb_package.sh +++ b/pandora_console/DEBIAN/make_deb_package.sh @@ -14,7 +14,7 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -pandora_version="7.0NG.746-200612" +pandora_version="7.0NG.746-200613" package_pear=0 package_pandora=1 diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php index 26a05a40a6..46952dda6c 100644 --- a/pandora_console/include/config_process.php +++ b/pandora_console/include/config_process.php @@ -20,7 +20,7 @@ /** * Pandora build version and version */ -$build_version = 'PC200612'; +$build_version = 'PC200613'; $pandora_version = 'v7.0NG.746'; // Do not overwrite default timezone set if defined. diff --git a/pandora_console/install.php b/pandora_console/install.php index 11f932b548..18db416e85 100644 --- a/pandora_console/install.php +++ b/pandora_console/install.php @@ -129,7 +129,7 @@
[ qw() ] ); diff --git a/pandora_server/pandora_server.redhat.spec b/pandora_server/pandora_server.redhat.spec index b57bd1078f..ab741d1f70 100644 --- a/pandora_server/pandora_server.redhat.spec +++ b/pandora_server/pandora_server.redhat.spec @@ -3,7 +3,7 @@ # %define name pandorafms_server %define version 7.0NG.746 -%define release 200612 +%define release 200613 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec index 9e32f3c168..9132fb3898 100644 --- a/pandora_server/pandora_server.spec +++ b/pandora_server/pandora_server.spec @@ -3,7 +3,7 @@ # %define name pandorafms_server %define version 7.0NG.746 -%define release 200612 +%define release 200613 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer index a17ab87f79..4d3eae17da 100755 --- a/pandora_server/pandora_server_installer +++ b/pandora_server/pandora_server_installer @@ -9,7 +9,7 @@ # ********************************************************************** PI_VERSION="7.0NG.746" -PI_BUILD="200612" +PI_BUILD="200613" MODE=$1 if [ $# -gt 1 ]; then diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl index 082450a62a..136a192a07 100755 --- a/pandora_server/util/pandora_db.pl +++ b/pandora_server/util/pandora_db.pl @@ -35,7 +35,7 @@ use PandoraFMS::Config; use PandoraFMS::DB; # version: define current version -my $version = "7.0NG.746 PS200612"; +my $version = "7.0NG.746 PS200613"; # Pandora server configuration my %conf; diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl index da6248b2ff..a44159e7b3 100755 --- a/pandora_server/util/pandora_manage.pl +++ b/pandora_server/util/pandora_manage.pl @@ -36,7 +36,7 @@ use Encode::Locale; Encode::Locale::decode_argv; # version: define current version -my $version = "7.0NG.746 PS200612"; +my $version = "7.0NG.746 PS200613"; # save program name for logging my $progname = basename($0); From 350c2caeb98d117ff9e1a1d877c63322f2945e5d Mon Sep 17 00:00:00 2001 From: artica Date: Sun, 14 Jun 2020 01:00:14 +0200 Subject: [PATCH 100/299] Auto-updated build strings. --- pandora_agents/unix/DEBIAN/control | 2 +- pandora_agents/unix/DEBIAN/make_deb_package.sh | 2 +- pandora_agents/unix/pandora_agent | 2 +- pandora_agents/unix/pandora_agent.redhat.spec | 2 +- pandora_agents/unix/pandora_agent.spec | 2 +- pandora_agents/unix/pandora_agent_installer | 2 +- pandora_agents/win32/installer/pandora.mpi | 2 +- pandora_agents/win32/pandora.cc | 2 +- pandora_agents/win32/versioninfo.rc | 2 +- pandora_console/DEBIAN/control | 2 +- pandora_console/DEBIAN/make_deb_package.sh | 2 +- pandora_console/include/config_process.php | 2 +- pandora_console/install.php | 2 +- pandora_console/pandora_console.redhat.spec | 2 +- pandora_console/pandora_console.rhel7.spec | 2 +- pandora_console/pandora_console.spec | 2 +- pandora_server/DEBIAN/control | 2 +- pandora_server/DEBIAN/make_deb_package.sh | 2 +- pandora_server/lib/PandoraFMS/Config.pm | 2 +- pandora_server/lib/PandoraFMS/PluginTools.pm | 2 +- pandora_server/pandora_server.redhat.spec | 2 +- pandora_server/pandora_server.spec | 2 +- pandora_server/pandora_server_installer | 2 +- pandora_server/util/pandora_db.pl | 2 +- pandora_server/util/pandora_manage.pl | 2 +- 25 files changed, 25 insertions(+), 25 deletions(-) diff --git a/pandora_agents/unix/DEBIAN/control b/pandora_agents/unix/DEBIAN/control index 9b9801f45b..145e12d2e1 100644 --- a/pandora_agents/unix/DEBIAN/control +++ b/pandora_agents/unix/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-agent-unix -Version: 7.0NG.746-200613 +Version: 7.0NG.746-200614 Architecture: all Priority: optional Section: admin diff --git a/pandora_agents/unix/DEBIAN/make_deb_package.sh b/pandora_agents/unix/DEBIAN/make_deb_package.sh index 8b7247e5ba..4047d5558f 100644 --- a/pandora_agents/unix/DEBIAN/make_deb_package.sh +++ b/pandora_agents/unix/DEBIAN/make_deb_package.sh @@ -14,7 +14,7 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -pandora_version="7.0NG.746-200613" +pandora_version="7.0NG.746-200614" echo "Test if you has the tools for to make the packages." whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null diff --git a/pandora_agents/unix/pandora_agent b/pandora_agents/unix/pandora_agent index bc4a0275a1..df00f9ad0d 100755 --- a/pandora_agents/unix/pandora_agent +++ b/pandora_agents/unix/pandora_agent @@ -55,7 +55,7 @@ my $Sem = undef; my $ThreadSem = undef; use constant AGENT_VERSION => '7.0NG.746'; -use constant AGENT_BUILD => '200613'; +use constant AGENT_BUILD => '200614'; # Agent log default file size maximum and instances use constant DEFAULT_MAX_LOG_SIZE => 600000; diff --git a/pandora_agents/unix/pandora_agent.redhat.spec b/pandora_agents/unix/pandora_agent.redhat.spec index 2f60e657d8..2748229338 100644 --- a/pandora_agents/unix/pandora_agent.redhat.spec +++ b/pandora_agents/unix/pandora_agent.redhat.spec @@ -3,7 +3,7 @@ # %define name pandorafms_agent_unix %define version 7.0NG.746 -%define release 200613 +%define release 200614 Summary: Pandora FMS Linux agent, PERL version Name: %{name} diff --git a/pandora_agents/unix/pandora_agent.spec b/pandora_agents/unix/pandora_agent.spec index d023513a1a..4ce1d71aad 100644 --- a/pandora_agents/unix/pandora_agent.spec +++ b/pandora_agents/unix/pandora_agent.spec @@ -3,7 +3,7 @@ # %define name pandorafms_agent_unix %define version 7.0NG.746 -%define release 200613 +%define release 200614 Summary: Pandora FMS Linux agent, PERL version Name: %{name} diff --git a/pandora_agents/unix/pandora_agent_installer b/pandora_agents/unix/pandora_agent_installer index 32f82d2e22..c3b6da11a9 100755 --- a/pandora_agents/unix/pandora_agent_installer +++ b/pandora_agents/unix/pandora_agent_installer @@ -10,7 +10,7 @@ # ********************************************************************** PI_VERSION="7.0NG.746" -PI_BUILD="200613" +PI_BUILD="200614" OS_NAME=`uname -s` FORCE=0 diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi index 2aaae3c5c9..9c5bdb202e 100644 --- a/pandora_agents/win32/installer/pandora.mpi +++ b/pandora_agents/win32/installer/pandora.mpi @@ -186,7 +186,7 @@ UpgradeApplicationID {} Version -{200613} +{200614} ViewReadme {Yes} diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc index d468c7c19d..92d4ced645 100644 --- a/pandora_agents/win32/pandora.cc +++ b/pandora_agents/win32/pandora.cc @@ -30,7 +30,7 @@ using namespace Pandora; using namespace Pandora_Strutils; #define PATH_SIZE _MAX_PATH+1 -#define PANDORA_VERSION ("7.0NG.746(Build 200613)") +#define PANDORA_VERSION ("7.0NG.746(Build 200614)") string pandora_path; string pandora_dir; diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc index 853454f2ac..8d95a9897c 100644 --- a/pandora_agents/win32/versioninfo.rc +++ b/pandora_agents/win32/versioninfo.rc @@ -11,7 +11,7 @@ BEGIN VALUE "LegalCopyright", "Artica ST" VALUE "OriginalFilename", "PandoraAgent.exe" VALUE "ProductName", "Pandora FMS Windows Agent" - VALUE "ProductVersion", "(7.0NG.746(Build 200613))" + VALUE "ProductVersion", "(7.0NG.746(Build 200614))" VALUE "FileVersion", "1.0.0.0" END END diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control index 580fca20e7..acba417e94 100644 --- a/pandora_console/DEBIAN/control +++ b/pandora_console/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-console -Version: 7.0NG.746-200613 +Version: 7.0NG.746-200614 Architecture: all Priority: optional Section: admin diff --git a/pandora_console/DEBIAN/make_deb_package.sh b/pandora_console/DEBIAN/make_deb_package.sh index 6aa0a18eeb..e46ba563ae 100644 --- a/pandora_console/DEBIAN/make_deb_package.sh +++ b/pandora_console/DEBIAN/make_deb_package.sh @@ -14,7 +14,7 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -pandora_version="7.0NG.746-200613" +pandora_version="7.0NG.746-200614" package_pear=0 package_pandora=1 diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php index 46952dda6c..d74e5219bb 100644 --- a/pandora_console/include/config_process.php +++ b/pandora_console/include/config_process.php @@ -20,7 +20,7 @@ /** * Pandora build version and version */ -$build_version = 'PC200613'; +$build_version = 'PC200614'; $pandora_version = 'v7.0NG.746'; // Do not overwrite default timezone set if defined. diff --git a/pandora_console/install.php b/pandora_console/install.php index 18db416e85..b33f569f59 100644 --- a/pandora_console/install.php +++ b/pandora_console/install.php @@ -129,7 +129,7 @@
[ qw() ] ); diff --git a/pandora_server/pandora_server.redhat.spec b/pandora_server/pandora_server.redhat.spec index ab741d1f70..ed679a04d8 100644 --- a/pandora_server/pandora_server.redhat.spec +++ b/pandora_server/pandora_server.redhat.spec @@ -3,7 +3,7 @@ # %define name pandorafms_server %define version 7.0NG.746 -%define release 200613 +%define release 200614 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec index 9132fb3898..50e6e36218 100644 --- a/pandora_server/pandora_server.spec +++ b/pandora_server/pandora_server.spec @@ -3,7 +3,7 @@ # %define name pandorafms_server %define version 7.0NG.746 -%define release 200613 +%define release 200614 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer index 4d3eae17da..14d15ee918 100755 --- a/pandora_server/pandora_server_installer +++ b/pandora_server/pandora_server_installer @@ -9,7 +9,7 @@ # ********************************************************************** PI_VERSION="7.0NG.746" -PI_BUILD="200613" +PI_BUILD="200614" MODE=$1 if [ $# -gt 1 ]; then diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl index 136a192a07..d68958373e 100755 --- a/pandora_server/util/pandora_db.pl +++ b/pandora_server/util/pandora_db.pl @@ -35,7 +35,7 @@ use PandoraFMS::Config; use PandoraFMS::DB; # version: define current version -my $version = "7.0NG.746 PS200613"; +my $version = "7.0NG.746 PS200614"; # Pandora server configuration my %conf; diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl index a44159e7b3..edbcb95ec3 100755 --- a/pandora_server/util/pandora_manage.pl +++ b/pandora_server/util/pandora_manage.pl @@ -36,7 +36,7 @@ use Encode::Locale; Encode::Locale::decode_argv; # version: define current version -my $version = "7.0NG.746 PS200613"; +my $version = "7.0NG.746 PS200614"; # save program name for logging my $progname = basename($0); From 81d9f6f16b798d1dd5db29a27026c6ef57689928 Mon Sep 17 00:00:00 2001 From: artica Date: Mon, 15 Jun 2020 01:00:13 +0200 Subject: [PATCH 101/299] Auto-updated build strings. --- pandora_agents/unix/DEBIAN/control | 2 +- pandora_agents/unix/DEBIAN/make_deb_package.sh | 2 +- pandora_agents/unix/pandora_agent | 2 +- pandora_agents/unix/pandora_agent.redhat.spec | 2 +- pandora_agents/unix/pandora_agent.spec | 2 +- pandora_agents/unix/pandora_agent_installer | 2 +- pandora_agents/win32/installer/pandora.mpi | 2 +- pandora_agents/win32/pandora.cc | 2 +- pandora_agents/win32/versioninfo.rc | 2 +- pandora_console/DEBIAN/control | 2 +- pandora_console/DEBIAN/make_deb_package.sh | 2 +- pandora_console/include/config_process.php | 2 +- pandora_console/install.php | 2 +- pandora_console/pandora_console.redhat.spec | 2 +- pandora_console/pandora_console.rhel7.spec | 2 +- pandora_console/pandora_console.spec | 2 +- pandora_server/DEBIAN/control | 2 +- pandora_server/DEBIAN/make_deb_package.sh | 2 +- pandora_server/lib/PandoraFMS/Config.pm | 2 +- pandora_server/lib/PandoraFMS/PluginTools.pm | 2 +- pandora_server/pandora_server.redhat.spec | 2 +- pandora_server/pandora_server.spec | 2 +- pandora_server/pandora_server_installer | 2 +- pandora_server/util/pandora_db.pl | 2 +- pandora_server/util/pandora_manage.pl | 2 +- 25 files changed, 25 insertions(+), 25 deletions(-) diff --git a/pandora_agents/unix/DEBIAN/control b/pandora_agents/unix/DEBIAN/control index 145e12d2e1..065c44aa1c 100644 --- a/pandora_agents/unix/DEBIAN/control +++ b/pandora_agents/unix/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-agent-unix -Version: 7.0NG.746-200614 +Version: 7.0NG.746-200615 Architecture: all Priority: optional Section: admin diff --git a/pandora_agents/unix/DEBIAN/make_deb_package.sh b/pandora_agents/unix/DEBIAN/make_deb_package.sh index 4047d5558f..d9f481d9ce 100644 --- a/pandora_agents/unix/DEBIAN/make_deb_package.sh +++ b/pandora_agents/unix/DEBIAN/make_deb_package.sh @@ -14,7 +14,7 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -pandora_version="7.0NG.746-200614" +pandora_version="7.0NG.746-200615" echo "Test if you has the tools for to make the packages." whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null diff --git a/pandora_agents/unix/pandora_agent b/pandora_agents/unix/pandora_agent index df00f9ad0d..ee20a81c3a 100755 --- a/pandora_agents/unix/pandora_agent +++ b/pandora_agents/unix/pandora_agent @@ -55,7 +55,7 @@ my $Sem = undef; my $ThreadSem = undef; use constant AGENT_VERSION => '7.0NG.746'; -use constant AGENT_BUILD => '200614'; +use constant AGENT_BUILD => '200615'; # Agent log default file size maximum and instances use constant DEFAULT_MAX_LOG_SIZE => 600000; diff --git a/pandora_agents/unix/pandora_agent.redhat.spec b/pandora_agents/unix/pandora_agent.redhat.spec index 2748229338..7e81922366 100644 --- a/pandora_agents/unix/pandora_agent.redhat.spec +++ b/pandora_agents/unix/pandora_agent.redhat.spec @@ -3,7 +3,7 @@ # %define name pandorafms_agent_unix %define version 7.0NG.746 -%define release 200614 +%define release 200615 Summary: Pandora FMS Linux agent, PERL version Name: %{name} diff --git a/pandora_agents/unix/pandora_agent.spec b/pandora_agents/unix/pandora_agent.spec index 4ce1d71aad..49bf28595a 100644 --- a/pandora_agents/unix/pandora_agent.spec +++ b/pandora_agents/unix/pandora_agent.spec @@ -3,7 +3,7 @@ # %define name pandorafms_agent_unix %define version 7.0NG.746 -%define release 200614 +%define release 200615 Summary: Pandora FMS Linux agent, PERL version Name: %{name} diff --git a/pandora_agents/unix/pandora_agent_installer b/pandora_agents/unix/pandora_agent_installer index c3b6da11a9..d81b610641 100755 --- a/pandora_agents/unix/pandora_agent_installer +++ b/pandora_agents/unix/pandora_agent_installer @@ -10,7 +10,7 @@ # ********************************************************************** PI_VERSION="7.0NG.746" -PI_BUILD="200614" +PI_BUILD="200615" OS_NAME=`uname -s` FORCE=0 diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi index 9c5bdb202e..994e9017fd 100644 --- a/pandora_agents/win32/installer/pandora.mpi +++ b/pandora_agents/win32/installer/pandora.mpi @@ -186,7 +186,7 @@ UpgradeApplicationID {} Version -{200614} +{200615} ViewReadme {Yes} diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc index 92d4ced645..0f2e395d48 100644 --- a/pandora_agents/win32/pandora.cc +++ b/pandora_agents/win32/pandora.cc @@ -30,7 +30,7 @@ using namespace Pandora; using namespace Pandora_Strutils; #define PATH_SIZE _MAX_PATH+1 -#define PANDORA_VERSION ("7.0NG.746(Build 200614)") +#define PANDORA_VERSION ("7.0NG.746(Build 200615)") string pandora_path; string pandora_dir; diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc index 8d95a9897c..e09ee9ea45 100644 --- a/pandora_agents/win32/versioninfo.rc +++ b/pandora_agents/win32/versioninfo.rc @@ -11,7 +11,7 @@ BEGIN VALUE "LegalCopyright", "Artica ST" VALUE "OriginalFilename", "PandoraAgent.exe" VALUE "ProductName", "Pandora FMS Windows Agent" - VALUE "ProductVersion", "(7.0NG.746(Build 200614))" + VALUE "ProductVersion", "(7.0NG.746(Build 200615))" VALUE "FileVersion", "1.0.0.0" END END diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control index acba417e94..ad19521c2a 100644 --- a/pandora_console/DEBIAN/control +++ b/pandora_console/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-console -Version: 7.0NG.746-200614 +Version: 7.0NG.746-200615 Architecture: all Priority: optional Section: admin diff --git a/pandora_console/DEBIAN/make_deb_package.sh b/pandora_console/DEBIAN/make_deb_package.sh index e46ba563ae..37592bfd49 100644 --- a/pandora_console/DEBIAN/make_deb_package.sh +++ b/pandora_console/DEBIAN/make_deb_package.sh @@ -14,7 +14,7 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -pandora_version="7.0NG.746-200614" +pandora_version="7.0NG.746-200615" package_pear=0 package_pandora=1 diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php index d74e5219bb..b459d0008d 100644 --- a/pandora_console/include/config_process.php +++ b/pandora_console/include/config_process.php @@ -20,7 +20,7 @@ /** * Pandora build version and version */ -$build_version = 'PC200614'; +$build_version = 'PC200615'; $pandora_version = 'v7.0NG.746'; // Do not overwrite default timezone set if defined. diff --git a/pandora_console/install.php b/pandora_console/install.php index b33f569f59..916492ea12 100644 --- a/pandora_console/install.php +++ b/pandora_console/install.php @@ -129,7 +129,7 @@
[ qw() ] ); diff --git a/pandora_server/pandora_server.redhat.spec b/pandora_server/pandora_server.redhat.spec index ed679a04d8..8c5cf5d855 100644 --- a/pandora_server/pandora_server.redhat.spec +++ b/pandora_server/pandora_server.redhat.spec @@ -3,7 +3,7 @@ # %define name pandorafms_server %define version 7.0NG.746 -%define release 200614 +%define release 200615 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec index 50e6e36218..49baa1329f 100644 --- a/pandora_server/pandora_server.spec +++ b/pandora_server/pandora_server.spec @@ -3,7 +3,7 @@ # %define name pandorafms_server %define version 7.0NG.746 -%define release 200614 +%define release 200615 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer index 14d15ee918..964289b1a5 100755 --- a/pandora_server/pandora_server_installer +++ b/pandora_server/pandora_server_installer @@ -9,7 +9,7 @@ # ********************************************************************** PI_VERSION="7.0NG.746" -PI_BUILD="200614" +PI_BUILD="200615" MODE=$1 if [ $# -gt 1 ]; then diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl index d68958373e..785ec1a889 100755 --- a/pandora_server/util/pandora_db.pl +++ b/pandora_server/util/pandora_db.pl @@ -35,7 +35,7 @@ use PandoraFMS::Config; use PandoraFMS::DB; # version: define current version -my $version = "7.0NG.746 PS200614"; +my $version = "7.0NG.746 PS200615"; # Pandora server configuration my %conf; diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl index edbcb95ec3..ba8825a72e 100755 --- a/pandora_server/util/pandora_manage.pl +++ b/pandora_server/util/pandora_manage.pl @@ -36,7 +36,7 @@ use Encode::Locale; Encode::Locale::decode_argv; # version: define current version -my $version = "7.0NG.746 PS200614"; +my $version = "7.0NG.746 PS200615"; # save program name for logging my $progname = basename($0); From cdf4109ad4af6dbc9a0ab43cb64d31b426242930 Mon Sep 17 00:00:00 2001 From: Jose Gonzalez Date: Mon, 15 Jun 2020 16:14:34 +0200 Subject: [PATCH 102/299] Returned timestamp message for graphs --- pandora_console/include/graphs/functions_flot.php | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/pandora_console/include/graphs/functions_flot.php b/pandora_console/include/graphs/functions_flot.php index 1a74f456b2..888b9e23b1 100644 --- a/pandora_console/include/graphs/functions_flot.php +++ b/pandora_console/include/graphs/functions_flot.php @@ -226,14 +226,13 @@ function flot_area_graph( $config['custom_graph_width'], true ); - /* - $return .= "
"; - */ + $return .= "
"; $return .= "
Date: Mon, 15 Jun 2020 16:43:17 +0200 Subject: [PATCH 103/299] fixed pdf status field --- pandora_console/include/functions_reporting_html.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandora_console/include/functions_reporting_html.php b/pandora_console/include/functions_reporting_html.php index 9a4ed439fa..34e6322639 100644 --- a/pandora_console/include/functions_reporting_html.php +++ b/pandora_console/include/functions_reporting_html.php @@ -2686,7 +2686,7 @@ function reporting_html_agent_configuration( $row['description'] = $module['description']; $row['interval'] = $module['interval']; $row['unit'] = $module['unit']; - $row['status'] = $module['status_icon']; + $row['status'] = ($pdf === 0) ? $module['status_icon'] : $module['status']; $row['tags'] = implode(',', $module['tags']); $table1->data[] = $row; From 65789ff431e70b83c79e94ff5f08c0dd7aeaf4a5 Mon Sep 17 00:00:00 2001 From: marcos Date: Mon, 15 Jun 2020 16:57:19 +0200 Subject: [PATCH 104/299] fixed error --- pandora_console/include/functions_html.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pandora_console/include/functions_html.php b/pandora_console/include/functions_html.php index 98f3d5f581..0b364a6eba 100644 --- a/pandora_console/include/functions_html.php +++ b/pandora_console/include/functions_html.php @@ -2808,7 +2808,11 @@ function html_print_table(&$table, $return=false) $style[$key] = ''; } - $output .= ''.$item.''."\n"; + if ($class === 'datos5' && $key === 1) { + $output .= ''.$item.''."\n"; + } else { + $output .= ''.$item.''."\n"; + } } $output .= ''."\n"; From 90cc854ea58f778bd3fc360a138de04e4094f8fa Mon Sep 17 00:00:00 2001 From: artica Date: Tue, 16 Jun 2020 01:00:16 +0200 Subject: [PATCH 105/299] Auto-updated build strings. --- pandora_agents/unix/DEBIAN/control | 2 +- pandora_agents/unix/DEBIAN/make_deb_package.sh | 2 +- pandora_agents/unix/pandora_agent | 2 +- pandora_agents/unix/pandora_agent.redhat.spec | 2 +- pandora_agents/unix/pandora_agent.spec | 2 +- pandora_agents/unix/pandora_agent_installer | 2 +- pandora_agents/win32/installer/pandora.mpi | 2 +- pandora_agents/win32/pandora.cc | 2 +- pandora_agents/win32/versioninfo.rc | 2 +- pandora_console/DEBIAN/control | 2 +- pandora_console/DEBIAN/make_deb_package.sh | 2 +- pandora_console/include/config_process.php | 2 +- pandora_console/install.php | 2 +- pandora_console/pandora_console.redhat.spec | 2 +- pandora_console/pandora_console.rhel7.spec | 2 +- pandora_console/pandora_console.spec | 2 +- pandora_server/DEBIAN/control | 2 +- pandora_server/DEBIAN/make_deb_package.sh | 2 +- pandora_server/lib/PandoraFMS/Config.pm | 2 +- pandora_server/lib/PandoraFMS/PluginTools.pm | 2 +- pandora_server/pandora_server.redhat.spec | 2 +- pandora_server/pandora_server.spec | 2 +- pandora_server/pandora_server_installer | 2 +- pandora_server/util/pandora_db.pl | 2 +- pandora_server/util/pandora_manage.pl | 2 +- 25 files changed, 25 insertions(+), 25 deletions(-) diff --git a/pandora_agents/unix/DEBIAN/control b/pandora_agents/unix/DEBIAN/control index 065c44aa1c..cc77419afa 100644 --- a/pandora_agents/unix/DEBIAN/control +++ b/pandora_agents/unix/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-agent-unix -Version: 7.0NG.746-200615 +Version: 7.0NG.746-200616 Architecture: all Priority: optional Section: admin diff --git a/pandora_agents/unix/DEBIAN/make_deb_package.sh b/pandora_agents/unix/DEBIAN/make_deb_package.sh index d9f481d9ce..db089152dc 100644 --- a/pandora_agents/unix/DEBIAN/make_deb_package.sh +++ b/pandora_agents/unix/DEBIAN/make_deb_package.sh @@ -14,7 +14,7 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -pandora_version="7.0NG.746-200615" +pandora_version="7.0NG.746-200616" echo "Test if you has the tools for to make the packages." whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null diff --git a/pandora_agents/unix/pandora_agent b/pandora_agents/unix/pandora_agent index ee20a81c3a..ab83553edb 100755 --- a/pandora_agents/unix/pandora_agent +++ b/pandora_agents/unix/pandora_agent @@ -55,7 +55,7 @@ my $Sem = undef; my $ThreadSem = undef; use constant AGENT_VERSION => '7.0NG.746'; -use constant AGENT_BUILD => '200615'; +use constant AGENT_BUILD => '200616'; # Agent log default file size maximum and instances use constant DEFAULT_MAX_LOG_SIZE => 600000; diff --git a/pandora_agents/unix/pandora_agent.redhat.spec b/pandora_agents/unix/pandora_agent.redhat.spec index 7e81922366..d3bb97711b 100644 --- a/pandora_agents/unix/pandora_agent.redhat.spec +++ b/pandora_agents/unix/pandora_agent.redhat.spec @@ -3,7 +3,7 @@ # %define name pandorafms_agent_unix %define version 7.0NG.746 -%define release 200615 +%define release 200616 Summary: Pandora FMS Linux agent, PERL version Name: %{name} diff --git a/pandora_agents/unix/pandora_agent.spec b/pandora_agents/unix/pandora_agent.spec index 49bf28595a..afc829aed9 100644 --- a/pandora_agents/unix/pandora_agent.spec +++ b/pandora_agents/unix/pandora_agent.spec @@ -3,7 +3,7 @@ # %define name pandorafms_agent_unix %define version 7.0NG.746 -%define release 200615 +%define release 200616 Summary: Pandora FMS Linux agent, PERL version Name: %{name} diff --git a/pandora_agents/unix/pandora_agent_installer b/pandora_agents/unix/pandora_agent_installer index d81b610641..ccdc111946 100755 --- a/pandora_agents/unix/pandora_agent_installer +++ b/pandora_agents/unix/pandora_agent_installer @@ -10,7 +10,7 @@ # ********************************************************************** PI_VERSION="7.0NG.746" -PI_BUILD="200615" +PI_BUILD="200616" OS_NAME=`uname -s` FORCE=0 diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi index 994e9017fd..c1b56b1298 100644 --- a/pandora_agents/win32/installer/pandora.mpi +++ b/pandora_agents/win32/installer/pandora.mpi @@ -186,7 +186,7 @@ UpgradeApplicationID {} Version -{200615} +{200616} ViewReadme {Yes} diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc index 0f2e395d48..aba40e6f80 100644 --- a/pandora_agents/win32/pandora.cc +++ b/pandora_agents/win32/pandora.cc @@ -30,7 +30,7 @@ using namespace Pandora; using namespace Pandora_Strutils; #define PATH_SIZE _MAX_PATH+1 -#define PANDORA_VERSION ("7.0NG.746(Build 200615)") +#define PANDORA_VERSION ("7.0NG.746(Build 200616)") string pandora_path; string pandora_dir; diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc index e09ee9ea45..6bca3a735a 100644 --- a/pandora_agents/win32/versioninfo.rc +++ b/pandora_agents/win32/versioninfo.rc @@ -11,7 +11,7 @@ BEGIN VALUE "LegalCopyright", "Artica ST" VALUE "OriginalFilename", "PandoraAgent.exe" VALUE "ProductName", "Pandora FMS Windows Agent" - VALUE "ProductVersion", "(7.0NG.746(Build 200615))" + VALUE "ProductVersion", "(7.0NG.746(Build 200616))" VALUE "FileVersion", "1.0.0.0" END END diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control index ad19521c2a..dd1f5f5dba 100644 --- a/pandora_console/DEBIAN/control +++ b/pandora_console/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-console -Version: 7.0NG.746-200615 +Version: 7.0NG.746-200616 Architecture: all Priority: optional Section: admin diff --git a/pandora_console/DEBIAN/make_deb_package.sh b/pandora_console/DEBIAN/make_deb_package.sh index 37592bfd49..f0a953b59d 100644 --- a/pandora_console/DEBIAN/make_deb_package.sh +++ b/pandora_console/DEBIAN/make_deb_package.sh @@ -14,7 +14,7 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -pandora_version="7.0NG.746-200615" +pandora_version="7.0NG.746-200616" package_pear=0 package_pandora=1 diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php index b459d0008d..de27481752 100644 --- a/pandora_console/include/config_process.php +++ b/pandora_console/include/config_process.php @@ -20,7 +20,7 @@ /** * Pandora build version and version */ -$build_version = 'PC200615'; +$build_version = 'PC200616'; $pandora_version = 'v7.0NG.746'; // Do not overwrite default timezone set if defined. diff --git a/pandora_console/install.php b/pandora_console/install.php index 916492ea12..7a088e199f 100644 --- a/pandora_console/install.php +++ b/pandora_console/install.php @@ -129,7 +129,7 @@
[ qw() ] ); diff --git a/pandora_server/pandora_server.redhat.spec b/pandora_server/pandora_server.redhat.spec index 8c5cf5d855..93a7ee731c 100644 --- a/pandora_server/pandora_server.redhat.spec +++ b/pandora_server/pandora_server.redhat.spec @@ -3,7 +3,7 @@ # %define name pandorafms_server %define version 7.0NG.746 -%define release 200615 +%define release 200616 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec index 49baa1329f..b63f857045 100644 --- a/pandora_server/pandora_server.spec +++ b/pandora_server/pandora_server.spec @@ -3,7 +3,7 @@ # %define name pandorafms_server %define version 7.0NG.746 -%define release 200615 +%define release 200616 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer index 964289b1a5..a1cfb29b83 100755 --- a/pandora_server/pandora_server_installer +++ b/pandora_server/pandora_server_installer @@ -9,7 +9,7 @@ # ********************************************************************** PI_VERSION="7.0NG.746" -PI_BUILD="200615" +PI_BUILD="200616" MODE=$1 if [ $# -gt 1 ]; then diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl index 785ec1a889..37f715e59a 100755 --- a/pandora_server/util/pandora_db.pl +++ b/pandora_server/util/pandora_db.pl @@ -35,7 +35,7 @@ use PandoraFMS::Config; use PandoraFMS::DB; # version: define current version -my $version = "7.0NG.746 PS200615"; +my $version = "7.0NG.746 PS200616"; # Pandora server configuration my %conf; diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl index ba8825a72e..5248dae515 100755 --- a/pandora_server/util/pandora_manage.pl +++ b/pandora_server/util/pandora_manage.pl @@ -36,7 +36,7 @@ use Encode::Locale; Encode::Locale::decode_argv; # version: define current version -my $version = "7.0NG.746 PS200615"; +my $version = "7.0NG.746 PS200616"; # save program name for logging my $progname = basename($0); From 40569d209258dbb7363ab78370cd0e24b90f9b69 Mon Sep 17 00:00:00 2001 From: Jose Gonzalez Date: Tue, 16 Jun 2020 08:55:54 +0200 Subject: [PATCH 106/299] Added change for metaconsole --- pandora_console/include/functions_api.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pandora_console/include/functions_api.php b/pandora_console/include/functions_api.php index 4e75b955e8..96a37e4499 100644 --- a/pandora_console/include/functions_api.php +++ b/pandora_console/include/functions_api.php @@ -10782,10 +10782,16 @@ function api_set_event($id_event, $unused1, $params, $unused2, $unused3) } } + if (is_metaconsole() === true) { + $table = 'tmetaconsole_event'; + } else { + $table = 'tevento'; + } + // TODO. Stablish security for prevent sql injection? // Update the row $result = db_process_sql_update( - 'tevento', + $table, $paramsSerialize, [ 'id_evento' => $id_event ] ); From 370bd8e34ff086b7a1a7415cccdfb7dee9dc4338 Mon Sep 17 00:00:00 2001 From: Jose Gonzalez Date: Tue, 16 Jun 2020 09:45:00 +0200 Subject: [PATCH 107/299] Stablished correct invalid keys --- pandora_console/include/functions_api.php | 9 --------- 1 file changed, 9 deletions(-) diff --git a/pandora_console/include/functions_api.php b/pandora_console/include/functions_api.php index 96a37e4499..c64059523f 100644 --- a/pandora_console/include/functions_api.php +++ b/pandora_console/include/functions_api.php @@ -10761,15 +10761,6 @@ function api_set_event($id_event, $unused1, $params, $unused2, $unused3) 'timestamp', 'utimestamp', 'id_agentmodule', - 'id_alert_am', - 'criticity', - 'user_comment', - 'tags', - 'source', - 'id_extra', - 'critical_instructions', - 'warning_instructions', - 'unknown_instructions', 'ack_utimestamp', 'data', ]; From e3fa68aef69848565ad832f03fabb2562afc374c Mon Sep 17 00:00:00 2001 From: Jose Gonzalez Date: Tue, 16 Jun 2020 10:03:22 +0200 Subject: [PATCH 108/299] Correct event get for metaconsole --- pandora_console/include/functions_api.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pandora_console/include/functions_api.php b/pandora_console/include/functions_api.php index c64059523f..15af117305 100644 --- a/pandora_console/include/functions_api.php +++ b/pandora_console/include/functions_api.php @@ -10740,7 +10740,7 @@ function get_events_with_user($trash1, $trash2, $other, $returnType, $user_in_db function api_set_event($id_event, $unused1, $params, $unused2, $unused3) { // Get the event - $event = events_get_event($id_event); + $event = events_get_event($id_event, false, is_metaconsole()); // If event not exists, end the execution. if ($event === false) { returnError( @@ -10773,6 +10773,7 @@ function api_set_event($id_event, $unused1, $params, $unused2, $unused3) } } + // In meta or node. if (is_metaconsole() === true) { $table = 'tmetaconsole_event'; } else { From ca281bac18b53b37196587f7c8221fe1dd16978d Mon Sep 17 00:00:00 2001 From: alejandro-campos Date: Tue, 16 Jun 2020 12:44:10 +0200 Subject: [PATCH 109/299] fix default refresh time in visual console public link --- pandora_console/operation/visual_console/legacy_public_view.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandora_console/operation/visual_console/legacy_public_view.php b/pandora_console/operation/visual_console/legacy_public_view.php index 4a316eee60..0f2b8876ed 100644 --- a/pandora_console/operation/visual_console/legacy_public_view.php +++ b/pandora_console/operation/visual_console/legacy_public_view.php @@ -57,7 +57,7 @@ if ($myhash != $hash) { exit; } -$refr = (int) get_parameter('refr', 0); +$refr = (int) get_parameter('refr', $config['refr']); $layout = db_get_row('tlayout', 'id', $id_layout); if (! $layout) { From 6ec436e2a43effce941256ea8c8d790d2da28b19 Mon Sep 17 00:00:00 2001 From: fbsanchez Date: Tue, 16 Jun 2020 14:24:40 +0200 Subject: [PATCH 110/299] Metaconsole cleanup --- pandora_server/util/pandora_db.pl | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl index 37f715e59a..e715467f2c 100755 --- a/pandora_server/util/pandora_db.pl +++ b/pandora_server/util/pandora_db.pl @@ -1052,6 +1052,9 @@ sub pandoradb_main ($$$) { # Recalculating dynamic intervals. enterprise_hook("update_min_max", [$dbh, $conf]); + # Metaconsole database cleanup. + enterprise_hook("metaconsole_database_cleanup", [$dbh, $conf]); + log_message ('', "Ending at ". strftime ("%Y-%m-%d %H:%M:%S", localtime()) . "\n"); } From 98b358e7adc2f660bd9e5cb7ef038aa298653f76 Mon Sep 17 00:00:00 2001 From: alejandro-campos Date: Tue, 16 Jun 2020 17:27:53 +0200 Subject: [PATCH 111/299] fix vulnerability --- pandora_console/include/functions_events.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandora_console/include/functions_events.php b/pandora_console/include/functions_events.php index a5b442d69c..89c4d87f05 100644 --- a/pandora_console/include/functions_events.php +++ b/pandora_console/include/functions_events.php @@ -4750,7 +4750,7 @@ function events_page_comments($event, $ajax=false) foreach ($comm as $c) { $data[0] = ''.$c['action'].' by '.$c['id_user'].''; $data[0] .= '

'.date($config['date_format'], $c['utimestamp']).''; - $data[1] = '

'.stripslashes(str_replace(['\n', '\r'], '
', $c['comment'])).'

'; + $data[1] = '

'.strip_tags($c['comment'], '
').'

'; $table_comments->data[] = $data; } break; From 5d01c0976b0f5b3ac63be4c39a179ac1b0ae4a8e Mon Sep 17 00:00:00 2001 From: artica Date: Wed, 17 Jun 2020 01:00:15 +0200 Subject: [PATCH 112/299] Auto-updated build strings. --- pandora_agents/unix/DEBIAN/control | 2 +- pandora_agents/unix/DEBIAN/make_deb_package.sh | 2 +- pandora_agents/unix/pandora_agent | 2 +- pandora_agents/unix/pandora_agent.redhat.spec | 2 +- pandora_agents/unix/pandora_agent.spec | 2 +- pandora_agents/unix/pandora_agent_installer | 2 +- pandora_agents/win32/installer/pandora.mpi | 2 +- pandora_agents/win32/pandora.cc | 2 +- pandora_agents/win32/versioninfo.rc | 2 +- pandora_console/DEBIAN/control | 2 +- pandora_console/DEBIAN/make_deb_package.sh | 2 +- pandora_console/include/config_process.php | 2 +- pandora_console/install.php | 2 +- pandora_console/pandora_console.redhat.spec | 2 +- pandora_console/pandora_console.rhel7.spec | 2 +- pandora_console/pandora_console.spec | 2 +- pandora_server/DEBIAN/control | 2 +- pandora_server/DEBIAN/make_deb_package.sh | 2 +- pandora_server/lib/PandoraFMS/Config.pm | 2 +- pandora_server/lib/PandoraFMS/PluginTools.pm | 2 +- pandora_server/pandora_server.redhat.spec | 2 +- pandora_server/pandora_server.spec | 2 +- pandora_server/pandora_server_installer | 2 +- pandora_server/util/pandora_db.pl | 2 +- pandora_server/util/pandora_manage.pl | 2 +- 25 files changed, 25 insertions(+), 25 deletions(-) diff --git a/pandora_agents/unix/DEBIAN/control b/pandora_agents/unix/DEBIAN/control index cc77419afa..d6354e3264 100644 --- a/pandora_agents/unix/DEBIAN/control +++ b/pandora_agents/unix/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-agent-unix -Version: 7.0NG.746-200616 +Version: 7.0NG.746-200617 Architecture: all Priority: optional Section: admin diff --git a/pandora_agents/unix/DEBIAN/make_deb_package.sh b/pandora_agents/unix/DEBIAN/make_deb_package.sh index db089152dc..ebf1db1cd6 100644 --- a/pandora_agents/unix/DEBIAN/make_deb_package.sh +++ b/pandora_agents/unix/DEBIAN/make_deb_package.sh @@ -14,7 +14,7 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -pandora_version="7.0NG.746-200616" +pandora_version="7.0NG.746-200617" echo "Test if you has the tools for to make the packages." whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null diff --git a/pandora_agents/unix/pandora_agent b/pandora_agents/unix/pandora_agent index ab83553edb..c1544a1c73 100755 --- a/pandora_agents/unix/pandora_agent +++ b/pandora_agents/unix/pandora_agent @@ -55,7 +55,7 @@ my $Sem = undef; my $ThreadSem = undef; use constant AGENT_VERSION => '7.0NG.746'; -use constant AGENT_BUILD => '200616'; +use constant AGENT_BUILD => '200617'; # Agent log default file size maximum and instances use constant DEFAULT_MAX_LOG_SIZE => 600000; diff --git a/pandora_agents/unix/pandora_agent.redhat.spec b/pandora_agents/unix/pandora_agent.redhat.spec index d3bb97711b..08574ef764 100644 --- a/pandora_agents/unix/pandora_agent.redhat.spec +++ b/pandora_agents/unix/pandora_agent.redhat.spec @@ -3,7 +3,7 @@ # %define name pandorafms_agent_unix %define version 7.0NG.746 -%define release 200616 +%define release 200617 Summary: Pandora FMS Linux agent, PERL version Name: %{name} diff --git a/pandora_agents/unix/pandora_agent.spec b/pandora_agents/unix/pandora_agent.spec index afc829aed9..cb16f57d9d 100644 --- a/pandora_agents/unix/pandora_agent.spec +++ b/pandora_agents/unix/pandora_agent.spec @@ -3,7 +3,7 @@ # %define name pandorafms_agent_unix %define version 7.0NG.746 -%define release 200616 +%define release 200617 Summary: Pandora FMS Linux agent, PERL version Name: %{name} diff --git a/pandora_agents/unix/pandora_agent_installer b/pandora_agents/unix/pandora_agent_installer index ccdc111946..f4f03b1a40 100755 --- a/pandora_agents/unix/pandora_agent_installer +++ b/pandora_agents/unix/pandora_agent_installer @@ -10,7 +10,7 @@ # ********************************************************************** PI_VERSION="7.0NG.746" -PI_BUILD="200616" +PI_BUILD="200617" OS_NAME=`uname -s` FORCE=0 diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi index c1b56b1298..e654b4779c 100644 --- a/pandora_agents/win32/installer/pandora.mpi +++ b/pandora_agents/win32/installer/pandora.mpi @@ -186,7 +186,7 @@ UpgradeApplicationID {} Version -{200616} +{200617} ViewReadme {Yes} diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc index aba40e6f80..a6729d9272 100644 --- a/pandora_agents/win32/pandora.cc +++ b/pandora_agents/win32/pandora.cc @@ -30,7 +30,7 @@ using namespace Pandora; using namespace Pandora_Strutils; #define PATH_SIZE _MAX_PATH+1 -#define PANDORA_VERSION ("7.0NG.746(Build 200616)") +#define PANDORA_VERSION ("7.0NG.746(Build 200617)") string pandora_path; string pandora_dir; diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc index 6bca3a735a..4227662906 100644 --- a/pandora_agents/win32/versioninfo.rc +++ b/pandora_agents/win32/versioninfo.rc @@ -11,7 +11,7 @@ BEGIN VALUE "LegalCopyright", "Artica ST" VALUE "OriginalFilename", "PandoraAgent.exe" VALUE "ProductName", "Pandora FMS Windows Agent" - VALUE "ProductVersion", "(7.0NG.746(Build 200616))" + VALUE "ProductVersion", "(7.0NG.746(Build 200617))" VALUE "FileVersion", "1.0.0.0" END END diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control index dd1f5f5dba..9db199ff25 100644 --- a/pandora_console/DEBIAN/control +++ b/pandora_console/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-console -Version: 7.0NG.746-200616 +Version: 7.0NG.746-200617 Architecture: all Priority: optional Section: admin diff --git a/pandora_console/DEBIAN/make_deb_package.sh b/pandora_console/DEBIAN/make_deb_package.sh index f0a953b59d..e384ee3f34 100644 --- a/pandora_console/DEBIAN/make_deb_package.sh +++ b/pandora_console/DEBIAN/make_deb_package.sh @@ -14,7 +14,7 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -pandora_version="7.0NG.746-200616" +pandora_version="7.0NG.746-200617" package_pear=0 package_pandora=1 diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php index de27481752..ba3935d598 100644 --- a/pandora_console/include/config_process.php +++ b/pandora_console/include/config_process.php @@ -20,7 +20,7 @@ /** * Pandora build version and version */ -$build_version = 'PC200616'; +$build_version = 'PC200617'; $pandora_version = 'v7.0NG.746'; // Do not overwrite default timezone set if defined. diff --git a/pandora_console/install.php b/pandora_console/install.php index 7a088e199f..34dfb1ad65 100644 --- a/pandora_console/install.php +++ b/pandora_console/install.php @@ -129,7 +129,7 @@
[ qw() ] ); diff --git a/pandora_server/pandora_server.redhat.spec b/pandora_server/pandora_server.redhat.spec index 93a7ee731c..255eef61fc 100644 --- a/pandora_server/pandora_server.redhat.spec +++ b/pandora_server/pandora_server.redhat.spec @@ -3,7 +3,7 @@ # %define name pandorafms_server %define version 7.0NG.746 -%define release 200616 +%define release 200617 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec index b63f857045..eb13f3eb34 100644 --- a/pandora_server/pandora_server.spec +++ b/pandora_server/pandora_server.spec @@ -3,7 +3,7 @@ # %define name pandorafms_server %define version 7.0NG.746 -%define release 200616 +%define release 200617 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer index a1cfb29b83..62fd9e76e7 100755 --- a/pandora_server/pandora_server_installer +++ b/pandora_server/pandora_server_installer @@ -9,7 +9,7 @@ # ********************************************************************** PI_VERSION="7.0NG.746" -PI_BUILD="200616" +PI_BUILD="200617" MODE=$1 if [ $# -gt 1 ]; then diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl index 37f715e59a..7b7d84700d 100755 --- a/pandora_server/util/pandora_db.pl +++ b/pandora_server/util/pandora_db.pl @@ -35,7 +35,7 @@ use PandoraFMS::Config; use PandoraFMS::DB; # version: define current version -my $version = "7.0NG.746 PS200616"; +my $version = "7.0NG.746 PS200617"; # Pandora server configuration my %conf; diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl index 5248dae515..31d3e0b79d 100755 --- a/pandora_server/util/pandora_manage.pl +++ b/pandora_server/util/pandora_manage.pl @@ -36,7 +36,7 @@ use Encode::Locale; Encode::Locale::decode_argv; # version: define current version -my $version = "7.0NG.746 PS200616"; +my $version = "7.0NG.746 PS200617"; # save program name for logging my $progname = basename($0); From eefe7688b4b2670493f39d9685282ba604c98bc0 Mon Sep 17 00:00:00 2001 From: Daniel Maya Date: Wed, 17 Jun 2020 12:48:20 +0200 Subject: [PATCH 113/299] Added log_viewer in metaconsole --- pandora_console/include/functions_agents.php | 51 ++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/pandora_console/include/functions_agents.php b/pandora_console/include/functions_agents.php index 6c1bcbc331..bb819ef416 100644 --- a/pandora_console/include/functions_agents.php +++ b/pandora_console/include/functions_agents.php @@ -1661,6 +1661,57 @@ function agents_get_alias($id_agent, $case='none') } +/** + * Get alias of an agent in metaconsole (cached function). + * + * @param integer $id_agent Agent id. + * @param string $case Case (upper, lower, none). + * @param integer $id_server server id. + * + * @return string Alias of the given agent. + */ +function agents_get_alias_metaconsole($id_agent, $case='none', $id_server=false) +{ + global $config; + // Prepare cache. + static $cache = []; + if (empty($case)) { + $case = 'none'; + } + + // Check cache. + if (isset($cache[$case][$id_server][$id_agent])) { + return $cache[$case][$id_server][$id_agent]; + } + + $alias = (string) db_get_value_filter( + 'alias', + 'tmetaconsole_agent', + [ + 'id_tagente' => $id_agent, + 'id_tmetaconsole_setup' => $id_server, + ] + ); + + switch ($case) { + case 'upper': + $alias = mb_strtoupper($alias, 'UTF-8'); + break; + + case 'lower': + $alias = mb_strtolower($alias, 'UTF-8'); + break; + + default: + // Not posible. + break; + } + + $cache[$case][$id_server][$id_agent] = $alias; + return $alias; +} + + function agents_get_alias_by_name($name, $case='none') { if (is_metaconsole()) { From eed12be28181d6d818aad0f87cf09628423ba72e Mon Sep 17 00:00:00 2001 From: marcos Date: Wed, 17 Jun 2020 13:05:04 +0200 Subject: [PATCH 114/299] Deleted columns s, options and m on csv datatables events --- pandora_console/include/functions_ui.php | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/pandora_console/include/functions_ui.php b/pandora_console/include/functions_ui.php index c67091f47f..5ce9da555a 100755 --- a/pandora_console/include/functions_ui.php +++ b/pandora_console/include/functions_ui.php @@ -3408,6 +3408,14 @@ function ui_print_datatable(array $parameters) $js .= $parameters['drawCallback']; } + for ($i = 1; $i <= (count($parameters['columns']) - 3); $i++) { + if ($i != (count($parameters['columns']) - 3)) { + $columns .= $i.','; + } else { + $columns .= $i; + } + } + $js .= ' if (dt_'.$table_id.'.page.info().pages > 1) { $("#'.$table_id.'_wrapper > .dataTables_paginate.paging_simple_numbers").show() @@ -3438,7 +3446,8 @@ function ui_print_datatable(array $parameters) order : "current", page : "All", search : "applied" - } + }, + columns: [1,'.$columns.'] } } ], From c6c9b63338160cfb8e69ec64ab323990c365be7a Mon Sep 17 00:00:00 2001 From: artica Date: Thu, 18 Jun 2020 01:00:14 +0200 Subject: [PATCH 115/299] Auto-updated build strings. --- pandora_agents/unix/DEBIAN/control | 2 +- pandora_agents/unix/DEBIAN/make_deb_package.sh | 2 +- pandora_agents/unix/pandora_agent | 2 +- pandora_agents/unix/pandora_agent.redhat.spec | 2 +- pandora_agents/unix/pandora_agent.spec | 2 +- pandora_agents/unix/pandora_agent_installer | 2 +- pandora_agents/win32/installer/pandora.mpi | 2 +- pandora_agents/win32/pandora.cc | 2 +- pandora_agents/win32/versioninfo.rc | 2 +- pandora_console/DEBIAN/control | 2 +- pandora_console/DEBIAN/make_deb_package.sh | 2 +- pandora_console/include/config_process.php | 2 +- pandora_console/install.php | 2 +- pandora_console/pandora_console.redhat.spec | 2 +- pandora_console/pandora_console.rhel7.spec | 2 +- pandora_console/pandora_console.spec | 2 +- pandora_server/DEBIAN/control | 2 +- pandora_server/DEBIAN/make_deb_package.sh | 2 +- pandora_server/lib/PandoraFMS/Config.pm | 2 +- pandora_server/lib/PandoraFMS/PluginTools.pm | 2 +- pandora_server/pandora_server.redhat.spec | 2 +- pandora_server/pandora_server.spec | 2 +- pandora_server/pandora_server_installer | 2 +- pandora_server/util/pandora_db.pl | 2 +- pandora_server/util/pandora_manage.pl | 2 +- 25 files changed, 25 insertions(+), 25 deletions(-) diff --git a/pandora_agents/unix/DEBIAN/control b/pandora_agents/unix/DEBIAN/control index d6354e3264..f5031758af 100644 --- a/pandora_agents/unix/DEBIAN/control +++ b/pandora_agents/unix/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-agent-unix -Version: 7.0NG.746-200617 +Version: 7.0NG.746-200618 Architecture: all Priority: optional Section: admin diff --git a/pandora_agents/unix/DEBIAN/make_deb_package.sh b/pandora_agents/unix/DEBIAN/make_deb_package.sh index ebf1db1cd6..2df6cdfa2a 100644 --- a/pandora_agents/unix/DEBIAN/make_deb_package.sh +++ b/pandora_agents/unix/DEBIAN/make_deb_package.sh @@ -14,7 +14,7 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -pandora_version="7.0NG.746-200617" +pandora_version="7.0NG.746-200618" echo "Test if you has the tools for to make the packages." whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null diff --git a/pandora_agents/unix/pandora_agent b/pandora_agents/unix/pandora_agent index c1544a1c73..f514095856 100755 --- a/pandora_agents/unix/pandora_agent +++ b/pandora_agents/unix/pandora_agent @@ -55,7 +55,7 @@ my $Sem = undef; my $ThreadSem = undef; use constant AGENT_VERSION => '7.0NG.746'; -use constant AGENT_BUILD => '200617'; +use constant AGENT_BUILD => '200618'; # Agent log default file size maximum and instances use constant DEFAULT_MAX_LOG_SIZE => 600000; diff --git a/pandora_agents/unix/pandora_agent.redhat.spec b/pandora_agents/unix/pandora_agent.redhat.spec index 08574ef764..30a85c8962 100644 --- a/pandora_agents/unix/pandora_agent.redhat.spec +++ b/pandora_agents/unix/pandora_agent.redhat.spec @@ -3,7 +3,7 @@ # %define name pandorafms_agent_unix %define version 7.0NG.746 -%define release 200617 +%define release 200618 Summary: Pandora FMS Linux agent, PERL version Name: %{name} diff --git a/pandora_agents/unix/pandora_agent.spec b/pandora_agents/unix/pandora_agent.spec index cb16f57d9d..f213fd4abb 100644 --- a/pandora_agents/unix/pandora_agent.spec +++ b/pandora_agents/unix/pandora_agent.spec @@ -3,7 +3,7 @@ # %define name pandorafms_agent_unix %define version 7.0NG.746 -%define release 200617 +%define release 200618 Summary: Pandora FMS Linux agent, PERL version Name: %{name} diff --git a/pandora_agents/unix/pandora_agent_installer b/pandora_agents/unix/pandora_agent_installer index f4f03b1a40..53d2823fd6 100755 --- a/pandora_agents/unix/pandora_agent_installer +++ b/pandora_agents/unix/pandora_agent_installer @@ -10,7 +10,7 @@ # ********************************************************************** PI_VERSION="7.0NG.746" -PI_BUILD="200617" +PI_BUILD="200618" OS_NAME=`uname -s` FORCE=0 diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi index e654b4779c..6b1ad3b147 100644 --- a/pandora_agents/win32/installer/pandora.mpi +++ b/pandora_agents/win32/installer/pandora.mpi @@ -186,7 +186,7 @@ UpgradeApplicationID {} Version -{200617} +{200618} ViewReadme {Yes} diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc index a6729d9272..6cb7a928f3 100644 --- a/pandora_agents/win32/pandora.cc +++ b/pandora_agents/win32/pandora.cc @@ -30,7 +30,7 @@ using namespace Pandora; using namespace Pandora_Strutils; #define PATH_SIZE _MAX_PATH+1 -#define PANDORA_VERSION ("7.0NG.746(Build 200617)") +#define PANDORA_VERSION ("7.0NG.746(Build 200618)") string pandora_path; string pandora_dir; diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc index 4227662906..56ef1a2905 100644 --- a/pandora_agents/win32/versioninfo.rc +++ b/pandora_agents/win32/versioninfo.rc @@ -11,7 +11,7 @@ BEGIN VALUE "LegalCopyright", "Artica ST" VALUE "OriginalFilename", "PandoraAgent.exe" VALUE "ProductName", "Pandora FMS Windows Agent" - VALUE "ProductVersion", "(7.0NG.746(Build 200617))" + VALUE "ProductVersion", "(7.0NG.746(Build 200618))" VALUE "FileVersion", "1.0.0.0" END END diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control index 9db199ff25..caeabd6e93 100644 --- a/pandora_console/DEBIAN/control +++ b/pandora_console/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-console -Version: 7.0NG.746-200617 +Version: 7.0NG.746-200618 Architecture: all Priority: optional Section: admin diff --git a/pandora_console/DEBIAN/make_deb_package.sh b/pandora_console/DEBIAN/make_deb_package.sh index e384ee3f34..151d3e2732 100644 --- a/pandora_console/DEBIAN/make_deb_package.sh +++ b/pandora_console/DEBIAN/make_deb_package.sh @@ -14,7 +14,7 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -pandora_version="7.0NG.746-200617" +pandora_version="7.0NG.746-200618" package_pear=0 package_pandora=1 diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php index ba3935d598..43c0767baf 100644 --- a/pandora_console/include/config_process.php +++ b/pandora_console/include/config_process.php @@ -20,7 +20,7 @@ /** * Pandora build version and version */ -$build_version = 'PC200617'; +$build_version = 'PC200618'; $pandora_version = 'v7.0NG.746'; // Do not overwrite default timezone set if defined. diff --git a/pandora_console/install.php b/pandora_console/install.php index 34dfb1ad65..d41ca35531 100644 --- a/pandora_console/install.php +++ b/pandora_console/install.php @@ -129,7 +129,7 @@
[ qw() ] ); diff --git a/pandora_server/pandora_server.redhat.spec b/pandora_server/pandora_server.redhat.spec index 255eef61fc..219900abca 100644 --- a/pandora_server/pandora_server.redhat.spec +++ b/pandora_server/pandora_server.redhat.spec @@ -3,7 +3,7 @@ # %define name pandorafms_server %define version 7.0NG.746 -%define release 200617 +%define release 200618 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec index eb13f3eb34..c03d5ab75f 100644 --- a/pandora_server/pandora_server.spec +++ b/pandora_server/pandora_server.spec @@ -3,7 +3,7 @@ # %define name pandorafms_server %define version 7.0NG.746 -%define release 200617 +%define release 200618 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer index 62fd9e76e7..5fcc864e8a 100755 --- a/pandora_server/pandora_server_installer +++ b/pandora_server/pandora_server_installer @@ -9,7 +9,7 @@ # ********************************************************************** PI_VERSION="7.0NG.746" -PI_BUILD="200617" +PI_BUILD="200618" MODE=$1 if [ $# -gt 1 ]; then diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl index 7b7d84700d..b0a1ee7c43 100755 --- a/pandora_server/util/pandora_db.pl +++ b/pandora_server/util/pandora_db.pl @@ -35,7 +35,7 @@ use PandoraFMS::Config; use PandoraFMS::DB; # version: define current version -my $version = "7.0NG.746 PS200617"; +my $version = "7.0NG.746 PS200618"; # Pandora server configuration my %conf; diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl index 31d3e0b79d..8ed5342507 100755 --- a/pandora_server/util/pandora_manage.pl +++ b/pandora_server/util/pandora_manage.pl @@ -36,7 +36,7 @@ use Encode::Locale; Encode::Locale::decode_argv; # version: define current version -my $version = "7.0NG.746 PS200617"; +my $version = "7.0NG.746 PS200618"; # save program name for logging my $progname = basename($0); From 6c5484baf074ee0446297627c8f8d3452c07ea8a Mon Sep 17 00:00:00 2001 From: fbsanchez Date: Thu, 18 Jun 2020 12:35:52 +0200 Subject: [PATCH 116/299] MR change smart services --- pandora_console/extras/mr/39.sql | 7 +++++++ .../extras/pandoradb_migrate_6.0_to_7.0.mysql.sql | 7 +++++++ pandora_console/pandoradb.sql | 1 + 3 files changed, 15 insertions(+) create mode 100644 pandora_console/extras/mr/39.sql diff --git a/pandora_console/extras/mr/39.sql b/pandora_console/extras/mr/39.sql new file mode 100644 index 0000000000..70056de503 --- /dev/null +++ b/pandora_console/extras/mr/39.sql @@ -0,0 +1,7 @@ +START TRANSACTION; + +ALTER TABLE `tservice_element` ADD COLUMN `rules` text; + +UPDATE `tservice` SET `auto_calculate`=0; + +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 b148f0f58d..7ab696009d 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 @@ -1527,6 +1527,13 @@ ALTER TABLE `tservice` ADD COLUMN `cascade_protection` tinyint(1) NOT NULL defau ALTER TABLE `tservice` ADD COLUMN `evaluate_sla` int(1) NOT NULL default 0; ALTER TABLE `tservice` ADD COLUMN `is_favourite` tinyint(1) NOT NULL default 0; UPDATE tservice SET `is_favourite` = 1 WHERE `name` REGEXP '^[_|.|\[|\(]'; +-- ALl previous services are manual now. +UPDATE `tservice` SET `auto_calculate` = 0; + +-- --------------------------------------------------------------------- +-- Table `tservice_element` +-- --------------------------------------------------------------------- +ALTER TABLE `tservice_element` ADD COLUMN `rules` text; -- --------------------------------------------------------------------- -- Table `tlayout` diff --git a/pandora_console/pandoradb.sql b/pandora_console/pandoradb.sql index 70fce90995..9ad79d7f99 100644 --- a/pandora_console/pandoradb.sql +++ b/pandora_console/pandoradb.sql @@ -2724,6 +2724,7 @@ CREATE TABLE IF NOT EXISTS `tservice_element` ( `id_agent` int(10) unsigned NOT NULL default 0, `id_service_child` int(10) unsigned NOT NULL default 0, `id_server_meta` int(10) unsigned NOT NULL default 0, + `rules` text, PRIMARY KEY (`id`) ) ENGINE=InnoDB COMMENT = 'Table to define the modules and the weights of the modules that define a service' From 28da2b9afbf27ca905e38488aa8f6b95e5b5157f Mon Sep 17 00:00:00 2001 From: Luis Date: Thu, 18 Jun 2020 13:19:04 +0200 Subject: [PATCH 117/299] Ent 5473 report template inventory --- .../godmode/reporting/reporting_builder.list_items.php | 2 +- pandora_console/include/functions_reporting.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pandora_console/godmode/reporting/reporting_builder.list_items.php b/pandora_console/godmode/reporting/reporting_builder.list_items.php index af9bf7b5f2..ff4c46abf8 100755 --- a/pandora_console/godmode/reporting/reporting_builder.list_items.php +++ b/pandora_console/godmode/reporting/reporting_builder.list_items.php @@ -471,7 +471,7 @@ foreach ($items as $item) { if ($is_inventory_item) { $external_source = json_decode($item['external_source'], true); $agents = $external_source['id_agents']; - $modules = $external_source['inventory_modules']; + $modules = io_safe_output($external_source['inventory_modules']); $agent_name_db = []; foreach ($agents as $a) { diff --git a/pandora_console/include/functions_reporting.php b/pandora_console/include/functions_reporting.php index 7869e8f6e7..a71214396c 100755 --- a/pandora_console/include/functions_reporting.php +++ b/pandora_console/include/functions_reporting.php @@ -160,7 +160,7 @@ function reporting_make_reporting_data( $return = []; if (!empty($report)) { - $contents = $report['contents']; + $contents = io_safe_output($report['contents']); } else { $report = io_safe_output(db_get_row('treport', 'id_report', $id_report)); $contents = io_safe_output( @@ -2236,7 +2236,7 @@ function reporting_inventory($report, $content, $type) $es = json_decode($content['external_source'], true); $id_agent = $es['id_agents']; - $module_name = $es['inventory_modules']; + $module_name = io_safe_input($es['inventory_modules']); if (empty($module_name)) { $module_name = [0 => 0]; } From f3de739a7ce7a98cb79c37a54eb70523279a6643 Mon Sep 17 00:00:00 2001 From: marcos Date: Thu, 18 Jun 2020 15:30:55 +0200 Subject: [PATCH 118/299] fixed visual error tag meta --- pandora_console/godmode/tag/tag.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pandora_console/godmode/tag/tag.php b/pandora_console/godmode/tag/tag.php index 26fb885a42..3b0bb68650 100644 --- a/pandora_console/godmode/tag/tag.php +++ b/pandora_console/godmode/tag/tag.php @@ -35,6 +35,10 @@ if ($delete != 0 && is_metaconsole()) { open_meta_frame(); } +if ($tag_name != '' && is_metaconsole()) { + open_meta_frame(); +} + // Metaconsole nodes $servers = false; if (is_metaconsole()) { @@ -182,7 +186,7 @@ $row[] = $filter_button; $table->data[] = $row; -$filter_form = ''; +$filter_form = ''; $filter_form .= html_print_table($table, true); $filter_form .= ''; // End of filter form From 1b0d40f88ac629634d50771188bd25cccf5ad0e9 Mon Sep 17 00:00:00 2001 From: marcos Date: Thu, 18 Jun 2020 16:16:37 +0200 Subject: [PATCH 119/299] fixed visual style repsonse buttons --- pandora_console/include/functions_events.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pandora_console/include/functions_events.php b/pandora_console/include/functions_events.php index a5b442d69c..6a5fe3c319 100644 --- a/pandora_console/include/functions_events.php +++ b/pandora_console/include/functions_events.php @@ -3424,7 +3424,7 @@ function events_page_responses($event, $childrens_ids=[]) 'owner_button', false, 'event_change_owner();', - 'class="sub next"', + 'class="sub next w70p"', true ); @@ -3504,7 +3504,7 @@ function events_page_responses($event, $childrens_ids=[]) 'status_button', false, 'event_change_status(\''.$event['similar_ids'].'\');', - 'class="sub next"', + 'class="sub next w70p"', true ); } @@ -3520,7 +3520,7 @@ function events_page_responses($event, $childrens_ids=[]) 'comment_button', false, '$(\'#link_comments\').trigger(\'click\');', - 'class="sub next"', + 'class="sub next w70p"', true ); @@ -3544,7 +3544,7 @@ function events_page_responses($event, $childrens_ids=[]) 'delete_button', false, 'if(!confirm(\''.__('Are you sure?').'\')) { return false; } this.form.submit();', - 'class="sub cancel"', + 'class="sub cancel w70p"', true ); $data[2] .= html_print_input_hidden('delete', 1, true); @@ -3599,7 +3599,7 @@ function events_page_responses($event, $childrens_ids=[]) 'custom_response_button', false, 'execute_response('.$event['id_evento'].','.$server_id.')', - "class='sub next'", + "class='sub next w70p'", true ); } From 1805a0910eb07537f46eda4c1ac9321cb0ada711 Mon Sep 17 00:00:00 2001 From: Jose Gonzalez Date: Thu, 18 Jun 2020 16:53:32 +0200 Subject: [PATCH 120/299] Changed query for get default actions in templates --- pandora_console/godmode/alerts/alert_list.list.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandora_console/godmode/alerts/alert_list.list.php b/pandora_console/godmode/alerts/alert_list.list.php index 447e627567..2e6ec79d9e 100644 --- a/pandora_console/godmode/alerts/alert_list.list.php +++ b/pandora_console/godmode/alerts/alert_list.list.php @@ -203,7 +203,7 @@ if ($searchFlag) { } if ($actionID != -1 && $actionID != '') { - $where .= ' AND talert_template_modules.id IN (SELECT id_alert_template_module FROM talert_template_module_actions WHERE id_alert_action = '.$actionID.')'; + $where .= ' AND talert_template_modules.id IN (SELECT id_alert_template_module FROM talert_template_module_actions WHERE id_alert_action = '.$actionID.') OR talert_template_modules.id IN (SELECT id FROM talert_template_modules ttm WHERE ttm.id_alert_template IN (SELECT tat.id FROM talert_templates tat WHERE tat.id_alert_action = '.$actionID.'))'; } if ($enabledisable != -1 && $enabledisable != '') { From 40c0d4ea09c1bbf10652a1ffa410f0a8de9328ce Mon Sep 17 00:00:00 2001 From: marcos Date: Thu, 18 Jun 2020 17:09:22 +0200 Subject: [PATCH 121/299] fixed error --- pandora_console/godmode/alerts/configure_alert_template.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandora_console/godmode/alerts/configure_alert_template.php b/pandora_console/godmode/alerts/configure_alert_template.php index 533bc32caf..26e7a69073 100644 --- a/pandora_console/godmode/alerts/configure_alert_template.php +++ b/pandora_console/godmode/alerts/configure_alert_template.php @@ -1041,7 +1041,7 @@ var matches_not = ')."'"; ?>; var is_not = ')."'"; ?>; var between = and ')."'"; ?>; -var between_not = and ").'"'; ?>; +var between_not = and ').'"'; ?>; var under = ')."'"; ?>; var over = ')."'"; ?>; var warning = ; From e56a787ba8b67371edc2f68b065f1d481466a8d4 Mon Sep 17 00:00:00 2001 From: Luis Calvo Date: Thu, 18 Jun 2020 20:41:14 +0200 Subject: [PATCH 122/299] WIP: Connection lost warn --- pandora_console/include/javascript/pandora.js | 72 +++++++++++++++++++ .../include/javascript/pandora_ui.js | 40 +++++++++++ 2 files changed, 112 insertions(+) diff --git a/pandora_console/include/javascript/pandora.js b/pandora_console/include/javascript/pandora.js index 871853cfa0..ad950825c9 100644 --- a/pandora_console/include/javascript/pandora.js +++ b/pandora_console/include/javascript/pandora.js @@ -1865,3 +1865,75 @@ function ajaxRequest(id, settings) { } }); } + +var checkConnection = setInterval(handleConnection, 5000); + +window.addEventListener("online", handleConnection); +window.addEventListener("offline", handleConnection); + +function handleConnection() { + var connected; + var msg = "online"; + + if (navigator.onLine) { + isReachable(getServerUrl()) + .then(function(online) { + if (online) { + // handle online status + connected = true; + showConnectionMessage(connected, msg); + } else { + connected = false; + msg = "No connectivity with server"; + showConnectionMessage(connected, msg); + } + }) + .catch(function(err) { + connected = false; + msg = err; + showConnectionMessage(connected, msg); + }); + } else { + // handle offline status + connected = false; + msg = "Connection offline"; + showConnectionMessage(connected, msg); + } +} + +function isReachable(url) { + /** + * Note: fetch() still "succeeds" for 404s on subdirectories, + * which is ok when only testing for domain reachability. + * + * Example: + * https://google.com/noexist does not throw + * https://noexist.com/noexist does throw + */ + return fetch(url, { method: "HEAD", mode: "no-cors" }) + .then(function(resp) { + return resp && (resp.ok || resp.type === "opaque"); + }) + .catch(function(error) { + console.warn("[conn test failure]:", error); + }); +} + +function getServerUrl() { + return $("#php_to_js_value_absolute_homeurl").val() || window.location.origin; +} + +function showConnectionMessage(conn = true, msg = "") { + var data = {}; + if (conn) { + $("div#msg_connection") + .closest(".ui-dialog-content") + .dialog("close"); + $("div#msg_connection").remove(); + } else { + data.title = "Connection with server has been lost"; + data.text = "Connection status: " + msg; + + infoMessage(data, "msg_connection"); + } +} diff --git a/pandora_console/include/javascript/pandora_ui.js b/pandora_console/include/javascript/pandora_ui.js index 70ffd40f7f..c60c889d03 100644 --- a/pandora_console/include/javascript/pandora_ui.js +++ b/pandora_console/include/javascript/pandora_ui.js @@ -478,3 +478,43 @@ function generalShowMsg(data, idMsg) { ] }); } + +function infoMessage(data, idMsg) { + var title = data.title; + var text = data.text; + + var html = + '' + + text; + + if (idMsg == null) { + idMsg = uniqId(); + } + + if ($("#" + idMsg).length === 0) { + $("body").append('
' + text + "
"); + } + + $("#" + idMsg).empty(); + $("#" + idMsg).html(html); + $("#" + idMsg) + .dialog({ + width: 450, + opacity: 1, + modal: true, + position: { + my: "center", + at: "center", + of: window, + collision: "fit" + }, + title: data.title, + open: function(event, ui) { + $(".ui-widget-overlay").addClass("modal-opened"); + }, + close: function(event, ui) { + $(".ui-widget-overlay").removeClass("modal-opened"); + } + }) + .show(); +} From 9beb1ce22f37b3a5c8434ffe5d7e7955bf6920d9 Mon Sep 17 00:00:00 2001 From: artica Date: Fri, 19 Jun 2020 01:00:15 +0200 Subject: [PATCH 123/299] Auto-updated build strings. --- pandora_agents/unix/DEBIAN/control | 2 +- pandora_agents/unix/DEBIAN/make_deb_package.sh | 2 +- pandora_agents/unix/pandora_agent | 2 +- pandora_agents/unix/pandora_agent.redhat.spec | 2 +- pandora_agents/unix/pandora_agent.spec | 2 +- pandora_agents/unix/pandora_agent_installer | 2 +- pandora_agents/win32/installer/pandora.mpi | 2 +- pandora_agents/win32/pandora.cc | 2 +- pandora_agents/win32/versioninfo.rc | 2 +- pandora_console/DEBIAN/control | 2 +- pandora_console/DEBIAN/make_deb_package.sh | 2 +- pandora_console/include/config_process.php | 2 +- pandora_console/install.php | 2 +- pandora_console/pandora_console.redhat.spec | 2 +- pandora_console/pandora_console.rhel7.spec | 2 +- pandora_console/pandora_console.spec | 2 +- pandora_server/DEBIAN/control | 2 +- pandora_server/DEBIAN/make_deb_package.sh | 2 +- pandora_server/lib/PandoraFMS/Config.pm | 2 +- pandora_server/lib/PandoraFMS/PluginTools.pm | 2 +- pandora_server/pandora_server.redhat.spec | 2 +- pandora_server/pandora_server.spec | 2 +- pandora_server/pandora_server_installer | 2 +- pandora_server/util/pandora_db.pl | 2 +- pandora_server/util/pandora_manage.pl | 2 +- 25 files changed, 25 insertions(+), 25 deletions(-) diff --git a/pandora_agents/unix/DEBIAN/control b/pandora_agents/unix/DEBIAN/control index f5031758af..cce401a38e 100644 --- a/pandora_agents/unix/DEBIAN/control +++ b/pandora_agents/unix/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-agent-unix -Version: 7.0NG.746-200618 +Version: 7.0NG.746-200619 Architecture: all Priority: optional Section: admin diff --git a/pandora_agents/unix/DEBIAN/make_deb_package.sh b/pandora_agents/unix/DEBIAN/make_deb_package.sh index 2df6cdfa2a..6000a4649c 100644 --- a/pandora_agents/unix/DEBIAN/make_deb_package.sh +++ b/pandora_agents/unix/DEBIAN/make_deb_package.sh @@ -14,7 +14,7 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -pandora_version="7.0NG.746-200618" +pandora_version="7.0NG.746-200619" echo "Test if you has the tools for to make the packages." whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null diff --git a/pandora_agents/unix/pandora_agent b/pandora_agents/unix/pandora_agent index f514095856..8235ef30a7 100755 --- a/pandora_agents/unix/pandora_agent +++ b/pandora_agents/unix/pandora_agent @@ -55,7 +55,7 @@ my $Sem = undef; my $ThreadSem = undef; use constant AGENT_VERSION => '7.0NG.746'; -use constant AGENT_BUILD => '200618'; +use constant AGENT_BUILD => '200619'; # Agent log default file size maximum and instances use constant DEFAULT_MAX_LOG_SIZE => 600000; diff --git a/pandora_agents/unix/pandora_agent.redhat.spec b/pandora_agents/unix/pandora_agent.redhat.spec index 30a85c8962..c0ffaffb19 100644 --- a/pandora_agents/unix/pandora_agent.redhat.spec +++ b/pandora_agents/unix/pandora_agent.redhat.spec @@ -3,7 +3,7 @@ # %define name pandorafms_agent_unix %define version 7.0NG.746 -%define release 200618 +%define release 200619 Summary: Pandora FMS Linux agent, PERL version Name: %{name} diff --git a/pandora_agents/unix/pandora_agent.spec b/pandora_agents/unix/pandora_agent.spec index f213fd4abb..541b3cd798 100644 --- a/pandora_agents/unix/pandora_agent.spec +++ b/pandora_agents/unix/pandora_agent.spec @@ -3,7 +3,7 @@ # %define name pandorafms_agent_unix %define version 7.0NG.746 -%define release 200618 +%define release 200619 Summary: Pandora FMS Linux agent, PERL version Name: %{name} diff --git a/pandora_agents/unix/pandora_agent_installer b/pandora_agents/unix/pandora_agent_installer index 53d2823fd6..dab87f1b01 100755 --- a/pandora_agents/unix/pandora_agent_installer +++ b/pandora_agents/unix/pandora_agent_installer @@ -10,7 +10,7 @@ # ********************************************************************** PI_VERSION="7.0NG.746" -PI_BUILD="200618" +PI_BUILD="200619" OS_NAME=`uname -s` FORCE=0 diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi index 6b1ad3b147..be816e92f3 100644 --- a/pandora_agents/win32/installer/pandora.mpi +++ b/pandora_agents/win32/installer/pandora.mpi @@ -186,7 +186,7 @@ UpgradeApplicationID {} Version -{200618} +{200619} ViewReadme {Yes} diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc index 6cb7a928f3..08ec60e1ca 100644 --- a/pandora_agents/win32/pandora.cc +++ b/pandora_agents/win32/pandora.cc @@ -30,7 +30,7 @@ using namespace Pandora; using namespace Pandora_Strutils; #define PATH_SIZE _MAX_PATH+1 -#define PANDORA_VERSION ("7.0NG.746(Build 200618)") +#define PANDORA_VERSION ("7.0NG.746(Build 200619)") string pandora_path; string pandora_dir; diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc index 56ef1a2905..1f1d27db3d 100644 --- a/pandora_agents/win32/versioninfo.rc +++ b/pandora_agents/win32/versioninfo.rc @@ -11,7 +11,7 @@ BEGIN VALUE "LegalCopyright", "Artica ST" VALUE "OriginalFilename", "PandoraAgent.exe" VALUE "ProductName", "Pandora FMS Windows Agent" - VALUE "ProductVersion", "(7.0NG.746(Build 200618))" + VALUE "ProductVersion", "(7.0NG.746(Build 200619))" VALUE "FileVersion", "1.0.0.0" END END diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control index caeabd6e93..b26e961b95 100644 --- a/pandora_console/DEBIAN/control +++ b/pandora_console/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-console -Version: 7.0NG.746-200618 +Version: 7.0NG.746-200619 Architecture: all Priority: optional Section: admin diff --git a/pandora_console/DEBIAN/make_deb_package.sh b/pandora_console/DEBIAN/make_deb_package.sh index 151d3e2732..3a3f26957c 100644 --- a/pandora_console/DEBIAN/make_deb_package.sh +++ b/pandora_console/DEBIAN/make_deb_package.sh @@ -14,7 +14,7 @@ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -pandora_version="7.0NG.746-200618" +pandora_version="7.0NG.746-200619" package_pear=0 package_pandora=1 diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php index 43c0767baf..e095c0232d 100644 --- a/pandora_console/include/config_process.php +++ b/pandora_console/include/config_process.php @@ -20,7 +20,7 @@ /** * Pandora build version and version */ -$build_version = 'PC200618'; +$build_version = 'PC200619'; $pandora_version = 'v7.0NG.746'; // Do not overwrite default timezone set if defined. diff --git a/pandora_console/install.php b/pandora_console/install.php index d41ca35531..1ddf8abea9 100644 --- a/pandora_console/install.php +++ b/pandora_console/install.php @@ -129,7 +129,7 @@
[ qw() ] ); diff --git a/pandora_server/pandora_server.redhat.spec b/pandora_server/pandora_server.redhat.spec index 219900abca..a6ef18ad7f 100644 --- a/pandora_server/pandora_server.redhat.spec +++ b/pandora_server/pandora_server.redhat.spec @@ -3,7 +3,7 @@ # %define name pandorafms_server %define version 7.0NG.746 -%define release 200618 +%define release 200619 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec index c03d5ab75f..7edbdac71a 100644 --- a/pandora_server/pandora_server.spec +++ b/pandora_server/pandora_server.spec @@ -3,7 +3,7 @@ # %define name pandorafms_server %define version 7.0NG.746 -%define release 200618 +%define release 200619 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer index 5fcc864e8a..cdb2836dd4 100755 --- a/pandora_server/pandora_server_installer +++ b/pandora_server/pandora_server_installer @@ -9,7 +9,7 @@ # ********************************************************************** PI_VERSION="7.0NG.746" -PI_BUILD="200618" +PI_BUILD="200619" MODE=$1 if [ $# -gt 1 ]; then diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl index b0a1ee7c43..f7c960eb9c 100755 --- a/pandora_server/util/pandora_db.pl +++ b/pandora_server/util/pandora_db.pl @@ -35,7 +35,7 @@ use PandoraFMS::Config; use PandoraFMS::DB; # version: define current version -my $version = "7.0NG.746 PS200618"; +my $version = "7.0NG.746 PS200619"; # Pandora server configuration my %conf; diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl index 8ed5342507..92bd7663dc 100755 --- a/pandora_server/util/pandora_manage.pl +++ b/pandora_server/util/pandora_manage.pl @@ -36,7 +36,7 @@ use Encode::Locale; Encode::Locale::decode_argv; # version: define current version -my $version = "7.0NG.746 PS200618"; +my $version = "7.0NG.746 PS200619"; # save program name for logging my $progname = basename($0); From 415a8aa8b68062a801ca70b04696081a9b9880f4 Mon Sep 17 00:00:00 2001 From: marcos Date: Fri, 19 Jun 2020 10:44:43 +0200 Subject: [PATCH 124/299] ignore keys on xss manage angent groups --- pandora_console/godmode/groups/group_list.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pandora_console/godmode/groups/group_list.php b/pandora_console/godmode/groups/group_list.php index 3a8371bc6a..1f7284ca5b 100644 --- a/pandora_console/godmode/groups/group_list.php +++ b/pandora_console/godmode/groups/group_list.php @@ -348,7 +348,7 @@ if (($create_group) && (check_acl($config['id_user'], 0, 'PM'))) { $propagate = (bool) get_parameter('propagate'); $aviable_name = true; - if (preg_match(' \ No newline at end of file +// AJAX controller. +if (is_ajax()) { + $method = get_parameter('method'); + + if (method_exists($obj, $method) === true) { + $obj->{$method}(); + } else { + $obj->error('Method not found. ['.$method.']'); + } + + // Stop any execution. + exit; +} else { + // Run. + $obj->run(); +} diff --git a/pandora_console/godmode/agentes/agent_wizard.snmp_explorer.php b/pandora_console/godmode/agentes/agent_wizard.snmp_explorer.php deleted file mode 100644 index 21cb4eb378..0000000000 --- a/pandora_console/godmode/agentes/agent_wizard.snmp_explorer.php +++ /dev/null @@ -1,1179 +0,0 @@ - __('The SNMP remote plugin doesnt seem to be installed').'. '.__('It is necessary to use some features').'.

'.__('Please, install the SNMP remote plugin (The name of the plugin must be snmp_remote.pl)'), 'no_close' => true]); -} - -// Using plugin -if (!empty($plugin)) { - $static_snmp_descriptions['avgCpuLoad'] = 'Average of CPUs Load (%)'; - $static_snmp_descriptions['memoryUse'] = 'Memory use (%)'; -} - -$fail = false; - -$devices = []; -$processes = []; -$disks = []; -$temperatures = []; - -$arrow = false; - -$snmp_translation_data = index_array(snmp_get_translation_wizard(), null, 'description'); -$other_snmp_data = []; - -if ($snmpwalk) { - // OID Used is for DISKS - $snmpis = get_snmpwalk( - $ip_target, - $snmp_version, - $snmp_community, - $snmp3_auth_user, - $snmp3_security_level, - $snmp3_auth_method, - $snmp3_auth_pass, - $snmp3_privacy_method, - $snmp3_privacy_pass, - 0, - '.1.3.6.1.2.1.25.2.3.1.3', - $tcp_port, - $server_to_exec - ); - - if (empty($snmpis)) { - $fail = true; - $snmpis = []; - } else { - // We get here only the interface part of the MIB, not full mib - foreach ($snmpis as $key => $snmp) { - $data = explode(': ', $snmp); - $keydata = explode('::', $key); - $keydata2 = explode('.', $keydata[1]); - - // Avoid results without index and results without name - if (!isset($keydata2[1]) || !isset($data[1])) { - continue; - } - - - if (array_key_exists(1, $data)) { - $disks[$data[1]] = $data[1]; - } else { - $disks[$data[0]] = $data[0]; - } - } - - // OID Used is for PROCESSES - $snmpis = get_snmpwalk( - $ip_target, - $snmp_version, - $snmp_community, - $snmp3_auth_user, - $snmp3_security_level, - $snmp3_auth_method, - $snmp3_auth_pass, - $snmp3_privacy_method, - $snmp3_privacy_pass, - 0, - '.1.3.6.1.2.1.25.4.2.1.2', - $tcp_port, - $server_to_exec - ); - - if ($snmpis === false) { - $snmpis = []; - } - - - // We get here only the interface part of the MIB, not full mib - foreach ($snmpis as $key => $snmp) { - $data = explode(': ', $snmp); - $keydata = explode('::', $key); - $keydata2 = explode('.', $keydata[1]); - - // Avoid results without index and results without name - if (!isset($keydata2[1]) || !isset($data[1])) { - continue; - } - - if (array_key_exists(1, $data)) { - $process_name = str_replace('"', '', $data[1]); - } else { - $process_name = str_replace('"', '', $data[0]); - } - - $processes[$process_name] = $process_name; - } - - // Keep only the first process found - $processes = array_unique($processes); - - - // OID Used is for SENSOR TEMPERATURES - $snmpis = get_snmpwalk( - $ip_target, - $snmp_version, - $snmp_community, - $snmp3_auth_user, - $snmp3_security_level, - $snmp3_auth_method, - $snmp3_auth_pass, - $snmp3_privacy_method, - $snmp3_privacy_pass, - 0, - '.1.3.6.1.4.1.2021.13.16.2.1', - $tcp_port, - $server_to_exec - ); - - if ($snmpis === false) { - $snmpis = []; - } - - - // We get here only the interface part of the MIB, not full mib - foreach ($snmpis as $key => $snmp) { - $data = explode(': ', $snmp); - $keydata = explode('::', $key); - $keydata2 = explode('.', $keydata[1]); - - // Avoid results without index and results without name - if (!isset($keydata2[1]) || !isset($data[1])) { - continue; - } - - - if ($keydata2[0] == 'lmTempSensorsDevice') { - if (array_key_exists(1, $data)) { - $temperatures[$keydata2[1]] = $data[1]; - } else { - $temperatures[$keydata2[1]] = $data[0]; - } - } - } - - // Keep only the first sensor found - $temperatures = array_unique($temperatures); - - // OID Used is for DEVICES - $snmpis = get_snmpwalk( - $ip_target, - $snmp_version, - $snmp_community, - $snmp3_auth_user, - $snmp3_security_level, - $snmp3_auth_method, - $snmp3_auth_pass, - $snmp3_privacy_method, - $snmp3_privacy_pass, - 0, - '.1.3.6.1.4.1.2021.13.15.1.1', - $tcp_port, - $server_to_exec - ); - - if ($snmpis === false) { - $snmpis = []; - } - - - // We get here only the interface part of the MIB, not full mib - foreach ($snmpis as $key => $snmp) { - $data = explode(': ', $snmp); - $keydata = explode('::', $key); - $keydata2 = explode('.', $keydata[1]); - - // Avoid results without index and results without name - if (!isset($keydata2[1]) || !isset($data[1])) { - continue; - } - - - if ($keydata2[0] == 'diskIODevice') { - if (array_key_exists(1, $data)) { - $devices['diskIONRead'.$separator.$keydata2[1]] = $data[1].' - Bytes read'; - $devices['diskIONWritten'.$separator.$keydata2[1]] = $data[1].' - Bytes written'; - $devices['diskIONReads'.$separator.$keydata2[1]] = $data[1].' - Read accesses'; - $devices['diskIONWrites'.$separator.$keydata2[1]] = $data[1].' - Write accesses'; - } else { - $devices['diskIONRead'.$separator.$keydata2[1]] = $data[0].' - Bytes read'; - $devices['diskIONWritten'.$separator.$keydata2[1]] = $data[0].' - Bytes written'; - $devices['diskIONReads'.$separator.$keydata2[1]] = $data[0].' - Read accesses'; - $devices['diskIONWrites'.$separator.$keydata2[1]] = $data[0].' - Write accesses'; - } - } - } - } - - // Other SNMP Data - $arrow = true; - - foreach ($snmp_translation_data as $oid => $temp) { - if ($snmp_version == 3) { - $result = false; - // It is statics oids. - } else { - $result = @snmpget($ip_target, $snmp_community, $oid); - } - - if ($result != false) { - $other_snmp_data[$oid] = $snmp_translation_data[$oid]; - } - } - - if (empty($other_snmp_data)) { - $arrow = false; - $other_snmp_data[0] = __('Remote system doesnt support host SNMP information'); - } -} - -if ($create_modules) { - $modules = io_safe_output(get_parameter('module', [])); - - $devices = []; - $processes = []; - $disks = []; - $temperatures = []; - $snmpdata = []; - - foreach ($modules as $module) { - // Split module data to get type - $module_exploded = explode($separator, $module); - $type = $module_exploded[0]; - - // Delete type from module data - unset($module_exploded[0]); - - // Rebuild module data - $module = implode($separator, $module_exploded); - - switch ($type) { - case 'device': - $devices[] = $module; - break; - - case 'process': - $processes[] = $module; - break; - - case 'disk': - $disks[] = $module; - break; - - case 'temperature': - $temperatures[] = $module; - break; - - case 'snmpdata': - $snmpdata[] = $module; - break; - } - } - - if (agents_get_name($id_agent) == false) { - ui_print_error_message(__('No agent selected or the agent does not exist')); - } else { - // Common values - $common_values = []; - - if ($tcp_port != '') { - $common_values['tcp_port'] = $tcp_port; - } - - $common_values['snmp_community'] = $snmp_community; - if ($use_agent) { - $common_values['ip_target'] = 'auto'; - } else { - $common_values['ip_target'] = $ip_target; - } - - $common_values['tcp_send'] = $snmp_version; - - if ($snmp_version == '3') { - $common_values['plugin_user'] = $snmp3_auth_user; - $common_values['plugin_pass'] = $snmp3_auth_pass; - $common_values['plugin_parameter'] = $snmp3_auth_method; - $common_values['custom_string_1'] = $snmp3_privacy_method; - $common_values['custom_string_2'] = $snmp3_privacy_pass; - $common_values['custom_string_3'] = $snmp3_security_level; - } - - - // DEVICES - $devices_prefix_oids = [ - 'diskIONRead' => '.1.3.6.1.4.1.2021.13.15.1.1.3.', - 'diskIONWritten' => '.1.3.6.1.4.1.2021.13.15.1.1.4.', - 'diskIONReads' => '.1.3.6.1.4.1.2021.13.15.1.1.5.', - 'diskIONWrites' => '.1.3.6.1.4.1.2021.13.15.1.1.6.', - ]; - - $devices_prefix_descriptions = [ - 'diskIONRead' => __('The number of bytes read from this device since boot'), - 'diskIONWritten' => __('The number of bytes written to this device since boot'), - 'diskIONReads' => __('The number of read accesses from this device since boot'), - 'diskIONWrites' => __('The number of write accesses from this device since boot'), - ]; - - $results = []; - - foreach ($devices as $device) { - $module_values = $common_values; - - // Split module data to get type, name, etc - $device_exploded = explode($separator, $device); - $device_name = $device_exploded[0]; - - $name_exploded = explode('-', $device_name); - $name = ltrim(html_entity_decode($name_exploded[1])); - - $device_type = $device_exploded[1]; - - // Delete type from device id - unset($device_exploded[0]); - unset($device_exploded[1]); - - // Rebuild device_name - $device_id = implode($separator, $device_exploded); - - $module_values['descripcion'] = $devices_prefix_descriptions[$device_type]; - - if (($name == 'Bytes read') || ($name == 'Bytes written')) { - $module_values['id_tipo_modulo'] = modules_get_type_id('remote_snmp_inc'); - } else { - $module_values['id_tipo_modulo'] = modules_get_type_id('remote_snmp'); - } - - $module_values['snmp_oid'] = $devices_prefix_oids[$device_type].$device_id; - - $module_values['id_modulo'] = MODULE_SNMP; - - $result = modules_create_agent_module($id_agent, io_safe_input($device_name), $module_values); - - $results[$result][] = $device_name; - } - - // TEMPERATURE SENSORS - $temperatures_prefix_oid = '.1.3.6.1.4.1.2021.13.16.2.1.3.'; - $temperatures_description = 'The temperature of this sensor in C'; - - foreach ($temperatures as $temperature) { - $module_values = $common_values; - - // Split module data to get type, name, etc - $temperature_exploded = explode($separator, $temperature); - $temperature_name = $temperature_exploded[0]; - - // Delete name from temperature sensor id - unset($temperature_exploded[0]); - - // Rebuild device_name - $temperature_id = implode($separator, $temperature_exploded); - - $module_values['descripcion'] = $temperatures_description; - - $module_values['id_tipo_modulo'] = modules_get_type_id('remote_snmp'); - - $module_values['snmp_oid'] = $temperatures_prefix_oid.$temperature_id; - - $module_values['id_modulo'] = MODULE_SNMP; - - // Temperature are given in mC. Convert to Celsius - $module_values['post_process'] = 0.001; - - $module_values['unit'] = 'C'; - - $result = modules_create_agent_module($id_agent, io_safe_input($temperature_name), $module_values); - - $results[$result][] = $temperature_name; - } - - // SNMP DATA (STATIC MODULES) - foreach ($snmpdata as $snmpdata_oid) { - $module_values = $common_values; - $snmp_translation = snmp_get_translation($snmpdata_oid); - - $module_values['descripcion'] = $snmp_translation['description']; - $module_values['id_tipo_modulo'] = modules_get_type_id('remote_snmp'); - $module_values['post_process'] = $snmp_translation['post_process']; - - // Average use of CPUs is a plugin module - switch ($snmpdata_oid) { - case 'avgCpuLoad': - case 'memoryUse': - $module_values['id_modulo'] = MODULE_PLUGIN; - $module_values['id_plugin'] = $plugin['id']; - - // Avoid the return of a string containing the word 'null' if the macros column is not defined - $macros = []; - if (isset($plugin['macros']) && !empty($plugin['macros'])) { - $macros = json_decode($plugin['macros'], true); - } - - foreach ($macros as $k => $macro) { - switch ($macro['macro']) { - case '_field1_': - // Field 1 is the IP Address - $macros[$k]['value'] = $module_values['ip_target']; - break; - - case '_field2_': - // Field 2 is the community - $macros[$k]['value'] = $module_values['snmp_community']; - break; - - case '_field3_': - // Field 3 is the plugin parameters - switch ($snmpdata_name) { - case 'avgCpuLoad': - $macros[$k]['value'] = '-m cpuload'; - break; - - case 'memoryUse': - $macros[$k]['value'] = '-m memuse'; - break; - } - - if ($snmp_version == '3') { - $macros[$k]['value'] .= ' -v3 '; - switch ($snmp3_security_level) { - case 'authNoPriv': - $macros[$k]['value'] .= ' -u '.$snmp3_auth_user.' -A '.$snmp3_auth_pass.' -l '.$snmp3_security_level.' -a '.$snmp3_auth_method; - break; - - case 'noAuthNoPriv': - $macros[$k]['value'] .= ' -u '.$snmp3_auth_user.' -l '.$snmp3_security_level; - break; - - default: - $macros[$k]['value'] .= ' -u '.$snmp3_auth_user.' -A '.$snmp3_auth_pass.' -l '.$snmp3_security_level.' -a '.$snmp3_auth_method.' -x '.$snmp3_privacy_method.' -X '.$snmp3_privacy_pass; - break; - } - } - break; - } - } - - if (!empty($macros)) { - $module_values['macros'] = io_json_mb_encode($macros); - } - - unset($module_values['snmp_community']); - // snmp_community - unset($module_values['ip_target']); - // ip_target - unset($module_values['tcp_send']); - // snmp_version - break; - - default: - $module_values['snmp_oid'] = $snmpdata_oid; - - $module_values['id_modulo'] = MODULE_SNMP; - break; - } - - $result = modules_create_agent_module( - $id_agent, - io_safe_input($snmp_translation['description']), - $module_values - ); - - $results[$result][] = $snmp_translation['description']; - } - - // PROCESSES - foreach ($processes as $process) { - $module_values = $common_values; - - $module_values['descripcion'] = sprintf(__('Check if the process %s is running or not'), $process); - $module_values['id_tipo_modulo'] = modules_get_type_id('generic_proc'); - $module_values['id_modulo'] = MODULE_PLUGIN; - $module_values['id_plugin'] = $plugin['id']; - - // Avoid the return of a string containing the word 'null' if the macros column is not defined - $macros = []; - if (isset($plugin['macros']) && !empty($plugin['macros'])) { - $macros = json_decode($plugin['macros'], true); - } - - foreach ($macros as $k => $macro) { - switch ($macro['macro']) { - case '_field1_': - // Field 1 is the IP Address - $macros[$k]['value'] = $module_values['ip_target']; - break; - - case '_field2_': - // Field 2 is the community - $macros[$k]['value'] = $module_values['snmp_community']; - break; - - case '_field3_': - // Field 3 is the plugin parameters - $macros[$k]['value'] = io_safe_input('-m process -p "'.$process.'"'); - - if ($snmp_version == '3') { - $macros[$k]['value'] .= ' -v3 '; - switch ($snmp3_security_level) { - case 'authNoPriv': - $macros[$k]['value'] .= ' -u '.$snmp3_auth_user.' -A '.$snmp3_auth_pass.' -l '.$snmp3_security_level.' -a '.$snmp3_auth_method; - break; - - case 'noAuthNoPriv': - $macros[$k]['value'] .= ' -u '.$snmp3_auth_user.' -l '.$snmp3_security_level; - break; - - default: - $macros[$k]['value'] .= ' -u '.$snmp3_auth_user.' -A '.$snmp3_auth_pass.' -l '.$snmp3_security_level.' -a '.$snmp3_auth_method.' -x '.$snmp3_privacy_method.' -X '.$snmp3_privacy_pass; - break; - } - } - break; - } - } - - if (!empty($macros)) { - $module_values['macros'] = io_json_mb_encode($macros); - } - - unset($module_values['snmp_community']); - // snmp_community - unset($module_values['ip_target']); - // ip_target - unset($module_values['tcp_send']); - // snmp_version - $result = modules_create_agent_module($id_agent, io_safe_input($process), $module_values); - - $results[$result][] = $process; - } - - - // DISKS USE - foreach ($disks as $disk) { - $module_values = $common_values; - - $module_values['descripcion'] = __('Disk use information'); - $module_values['id_tipo_modulo'] = modules_get_type_id('remote_snmp'); - $module_values['id_modulo'] = MODULE_PLUGIN; - $module_values['id_plugin'] = $plugin['id']; - - // Avoid the return of a string containing the word 'null' if the macros column is not defined - $macros = []; - if (isset($plugin['macros']) && !empty($plugin['macros'])) { - $macros = json_decode($plugin['macros'], true); - } - - foreach ($macros as $k => $macro) { - switch ($macro['macro']) { - case '_field1_': - // Field 1 is the IP Address - $macros[$k]['value'] = $module_values['ip_target']; - break; - - case '_field2_': - // Field 2 is the community - $macros[$k]['value'] = $module_values['snmp_community']; - break; - - case '_field3_': - // Field 3 is the plugin parameters - $macros[$k]['value'] = io_safe_input('-m diskuse -d "'.io_safe_output($disk).'"'); - - if ($snmp_version == '3') { - $macros[$k]['value'] .= ' -v3 '; - switch ($snmp3_security_level) { - case 'authNoPriv': - $macros[$k]['value'] .= ' -u '.$snmp3_auth_user.' -A '.$snmp3_auth_pass.' -l '.$snmp3_security_level.' -a '.$snmp3_auth_method; - break; - - case 'noAuthNoPriv': - $macros[$k]['value'] .= ' -u '.$snmp3_auth_user.' -l '.$snmp3_security_level; - break; - - default: - $macros[$k]['value'] .= ' -u '.$snmp3_auth_user.' -A '.$snmp3_auth_pass.' -l '.$snmp3_security_level.' -a '.$snmp3_auth_method.' -x '.$snmp3_privacy_method.' -X '.$snmp3_privacy_pass; - break; - } - } - } - } - - if (!empty($macros)) { - $module_values['macros'] = io_json_mb_encode($macros); - } - - unset($module_values['snmp_community']); - // snmp_community - unset($module_values['ip_target']); - // ip_target - unset($module_values['tcp_send']); - // snmp_version - $result = modules_create_agent_module( - $id_agent, - io_safe_input($disk), - $module_values - ); - - $results[$result][] = $disk; - } - - $success_message = ''; - $error_message = ''; - - if (isset($results[NOERR])) { - if (count($results[NOERR]) > 0) { - $success_message .= sprintf(__('%s modules created succesfully'), count($results[NOERR])).'
'; - } - } - - if (isset($results[ERR_GENERIC])) { - if (count($results[ERR_GENERIC]) > 0) { - $error_message .= sprintf(__('Error creating %s modules').':
  * '.implode('
  * ', $results[ERR_GENERIC]), count($results[ERR_GENERIC])).'
'; - } - } - - if (isset($results[ERR_DB])) { - if (count($results[ERR_DB]) > 0) { - $error_message .= sprintf(__('Error creating %s modules').':
  * '.implode('
  * ', $results[ERR_DB]), count($results[ERR_DB])).'
'; - } - } - - if (isset($results[ERR_EXIST])) { - if (count($results[ERR_EXIST]) > 0) { - $error_message .= sprintf(__('%s modules already exist').':
  * '.implode('
  * ', $results[ERR_EXIST]), count($results[ERR_EXIST])).'
'; - } - } - - if (!empty($error_message)) { - ui_print_error_message($error_message); - } else { - if (empty($success_message)) { - $success_message .= sprintf(__('Modules created succesfully')).'
'; - } - - ui_print_success_message($success_message); - } - } -} - -echo ''; -echo "
"; - -$table->width = '100%'; -$table->cellpadding = 0; -$table->cellspacing = 0; -$table->class = 'databox filters'; - -$table->data[0][0] = ''.__('Target IP').''; -$table->data[0][1] = html_print_input_text('ip_target', $ip_target, '', 15, 60, true); - -$table->data[0][2] = ''.__('Port').''; -$table->data[0][3] = html_print_input_text('tcp_port', $tcp_port, '', 5, 20, true); - -$table->data[1][0] = ''.__('Use agent ip').''; -$table->data[1][1] = html_print_checkbox('use_agent', 1, $use_agent, true); - -$servers_to_exec = []; -$servers_to_exec[0] = __('Local console'); -if (enterprise_installed()) { - enterprise_include_once('include/functions_satellite.php'); - - $rows = get_proxy_servers(); - - // Check if satellite server has remote configuration enabled. - $satellite_remote = config_agents_has_remote_configuration($id_agent); - - foreach ($rows as $row) { - if ($row['server_type'] != 13) { - $s_type = ' (Standard)'; - } else { - $id_satellite = $row['id_server']; - $s_type = ' (Satellite)'; - } - - $servers_to_exec[$row['id_server']] = $row['name'].$s_type; - } -} - -$table->data[1][2] = ''.__('Server to execute command').''.ui_print_help_icon('agent_snmp_explorer_tab', true); -$table->data[1][3] = html_print_select( - $servers_to_exec, - 'server_to_exec', - $server_to_exec, - 'satellite_remote_warn('.$id_satellite.','.$satellite_remote.')', - '', - '', - true -); - -$snmp_versions['1'] = 'v. 1'; -$snmp_versions['2'] = 'v. 2'; -$snmp_versions['2c'] = 'v. 2c'; -$snmp_versions['3'] = 'v. 3'; - -$table->data[2][0] = ''.__('SNMP community').''; -$table->data[2][1] = html_print_input_text('snmp_community', $snmp_community, '', 15, 60, true); - -$table->data[2][2] = ''.__('SNMP version').''; -$table->data[2][3] = html_print_select($snmp_versions, 'snmp_version', $snmp_version, '', '', '', true, false, false, ''); - -$table->data[2][3] .= ''; - -html_print_input_hidden('snmpwalk', 1); - -html_print_table($table); - -unset($table); - -// SNMP3 OPTIONS -$table->width = '100%'; - -$table->data[2][1] = ''.__('Auth user').''; -$table->data[2][2] = html_print_input_text('snmp3_auth_user', $snmp3_auth_user, '', 15, 60, true); -$table->data[2][3] = ''.__('Auth password').''; -$table->data[2][4] = html_print_input_password('snmp3_auth_pass', $snmp3_auth_pass, '', 15, 60, true); -$table->data[2][4] .= html_print_input_hidden_extended('active_snmp_v3', 0, 'active_snmp_v3_awse', true); - -$table->data[5][0] = ''.__('Privacy method').''; -$table->data[5][1] = html_print_select(['DES' => __('DES'), 'AES' => __('AES')], 'snmp3_privacy_method', $snmp3_privacy_method, '', '', '', true); -$table->data[5][2] = ''.__('privacy pass').''; -$table->data[5][3] = html_print_input_password('snmp3_privacy_pass', $snmp3_privacy_pass, '', 15, 60, true); - -$table->data[6][0] = ''.__('Auth method').''; -$table->data[6][1] = html_print_select(['MD5' => __('MD5'), 'SHA' => __('SHA')], 'snmp3_auth_method', $snmp3_auth_method, '', '', '', true); -$table->data[6][2] = ''.__('Security level').''; -$table->data[6][3] = html_print_select( - [ - 'noAuthNoPriv' => __('Not auth and not privacy method'), - 'authNoPriv' => __('Auth and not privacy method'), - 'authPriv' => __('Auth and privacy method'), - ], - 'snmp3_security_level', - $snmp3_security_level, - '', - '', - '', - true -); - -if ($snmp_version == 3) { - echo '
'; -} else { - echo ''; - -echo "
"; -echo ''; -html_print_submit_button(__('SNMP Walk'), 'snmp_walk', false, ['class' => 'sub next']); -echo '
'; - -if ($snmpwalk && $fail) { - ui_print_error_message('
'.__('No data found').'

'.__('If the device is a network device, try with the SNMP Interfaces wizard')); -} - -unset($table); - -echo ''; - -if (!$fail) { - echo ''; - echo "
"; - echo ''; - - html_print_input_hidden('create_modules', 1); - html_print_input_hidden('ip_target', $ip_target); - html_print_input_hidden('use_agent', $use_agent); - html_print_input_hidden('tcp_port', $tcp_port); - html_print_input_hidden('snmp_community', $snmp_community); - html_print_input_hidden('snmp_version', $snmp_version); - html_print_input_hidden('snmp3_auth_user', $snmp3_auth_user); - html_print_input_hidden('snmp3_auth_pass', $snmp3_auth_pass); - html_print_input_hidden('snmp3_auth_method', $snmp3_auth_method); - html_print_input_hidden('snmp3_privacy_method', $snmp3_privacy_method); - html_print_input_hidden('snmp3_privacy_pass', $snmp3_privacy_pass); - html_print_input_hidden('snmp3_security_level', $snmp3_security_level); - - $table->width = '100%'; - - // Mode selector - $modes = []; - $modes['devices'] = __('Devices'); - $modes['processes'] = __('Processes'); - $modes['disks'] = __('Free space on disk'); - $modes['temperatures'] = __('Temperature sensors'); - $modes['snmpdata'] = __('Other SNMP data'); - - $table->data[1][0] = __('Wizard mode').': '; - $table->data[1][0] .= html_print_select( - $modes, - 'snmp_wizard_modes', - '', - '', - '', - '', - true, - false, - false - ); - $table->cellstyle[1][0] = 'vertical-align: middle;'; - - $table->colspan[1][0] = 2; - $table->data[1][2] = ''.__('Modules').''; - $table->cellstyle[1][2] = 'vertical-align: middle;'; - - // Devices list - $table->data[2][0] = '
'; - $table->data[2][0] .= html_print_select( - $devices, - 'devices', - '', - '', - '', - '', - true, - true, - true, - '', - false, - 'width: 300px;' - ); - $table->data[2][0] .= '
'; - - // If SNMP remote plugin is not installed, show an advice - if (empty($plugin)) { - // Processes list - $table->data[2][0] .= '
'; - $table->data[2][0] .= ui_print_info_message(__('SNMP remote plugin is necessary for this feature'), '', true); - $table->data[2][0] .= '
'; - - // Disks list - $table->data[2][0] .= '
'; - $table->data[2][0] .= ui_print_info_message(__('SNMP remote plugin is necessary for this feature'), '', true); - $table->data[2][0] .= '
'; - } else { - // Processes list - $table->data[2][0] .= '
'; - $table->data[2][0] .= html_print_select( - $processes, - 'processes', - '', - '', - '', - '', - true, - true, - true, - '', - false, - 'width: 300px;' - ); - $table->data[2][0] .= '
'; - - // Disks list - $table->data[2][0] .= '
'; - $table->data[2][0] .= html_print_select( - $disks, - 'disks', - '', - '', - '', - '', - true, - true, - true, - '', - false, - 'width: 300px;' - ); - $table->data[2][0] .= '
'; - } - - // Sensors temperatures list - $table->data[2][0] .= '
'; - $table->data[2][0] .= html_print_select( - $temperatures, - 'temperatures', - '', - '', - '', - '', - true, - true, - true, - '', - false, - 'width: 300px;' - ); - $table->data[2][0] .= '
'; - - // SNMP data list - $table->data[2][0] .= '
'; - $table->data[2][0] .= html_print_select( - $other_snmp_data, - 'snmpdata', - '', - '', - '', - '', - true, - true, - true, - '', - false, - 'width: 300px;' - ); - $table->data[2][0] .= '
'; - - $table->cellstyle[2][0] = 'vertical-align: top; text-align: center;'; - - // Devices arrow - $table->data[2][1] = '
'.html_print_image('images/darrowright.png', true, ['title' => __('Add to modules list')]).'
'; - // Processes arrow - $table->data[2][1] .= '
'.html_print_image('images/darrowright.png', true, ['title' => __('Add to modules list')]).'
'; - // Disks arrow - $table->data[2][1] .= '
'.html_print_image('images/darrowright.png', true, ['title' => __('Add to modules list')]).'
'; - // Temperatures arrow - $table->data[2][1] .= '
'.html_print_image('images/darrowright.png', true, ['title' => __('Add to modules list')]).'
'; - // SNMP data arrow - if ($arrow) { - $table->data[2][1] .= '
'.html_print_image('images/darrowright.png', true, ['title' => __('Add to modules list')]).'
'; - } - - $table->data[2][1] .= '

'.html_print_image('images/cross.png', true, ['title' => __('Remove from modules list')]).'
'; - $table->cellstyle[2][1] = 'vertical-align: middle; text-align: center;'; - - $table->data[2][2] = html_print_select([], 'module[]', 0, false, '', 0, true, true, true, '', false, 'width:300px; height: 100%;'); - $table->data[2][2] .= html_print_input_hidden('agent', $id_agent, true); - $table->cellstyle[2][2] = 'vertical-align: top; text-align: center;'; - - html_print_table($table); - - echo "
"; - html_print_submit_button(__('Create modules'), 'create_modules_btn', false, ['class' => 'sub add']); - echo '
'; - unset($table); - - echo '
'; - echo '
'; - echo '
'; -} - -ui_require_jquery_file('pandora.controls'); -ui_require_jquery_file('ajaxqueue'); -ui_require_jquery_file('bgiframe'); -ui_require_javascript_file('pandora_modules'); - -?> - diff --git a/pandora_console/godmode/agentes/agent_wizard.snmp_interfaces_explorer.php b/pandora_console/godmode/agentes/agent_wizard.snmp_interfaces_explorer.php deleted file mode 100644 index 3c197ac4a1..0000000000 --- a/pandora_console/godmode/agentes/agent_wizard.snmp_interfaces_explorer.php +++ /dev/null @@ -1,743 +0,0 @@ -] => [] array. - if (!empty($snmp_int_ip)) { - foreach ($snmp_int_ip as $key => $value) { - // The key is something like IP-MIB::ipAddressIfIndex.ipv4."". - // or IP-MIB::ipAddressIfIndex.ipv6."". - // The value is something like INTEGER: . - $data = explode(': ', $value); - $interface_id = !empty($data) && isset($data[1]) ? $data[1] : false; - - if (preg_match('/^.+"(.+)"$/', $key, $matches) && isset($matches[1])) { - $interface_ip = $matches[1]; - } - - // Get the first ip. - if ($interface_id !== false && !empty($interface_ip) && !isset($interfaces_ip[$interface_id])) { - $interfaces_ip[$interface_id] = $interface_ip; - } - } - - unset($snmp_int_ip); - } - - $snmpis = array_merge((($snmpis === false) ? [] : $snmpis), (($ifxitems === false) ? [] : $ifxitems)); - - $interfaces = []; - - // We get here only the interface part of the MIB, not full mib. - foreach ($snmpis as $key => $snmp) { - $data = explode(': ', $snmp, 2); - $keydata = explode('::', $key); - $keydata2 = explode('.', $keydata[1]); - - // Avoid results without index and interfaces without name. - if (!isset($keydata2[1]) || !isset($data[1])) { - continue; - } - - if (array_key_exists(1, $data)) { - $interfaces[$keydata2[1]][$keydata2[0]]['type'] = $data[0]; - $interfaces[$keydata2[1]][$keydata2[0]]['value'] = $data[1]; - } else { - $interfaces[$keydata2[1]][$keydata2[0]]['type'] = ''; - $interfaces[$keydata2[1]][$keydata2[0]]['value'] = $data[0]; - } - - $interfaces[$keydata2[1]][$keydata2[0]]['oid'] = $key; - $interfaces[$keydata2[1]][$keydata2[0]]['checked'] = 0; - } - - unset($interfaces[0]); -} - -if ($create_modules) { - $id_snmp_serialize = get_parameter_post('id_snmp_serialize'); - $interfaces = unserialize_in_temp($id_snmp_serialize); - - $id_snmp_int_ip_serialize = get_parameter_post('id_snmp_int_ip_serialize'); - $interfaces_ip = unserialize_in_temp($id_snmp_int_ip_serialize); - - if (!$interfaces) { - $interfaces = []; - } - - if (!$interfaces_ip) { - $interfaces_ip = []; - } - - $values = []; - - if ($tcp_port != '') { - $values['tcp_port'] = $tcp_port; - } - - $values['snmp_community'] = $snmp_community; - if ($use_agent) { - $values['ip_target'] = 'auto'; - } else { - $values['ip_target'] = $ip_target; - } - - $values['tcp_send'] = $snmp_version; - - if ($snmp_version == '3') { - $values['plugin_user'] = $snmp3_auth_user; - $values['plugin_pass'] = $snmp3_auth_pass; - $values['plugin_parameter'] = $snmp3_auth_method; - $values['custom_string_1'] = $snmp3_privacy_method; - $values['custom_string_2'] = $snmp3_privacy_pass; - $values['custom_string_3'] = $snmp3_security_level; - } - - $oids = []; - foreach ($interfaces as $key => $interface) { - foreach ($interface as $key2 => $module) { - $oid = get_parameter($key.'-'.$key2, ''); - if ($oid != '') { - $interfaces[$key][$key2]['checked'] = 1; - $oids[$key][] = $interfaces[$key][$key2]['oid']; - } else { - $interfaces[$key][$key2]['checked'] = 0; - } - } - } - - $modules = get_parameter('module', []); - $id_snmp = get_parameter('id_snmp'); - - if ($id_snmp == false) { - ui_print_error_message(__('No modules selected')); - $id_snmp = []; - } - - if (agents_get_name($id_agent) == false) { - ui_print_error_message(__('No agent selected or the agent does not exist')); - $id_snmp = []; - } - - $result = false; - - $errors = []; - $done = 0; - - foreach ($id_snmp as $id) { - $ifname = ''; - $ifPhysAddress = ''; - - if (isset($interfaces[$id]['ifName']) && $interfaces[$id]['ifName']['value'] != '') { - $ifname = $interfaces[$id]['ifName']['value']; - } else if (isset($interfaces[$id]['ifDescr']) && $interfaces[$id]['ifDescr']['value'] != '') { - $ifname = $interfaces[$id]['ifDescr']['value']; - } - - if (isset($interfaces[$id]['ifPhysAddress']) && $interfaces[$id]['ifPhysAddress']['value'] != '') { - $ifPhysAddress = $interfaces[$id]['ifPhysAddress']['value']; - $ifPhysAddress = strtoupper($ifPhysAddress); - } - - foreach ($modules as $module) { - $oid_array = explode('.', $module); - $oid_array[(count($oid_array) - 1)] = $id; - $oid = implode('.', $oid_array); - - // Get the name. - $name_array = explode('::', $oid_array[0]); - $name = $ifname.'_'.$name_array[1]; - - // If you select "show all modules" and the module is not from the interface. - if (!array_key_exists($name_array[1], $interfaces[$id])) { - continue; - } - - // Clean the name. - $name = str_replace('"', '', $name); - - // Proc moduletypes. - if (preg_match('/Status/', $name_array[1])) { - $module_type = 18; - } else if (preg_match('/Present/', $name_array[1])) { - $module_type = 18; - } else if (preg_match('/PromiscuousMode/', $name_array[1])) { - $module_type = 18; - } else if (preg_match('/Alias/', $name_array[1])) { - // String moduletypes. - $module_type = 17; - } else if (preg_match('/Address/', $name_array[1])) { - $module_type = 17; - } else if (preg_match('/Name/', $name_array[1])) { - $module_type = 17; - } else if (preg_match('/Specific/', $name_array[1])) { - $module_type = 17; - } else if (preg_match('/Descr/', $name_array[1])) { - $module_type = 17; - } else if (preg_match('/s$/', $name_array[1])) { - // Specific counters (ends in s). - $module_type = 16; - } else { - // Otherwise, numeric. - $module_type = 15; - } - - $values['unit'] = ''; - if (preg_match('/Octets/', $name_array[1])) { - $values['unit'] = 'Bytes'; - } - - $module_server = 2; - - if ($server_to_exec != 0) { - $sql = sprintf('SELECT server_type, ip_address FROM tserver WHERE id_server = %d', $server_to_exec); - $row = db_get_row_sql($sql); - - if ($row['server_type'] == 13) { - if (preg_match('/ifPhysAddress/', $name_array[1])) { - $module_type = 3; - } else if (preg_match('/ifSpecific/', $name_array[1])) { - $module_type = 3; - } else if (preg_match('/ifType/', $name_array[1])) { - $module_type = 1; - } else if (preg_match('/ifSpeed/', $name_array[1])) { - $module_type = 1; - } else if (preg_match('/ifPromiscuousMode/', $name_array[1])) { - $module_type = 2; - } else if (preg_match('/ifOutQLen/', $name_array[1])) { - $module_type = 1; - } else if (preg_match('/ifName/', $name_array[1])) { - $module_type = 3; - } else if (preg_match('/ifMtu/', $name_array[1])) { - $module_type = 1; - } else if (preg_match('/ifLinkUpDownTrapEnable/', $name_array[1])) { - $module_type = 1; - } else if (preg_match('/ifLastChange/', $name_array[1])) { - $module_type = 1; - } else if (preg_match('/ifIndex/', $name_array[1])) { - $module_type = 1; - } else if (preg_match('/ifDescr/', $name_array[1])) { - $module_type = 3; - } else if (preg_match('/ifCounterDiscontinuityTime/', $name_array[1])) { - $module_type = 1; - } else if (preg_match('/ifConnectorPresent/', $name_array[1])) { - $module_type = 2; - } else if (preg_match('/ifAdminStatus/', $name_array[1])) { - $module_type = 2; - } else if (preg_match('/ifOperStatus/', $name_array[1])) { - $module_type = 2; - } else { - $module_type = 4; - } - - $module_server = 1; - - $output_oid = ''; - - exec('snmptranslate -On '.$oid, $output_oid, $rc); - - $conf_oid = $output_oid[0]; - $oid = $conf_oid; - } - } - - $values['id_tipo_modulo'] = $module_type; - - if (!empty($ifPhysAddress) && isset($interfaces_ip[$id])) { - $values['descripcion'] = io_safe_input('(IP: '.$interfaces_ip[$id].' - MAC: '.$ifPhysAddress.' - '.$name.') '.$interfaces[$id]['ifDescr']['value']); - } else if (!empty($ifPhysAddress)) { - $values['descripcion'] = io_safe_input('(MAC: '.$ifPhysAddress.' - '.$name.') '.$interfaces[$id]['ifDescr']['value']); - } else if (isset($interfaces_ip[$id])) { - $values['descripcion'] = io_safe_input('(IP: '.$interfaces_ip[$id].' - '.$name.') '.$interfaces[$id]['ifDescr']['value']); - } else { - $values['descripcion'] = io_safe_input('('.$name.') '.$interfaces[$id]['ifDescr']['value']); - } - - $values['snmp_oid'] = $oid; - $values['id_modulo'] = $module_server; - - $result = modules_create_agent_module($id_agent, io_safe_input($name), $values); - - if (is_error($result)) { - if (!isset($errors[$result])) { - $errors[$result] = 0; - } - - $errors[$result]++; - } else { - if ($server_to_exec != 0) { - $sql = sprintf('SELECT server_type FROM tserver WHERE id_server = %d', $server_to_exec); - $row = db_get_row_sql($sql); - - if ($row['server_type'] == 13) { - $module_type_name = db_get_value_filter('nombre', 'ttipo_modulo', ['id_tipo' => $values['id_tipo_modulo']]); - - $new_module_configuration_data = "module_begin\nmodule_name ".io_safe_input($name)."\nmodule_description ".io_safe_output($values['descripcion'])."\nmodule_type ".$module_type_name."\nmodule_snmp\nmodule_version ".$snmp_version."\nmodule_oid ".$conf_oid."\nmodule_community ".$values['snmp_community']; - - if ($snmp_version == '3') { - $new_module_configuration_data .= "\nmodule_secname ".$snmp3_auth_user; - $new_module_configuration_data .= "\nmodule_seclevel ".$snmp3_security_level; - - if ($snmp3_security_level == 'authNoPriv' || $snmp3_security_level == 'authPriv') { - $new_module_configuration_data .= "\nmodule_authpass ".$snmp3_auth_pass; - $new_module_configuration_data .= "\nmodule_authproto ".$snmp3_auth_method; - } - - if ($snmp3_security_level == 'authPriv') { - $new_module_configuration_data .= "\nmodule_privproto ".$snmp3_privacy_method; - $new_module_configuration_data .= "\nmodule_privpass ".$snmp3_privacy_pass; - } - } - - $new_module_configuration_data .= "\nmodule_end"; - - config_agents_add_module_in_conf($id_agent, $new_module_configuration_data); - } - } - - $done++; - } - } - } - - if ($done > 0) { - ui_print_success_message( - __('Successfully modules created').' ('.$done.')' - ); - } - - if (!empty($errors)) { - $msg = __('Could not be created').':'; - - - foreach ($errors as $code => $number) { - switch ($code) { - case ERR_EXIST: - $msg .= '
'.__('Another module already exists with the same name').' ('.$number.')'; - break; - - case ERR_INCOMPLETE: - $msg .= '
'.__('Some required fields are missed').': ('.__('name').') ('.$number.')'; - break; - - case ERR_DB: - case ERR_GENERIC: - default: - $msg .= '
'.__('Processing error').' ('.$number.')'; - break; - } - } - - ui_print_error_message($msg); - } -} - -// Create the interface list for the interface. -$interfaces_list = []; -foreach ($interfaces as $interface) { - // Get the interface name, removing " " characters and avoid "blank" interfaces. - if (isset($interface['ifDescr']) && $interface['ifDescr']['value'] != '') { - $ifname = $interface['ifDescr']['value']; - } else if (isset($interface['ifName']) && $interface['ifName']['value'] != '') { - $ifname = $interface['ifName']['value']; - } else { - continue; - } - - $interfaces_list[$interface['ifIndex']['value']] = str_replace('"', '', $ifname); -} - -echo ''; -echo "
"; - -$table->width = '100%'; -$table->cellpadding = 0; -$table->cellspacing = 0; -$table->class = 'databox filters'; - -$table->data[0][0] = ''.__('Target IP').''; -$table->data[0][1] = html_print_input_text('ip_target', $ip_target, '', 15, 60, true); - -$table->data[0][2] = ''.__('Port').''; -$table->data[0][3] = html_print_input_text('tcp_port', $tcp_port, '', 5, 20, true); - -$table->data[1][0] = ''.__('Use agent ip').''; -$table->data[1][1] = html_print_checkbox('use_agent', 1, $use_agent, true); - -$servers_to_exec = []; -$servers_to_exec[0] = __('Local console'); -if (enterprise_installed()) { - enterprise_include_once('include/functions_satellite.php'); - - $rows = get_proxy_servers(); - - // Check if satellite server has remote configuration enabled. - $satellite_remote = config_agents_has_remote_configuration($id_agent); - - foreach ($rows as $row) { - if ($row['server_type'] != 13) { - $s_type = ' (Standard)'; - } else { - $id_satellite = $row['id_server']; - $s_type = ' (Satellite)'; - } - - $servers_to_exec[$row['id_server']] = $row['name'].$s_type; - } -} - -$table->data[1][2] = ''.__('Server to execute command').''.ui_print_help_icon('agent_snmp_explorer_tab', true); -$table->data[1][2] .= ''.ui_print_help_tip(__('In order to use remote executions you need to enable remote execution in satellite server'), true, 'images/tip_help.png', false, 'display:').''; -$table->data[1][4] = html_print_select( - $servers_to_exec, - 'server_to_exec', - $server_to_exec, - 'satellite_remote_warn('.$id_satellite.','.$satellite_remote.')', - '', - '', - true -); - -$snmp_versions['1'] = 'v. 1'; -$snmp_versions['2'] = 'v. 2'; -$snmp_versions['2c'] = 'v. 2c'; -$snmp_versions['3'] = 'v. 3'; - -$table->data[2][0] = ''.__('SNMP community').''; -$table->data[2][1] = html_print_input_text('snmp_community', $snmp_community, '', 15, 60, true); - -$table->data[2][2] = ''.__('SNMP version').''; -$table->data[2][3] = html_print_select($snmp_versions, 'snmp_version', $snmp_version, '', '', '', true, false, false, ''); - -$table->data[2][3] .= ''; -html_print_input_hidden('snmpwalk', 1); - -html_print_table($table); - -unset($table); - -// SNMP3 OPTIONS. -$table->width = '100%'; - -$table->data[2][1] = ''.__('Auth user').''; -$table->data[2][2] = html_print_input_text('snmp3_auth_user', $snmp3_auth_user, '', 15, 60, true); -$table->data[2][3] = ''.__('Auth password').''; -$table->data[2][4] = html_print_input_password('snmp3_auth_pass', $snmp3_auth_pass, '', 15, 60, true); -$table->data[2][4] .= html_print_input_hidden_extended('active_snmp_v3', 0, 'active_snmp_v3_awsie', true); - -$table->data[5][0] = ''.__('Privacy method').''; -$table->data[5][1] = html_print_select(['DES' => __('DES'), 'AES' => __('AES')], 'snmp3_privacy_method', $snmp3_privacy_method, '', '', '', true); -$table->data[5][2] = ''.__('privacy pass').''; -$table->data[5][3] = html_print_input_password('snmp3_privacy_pass', $snmp3_privacy_pass, '', 15, 60, true); - -$table->data[6][0] = ''.__('Auth method').''; -$table->data[6][1] = html_print_select(['MD5' => __('MD5'), 'SHA' => __('SHA')], 'snmp3_auth_method', $snmp3_auth_method, '', '', '', true); -$table->data[6][2] = ''.__('Security level').''; -$table->data[6][3] = html_print_select( - [ - 'noAuthNoPriv' => __('Not auth and not privacy method'), - 'authNoPriv' => __('Auth and not privacy method'), - 'authPriv' => __('Auth and privacy method'), - ], - 'snmp3_security_level', - $snmp3_security_level, - '', - '', - '', - true -); - -if ($snmp_version == 3) { - echo '
'; -} else { - echo ''; - -echo "
"; -echo ''; -html_print_submit_button(__('SNMP Walk'), 'snmp_walk', false, ['class' => 'sub next']); -echo '
'; - -if ($snmpwalk && !$snmpis) { - ui_print_error_message(__('Unable to do SNMP walk')); -} - -unset($table); - -echo ''; - -if (!empty($interfaces_list)) { - echo ''; - echo "
"; - echo ''; - - $id_snmp_serialize = serialize_in_temp($interfaces, $config['id_user'].'_snmp'); - html_print_input_hidden('id_snmp_serialize', $id_snmp_serialize); - - $id_snmp_int_ip_serialize = serialize_in_temp($interfaces_ip, $config['id_user'].'_snmp_int_ip'); - html_print_input_hidden('id_snmp_int_ip_serialize', $id_snmp_int_ip_serialize); - - html_print_input_hidden('create_modules', 1); - html_print_input_hidden('ip_target', $ip_target); - html_print_input_hidden('use_agent', $use_agent); - html_print_input_hidden('tcp_port', $tcp_port); - html_print_input_hidden('snmp_community', $snmp_community); - html_print_input_hidden('snmp_version', $snmp_version); - html_print_input_hidden('snmp3_auth_user', $snmp3_auth_user); - html_print_input_hidden('snmp3_auth_pass', $snmp3_auth_pass); - html_print_input_hidden('snmp3_auth_method', $snmp3_auth_method); - html_print_input_hidden('snmp3_privacy_method', $snmp3_privacy_method); - html_print_input_hidden('snmp3_privacy_pass', $snmp3_privacy_pass); - html_print_input_hidden('snmp3_security_level', $snmp3_security_level); - html_print_input_hidden('server_to_exec', $server_to_exec); - - $table->width = '100%'; - - // Agent selector. - $table->data[0][0] = ''.__('Interfaces').''; - $table->data[0][1] = ''; - $table->data[0][2] = ''.__('Modules').''; - - $table->data[1][0] = html_print_select($interfaces_list, 'id_snmp[]', 0, false, '', '', true, true, true, '', false, 'width:500px; overflow: auto;'); - - $table->data[1][1] = __('When selecting interfaces'); - $table->data[1][1] .= '
'; - $table->data[1][1] .= html_print_select( - [ - 1 => __('Show common modules'), - 0 => __('Show all modules'), - ], - 'modules_selection_mode', - 1, - false, - '', - '', - true, - false, - false - ); - - $table->data[1][2] = html_print_select([], 'module[]', 0, false, '', 0, true, true, true, '', false, 'width:200px;'); - $table->data[1][2] .= html_print_input_hidden('agent', $id_agent, true); - - html_print_table($table); - - echo "
"; - html_print_submit_button(__('Create modules'), '', false, ['class' => 'sub add']); - echo '
'; - unset($table); - - echo '
'; - echo '
'; - echo '
'; -} - -ui_require_jquery_file('pandora.controls'); -ui_require_jquery_file('ajaxqueue'); -ui_require_jquery_file('bgiframe'); -?> - diff --git a/pandora_console/godmode/agentes/agent_wizard.wmi_explorer.php b/pandora_console/godmode/agentes/agent_wizard.wmi_explorer.php deleted file mode 100644 index 20c955ab05..0000000000 --- a/pandora_console/godmode/agentes/agent_wizard.wmi_explorer.php +++ /dev/null @@ -1,873 +0,0 @@ - $row) { - // First and second rows are Class and column names, ignore it. - if ($index < 2) { - continue; - } - - $row_exploded = explode('|', $row); - - if (!in_array($row_exploded[$processes_name_field], $processes)) { - if (preg_match('/ERROR/', $row_exploded[$processes_name_field])) { - $processes[$row_exploded[$prouycesses_name_field]] = __('None'); - } else { - $processes[$row_exploded[$prouycesses_name_field]] = $row_exploded[$processes_name_field]; - } - } - } - - unset($output); - - // Services. - $wmi_services = $wmi_command.' "select Name from Win32_Service"'; - $services_name_field = 0; - $services_check_field = 1; - - if (enterprise_installed() && (int) $server_to_exec != 0) { - $server_data = db_get_row( - 'tserver', - 'id_server', - $server_to_exec - ); - if (empty($server_data['port'])) { - exec( - 'ssh pandora_exec_proxy@'.$server_data['ip_address']." - '".$wmi_services."'", - $output, - $rc - ); - } else { - exec( - 'ssh -p '.$server_data['port'].' pandora_exec_proxy@'.$server_data['ip_address']." - '".$wmi_services."'", - $output, - $rc - ); - } - } else { - exec($wmi_services, $output); - } - - foreach ($output as $index => $row) { - // First and second rows are Class and column names, ignore it. - if ($index < 2) { - continue; - } - - $row_exploded = explode('|', $row); - - if (!in_array($row_exploded[$services_name_field], $services)) { - if (preg_match('/ERROR/', $row_exploded[$services_name_field])) { - $services[$row_exploded[$services_name_field]] = __('None'); - } else { - $services[$row_exploded[$services_name_field]] = $row_exploded[$services_name_field]; - } - } - } - - unset($output); - - // Disks. - $wmi_disks = $wmi_command.' "Select DeviceID from Win32_LogicalDisk"'; - $disks_name_field = 0; - - if (enterprise_installed() && (int) $server_to_exec != 0) { - $server_data = db_get_row('tserver', 'id_server', $server_to_exec); - - if (empty($server_data['port'])) { - exec( - 'ssh pandora_exec_proxy@'.$server_data['ip_address']." - '".$wmi_disks."'", - $output, - $rc - ); - } else { - exec( - 'ssh -p '.$server_data['port'].' pandora_exec_proxy@'.$server_data['ip_address']." - '".$wmi_disks."'", - $output, - $rc - ); - } - } else { - exec($wmi_disks, $output); - } - - foreach ($output as $index => $row) { - // First and second rows are Class and column names, ignore it. - if ($index < 2) { - continue; - } - - $row_exploded = explode('|', $row); - - if (!in_array($row_exploded[$disks_name_field], $services)) { - if (preg_match('/ERROR/', $row_exploded[$disks_name_field])) { - $disks[$row_exploded[$disks_name_field]] = __('None'); - } else { - $disk_string = sprintf( - __('Free space on %s'), - $row_exploded[$disks_name_field] - ); - $disks[$row_exploded[$disks_name_field]] = $disk_string; - } - } - } - - unset($output); - - // WMI Components. - $network_component_groups = network_components_get_groups(MODULE_WMI); - } -} - -if ($create_modules) { - $modules = get_parameter('module', []); - - $services = []; - $processes = []; - $disks = []; - $components = []; - - foreach ($modules as $module) { - // Split module data to get type. - $module_exploded = explode('_', $module); - $type = $module_exploded[0]; - - // Delete type from module data. - unset($module_exploded[0]); - - // Rebuild module data. - $module = implode('_', $module_exploded); - - switch ($type) { - case 'service': - $services[] = $module; - break; - - case 'process': - $processes[] = $module; - break; - - case 'disk': - $disks[] = $module; - break; - - case 'component': - $components[] = $module; - break; - - default: - // Default. - break; - } - } - - // Common values for WMI modules. - $values = [ - 'ip_target' => $ip_target, - 'tcp_send' => $tcp_send, - 'plugin_user' => $plugin_user, - 'plugin_pass' => $plugin_pass, - 'id_modulo' => MODULE_WMI, - ]; - - if ($server_to_exec != 0) { - $sql = sprintf( - 'SELECT server_type FROM tserver WHERE id_server = %d', - $server_to_exec - ); - $row = db_get_row_sql($sql); - - if ($row['server_type'] == 13) { - $values['id_modulo'] = 1; - } - } - - // Create Service modules. - $services_values = $values; - - $services_values['snmp_community'] = 'Running'; - // Key string. - $services_values['tcp_port'] = 1; - // Field number (Running/Stopped). - $services_values['id_tipo_modulo'] = 2; - // Generic boolean. - $services_result = wmi_create_wizard_modules( - $id_agent, - $services, - 'services', - $services_values, - 0, - 0, - $server_to_exec - ); - - // Create Process modules. - $processes_values = $values; - - $processes_values['tcp_port'] = 0; - // Field number (OID). - $processes_values['id_tipo_modulo'] = 2; - // Generic boolean. - $processes_result = wmi_create_wizard_modules( - $id_agent, - $processes, - 'processes', - $processes_values, - 0, - 0, - $server_to_exec - ); - - // Create Space on disk modules. - $disks_values = $values; - - $disks_values['tcp_port'] = 1; - // Free space in bytes. - $disks_values['id_tipo_modulo'] = 1; - // Generic numeric. - $disks_values['unit'] = 'Bytes'; - // Unit. - $disks_result = wmi_create_wizard_modules( - $id_agent, - $disks, - 'disks', - $disks_values, - 0, - 0, - $server_to_exec - ); - - // Create modules from component. - $components_values = $values; - - $components_values['id_agente'] = $id_agent; - - $components_result = wmi_create_module_from_components( - $components, - $components_values, - 0, - 0, - $server_to_exec - ); - - - // Errors/Success messages. - $success_message = ''; - $error_message = ''; - if (!empty($services_result)) { - if (count($services_result[NOERR]) > 0) { - $success_message .= sprintf( - __('%s service modules created succesfully'), - count($services_result[NOERR]) - ).'
'; - } - - if (count($services_result[ERR_GENERIC]) > 0) { - $error_message .= sprintf( - __('Error creating %s service modules'), - count($services_result[ERR_GENERIC]) - ).'
'; - } - } - - if (!empty($processes_result)) { - if (count($processes_result[NOERR]) > 0) { - $success_message .= sprintf( - __('%s process modules created succesfully'), - count($processes_result[NOERR]) - ).'
'; - } - - if (count($processes_result[ERR_GENERIC]) > 0) { - $error_message .= sprintf( - __('Error creating %s process modules'), - count($processes_result[ERR_GENERIC]) - ).'
'; - } - } - - if (!empty($disks_result)) { - if (count($disks_result[NOERR]) > 0) { - $success_message .= sprintf( - __('%s disk space modules created succesfully'), - count($disks_result[NOERR]) - ).'
'; - } - - if (count($disks_result[ERR_GENERIC]) > 0) { - $error_message .= sprintf( - __('Error creating %s disk space modules'), - count($disks_result[ERR_GENERIC]) - ).'
'; - } - } - - if (!empty($components_result)) { - if (count($components_result[NOERR]) > 0) { - $success_message .= sprintf( - __('%s modules created from components succesfully'), - count($components_result[NOERR]) - ).'
'; - } - - if (count($components_result[ERR_GENERIC]) > 0) { - $error_message .= sprintf( - __('Error creating %s modules from components'), - count($components_result[ERR_GENERIC]) - ).'
'; - } - - if (count($components_result[ERR_EXIST]) > 0) { - $error_message .= sprintf( - __('%s modules already exist'), - count($components_result[ERR_EXIST]) - ).'
'; - } - } - - if (!empty($success_message)) { - ui_print_success_message($success_message); - } - - if (!empty($error_message)) { - ui_print_error_message($error_message); - } -} - -echo ''; -echo "
"; - -$table->width = '100%'; -$table->cellpadding = 0; -$table->cellspacing = 0; -$table->class = 'databox filters'; - -$table->data[0][0] = ''.__('Target IP').''; -$table->data[0][1] = html_print_input_text( - 'ip_target', - $ip_target, - '', - 15, - 60, - true -); - -$table->data[0][2] = ''.__('Namespace').''; -$table->data[0][3] = html_print_input_text( - 'tcp_send', - $tcp_send, - '', - 15, - 60, - true -); - -$table->data[1][0] = ''.__('Username').''; -$table->data[1][1] = html_print_input_text( - 'plugin_user', - $plugin_user, - '', - 15, - 60, - true -); - -$table->data[1][2] = ''.__('Password').''; -$table->data[1][3] = html_print_input_password( - 'plugin_pass', - $plugin_pass, - '', - 15, - 60, - true -); - -$table->data[1][3] .= ''; -html_print_input_hidden('wmiexplore', 1); - -$servers_to_exec = []; -$servers_to_exec[0] = __('Local console'); -if (enterprise_installed()) { - enterprise_include_once('include/functions_satellite.php'); - - $rows = get_proxy_servers(); - foreach ($rows as $row) { - if ($row['server_type'] != 13) { - $s_type = ' (Standard)'; - } else { - $s_type = ' (Satellite)'; - } - - $servers_to_exec[$row['id_server']] = $row['name'].$s_type; - } -} - -$table->data[2][0] = ''.__('Server to execute command').''.ui_print_help_icon('agent_snmp_explorer_tab', true); -$table->data[2][1] = html_print_select( - $servers_to_exec, - 'server_to_exec', - $server_to_exec, - '', - '', - '', - true -); - -html_print_table($table); - -echo "
"; -echo ''; -html_print_submit_button( - __('WMI Explore'), - 'wmi_explore', - false, - ['class' => 'sub next'] -); -echo '

'; - -if ($wmiexplore && $fail) { - ui_print_error_message(__('Unable to do WMI explorer')); -} - -unset($table); - -echo '
'; - -if ($wmiexplore && !$fail) { - echo '
'; - echo "
"; - echo ''; - - html_print_input_hidden('create_modules', 1); - html_print_input_hidden('ip_target', $ip_target); - // Host. - html_print_input_hidden('plugin_user', $plugin_user); - // User. - html_print_input_hidden('plugin_pass', $plugin_pass); - // Password. - html_print_input_hidden('tcp_send', $tcp_send); - // Namespace. - html_print_input_hidden('server_to_exec', $server_to_exec); - - $table->width = '100%'; - - // Mode selector. - $modes = []; - $modes['services'] = __('Services'); - $modes['processes'] = __('Processes'); - $modes['disks'] = __('Free space on disk'); - $modes['components'] = __('WMI components'); - - $table->data[1][0] = __('Wizard mode').': '; - $table->data[1][0] .= html_print_select( - $modes, - 'wmi_wizard_modes', - '', - '', - '', - '', - true, - false, - false - ); - $table->cellstyle[1][0] = 'vertical-align: middle;'; - - $table->colspan[1][0] = 2; - $table->data[1][2] = ''.__('Modules').''; - $table->cellstyle[1][2] = 'text-align: center;'; - - // Components list. - $table->data[2][0] = '
'; - $table->data[2][0] .= __('Filter by group').'
'; - $table->data[2][0] .= html_print_select( - $network_component_groups, - 'network_component_group', - '', - '', - '', - '', - true, - false, - false, - '', - false, - 'width: 300px;' - ).'
'; - $table->data[2][0] .= html_print_select( - [], - 'network_component', - '', - '', - '', - '', - true, - true, - true, - '', - false, - 'width: 300px;' - ); - $table->data[2][0] .= '
'; - - // Services list. - $table->data[2][0] .= '
'; - $table->data[2][0] .= html_print_select( - $services, - 'services', - '', - '', - '', - '', - true, - true, - true, - '', - false, - 'width: 300px;' - ); - $table->data[2][0] .= '
'; - // Processes list. - $table->data[2][0] .= '
'; - $table->data[2][0] .= html_print_select( - $processes, - 'processes', - '', - '', - '', - '', - true, - true, - true, - '', - false, - 'width: 300px;' - ); - $table->data[2][0] .= '
'; - $table->data[2][0] .= ''; - - // Disks list. - $table->data[2][0] .= '
'; - $table->data[2][0] .= html_print_select( - $disks, - 'disks', - '', - '', - '', - '', - true, - true, - true, - '', - false, - 'width: 300px;' - ); - $table->data[2][0] .= '
'; - $table->cellstyle[2][0] = 'vertical-align: bottom; text-align: center;'; - - - // Components arrow. - $table->data[2][1] = '
- '.html_print_image( - 'images/darrowright.png', - true, - ['title' => __('Add to modules list')] - ).'
'; - // Services arrow. - $table->data[2][1] .= '
- '.html_print_image( - 'images/darrowright.png', - true, - ['title' => __('Add to modules list')] - ).'
'; - // Processes arrow. - $table->data[2][1] .= '
- '.html_print_image( - 'images/darrowright.png', - true, - ['title' => __('Add to modules list')] - ).'
'; - // Disks arrow. - $table->data[2][1] .= '
- '.html_print_image( - 'images/darrowright.png', - true, - ['title' => __('Add to modules list')] - ).'
'; - - - $table->data[2][1] .= '

-
- '.html_print_image( - 'images/cross.png', - true, - ['title' => __('Remove from modules list')] - ).'
'; - $table->cellstyle[2][1] = 'vertical-align: middle; text-align: center;'; - - $table->data[2][2] = html_print_select( - [], - 'module[]', - 0, - false, - '', - 0, - true, - true, - true, - '', - false, - 'width:300px; height: 100%;' - ); - $table->data[2][2] .= html_print_input_hidden( - 'agent', - $id_agent, - true - ); - $table->cellstyle[2][2] = 'vertical-align: top; text-align: center;'; - - html_print_table($table); - - echo "
"; - html_print_submit_button( - __('Create modules'), - 'create_modules_btn', - false, - ['class' => 'sub add'] - ); - echo '
'; - unset($table); - - echo '
'; - echo '
'; - echo '
'; -} - -ui_require_jquery_file('pandora.controls'); -ui_require_jquery_file('ajaxqueue'); -ui_require_jquery_file('bgiframe'); -ui_require_javascript_file('pandora_modules'); - -?> - \ No newline at end of file diff --git a/pandora_console/godmode/agentes/configurar_agente.php b/pandora_console/godmode/agentes/configurar_agente.php index 0635e8e6be..1cd65a95db 100644 --- a/pandora_console/godmode/agentes/configurar_agente.php +++ b/pandora_console/godmode/agentes/configurar_agente.php @@ -1378,8 +1378,8 @@ if ($update_module || $create_module) { $ip_target = (string) get_parameter('ip_target'); // No autofill if the module is a webserver module. if ($ip_target == '' - && $id_module_type < MODULE_WEBSERVER_CHECK_LATENCY - && $id_module_type > MODULE_WEBSERVER_RETRIEVE_STRING_DATA + && $id_module_type < MODULE_TYPE_WEB_DATA + && $id_module_type > MODULE_TYPE_WEB_CONTENT_STRING ) { $ip_target = 'auto'; } diff --git a/pandora_console/godmode/modules/manage_network_components.php b/pandora_console/godmode/modules/manage_network_components.php index ed691af533..5cf871ad43 100644 --- a/pandora_console/godmode/modules/manage_network_components.php +++ b/pandora_console/godmode/modules/manage_network_components.php @@ -47,6 +47,40 @@ require_once $config['homedir'].'/include/functions_categories.php'; enterprise_include_once('meta/include/functions_components_meta.php'); require_once $config['homedir'].'/include/functions_component_groups.php'; +// Header. +if (defined('METACONSOLE')) { + components_meta_print_header(); + $sec = 'advanced'; + + $id_modulo = (int) get_parameter('id_component_type'); + $new_component = (bool) get_parameter('new_component'); +} else { + $id_modulo = (int) get_parameter('id_component_type'); + $new_component = (bool) get_parameter('new_component'); + if ($id_modulo == COMPONENT_TYPE_NETWORK || $id_modulo == COMPONENT_TYPE_PLUGIN || $id_modulo == COMPONENT_TYPE_WMI || $id_modulo == COMPONENT_TYPE_WIZARD) { + $help_header = 'local_module_tab'; + } else if (!$new_component) { + $help_header = 'network_component_tab'; + } else { + $help_header = 'network_component_tab'; + } + + ui_print_page_header( + __('Remote components'), + '', + false, + $help_header, + true, + '', + false, + 'modulemodal', + GENERIC_SIZE_TEXT, + '', + __('Configuration').' / '.__('Templates').' / '.__('Remote components') + ); + $sec = 'gmodules'; +} + $type = (int) get_parameter('type'); $name = (string) get_parameter('name'); $description = (string) get_parameter('description'); @@ -180,6 +214,68 @@ if ($duplicate_network_component) { $id = 0; } +// Wizard Common. +$module_enabled = get_parameter_switch('module_enabled'); +$module_protocol = get_parameter('module_protocol', 'snmp'); +$scan_type = (int) get_parameter('scan_type', SCAN_TYPE_FIXED); +$execution_type = (int) get_parameter('execution_type', EXECUTION_TYPE_NETWORK); +// Wizard SNMP. +$manufacturer_id = get_parameter('manufacturer_id'); +$name_oid = get_parameter('name_oid'); +$value = get_parameter('value_oid'); +// Other Wizard WMI fields. +$query_filter = ''; +$wmi_class = get_parameter('wmi_class'); +$query_key_field = get_parameter('query_key_field'); +// Enabled Module. +$enabled = get_parameter_switch('enabled'); + +if ($id_modulo === COMPONENT_TYPE_WIZARD) { + // Wizard Common extra fields. + $macros = []; + + $macros['satellite_execution'] = get_parameter('satellite_execution_'.$module_protocol); + $macros['value_operation'] = get_parameter('value_operation_'.$module_protocol); + $macros['server_plugin'] = get_parameter('server_plugin_'.$module_protocol); + + if ($module_protocol === 'snmp') { + // If not select any manufacturer_id, there is 'all'. + if (empty($manufacturer_id) === true) { + $manufacturer_id = 'all'; + } + } else if ($module_protocol === 'wmi') { + // Wizard WMI Query filters. + $query_filter = []; + $query_filter['scan'] = get_parameter('query_filter_scan'); + $query_filter['execution'] = get_parameter('query_filter_execution'); + $query_filter['field'] = get_parameter('field_value_filter'); + $query_filter['key_string'] = get_parameter('key_string_filter'); + $query_filter = json_encode($query_filter); + } + + // Default extra field. + $extra_fields = [ 'extra_field_1' => '' ]; + // If Plugin execution is selected. + if ($execution_type === EXECUTION_TYPE_PLUGIN || $module_protocol === 'wmi') { + // Search all parameters received with extra_fields. + foreach ($_REQUEST as $parameter => $thisValue) { + // Extra fields (OIDs Macros or WMI Extra fields) + if (preg_match('/extra_field_'.$module_protocol.'_/', $parameter) !== 0) { + $tmpParameter = explode('_', $parameter); + $extra_fields['extra_field_'.$tmpParameter[3]] = get_parameter($parameter); + } + + // The plugin macros. + if (preg_match('/'.$module_protocol.'_field/', $parameter) !== 0) { + $macros[$parameter] = io_safe_input($thisValue); + } + } + + // All of macros saved in the same array. + $macros = json_encode(array_merge($extra_fields, $macros)); + } +} + $custom_string_1 = ''; $custom_string_2 = ''; $custom_string_3 = ''; @@ -210,7 +306,7 @@ if (defined('METACONSOLE')) { $sec = 'gmodules'; } -if ($type >= 15 && $type <= 18) { +if ($type >= MODULE_TYPE_REMOTE_SNMP && $type <= MODULE_TYPE_REMOTE_SNMP_PROC) { // New support for snmp v3. $tcp_send = $snmp_version; $plugin_user = $snmp3_auth_user; @@ -219,7 +315,7 @@ if ($type >= 15 && $type <= 18) { $custom_string_1 = $snmp3_privacy_method; $custom_string_2 = $snmp3_privacy_pass; $custom_string_3 = $snmp3_security_level; -} else if ($type >= 34 && $type <= 37) { +} else if ($type >= MODULE_TYPE_REMOTE_CMD && $type <= MODULE_TYPE_REMOTE_CMD_INC) { $tcp_send = $command_text; $custom_string_1 = $command_credential_identifier; $custom_string_2 = $command_os; @@ -275,7 +371,6 @@ if ($create_component) { 'post_process' => $post_process, 'unit' => $unit, 'wizard_level' => $wizard_level, - 'macros' => $macros, 'critical_instructions' => $critical_instructions, 'warning_instructions' => $warning_instructions, 'unknown_instructions' => $unknown_instructions, @@ -289,6 +384,17 @@ if ($create_component) { 'min_ff_event_critical' => $ff_event_critical, 'ff_type' => $ff_type, 'each_ff' => $each_ff, + 'manufacturer_id' => $manufacturer_id, + 'protocol' => $module_protocol, + 'scan_type' => $scan_type, + 'execution_type' => $execution_type, + 'value' => $value, + 'query_class' => $wmi_class, + 'query_key_field' => $query_key_field, + 'query_filters' => $query_filter, + 'name_oid' => $name_oid, + 'module_enabled' => $module_enabled, + 'enabled' => $enabled, ] ); } else { @@ -298,9 +404,17 @@ if ($create_component) { if ($id === false || !$id) { db_pandora_audit( 'Module management', - 'Fail try to create network component' + 'Fail try to create remote component' ); - ui_print_error_message(__('Could not be created')); + + if ($name_check !== false) { + // If name exists, advice about it. + ui_print_error_message(__('Could not be created because the component exists')); + } else { + // Other cases. + ui_print_error_message(__('Could not be created')); + } + include_once 'godmode/modules/manage_network_components_form.php'; return; } @@ -356,7 +470,6 @@ if ($update_component) { 'post_process' => $post_process, 'unit' => $unit, 'wizard_level' => $wizard_level, - 'macros' => $macros, 'critical_instructions' => $critical_instructions, 'warning_instructions' => $warning_instructions, 'unknown_instructions' => $unknown_instructions, @@ -370,6 +483,17 @@ if ($update_component) { 'min_ff_event_critical' => $ff_event_critical, 'ff_type' => $ff_type, 'each_ff' => $each_ff, + 'manufacturer_id' => $manufacturer_id, + 'protocol' => $module_protocol, + 'scan_type' => $scan_type, + 'execution_type' => $execution_type, + 'value' => $value, + 'query_class' => $wmi_class, + 'query_key_field' => $query_key_field, + 'query_filters' => $query_filter, + 'name_oid' => $name_oid, + 'module_enabled' => $module_enabled, + 'enabled' => $enabled, ] ); } else { @@ -559,11 +683,6 @@ foreach ($component_groups as $component_group_key => $component_group_val) { ); } } - - // Only show component groups with local components. - if ($num_components == 0 && $num_components_childs == 0) { - unset($component_groups[$component_group_key]); - } } $table->data[0][1] = html_print_select( @@ -665,14 +784,16 @@ $table->head['checkbox'] = html_print_checkbox( false ); $table->head[0] = __('Module name'); -$table->head[1] = __('Type'); +$table->head[1] = __('Server'); +$table->head[2] = __('Type'); $table->head[3] = __('Description'); $table->head[4] = __('Group'); $table->head[5] = __('Max/Min'); $table->head[6] = __('Action'); $table->size = []; $table->size['checkbox'] = '20px'; -$table->size[1] = '75px'; +$table->size[1] = '40px'; +$table->size[2] = '50px'; $table->size[6] = '80px'; $table->align[6] = 'left'; $table->data = []; @@ -698,7 +819,6 @@ foreach ($components as $component) { $data[0] = ''; $data[0] .= io_safe_output($component['name']); $data[0] .= ''; - $data[1] = ui_print_moduletype_icon($component['type'], true); switch ($component['id_modulo']) { case MODULE_NETWORK: $data[1] .= html_print_image( @@ -724,11 +844,20 @@ foreach ($components as $component) { ); break; + case MODULE_WIZARD: + $data[1] .= html_print_image( + 'images/wand.png', + true, + ['title' => __('Wizard module')] + ); + break; + default: // Not possible. break; } + $data[2] = ui_print_moduletype_icon($component['type'], true); $data[3] = "".mb_strimwidth(io_safe_output($component['description']), 0, 60, '...').''; $data[4] = network_components_get_group_name($component['id_group']); $data[5] = $component['max'].' / '.$component['min']; @@ -777,9 +906,10 @@ echo '
'; html_print_input_hidden('new_component', 1); html_print_select( [ - 2 => __('Create a new network component'), - 4 => __('Create a new plugin component'), - 6 => __('Create a new WMI component'), + COMPONENT_TYPE_NETWORK => __('Create a new network component'), + COMPONENT_TYPE_PLUGIN => __('Create a new plugin component'), + COMPONENT_TYPE_WMI => __('Create a new WMI component'), + COMPONENT_TYPE_WIZARD => __('Create a new wizard component'), ], 'id_component_type', '', diff --git a/pandora_console/godmode/modules/manage_network_components_form.php b/pandora_console/godmode/modules/manage_network_components_form.php index 53a4edbed1..2a63068b8d 100644 --- a/pandora_console/godmode/modules/manage_network_components_form.php +++ b/pandora_console/godmode/modules/manage_network_components_form.php @@ -110,56 +110,69 @@ if ($create_network_from_module) { if (isset($id)) { $component = network_components_get_network_component((int) $id); if ($component !== false) { - $id_component_type = $component['id_modulo']; - $name = $component['name']; - $type = $component['type']; - $description = $component['description']; - $max = $component['max']; - $min = $component['min']; - $module_interval = $component['module_interval']; - $tcp_port = $component['tcp_port']; - $tcp_rcv = $component['tcp_rcv']; - $tcp_send = $component['tcp_send']; - $snmp_community = $component['snmp_community']; - $snmp_oid = $component['snmp_oid']; - $id_module_group = $component['id_module_group']; - $id_group = $component['id_group']; - $id_plugin = $component['id_plugin']; - $plugin_user = $component['plugin_user']; - $plugin_pass = io_output_password($component['plugin_pass']); - $plugin_parameter = $component['plugin_parameter']; - $macros = $component['macros']; - $max_timeout = $component['max_timeout']; - $max_retries = $component['max_retries']; - $dynamic_interval = $component['dynamic_interval']; - $dynamic_max = $component['dynamic_max']; - $dynamic_min = $component['dynamic_min']; - $dynamic_two_tailed = $component['dynamic_two_tailed']; - $min_warning = $component['min_warning']; - $max_warning = $component['max_warning']; - $str_warning = $component['str_warning']; - $max_critical = $component['max_critical']; - $min_critical = $component['min_critical']; - $str_critical = $component['str_critical']; - $ff_event = $component['min_ff_event']; - $history_data = $component['history_data']; - $post_process = $component['post_process']; - $unit = $component['unit']; - $wizard_level = $component['wizard_level']; - $critical_instructions = $component['critical_instructions']; - $warning_instructions = $component['warning_instructions']; - $unknown_instructions = $component['unknown_instructions']; - $critical_inverse = $component['critical_inverse']; - $warning_inverse = $component['warning_inverse']; - $id_category = $component['id_category']; - $tags = $component['tags']; - $ff_event_normal = $component['min_ff_event_normal']; - $ff_event_warning = $component['min_ff_event_warning']; - $ff_event_critical = $component['min_ff_event_critical']; - $ff_type = $component['ff_type']; - $each_ff = $component['each_ff']; + $id_component_type = $component['id_modulo']; + $name = $component['name']; + $type = $component['type']; + $description = $component['description']; + $max = $component['max']; + $min = $component['min']; + $module_interval = $component['module_interval']; + $tcp_port = $component['tcp_port']; + $tcp_rcv = $component['tcp_rcv']; + $tcp_send = $component['tcp_send']; + $snmp_community = $component['snmp_community']; + $snmp_oid = $component['snmp_oid']; + $id_module_group = $component['id_module_group']; + $id_group = $component['id_group']; + $id_plugin = $component['id_plugin']; + $plugin_user = $component['plugin_user']; + $plugin_pass = io_output_password($component['plugin_pass']); + $plugin_parameter = $component['plugin_parameter']; + $macros = $component['macros']; + $max_timeout = $component['max_timeout']; + $max_retries = $component['max_retries']; + $dynamic_interval = $component['dynamic_interval']; + $dynamic_max = $component['dynamic_max']; + $dynamic_min = $component['dynamic_min']; + $dynamic_two_tailed = $component['dynamic_two_tailed']; + $min_warning = $component['min_warning']; + $max_warning = $component['max_warning']; + $str_warning = $component['str_warning']; + $max_critical = $component['max_critical']; + $min_critical = $component['min_critical']; + $str_critical = $component['str_critical']; + $ff_event = $component['min_ff_event']; + $history_data = $component['history_data']; + $post_process = $component['post_process']; + $unit = $component['unit']; + $wizard_level = $component['wizard_level']; + $critical_instructions = $component['critical_instructions']; + $warning_instructions = $component['warning_instructions']; + $unknown_instructions = $component['unknown_instructions']; + $critical_inverse = $component['critical_inverse']; + $warning_inverse = $component['warning_inverse']; + $id_category = $component['id_category']; + $tags = $component['tags']; + $ff_event_normal = $component['min_ff_event_normal']; + $ff_event_warning = $component['min_ff_event_warning']; + $ff_event_critical = $component['min_ff_event_critical']; + $ff_type = $component['ff_type']; + $each_ff = $component['each_ff']; + $manufacturer_id = $component['manufacturer_id']; + $module_protocol = $component['protocol']; + $scan_type = $component['scan_type']; + $execution_type = $component['execution_type']; + $value = $component['value']; + $wmi_class = $component['query_class']; + $query_key_field = $component['query_key_field']; + $query_Key_wmi = $component['key_string']; + $name_oid = $component['name_oid']; + $value_oid = $component['value_oid']; + $query_filter = $component['query_filters']; + $module_enabled = $component['module_enabled']; + $enabled = $component['enabled']; - if ($type >= 15 && $type <= 18) { + if ($type >= MODULE_TYPE_REMOTE_SNMP && $type <= MODULE_TYPE_REMOTE_SNMP_PROC) { // New support for snmp v3. $snmp_version = $component['tcp_send']; $snmp3_auth_user = $component['plugin_user']; @@ -170,7 +183,7 @@ if (isset($id)) { $component['custom_string_2'] ); $snmp3_security_level = $component['custom_string_3']; - } else if ($type >= 34 && $type <= 37) { + } else if ($type >= MODULE_TYPE_REMOTE_CMD && $type <= MODULE_TYPE_REMOTE_CMD_INC) { $command_text = $component['tcp_send']; $command_credential_identifier = $component['custom_string_1']; $command_os = $component['custom_string_2']; @@ -192,7 +205,7 @@ if (isset($id)) { $tcp_send = ''; $snmp_community = ''; $id_module_group = ''; - if ($id_component_type == 6) { + if ($id_component_type == COMPONENT_TYPE_WMI) { $id_group = 14; } else { $id_group = ''; @@ -238,28 +251,67 @@ if (isset($id)) { $command_text = ''; $command_os = 'inherited'; $command_credential_identifier = ''; + + $macros = ''; + $manufacturer_id = ''; + $module_protocol = 'snmp'; + $scan_type = SCAN_TYPE_FIXED; + $execution_type = EXECUTION_TYPE_NETWORK; + $value = ''; + $wmi_class = ''; + $query_key_field = ''; + $query_Key_wmi = ''; + $name_oid = ''; + $value_oid = ''; + $query_filter = ''; + $module_enabled = true; + $enabled = true; } } $table = new stdClass(); -if ($id_component_type == 6) { + +/** + * Common function for adding rows to main table + * + * @param array $row Array with the data for add. + * @param mixed $id If added, the DOM id for this block. + * + * @return void + */ +function push_table_row($row, $id=false) +{ + global $table; + + if ($id) { + $data = [$id => $row]; + } else { + $data = [$row]; + } + + $table->data = array_merge($table->data, $data); +} + + +$remote_components_path = $config['homedir'].'/godmode/modules/'; +if ($id_component_type == COMPONENT_TYPE_WMI) { $categories = [ 0, 1, 2, ]; - include $config['homedir'].'/godmode/modules/manage_network_components_form_common.php'; - include $config['homedir'].'/godmode/modules/manage_network_components_form_wmi.php'; -} else if ($id_component_type == 4) { + include $remote_components_path.'manage_network_components_form_common.php'; + include $remote_components_path.'manage_network_components_form_wmi.php'; +} else if ($id_component_type == COMPONENT_TYPE_PLUGIN) { $categories = [ 0, 1, 2, ]; - include $config['homedir'].'/godmode/modules/manage_network_components_form_common.php'; - include $config['homedir'].'/godmode/modules/manage_network_components_form_plugin.php'; -} else if ($id_component_type == 2 || $create_network_from_module) { + include $remote_components_path.'manage_network_components_form_common.php'; + include $remote_components_path.'manage_network_components_form_plugin.php'; +} else if ($id_component_type == COMPONENT_TYPE_WIZARD) { $categories = [ 3, 4, @@ -269,8 +321,19 @@ if ($id_component_type == 6) { $categories[] = 10; } - include $config['homedir'].'/godmode/modules/manage_network_components_form_common.php'; - include $config['homedir'].'/godmode/modules/manage_network_components_form_network.php'; + include $remote_components_path.'manage_network_components_form_wizard.php'; +} else if ($id_component_type == COMPONENT_TYPE_NETWORK || $create_network_from_module) { + $categories = [ + 3, + 4, + 5, + ]; + if (enterprise_installed()) { + $categories[] = 10; + } + + include $remote_components_path.'manage_network_components_form_common.php'; + include $remote_components_path.'manage_network_components_form_network.php'; } else { return; } @@ -291,15 +354,10 @@ if (defined('METACONSOLE')) { $table->headstyle[0] = 'text-align: center'; } -$table->colspan['description'][1] = 3; -$data = []; -$data[0] = __('Description'); -$data[1] = html_print_textarea('description', 2, 65, $description, '', true); -push_table_row($data, 'description'); - html_print_table($table); echo '
'; +html_print_button(__('Go back'), 'go_back', false, 'history.go(-1);', 'class="sub cancel"'); html_print_input_hidden('id_component_type', $id_component_type); if ($id) { html_print_input_hidden('update_component', 1); diff --git a/pandora_console/godmode/modules/manage_network_components_form_common.php b/pandora_console/godmode/modules/manage_network_components_form_common.php index 7efe7f21ba..35c5648db2 100644 --- a/pandora_console/godmode/modules/manage_network_components_form_common.php +++ b/pandora_console/godmode/modules/manage_network_components_form_common.php @@ -23,23 +23,6 @@ if (! check_acl($config['id_user'], 0, 'PM') && ! check_acl($config['id_user'], return; } -include_javascript_d3(); - - -function push_table_row($row, $id=false) -{ - global $table; - - if ($id) { - $data = [$id => $row]; - } else { - $data = [$row]; - } - - $table->data = array_merge($table->data, $data); -} - - $table->id = 'network_component'; $table->width = '100%'; $table->class = 'databox'; @@ -323,7 +306,11 @@ $table->data[12][0] = __('Unknown instructions').ui_print_help_tip(__('Instructi $table->data[12][1] = html_print_textarea('unknown_instructions', 2, 65, $unknown_instructions, '', true); $table->colspan[12][1] = 3; -$next_row = 13; +$table->data[13][0] = __('Description'); +$table->data[13][1] = html_print_textarea('description', 2, 65, $description, '', true); +$table->colspan[13][1] = 3; + +$next_row = 14; if (check_acl($config['id_user'], 0, 'PM')) { $table->data[$next_row][0] = __('Category'); diff --git a/pandora_console/godmode/modules/manage_network_components_form_network.php b/pandora_console/godmode/modules/manage_network_components_form_network.php index 979b6d74b4..a266c2b363 100755 --- a/pandora_console/godmode/modules/manage_network_components_form_network.php +++ b/pandora_console/godmode/modules/manage_network_components_form_network.php @@ -187,8 +187,21 @@ $data[1] = html_print_extended_select_for_post_process( false, true ); -$data[2] = ''; -$data[3] = ''; + +$data[2] = __('Name OID').' '.ui_print_help_icon('xxx', true); +$data[3] = html_print_input_text_extended( + 'name_oid', + $name_oid, + 'name_oid', + '', + 30, + 10000, + '', + '', + '', + true +); + push_table_row($data, 'field_process'); // Advanced stuff. diff --git a/pandora_console/godmode/modules/manage_network_components_form_wizard.php b/pandora_console/godmode/modules/manage_network_components_form_wizard.php new file mode 100644 index 0000000000..c428e206f4 --- /dev/null +++ b/pandora_console/godmode/modules/manage_network_components_form_wizard.php @@ -0,0 +1,839 @@ + $field) { + // Avoid the not extra fields. + if (preg_match('/extra_field_/', $k) === 0) { + continue; + } else { + $cntFields++; + } + + // Get the number of extra field. + $tmpExtraField = explode('_', $k); + $idField = $tmpExtraField[2]; + + if ($protocol === 'snmp') { + $extraFieldText = '_oid_'.$idField.'_'; + $rowId = 'pluginRow-'.$protocol.'Row'; + } else if ($protocol === 'wmi') { + $extraFieldText = '_field_wmi_'.$idField.'_'; + $rowId = $protocol.'Row'; + } + + $data = []; + $data[0] = '
'.$extraFieldText.'
'; + $data[1] = html_print_input_text_extended( + 'extra_field_'.$protocol.'_'.$idField, + $field, + 'extra_field_'.$protocol.'_'.$idField, + '', + 100, + 10000, + '', + '', + '', + true + ); + + $table->colspan['oid-list-'.$rowId.'-row-'.$idField][1] = 3; + push_table_row($data, 'oid-list-'.$rowId.'-row-'.$idField); + } + + $data = []; + $image_add = html_print_div( + [ + 'id' => 'add_field_button', + 'class' => 'float-right clickable', + 'content' => html_print_image( + 'images/add.png', + true, + [ + 'title' => __('Add a macro oid'), + 'onclick' => 'manageComponentFields(\'add\', \'oid-list-'.$rowId.'\');', + ] + ), + ], + true + ); + + $image_del = html_print_div( + [ + 'id' => 'del_field_button', + 'class' => 'float-right', + 'style' => $cntFields <= 1 ? 'opacity: 0.5;' : '', + 'content' => html_print_image( + 'images/cross.png', + true, + [ + 'title' => __('Remove last macro oid'), + 'onclick' => 'manageComponentFields(\'del\', \'oid-list-'.$rowId.'\');', + 'style' => 'margin-left: 1em;', + ] + ), + ], + true + ); + + $data[0] = html_print_div( + [ + 'id' => 'combo_oid_button', + 'content' => $image_del.$image_add, + ], + true + ); + + push_table_row($data, 'manage-oid-list-'.$rowId); +} + + +// Get the data. +$module_type_list = [ + MODULE_TYPE_NUMERIC => __('Numeric'), + MODULE_TYPE_INCREMENTAL => __('Incremental'), + MODULE_TYPE_BOOLEAN => __('Boolean'), + MODULE_TYPE_ALPHANUMERIC => __('Alphanumeric'), +]; + +$module_protocol_list = [ + 'snmp' => 'SNMP', + 'wmi' => 'WMI', +]; + +$scan_type_list = [ + SCAN_TYPE_FIXED => 'Fixed', + SCAN_TYPE_DYNAMIC => 'Dynamic', +]; + +$execution_type_list = [ + EXECUTION_TYPE_NETWORK => 'Network', + EXECUTION_TYPE_PLUGIN => 'Plugin', +]; +// Establish module type value. +switch ($type) { + case MODULE_TYPE_REMOTE_SNMP: + case MODULE_TYPE_GENERIC_DATA: + $module_type = MODULE_TYPE_NUMERIC; + break; + + case MODULE_TYPE_REMOTE_SNMP_INC: + case MODULE_TYPE_GENERIC_DATA_INC: + $module_type = MODULE_TYPE_INCREMENTAL; + break; + + case MODULE_TYPE_REMOTE_SNMP_STRING: + case MODULE_TYPE_GENERIC_DATA_STRING: + $module_type = MODULE_TYPE_ALPHANUMERIC; + break; + + case MODULE_TYPE_REMOTE_SNMP_PROC: + case MODULE_TYPE_GENERIC_PROC: + $module_type = MODULE_TYPE_BOOLEAN; + break; + + default: + $module_type = MODULE_TYPE_NUMERIC; + break; +} + +if (empty($query_filter) === false) { + $query_filter = json_decode($query_filter, true); +} + +$component_group_list = network_components_get_groups(); + +// List of server plugins related with Wizard SNMP. +$server_plugin_data = []; +$server_plugin_list = []; +$plugins = db_get_all_rows_sql( + 'SELECT id, description, execute, name, macros, parameters FROM tplugin' +); +foreach ($plugins as $plugin) { + $server_plugin_list[$plugin['id']] = $plugin['name']; + $server_plugin_data[$plugin['id']] = [ + 'description' => $plugin['description'], + 'name' => $plugin['name'], + 'parameters' => $plugin['parameters'], + 'macros' => array_reverse(json_decode($plugin['macros'], true)), + 'execute' => $plugin['execute'], + 'macrosElement' => base64_encode(json_encode(io_safe_output(json_decode($macros, true)))), + ]; +} + +// Store the plugin data for JS managing in JSON format. +$hiddenPluginServers = ''; +foreach ($server_plugin_data as $index => $plugin) { + // Description can have special chars that would crash Javascript. + $plugin['description'] = mb_strimwidth(io_safe_output($plugin['description']), 0, 80, '...'); + $hiddenPluginServers .= html_print_input_hidden( + 'server_plugin_data_'.$index, + json_encode(io_safe_input($plugin)) + ); +} + +// Generate needed OID macros. +$extra_fields_names = []; +foreach ($extra_fields as $k => $field) { + $extra_fields_names[$k] = $module_protocol === 'snmp' ? '_oid_'.$k.'_' : $k; +} + +// Convert the string DB format of macros to JSON. +$macros = json_decode($macros); +// Only for extra field generate purposes. +if (empty($macros) === true) { + $macros = ['extra_field_1' => '']; +} + +// +// Construction of form. +// +$table->id = 'network_component'; +$table->width = '100%'; +$table->class = 'databox'; +$table->style = []; +$table->style[0] = 'font-weight: bold'; +$table->style[2] = 'font-weight: bold'; +$table->colspan = []; +if (!enterprise_installed()) { + $table->colspan[0][1] = 3; +} + +$table->data = []; + +$data = []; +$data[0] = __('Enabled'); +$data[1] = html_print_checkbox_switch( + 'enabled', + 1, + $enabled, + true, + false, + '', + false +); + +$data[2] = __('Add by default'); +$data[3] = html_print_checkbox_switch( + 'module_enabled', + 1, + $module_enabled, + true, + false, + '', + false +); + +push_table_row($data, 'module-enable-row'); + +$data = []; +$data[0] = __('Module name'); +$data[1] = html_print_input_text_extended( + 'name', + $name, + 'name', + '', + 50, + 255, + '', + '', + '', + true +); + +$data[2] = __('Module protocol'); +$data[3] = html_print_select( + $module_protocol_list, + 'module_protocol', + $module_protocol, + 'manageVisibleFields()', + '', + '', + true, + false, + false, + '' +).' '.html_print_image( + 'images/'.$module_protocol.'.png', + true, + [ + 'title' => strtoupper($module_protocol).' '.__('Protocol'), + 'class' => 'add_comments_button', + 'style' => 'width: 18px;', + 'id' => 'module_protocol_symbol', + ] +); +$type = 4; +$data[4] = html_print_input_hidden('type', $type, true); + +push_table_row($data, 'module-name-type-row'); + +$data = []; + +$data[0] = __('Name OID'); +$data[1] = html_print_input_text('name_oid', $name_oid, '', 50, 255, true); + +$data[2] = __('Manufacturer ID'); +$data[3] = html_print_select_from_sql( + 'SELECT manufacturer as `id`, manufacturer FROM tpen GROUP BY manufacturer', + 'manufacturer_id', + $manufacturer_id, + '', + 'All', + '', + true, + false, + false, + '' +); + +push_table_row($data, 'manufacturer-nameOID-snmpRow-row'); + +$data = []; + +$data[0] = __('Module type'); +$data[1] = html_print_select( + $module_type_list, + 'module_type', + $module_type, + 'changeModuleType()', + '', + '', + true, + false, + false, + '' +); + +$data[2] = __('Component Group'); +$data[3] = html_print_select( + $component_group_list, + 'id_group', + $id_group, + '', + '', + '', + true, + false, + false, + '' +); + +push_table_row($data, 'moduleType-blockName-row'); + +$data = []; + +$data[0] = __('Module unit'); +$data[1] = html_print_extended_select_for_unit( + 'unit', + $unit, + '', + '', + '0', + false, + true, + false, + false +); + +push_table_row($data, 'moduleUnit-blockName-row'); + +$data = []; +$data[0] = __('Warning'); +// Warning interval values. +$data[1] = ''; +$data[1] .= ''.__('Min.').' '; +$data[1] .= html_print_input_text('min_warning', $min_warning, '', 5, 15, true); +$data[1] .= '
'.__('Max.').' '; +$data[1] .= html_print_input_text('max_warning', $max_warning, '', 5, 15, true); +$data[1] .= '
'; +// Warning string values. +$data[1] .= ''.__('String').'  '; +$data[1] .= html_print_input_text('str_warning', $str_warning, '', 5, 1024, true).''; +// Warning inverse values. +$data[1] .= '
'.__('Inverse interval').' '; +$data[1] .= html_print_checkbox('warning_inverse', 1, $warning_inverse, true); + +$data[2] = ' '; +$table->colspan['warning-svg-row'][2] = 2; +$table->rowspan['warning-svg-row'][2] = 3; + +push_table_row($data, 'warning-svg-row'); + +$data = []; +$data[0] = __('Critical'); +// Critical interval values. +$data[1] = ''; +$data[1] .= ''.__('Min.').' '; +$data[1] .= html_print_input_text( + 'min_critical', + $min_critical, + '', + 5, + 15, + true +); +$data[1] .= '
'.__('Max.').' '; +$data[1] .= html_print_input_text( + 'max_critical', + $max_critical, + '', + 5, + 15, + true +); +$data[1] .= '
'; +// Critical string values. +$data[1] .= ''.__('String').'  '; +$data[1] .= html_print_input_text('str_critical', $str_critical, '', 5, 1024, true).''; +// Critical inverse values. +$data[1] .= '
'.__('Inverse interval').' '; +$data[1] .= html_print_checkbox('critical_inverse', 1, $critical_inverse, true); + +push_table_row($data, 'critical-row'); + +$data = []; +$data[0] = __('Description'); +$data[1] = html_print_textarea('description', 2, 65, $description, '', true); +$table->colspan['module-description-row'][1] = 3; + +push_table_row($data, 'module-description-row'); + +$data = []; +$data[0] = __('Scan Type'); +$data[1] = html_print_select( + $scan_type_list, + 'scan_type', + $scan_type, + '', + '', + '', + true, + false, + false, + '' +); + +$data[2] = __('Execution type'); +$data[3] = html_print_select( + $execution_type_list, + 'execution_type', + $execution_type, + 'manageVisibleFields()', + '', + '', + true, + false, + false, + '' +); + +push_table_row($data, 'scan-execution-row'); + +// +// SNMP rows. +// +$data = []; +$data[0] = __('Value OID'); +$data[1] = html_print_input_text_extended( + 'value_oid', + (string) $value, + 'value_oid', + '', + 100, + 10000, + '', + '', + '', + true +); +$table->colspan['value-oid-networkRow-snmpRow'][1] = 3; +push_table_row($data, 'value-oid-networkRow-snmpRow'); + +$data = []; +$data[0] = __('Macros OID'); + +push_table_row($data, 'title-oid-macros-pluginRow-snmpRow'); + +// Generation of extra fields needed. +generateExtraFields($macros, 'snmp'); + +$data = []; +$data[0] = __('Value operation'); +$data[1] = html_print_input_text_extended( + 'value_operation_snmp', + $macros->value_operation, + 'value_operation_snmp', + '', + 100, + 10000, + '', + '', + '', + true +); +$table->colspan['value-operation-pluginRow-snmpRow'][1] = 3; +push_table_row($data, 'value-operation-pluginRow-snmpRow'); + +$data = []; +$data[0] = __('Satellite execution'); +$data[1] = html_print_input_text_extended( + 'satellite_execution_snmp', + $macros->satellite_execution, + 'satellite_execution_snmp', + '', + 100, + 10000, + '', + '', + '', + true +); +$table->colspan['satellite-execution-pluginRow-snmpRow'][1] = 3; +push_table_row($data, 'satellite-execution-pluginRow-snmpRow'); + +$data = []; +$data[0] = __('Server plugin'); +$data[1] = html_print_select( + $server_plugin_list, + 'server_plugin_snmp', + $macros->server_plugin, + 'changePlugin()', + '', + '', + true, + false, + false, + '' +).'   '; + +push_table_row($data, 'server-plugin-pluginRow-snmpRow'); + +// The creation of this fields will be dynamically. +$data = []; +$data[0] = 'field0'; +$data[1] = html_print_input_text_extended( + 'field0_snmp_field', + '', + 'field0_snmp_fields', + '', + 30, + 255, + '', + '', + '', + true +); + +push_table_row($data, 'plugin-snmp-fields-dynamicMacroRow-pluginRow-snmpRow-0'); + +// +// WMI Fields. +// +$data = []; +$data[0] = __('WMI class'); +$data[1] = html_print_input_text_extended( + 'wmi_class', + $wmi_class, + 'wmi_class', + '', + 100, + 10000, + '', + '', + '', + true +); +$table->colspan['wmi-class-wmiRow'][1] = 3; +push_table_row($data, 'wmi-class-wmiRow'); + +$data = []; +$data[0] = __('Query key field').' (_field_wmi_0_)'; +$data[1] = html_print_input_text_extended( + 'query_key_field', + $query_key_field, + 'query_key_field', + '', + 100, + 10000, + '', + '', + '', + true +); +$table->colspan['query-key-field-wmiRow'][1] = 3; +push_table_row($data, 'query-key-field-wmiRow'); + +$data = []; +$data[0] = __('Query extra fields'); + +push_table_row($data, 'title-extra-field-wmiRow'); + +// Generation of extra fields needed. +generateExtraFields($macros, 'wmi'); + +$data = []; +$data[0] = __('Query filters'); +$table->style[0] = 'font-weight: bold;'; + +push_table_row($data, 'title-query-filters-wmiRow'); + +$data = []; +$data[0] = '
'.__('Scan').'
'; +$data[1] = html_print_input_text_extended( + 'query_filter_scan', + $query_filter['scan'], + 'query_filter_scan', + '', + 100, + 10000, + '', + '', + '', + true +); +$table->colspan['query-filter-scan-wmiRow'][1] = 3; +push_table_row($data, 'query-filter-scan-wmiRow'); + +if ($execution_type == EXECUTION_TYPE_NETWORK) { + $data = []; + $data[0] = '
'.__('Execution').'
'; + $data[1] = html_print_input_text_extended( + 'query_filter_execution', + $query_filter['execution'], + 'query_filter_execution', + '', + 100, + 10000, + '', + '', + '', + true + ); + $table->colspan['query-filter-execution-wmiRow'][1] = 3; + push_table_row($data, 'query-filter-execution-wmiRow'); +} + + +$data = []; +$data[0] = __('Field value'); +$data[1] = html_print_input_number( + [ + 'name' => 'field_value_filter', + 'value' => $query_filter['field'], + 'id' => 'field_value_filter', + 'min' => 0, + 'return' => true, + ] +); + +$data[2] = __('Key string'); +$data[3] = html_print_input_text_extended( + 'key_string_filter', + $query_filter['key_string'], + 'key_string_filter', + '', + 30, + 255, + '', + '', + '', + true +); + +push_table_row($data, 'filters-list-fields-networkRow-wmiRow'); + +$data = []; +$data[0] = __('Value operation'); +$data[1] = html_print_input_text_extended( + 'value_operation_wmi', + $macros->value_operation, + 'value_operation_wmi', + '', + 100, + 10000, + '', + '', + '', + true +); +$table->colspan['value-operation-pluginRow-wmiRow'][1] = 3; +push_table_row($data, 'value-operation-pluginRow-wmiRow'); + +$data = []; +$data[0] = __('Satellite execution'); +$data[1] = html_print_input_text_extended( + 'satellite_execution_wmi', + $macros->satellite_execution, + 'satellite_execution_wmi', + '', + 100, + 10000, + '', + '', + '', + true +); +$table->colspan['satellite-execution-pluginRow-wmiRow'][1] = 3; +push_table_row($data, 'satellite-execution-pluginRow-wmiRow'); + +$data = []; +$data[0] = __('Server plugin'); +$data[1] = html_print_select( + $server_plugin_list, + 'server_plugin_wmi', + $macros->server_plugin, + 'changePlugin()', + '', + '', + true, + false, + false, + '' +).'   '; + +push_table_row($data, 'server-plugin-pluginRow-wmiRow'); + +// The creation of this fields will be dynamically. +$data = []; +$data[0] = 'field0'; +$data[1] = html_print_input_text_extended( + 'field0_wmi_field', + '', + 'field0_wmi_fields', + '', + 30, + 255, + '', + '', + '', + true +); + +push_table_row($data, 'plugin-wmi-fields-dynamicMacroRow-pluginRow-wmiRow-0'); + +?> + + \ No newline at end of file diff --git a/pandora_console/include/class/AgentWizard.class.php b/pandora_console/include/class/AgentWizard.class.php index f638092930..ce8f07b787 100644 --- a/pandora_console/include/class/AgentWizard.class.php +++ b/pandora_console/include/class/AgentWizard.class.php @@ -29,8 +29,14 @@ // Get global data. global $config; -// Necessary class for extends. +// Necessary classes for extends. require_once $config['homedir'].'/include/class/HTML.class.php'; +require_once $config['homedir'].'/include/functions_snmp_browser.php'; +require_once $config['homedir'].'/include/functions_wmi.php'; + + +use PandoraFMS\Module; + /** * AgentWizard class */ @@ -58,6 +64,13 @@ class AgentWizard extends HTML */ private $idAgent; + /** + * Id of this current policy + * + * @var integer + */ + private $idPolicy; + /** * Wizard Section for Explore * @@ -75,15 +88,176 @@ class AgentWizard extends HTML /** * Type of action to do * - * @param string + * @var string */ private $actionType; + /** + * URL with the actual section + * + * @var string + */ + private $sectionUrl; + + /** + * Message to show + * + * @var array + */ + private $message; + + /** + * Is show message. + * + * @var boolean + */ + private $showMessage; + + /** + * Target ip. + * + * @var string + */ + private $targetIp; + + /** + * Target Port. + * + * @var string + */ + private $targetPort; + + /** + * SNMP Community. + * + * @var string + */ + private $community; + + /** + * SNMP Version. + * + * @var string + */ + private $version; + + /** + * Server to execute command. + * + * @var string + */ + private $server; + + /** + * Type Server to execute command. + * + * @var integer + */ + private $serverType; + + /** + * SNMP v3 Authentication User. + * + * @var string + */ + private $authUserV3; + + /** + * SNMP v3 Authentication Password. + * + * @var string + */ + private $authPassV3; + + /** + * SNMP v3 Authentication Method. + * + * @var string + */ + private $authMethodV3; + + /** + * SNMP v3 Security Level. + * + * @var string + */ + private $securityLevelV3; + + /** + * SNMP v3 Privacy Method. + * + * @var string + */ + private $privacyMethodV3; + + /** + * SNMP v3 Privacy Pass. + * + * @var string + */ + private $privacyPassV3; + + /** + * WMI Namespace + * + * @var string + */ + private $namespaceWMI; + + /** + * WMI Username + * + * @var string + */ + private $usernameWMI; + + /** + * WMI Password + * + * @var string + */ + private $passwordWMI; + + /** + * Private Enterprise Number name + * + * @var string + */ + private $penName; + + /** + * Interfaces found + * + * @var mixed + */ + private $interfacesFound; + + /** + * Protocol + * + * @var string + */ + private $protocol; + + /** + * WMI Command + * + * @var string + */ + private $wmiCommand; + + /** + * Results for SNMP or WMI queries + * + * @var mixed + */ + private $moduleBlocks; + /** * Constructor * - * @param string $ajax_controller Pues hace cosas to wapas. + * @param string $ajax_controller Path. */ public function __construct(string $ajax_controller) { @@ -98,7 +272,7 @@ class AgentWizard extends HTML 'Trying to access event viewer' ); - if (is_ajax()) { + if (is_ajax() === true) { echo json_encode(['error' => 'noaccess']); } @@ -106,12 +280,76 @@ class AgentWizard extends HTML exit; } - // Set baseUrl for use it in several locations in this class. - $this->baseUrl = ui_get_full_url('index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&tab=agent_wizard'); // Capture all parameters before start. - $this->ajaxController = $ajax_controller; - $this->wizardSection = get_parameter('wizard_section', ''); - $this->idAgent = get_parameter('id_agente', ''); + $this->ajaxController = $ajax_controller; + $this->wizardSection = get_parameter('wizard_section', 'snmp_explorer'); + $this->idAgent = get_parameter('id_agente', ''); + $this->idPolicy = get_parameter('id', ''); + $this->targetIp = get_parameter('targetIp', ''); + $this->server = (int) get_parameter('server', '1'); + if ($this->server !== 0) { + $this->serverType = (int) db_get_value( + 'server_type', + 'tserver', + 'id_server', + $this->server + ); + } + + // Capture the parameters. + $this->protocol = get_parameter('protocol'); + if ($this->protocol === 'snmp') { + $this->targetPort = get_parameter('targetPort', '161'); + $this->community = get_parameter('community', 'public'); + $this->version = get_parameter('version', '1'); + + // Only for SNMPv3. Catch only if is neccesary. + if ($this->version === '3') { + $this->authUserV3 = get_parameter( + 'authUserV3', + '' + ); + $this->authPassV3 = get_parameter( + 'authPassV3', + '' + ); + $this->authMethodV3 = get_parameter( + 'authMethodV3', + '' + ); + $this->securityLevelV3 = get_parameter('securityLevelV3', ''); + $this->privacyMethodV3 = get_parameter('privacyMethodV3', ''); + $this->privacyPassV3 = get_parameter('privacyPassV3', ''); + } + } else if ($this->protocol === 'wmi') { + $this->namespaceWMI = get_parameter('namespaceWMI', ''); + $this->usernameWMI = get_parameter('usernameWMI', ''); + $this->passwordWMI = get_parameter('passwordWMI', ''); + } + + // Set baseUrl for use it in several locations in this class. + if (empty($this->idPolicy) === true) { + $this->baseUrl = ui_get_full_url( + 'index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&tab=agent_wizard&id_agente='.$this->idAgent + ); + } else { + if (is_metaconsole() === true) { + $this->baseUrl = ui_get_full_url( + 'index.php?sec=gmodules&sec2=advanced/policymanager&tab=agent_wizard&id='.$this->idPolicy + ); + } else { + $this->baseUrl = ui_get_full_url( + 'index.php?sec=gmodules&sec2=enterprise/godmode/policies/policies&tab=agent_wizard&id='.$this->idPolicy + ); + } + } + + $this->sectionUrl = $this->baseUrl.'&wizard_section='.$this->wizardSection; + + $this->message['type'] = []; + $this->message['message'] = []; + $this->showMessage = false; + return $this; } @@ -128,14 +366,121 @@ class AgentWizard extends HTML ui_require_css_file('discovery'); // Javascript. - // ui_require_javascript_file('jquery.caret.min'); + $createModules = (bool) get_parameter('create-modules-action', false); + if ($createModules === true) { + $this->processModules(); + } else { + if ($this->protocol === 'snmp') { + $this->performSNMP(); + } else if ($this->protocol === 'wmi') { + $this->performWMI(); + } + } + + // Load main form. $this->loadMainForm(); - $this->performWizard(); - // Load integrated JS + + // Generate the box that allow messages + // (and show messages if needed). + $this->showMessage(); + + if ($this->showMessage === false) { + if ($createModules === false) { + // Show results if we perform any action. + if (empty($this->protocol) === false) { + if ($this->wizardSection === 'snmp_interfaces_explorer') { + if (empty($this->interfacesFound) === false) { + $this->resultsInterfaceWizard(); + } + } else { + $this->moduleBlocks = $this->getModuleBlocks(); + if ($this->moduleBlocks === false) { + $this->message['type'][] = 'info'; + $this->message['message'][] = __( + 'There are not defined Remote components for this performance.' + ); + $this->showMessage(); + } else { + if ($this->wizardSection === 'snmp_explorer') { + $this->resultsSNMPExplorerWizard(); + } else if ($this->wizardSection === 'wmi_explorer') { + $this->resultsWMIExplorerWizard(); + } + } + } + } + } + } + + // Lodaing div. + echo '
'; + + // Modal Div. + echo ''; + echo ''; + + // Load integrated JS. $this->loadJS(); } + /** + * Generate the message if needed + * + * @return void + */ + private function showMessage() + { + if (empty($this->message['type']) === false) { + $message_error = ''; + $message_success = ''; + foreach ($this->message['type'] as $keyMsg => $typeError) { + switch ($typeError) { + case 'error': + $message_error .= ($this->message['message'][$keyMsg] ?? 'Unknown error. Please, review the logs.'); + $message_error .= '

'; + break; + + case 'success': + $message_success .= ($this->message['message'][$keyMsg] ?? 'The action has did successfull'); + $message_success .= '

'; + break; + + case 'warning': + echo ui_print_warning_message( + $this->message['message'][$keyMsg] + ); + break; + + case 'info': + echo ui_print_info_message( + $this->message['message'][$keyMsg] + ); + break; + + default: + // Nothing to do. + break; + } + } + + if (empty($message_error) === false) { + echo ui_print_error_message($message_error); + } + + if (empty($message_success) === false) { + echo ui_print_success_message($message_success); + } + + $this->showMessage = true; + } + + // Clear the message info. + $this->message['type'] = []; + $this->message['message'] = []; + } + + /** * Common Main Wizard form * @@ -143,42 +488,40 @@ class AgentWizard extends HTML */ private function loadMainForm() { - // Define name of explorer button + // Fill with servers to perform the discover. + $fieldsServers = []; + $fieldsServers[0] = __('Local console'); + if (enterprise_installed()) { + enterprise_include_once('include/functions_satellite.php'); + // Get the servers. + $rows = get_proxy_servers(); + + // Check if satellite server has remote configuration enabled. + $satellite_remote = config_agents_has_remote_configuration( + $this->idAgent + ); + + // Generate a list with allowed servers. + if (isset($rows) === true && is_array($rows) === true) { + foreach ($rows as $row) { + if ($row['server_type'] == 13) { + $id_satellite = $row['id_server']; + $serverType = ' (Satellite)'; + } else { + $serverType = ' (Standard)'; + } + + $fieldsServers[$row['id_server']] = $row['name'].$serverType; + } + } + } + + // Set the labels and types. switch ($this->wizardSection) { case 'snmp_explorer': case 'snmp_interfaces_explorer': - // Define labels. $this->actionType = 'snmp'; $this->actionLabel = __('SNMP Walk'); - // Fill with servers to perform SNMP walk. - $fieldsServers = []; - $fieldsServers[0] = __('Local console'); - if (enterprise_installed()) { - enterprise_include_once('include/functions_satellite.php'); - // Get the servers. - $rows = get_proxy_servers(); - // Check if satellite server has remote configuration enabled. - $satellite_remote = config_agents_has_remote_configuration($this->idAgent); - // Generate a list with allowed servers. - foreach ($rows as $row) { - if ($row['server_type'] == 13) { - $id_satellite = $row['id_server']; - $serverType = ' (Satellite)'; - } else { - $serverType = ' (Standard)'; - } - - $fieldsServers[$row['id_server']] = $row['name'].$serverType; - } - } - - // Fill with SNMP versions allowed. - $fieldsVersions = [ - '1' => '1', - '2' => '2', - '2c' => '2c', - '3' => '3', - ]; break; case 'wmi_explorer': @@ -187,17 +530,16 @@ class AgentWizard extends HTML break; default: - $this->actionType = 'none'; - $this->actionLabel = __('Nothing'); + // Something goes wrong. exit; - break; } // Main form. + $this->sectionUrl = $this->baseUrl.'&wizard_section='.$this->wizardSection; + $form = [ - 'action' => '', - // 'action' => $this->baseUrl, - 'id' => 'main_wizard_form', + 'action' => $this->sectionUrl, + 'id' => 'form-main-wizard', 'method' => 'POST', ]; @@ -205,9 +547,9 @@ class AgentWizard extends HTML $inputs = []; $inputs[] = [ - 'id' => 'hdn-type-action', + 'id' => 'protocol', 'arguments' => [ - 'name' => 'type-action', + 'name' => 'protocol', 'type' => 'hidden', 'value' => $this->actionType, 'return' => true, @@ -216,117 +558,139 @@ class AgentWizard extends HTML $inputs[] = [ 'label' => __('Target IP'), - 'id' => 'txt-target-ip', + 'id' => 'txt-targetIp', 'arguments' => [ - 'name' => 'target-ip', + 'name' => 'targetIp', 'input_class' => 'flex-row', 'type' => 'text', 'class' => '', - 'return' => true, - ], - ]; - - $inputs[] = [ - 'label' => __('Port'), - 'id' => 'txt-target-port', - 'arguments' => [ - 'name' => 'target-port', - 'input_class' => 'flex-row', - 'type' => 'text', - 'size' => '20', - 'class' => '', + 'value' => $this->targetIp, 'return' => true, ], ]; if ($this->actionType === 'snmp') { $inputs[] = [ - 'label' => __('Use agent IP'), - 'id' => 'txt-use-agent-ip', + 'label' => __('Port'), + 'id' => 'txt-targetPort', 'arguments' => [ - 'name' => 'use-agent-ip', + 'name' => 'targetPort', 'input_class' => 'flex-row', - 'type' => 'checkbox', + 'type' => 'text', + 'size' => '20', 'class' => '', + 'value' => $this->targetPort, 'return' => true, ], ]; + + if (empty($this->idPolicy) === true) { + $inputs[] = [ + 'label' => __('Use agent IP'), + 'id' => 'txt-use-agent-ip', + 'arguments' => [ + 'name' => 'use-agent-ip', + 'input_class' => 'flex-row', + 'type' => 'checkbox', + 'class' => '', + 'return' => true, + ], + ]; + } } if ($this->actionType === 'wmi') { $inputs[] = [ - 'label' => __('Namespace'), - 'id' => 'txt-namespace', + 'label' => __('namespace'), + 'id' => 'txt-namespaceWMI', 'arguments' => [ - 'name' => 'namespace', + 'name' => 'namespaceWMI', 'input_class' => 'flex-row', 'type' => 'text', 'class' => '', + 'value' => $this->namespaceWMI, 'return' => true, ], ]; $inputs[] = [ 'label' => __('Username'), - 'id' => 'txt-username', + 'id' => 'txt-usernameWMI', 'arguments' => [ - 'name' => 'username', + 'name' => 'usernameWMI', 'input_class' => 'flex-row', 'type' => 'text', 'class' => '', + 'value' => $this->usernameWMI, 'return' => true, ], ]; $inputs[] = [ 'label' => __('Password'), - 'id' => 'txt-password', + 'id' => 'txt-passwordWMI', 'arguments' => [ - 'name' => 'password', + 'name' => 'passwordWMI', 'input_class' => 'flex-row', - 'type' => 'text', + 'type' => 'password', 'class' => '', + 'value' => $this->passwordWMI, 'return' => true, ], ]; } + $hint_server = ' '; + $hint_server .= ui_print_help_icon('agent_snmp_explorer_tab', true); $inputs[] = [ - 'label' => __('Server to execute command'), - 'id' => 'txt-target-port', + 'label' => __('Server to execute command').$hint_server, + 'id' => 'slc-server', 'arguments' => [ - 'name' => 'target-port', + 'name' => 'server', 'input_class' => 'flex-row', 'type' => 'select', 'fields' => $fieldsServers, 'class' => '', + 'selected' => $this->server, 'return' => true, + 'sort' => false, ], ]; if ($this->actionType === 'snmp') { $inputs[] = [ 'label' => __('SNMP community'), - 'id' => 'txt-snmp-community', + 'id' => 'txt-community', 'arguments' => [ - 'name' => 'snmp-community', + 'name' => 'community', 'input_class' => 'flex-row', 'type' => 'text', 'size' => '20', 'class' => '', + 'value' => $this->community, 'return' => true, ], ]; + // Fill with SNMP versions allowed. + $fieldsVersions = [ + '1' => '1', + '2' => '2', + '2c' => '2c', + '3' => '3', + ]; + $inputs[] = [ 'label' => __('SNMP version'), - 'id' => 'txt-snmnp-version', + 'id' => 'txt-version', 'arguments' => [ - 'name' => 'snmnp-version', + 'name' => 'version', 'input_class' => 'flex-row', 'type' => 'select', 'fields' => $fieldsVersions, + 'script' => 'showV3Form();', 'class' => '', + 'selected' => $this->version, 'return' => true, ], ]; @@ -335,20 +699,22 @@ class AgentWizard extends HTML $inputs[] = [ 'arguments' => [ 'label' => $this->actionLabel, - 'name' => 'action', + 'name' => 'sub-protocol', 'type' => 'submit', - 'attributes' => 'class="sub next" onclick="performAction();return false;"', + 'attributes' => 'class="sub next" onclick="$(\'#form-main-wizard\').submit();"', 'return' => true, ], ]; + // Prints main form. html_print_div( [ 'class' => 'white_box', 'content' => $this->printForm( [ - 'form' => $form, - 'inputs' => $inputs, + 'form' => $form, + 'inputs' => $inputs, + 'rawInputs' => '
    '.$this->snmpAuthenticationForm().'
', ], true ), @@ -358,219 +724,2511 @@ class AgentWizard extends HTML /** - * Undocumented function + * This form appears when activate SNMP v3 + * + * @return mixed + */ + public function snmpAuthenticationForm() + { + // Privacy method. + $privacyMethod = [ + 'AES' => 'AES', + 'DES' => 'DES', + ]; + // Authentication method. + $authenticationMethod = [ + 'MD5' => 'MD5', + 'SHA' => 'SHA', + ]; + // Security level. + $securityLevel = [ + 'authNoPriv' => 'Authenticated and non-private method', + 'authPriv' => 'Authenticated and private method', + 'noAuthNoPriv' => 'Non-authenticated and non-private method', + ]; + // Main form. + $form = [ + 'action' => '', + 'id' => 'form-snmp-authentication', + 'method' => 'POST', + ]; + // Inputs. + $inputs = []; + + $inputs[] = [ + 'label' => __('Security level'), + 'id' => 'slc-securityLevelV3', + 'arguments' => [ + 'name' => 'securityLevelV3', + 'input_class' => 'flex-row', + 'type' => 'select', + 'fields' => $securityLevel, + 'class' => '', + 'script' => 'showSecurityLevelForm();', + 'selected' => $this->securityLevelV3, + 'return' => true, + ], + ]; + + $inputs[] = [ + 'label' => __('User authentication'), + 'id' => 'txt-authUserV3', + 'arguments' => [ + 'name' => 'authUserV3', + 'input_class' => 'flex-row', + 'type' => 'text', + 'size' => '20', + 'class' => '', + 'value' => $this->authUserV3, + 'return' => true, + 'form' => 'form-main-wizard', + ], + ]; + + $inputs[] = [ + 'label' => __('Authentication method'), + 'id' => 'txt-authMethodV3', + 'arguments' => [ + 'name' => 'authMethodV3', + 'input_class' => 'flex-row', + 'type' => 'select', + 'fields' => $authenticationMethod, + 'class' => '', + 'selected' => $this->authMethodV3, + 'return' => true, + ], + ]; + + $inputs[] = [ + 'label' => __('Password authentication'), + 'id' => 'txt-authPassV3', + 'arguments' => [ + 'name' => 'authPassV3', + 'input_class' => 'flex-row', + 'type' => 'password', + 'size' => '20', + 'class' => '', + 'value' => $this->authPassV3, + 'return' => true, + 'form' => 'form-main-wizard', + ], + ]; + + $inputs[] = [ + 'label' => __('Privacy method'), + 'id' => 'txt-privacyMethodV3', + 'arguments' => [ + 'name' => 'privacyMethodV3', + 'input_class' => 'flex-row', + 'type' => 'select', + 'fields' => $privacyMethod, + 'class' => '', + 'selected' => $this->privacyMethodV3, + 'return' => true, + ], + ]; + + $inputs[] = [ + 'label' => __('Privacy pass'), + 'id' => 'txt-privacyPassV3', + 'arguments' => [ + 'name' => 'privacyPassV3', + 'type' => 'password', + 'size' => '20', + 'class' => '', + 'value' => $this->privacyPassV3, + 'return' => true, + 'form' => 'form-main-wizard', + ], + ]; + + // Output the form. + return html_print_div( + [ + 'id' => 'form-snmp-authentication-box', + 'class' => 'invisible', + 'style' => 'margin-top: 10px;', + 'content' => $this->printForm( + [ + 'form' => $form, + 'inputs' => $inputs, + ], + true + ), + ], + true + ); + + } + + + /** + * Perform a Interfaces SNMP Walk + * + * @param array $receivedOid Array with the raw oid info. * * @return void */ - public function performWizard() + public function performSNMPInterfaces($receivedOid) { - // echo json_encode(['error' => obhd($_REQUEST)]); - // exit; - $sql = sprintf( - 'SELECT npc.id_nc AS component_id, nc.name, nc.type, nc.description, nc.id_group AS `group`, ncg.name AS `group_name` - FROM tnetwork_profile_component AS npc, tnetwork_component AS nc - INNER JOIN tnetwork_component_group AS ncg ON ncg.id_sg = nc.id_group - WHERE npc.id_nc = nc.id_nc AND npc.id_np = %d', - 10 - ); - $moduleBlocks = db_get_all_rows_sql($sql); + // Create a list with the interfaces. + $interfaces = []; + foreach ($receivedOid as $keyOid => $nameOid) { + list($nameKey, $indexKey) = explode( + '.', + str_replace('IF-MIB::', '', $keyOid) + ); + list($typeValue, $value) = explode(': ', $nameOid); + // Set the name of interface. + $interfaces[$indexKey]['name'] = $value; + // Get the description. + $interfaces[$indexKey]['descr'] = $this->snmpgetValue( + '.1.3.6.1.2.1.2.2.1.2.'.$indexKey + ); + // Get the MAC address. + $interfaces[$indexKey]['mac'] = $this->snmpgetValue( + '.1.3.6.1.2.1.2.2.1.6.'.$indexKey + ); + // Get unicast IP address. + $interfaces[$indexKey]['ip'] = ''; + // Path for get the IPs (ipv4). + $snmpIpDiscover = '.1.3.6.1.2.1.4.34.1.4.1.4'; + $ipsResult = []; + // In this case we need the full information provided by snmpwalk. + $snmpwalkIps = sprintf( + 'snmpwalk -On -v%s -c %s %s %s', + $this->version, + $this->community, + $this->targetIp, + $snmpIpDiscover + ); + exec($snmpwalkIps, $ipsResult); + foreach ($ipsResult as $ipResult) { + list($ipOidDirection, $ipOidValue) = explode(' = ', $ipResult); + // Only catch the unicast records. + if ((preg_match('/unicast/', $ipOidValue) === 1)) { + $tmpIpOidDirection = str_replace( + $snmpIpDiscover, + '', + $ipOidDirection + ); + $snmpIpIndexDiscover = '.1.3.6.1.2.1.4.34.1.3.1.4'; + $snmpIpIndexDiscover .= $tmpIpOidDirection; + $snmpgetIpIndex = $this->snmpgetValue($snmpIpIndexDiscover); + // If this Ip index number match with the current index key. + if ($snmpgetIpIndex === $indexKey) { + $interfaces[$indexKey]['ip'] .= substr( + $tmpIpOidDirection, + 1 + ); + } + } else { + continue; + } + } + } - $blockTables = []; - // Build the information of the blocks. - foreach ($moduleBlocks as $block) { - if (key_exists($block['group'], $blockTables) === false) { - $blockTables[$block['group']] = [ - 'name' => $block['group_name'], - 'data' => [], - ]; + // Save the interfaces found for process later. + $this->interfacesFound = $interfaces; + } + + + /** + * Perform a General SNMP Walk + * + * @param array $receivedOid Array with the raw oid info. + * + * @return void + */ + public function performSNMPGeneral($receivedOid) + { + // Getting the Symbolic Name of the OID. + $symbolicName = explode('OID:', array_shift($receivedOid)); + // Translate the Symbolic Name to numeric OID. + $output_oid = ''; + exec('snmptranslate -On '.$symbolicName[1], $output_oid); + // The PEN is hosted in the seventh position. + $tmpPEN = explode('.', $output_oid[0]); + $pen = $tmpPEN[7]; + // Then look in DB if the PEN is registered. + $penFound = db_get_value('manufacturer', 'tpen', 'pen', $pen); + if ($penFound === false) { + // This PEN is not registered. Let's finish. + $this->message['type'][] = 'error'; + $this->message['message'][] = __( + 'The PEN (%s) is not registered.', + $pen + ); + return; + } else { + // Save the PEN for process later. + $this->penName = $penFound; + } + } + + + /** + * Let's do a SNMP Walk + * + * @return void + */ + public function performSNMP() + { + // If the target IP is empty, get it form the agent. + if (empty($this->targetIp) === true) { + $this->targetIp = db_get_value( + 'direccion', + 'tagente', + 'id_agente', + $this->idAgent + ); + } + + if ($this->wizardSection === 'snmp_interfaces_explorer') { + // Explore interface names. + $oidExplore = '.1.3.6.1.2.1.31.1.1.1.1'; + } else { + // Get the device PEN. + $oidExplore = '.1.3.6.1.2.1.1.2.0'; + } + + // Doc Interfaces de red. + $receivedOid = get_snmpwalk( + $this->targetIp, + $this->version, + $this->community, + $this->authUserV3, + $this->securityLevelV3, + $this->authMethodV3, + $this->authPassV3, + $this->privacyMethodV3, + $this->privacyPassV3, + 0, + $oidExplore, + $this->targetPort, + $this->server, + $this->extraArguments + ); + // The snmpwalk return information. + if (empty($receivedOid) === false) { + if ($this->wizardSection === 'snmp_interfaces_explorer') { + $this->performSNMPInterfaces($receivedOid); + } else { + $this->performSNMPGeneral($receivedOid); + } + } else { + // If the snmpwalk returns nothing, finish the execution. + $this->message['type'][] = 'error'; + $this->message['message'][] = __( + 'The SNMP Walk does not return anything with the received arguments.' + ); + } + } + + + /** + * Let's do a WMI Exploration + * + * @return void + */ + public function performWMI() + { + // DOC: Handling WMI Errors --> + // https://docs.microsoft.com/en-us/windows/win32/wmisdk/wmi-error-constants + // Capture the parameters. + // Call WMI Explorer function. + $this->wmiCommand = wmi_compose_query( + 'wmic', + $this->usernameWMI, + $this->passwordWMI, + $this->targetIp, + $this->namespaceWMI + ); + // Send basic query to target for check if + // the host is Windows (and allow WMI). + $commandQuery = $this->wmiCommand; + $commandQuery .= ' "SELECT Caption FROM Win32_ComputerSystem"'; + // Execute the wmic command. + $result = []; + exec($commandQuery, $result); + $execCorrect = true; + $tmpError = ''; + + // Look for the response if we have ERROR messages. + foreach ($result as $info) { + if (preg_match('/ERROR:/', $info) !== 0) { + $execCorrect = false; + $tmpError = strrchr($info, 'ERROR:'); + break; + } + } + + // FOUND ERRORS: TIMEOUT. + // [0] => [librpc/rpc/dcerpc_connect.c:790:dcerpc_pipe_connect_b_recv()] + // failed NT status (c00000b5) in dcerpc_pipe_connect_b_recv. + // [1] => [wmi/wmic.c:196:main()] ERROR: Login to remote object. + // If execution gone fine. + if ($execCorrect === true) { + $this->moduleBlocks = $this->getModuleBlocks(); + } else { + $this->message['type'][] = 'error'; + $this->message['message'][] = sprintf( + __('The target host response with an error: %s'), + $tmpError + ); + } + } + + + /** + * Show list with info modules at create. + * + * @return void + */ + public function listModulesToCreate() + { + $data = get_parameter('data', ''); + + $data = json_decode(io_safe_output($data), true); + + $data = array_reduce( + $data, + function ($carry, $item) { + $carry[$item['name']] = $item['value']; + return $carry; + }, + [] + ); + + $candidateModules = $this->candidateModuleToCreate($data); + $this->sectionUrl = $this->baseUrl.'&wizard_section='.$this->wizardSection; + + $form = [ + 'action' => $this->sectionUrl, + 'id' => 'reviewed-modules', + 'method' => 'POST', + 'class' => '', + 'extra' => '', + ]; + + $inputs = [ + [ + 'arguments' => [ + 'type' => 'hidden', + 'value' => json_encode($candidateModules), + 'return' => true, + 'name' => 'modules-definition', + ], + ], + ]; + + $inputs = array_merge($inputs, $this->getCommonDataInputs()); + + $content = HTML::printForm( + [ + 'form' => $form, + 'inputs' => $inputs, + ], + true + ); + + if (empty($candidateModules) === true) { + echo ui_print_error_message(__('No selected modules')); + return; + } + + $table = new StdClass(); + + $table->data = []; + $table->width = '100%'; + $table->class = 'info_table'; + + // Header section. + $table->head = []; + $table->head[0] = ''.__('Module Name').''; + $table->head[1] = ''.__('Server').''; + $table->head[2] = ''.__('Type').''; + $table->head[3] = ''.__('Description').''; + $table->head[4] = ''.__('Treshold').''; + + $table->data = []; + + $namesArray = []; + $data = []; + $i = 0; + + foreach ($candidateModules as $key => $module) { + if (isset($namesArray[$module['name']]) === false) { + $namesArray[$module['name']] = $module['name']; + + if (empty($this->idPolicy) === false) { + $sql = sprintf( + "SELECT id + FROM tpolicy_modules + WHERE id_policy = %d + AND `name` = '%s'", + $this->idPolicy, + io_safe_input($module['name']) + ); + $msgError = __('Module exist in policy'); + } else { + $sql = sprintf( + "SELECT id_agente_modulo + FROM tagente_modulo + WHERE id_agente = %d + AND nombre = '%s'", + $this->idAgent, + io_safe_input($module['name']) + ); + $msgError = __('Module exist in agent'); + } + + $existInDb = db_get_value_sql($sql); + } else { + $existInDb = true; + $msgError = __( + 'Module with the same name in the module creation list' + ); } - $blockTables[$block['group']]['data'][] = [ - 'component_id' => $block['component_id'], - 'name' => $block['name'], - 'type' => $block['type'], - 'description' => $block['description'], + $data[0] = $module['name']; + if ($existInDb !== false) { + $table->rowstyle[$i] = 'color:#ccc;'; + $data[0] .= ' '; + $data[0] .= html_print_image( + 'images/error.png', + true, + ['title' => $msgError] + ); + } + + if ($this->server !== 0) { + $this->serverType = (int) db_get_value( + 'server_type', + 'tserver', + 'id_server', + $this->server + ); + } + + // Img Server. + if ($this->serverType == SERVER_TYPE_ENTERPRISE_SATELLITE) { + $img_server = html_print_image( + 'images/satellite.png', + true, + ['title' => __('Enterprise Satellite server')] + ); + } else { + if ($module['execution_type'] == EXECUTION_TYPE_PLUGIN) { + $img_server = html_print_image( + 'images/plugin.png', + true, + ['title' => __('Plugin server')] + ); + } else { + if ($this->protocol === 'wmi') { + $img_server = html_print_image( + 'images/wmi.png', + true, + ['title' => __('WMI server')] + ); + } else { + $img_server = html_print_image( + 'images/network.png', + true, + ['title' => __('Network server')] + ); + } + } + } + + $data[1] = $img_server; + + $data[2] = \ui_print_moduletype_icon($module['moduleType'], true); + + $data[3] = mb_strimwidth( + io_safe_output($module['description']), + 0, + 150, + '...' + ); + + $data[4] = __('Warning').' '; + $data[4] .= $module['warningMin'].' / '.$module['warningMax']; + $data[4] .= '
'; + $data[4] .= __('Critical').' '; + $data[4] .= $module['criticalMin'].' / '.$module['criticalMax']; + + array_push($table->data, $data); + $i++; + } + + $content .= html_print_table($table, true); + + echo $content; + return; + } + + + /** + * Prepare data module to create. + * + * @param array $data Array Info module. + * + * @return array + */ + public function candidateModuleToCreate(array $data):array + { + $modulesActivated = []; + $generalInterface = false; + // Lets catch all values. + foreach ($data as $key => $value) { + if (empty(preg_match('/module-active/', $key)) === false + && (int) $value === 1 + ) { + $tmpModules = explode('-', $key); + + $keyData = $tmpModules[2].'-'.$tmpModules[3]; + + $modulesActivated[] = $keyData; + } else if (empty(preg_match('/interfaz_select_/', $key)) === false) { + $tmpInterfaces = explode('interfaz_select_', $key); + $interfaces[$tmpInterfaces[1]] = $tmpInterfaces[1]; + } else if (empty(preg_match('/box_enable_toggle/', $key)) === false) { + $generalInterface = true; + } else { + if (property_exists($this, $key) === true) { + // Reinitialize received values. + $this->{$key} = $value; + } + } + } + + $this->wizardSection = $data['wizard_section']; + + $result = []; + // Only section snmp interfaces explorer. + if ($data['wizard_section'] === 'snmp_interfaces_explorer') { + if (isset($interfaces) === true + && is_array($interfaces) === true + && empty($interfaces) === false + && isset($modulesActivated) === true + && is_array($modulesActivated) === true + && empty($modulesActivated) === false + ) { + foreach ($interfaces as $key => $value) { + $valueStr = preg_replace('/\//', '\/', $value); + foreach ($modulesActivated as $k => $v) { + if (preg_match('/^'.$valueStr.'_\d+-\d+$/', $v) == true) { + $tmp[$v] = $v; + } else if ($generalInterface === true + && preg_match('/^0_\d+-\d+$/', $v) == true + ) { + $id = preg_replace( + '/^0_/', + $value.'_', + $v + ); + $tmp[$id] = $id; + } + } + } + } else { + return $result; + } + + $modulesActivated = $tmp; + } + + foreach (array_keys($data) as $k) { + foreach ($modulesActivated as $key => $value) { + $valueStr = preg_replace('/\//', '\/', $value); + if (empty(preg_match('/'.$valueStr.'$/', $k)) === false) { + if (empty(preg_match('/module-name-set/', $k)) === false) { + $result[$value]['name'] = $data[$k]; + } else if (empty(preg_match('/module-description-set/', $k)) === false) { + $result[$value]['description'] = $data[$k]; + } + + if ($data['wizard_section'] === 'snmp_interfaces_explorer') { + if (isset($data['module-active-'.$key]) === false + || $data['module-active-'.$key] == 0 + ) { + if (empty(preg_match('/module-name-set/', $k)) === false) { + $result[$value]['name'] = $data['module-default_name-'.$key]; + } else if (empty(preg_match('/module-description-set/', $k)) === false) { + $result[$value]['description'] = $data['module-default_description-'.$key]; + } + + preg_match('/^(.*)-.*?_(\d-\d)$/', $k, $matches); + $k = $matches[1].'-0_'.$matches[2]; + } + } + + if (empty(preg_match('/module-warning-min/', $k)) === false) { + $result[$value]['warningMin'] = $data[$k]; + } else if (empty(preg_match('/module-warning-max/', $k)) === false) { + $result[$value]['warningMax'] = $data[$k]; + } else if (empty(preg_match('/module-critical-min/', $k)) === false) { + $result[$value]['criticalMin'] = $data[$k]; + } else if (empty(preg_match('/module-critical-max/', $k)) === false) { + $result[$value]['criticalMax'] = $data[$k]; + } else if (empty(preg_match('/module-critical-inv/', $k)) === false) { + $result[$value]['criticalInv'] = $data[$k]; + } else if (empty(preg_match('/module-warning-inv/', $k)) === false) { + $result[$value]['warningInv'] = $data[$k]; + } else if (empty(preg_match('/module-type/', $k)) === false) { + $result[$value]['moduleType'] = $data[$k]; + } else if (empty(preg_match('/module-unit/', $k)) === false) { + $result[$value]['unit'] = $data[$k]; + } else if (empty(preg_match('/module-scan_type/', $k)) === false) { + $result[$value]['scan_type'] = (int) $data[$k]; + } else if (empty(preg_match('/module-execution_type/', $k)) === false) { + $result[$value]['execution_type'] = (int) $data[$k]; + } else if (empty(preg_match('/module-value/', $k)) === false) { + $result[$value]['value'] = $data[$k]; + } else if (empty(preg_match('/module-macros/', $k)) === false) { + $result[$value]['macros'] = $data[$k]; + } else if (empty(preg_match('/module-name-oid/', $k)) === false) { + $result[$value]['nameOid'] = $data[$k]; + } else if (empty(preg_match('/module-query_class/', $k)) === false) { + $result[$value]['queryClass'] = $data[$k]; + } else if (empty(preg_match('/module-query_key_field/', $k)) === false) { + $result[$value]['queryKeyField'] = $data[$k]; + } else if (empty(preg_match('/module-scan_filters/', $k)) === false) { + $result[$value]['scanFilters'] = $data[$k]; + } else if (empty(preg_match('/module-query_filters/', $k)) === false) { + $result[$value]['queryFilters'] = $data[$k]; + } else { + $result[$value][$k] = $data[$k]; + } + } + } + } + + return $result; + } + + + /** + * Process the information received for modules creation + * + * @return void + */ + public function processModules() + { + $modulesCandidates = json_decode( + io_safe_output(get_parameter('modules-definition', [])), + true + ); + + if (json_last_error() !== JSON_ERROR_NONE) { + $this->message['type'][] = 'error'; + $this->message['message'][] = json_last_error_msg(); + return; + } + + if (empty($this->idPolicy) === false) { + $this->processModulesPolicy($modulesCandidates); + } else { + $this->processModulesAgents($modulesCandidates); + } + } + + + /** + * Process the information received for modules creation in this policy. + * + * @param array $modulesCandidates Modules for create. + * + * @return void + */ + public function processModulesPolicy(array $modulesCandidates) + { + $errorflag = false; + foreach ($modulesCandidates as $candidate) { + $sql = sprintf( + "SELECT id + FROM tpolicy_modules + WHERE id_policy = %d + AND `name` = '%s'", + $this->idPolicy, + io_safe_input($candidate['name']) + ); + + $existInDb = db_get_value_sql($sql); + + if ($existInDb !== false) { + $this->message['type'][] = 'error'; + $this->message['message'][] = __( + 'Module "%s" exits in this policy', + $candidate['name'] + ); + $errorflag = true; + continue; + } + + $value = []; + $values['name'] = io_safe_input($candidate['name']); + $values['description'] = io_safe_input($candidate['description']); + $values['unit'] = $candidate['unit']; + $values['id_tipo_modulo'] = $candidate['moduleType']; + $values['id_policy'] = $this->idPolicy; + $values['module_interval'] = 300; + + $nameTypeModule = modules_get_moduletype_name( + $candidate['moduleType'] + ); + + if ($this->protocol === 'snmp') { + if ($candidate['execution_type'] === 0 + || $candidate['execution_type'] === EXECUTION_TYPE_NETWORK + ) { + if ($this->serverType === SERVER_TYPE_ENTERPRISE_SATELLITE) { + $values['id_module'] = MODULE_DATA; + $values['module_interval'] = 1; + + $cf = "module_begin\n"; + $cf .= 'module_name '.$candidate['name']."\n"; + $cf .= 'module_type '.$nameTypeModule."\n"; + $cf .= "module_snmp\n"; + $cf .= 'module_version '.$this->version."\n"; + $cf .= 'module_oid '.$candidate['value']."\n"; + $cf .= 'module_community '.$this->community."\n"; + if ($this->version === '3') { + $cf .= 'module_seclevel '.$this->securityLevelV3."\n"; + $cf .= 'module_secname '.$this->authUserV3."\n"; + + if ($this->securityLevelV3 === 'authNoPriv' + || $this->securityLevelV3 === 'authPriv' + ) { + $cf .= 'module_authproto '.$this->authMethodV3."\n"; + $cf .= 'module_authpass '.$this->authPassV3."\n"; + if ($this->securityLevelV3 === 'authPriv') { + $cf .= 'module_privproto '.$this->privacyMethodV3."\n"; + $cf .= 'module_privpass '.$this->privacyPassV3."\n"; + } + } + } + + $cf .= 'module_end'; + $values['configuration_data'] = io_safe_input($cf); + } else { + $values['id_module'] = MODULE_NETWORK; + } + + $values['snmp_community'] = $this->community; + $values['tcp_send'] = $this->version; + $values['snmp_oid'] = $candidate['value']; + $values['tcp_port'] = $this->targetPort; + if ($this->version === '3') { + $values['custom_string_3'] = $this->securityLevelV3; + $values['plugin_user'] = $this->authUserV3; + if ($this->securityLevelV3 === 'authNoPriv' + || $this->securityLevelV3 === 'authPriv' + ) { + $values['plugin_parameter'] = $this->authMethodV3; + $values['plugin_pass'] = $this->authPassV3; + if ($this->securityLevelV3 === 'authPriv') { + $values['custom_string_1'] = $this->privacyMethodV3; + $values['custom_string_2'] = $this->privacyPassV3; + } + } + } + } else if ($candidate['execution_type'] === EXECUTION_TYPE_PLUGIN) { + $infoMacros = json_decode( + base64_decode($candidate['macros']), + true + ); + + if (isset($infoMacros['macros']) === false + || is_array($infoMacros['macros']) === false + ) { + $infoMacros['macros'] = []; + } + + if (isset($candidate['nameOid']) === true + && empty($candidate['nameOid']) === false + ) { + $infoMacros['macros']['_nameOID_'] = $candidate['nameOid']; + } + + if ($this->serverType === SERVER_TYPE_ENTERPRISE_SATELLITE) { + $values['module_interval'] = 1; + if (empty($infoMacros['satellite_execution']) === true) { + // Already defined. + $this->message['type'][] = 'error'; + $this->message['message'][] = __( + 'Module %s module_exec not configuration', + $candidate['name'] + ); + + $errorflag = true; + continue; + } + + $moduleExec = $this->replacementMacrosPlugin( + $infoMacros['satellite_execution'], + $infoMacros['macros'] + ); + + $values['id_module'] = MODULE_DATA; + $cfData = "module_begin\n"; + $cfData .= 'module_name '.$candidate['name']."\n"; + $cfData .= 'module_type '.$nameTypeModule."\n"; + $cfData .= 'module_exec '.io_safe_output($moduleExec)."\n"; + $cfData .= 'module_end'; + $values['configuration_data'] = io_safe_input($cfData); + } else { + $values['ip_target'] = '_address_'; + $values['id_module'] = MODULE_PLUGIN; + $fieldsPlugin = db_get_value_sql( + sprintf( + 'SELECT macros FROM tplugin WHERE id=%d', + (int) $infoMacros['server_plugin'] + ) + ); + + if ($fieldsPlugin !== false) { + $fieldsPlugin = json_decode($fieldsPlugin, true); + $i = 1; + foreach ($infoMacros as $key => $value) { + if (empty(preg_match('/_snmp_field/', $key)) === false) { + $new_macros = []; + foreach ($fieldsPlugin as $k => $v) { + if ($v['macro'] === preg_replace('/_snmp_field/', '', $key)) { + $fieldsPlugin[$k]['value'] = $this->replacementMacrosPlugin( + $value, + $infoMacros['macros'] + ); + $i++; + continue; + } + } + } + } + } + + $values['id_plugin'] = $infoMacros['server_plugin']; + $values['macros'] = json_encode($fieldsPlugin); + } + } + } else if ($this->protocol === 'wmi') { + if ($candidate['execution_type'] === EXECUTION_TYPE_NETWORK) { + // Generals fields. + $values['plugin_user'] = io_safe_input($this->usernameWMI); + $values['plugin_pass'] = io_safe_input($this->passwordWMI); + $values['tcp_send'] = io_safe_input($this->namespaceWMI); + + // Build query WMI. + $dataWMI = [ + 'query_class' => $candidate['queryClass'], + 'query_filters' => io_safe_output( + base64_decode( + $candidate['queryFilters'] + ) + ), + 'macros' => base64_decode( + $candidate['macros'] + ), + 'query_key_field' => $candidate['queryKeyField'], + ]; + + $candidate['wmi_query'] = $this->wmiQuery( + $dataWMI, + 'execution', + true + ); + + $queryFilters = json_decode( + base64_decode( + $candidate['queryFilters'] + ), + true + ); + + if ($this->serverType === SERVER_TYPE_ENTERPRISE_SATELLITE) { + $values['module_interval'] = 1; + $values['id_module'] = MODULE_DATA; + + $cfData = "module_begin\n"; + $cfData .= 'module_name '.$candidate['name']."\n"; + $cfData .= 'module_type '.$nameTypeModule."\n"; + $cfData .= "module_wmi\n"; + $cfData .= 'module_wmiquery '.$candidate['wmi_query']."\n"; + $cfData .= 'module_wmicolumn '.(isset($queryFilters['field']) === true) ? $queryFilters['field'] : (0)."\n"; + $cfData .= 'module_wmiauth '.$this->usernameWMI.'%'.$this->passwordWMI."\n"; + $cfData .= 'module_end'; + $values['configuration_data'] = io_safe_input($cfData); + } else { + $values['id_module'] = MODULE_WMI; + } + + $values['snmp_oid'] = io_safe_input( + $candidate['wmi_query'] + ); + + $values['tcp_port'] = (isset($queryFilters['field']) === true) ? $queryFilters['field'] : 0; + $values['snmp_community'] = (isset($queryFilters['key_string']) === true) ? $queryFilters['key_string'] : ''; + } else if ($candidate['execution_type'] === EXECUTION_TYPE_PLUGIN) { + $infoMacros = json_decode( + base64_decode($candidate['macros']), + true + ); + + if (isset($infoMacros['macros']) === false + || is_array($infoMacros['macros']) === false + ) { + $infoMacros['macros'] = []; + } + + if (isset($candidate['queryClass']) === true + && empty($candidate['queryClass']) === false + ) { + $infoMacros['macros']['_class_wmi_'] = $candidate['queryClass']; + } + + if (isset($candidate['queryKeyField']) === true + && empty($candidate['queryKeyField']) === false + ) { + $infoMacros['macros']['_field_wmi_0_'] = $candidate['queryKeyField']; + } + + if ($this->serverType === SERVER_TYPE_ENTERPRISE_SATELLITE) { + $values['module_interval'] = 1; + if (empty($infoMacros['satellite_execution']) === true) { + // Already defined. + $this->message['type'][] = 'error'; + $this->message['message'][] = __( + 'Module %s satellite execution not configuration', + $candidate['name'] + ); + $errorflag = true; + continue; + } + + $moduleExec = $this->replacementMacrosPlugin( + $infoMacros['satellite_execution'], + $infoMacros['macros'] + ); + + $values['id_module'] = MODULE_DATA; + $cfData = "module_begin\n"; + $cfData .= 'module_name '.$candidate['name']."\n"; + $cfData .= 'module_type '.$nameTypeModule."\n"; + $cfData .= 'module_exec '.io_safe_output($moduleExec)."\n"; + $cfData .= 'module_end'; + $values['configuration_data'] = io_safe_input($cfData); + } else { + $values['id_module'] = MODULE_PLUGIN; + $fieldsPlugin = db_get_value_sql( + sprintf( + 'SELECT macros FROM tplugin WHERE id=%d', + (int) $infoMacros['server_plugin'] + ) + ); + + if ($fieldsPlugin !== false) { + $fieldsPlugin = json_decode($fieldsPlugin, true); + $i = 1; + foreach ($infoMacros as $key => $value) { + if (empty(preg_match('/_wmi_field/', $key)) === false) { + $new_macros = []; + foreach ($fieldsPlugin as $k => $v) { + if ($v['macro'] === preg_replace('/_wmi_field/', '', $key)) { + $fieldsPlugin[$k]['value'] = $this->replacementMacrosPlugin( + $value, + $infoMacros['macros'] + ); + $i++; + continue; + } + } + } + } + } + + $values['id_plugin'] = $infoMacros['server_plugin']; + $values['macros'] = json_encode($fieldsPlugin); + } + + $values['ip_target'] = '_address_'; + $values['snmp_oid'] = io_safe_input( + $candidate['wmi_query'] + ); + } + } + + if (preg_match('/string/', $nameTypeModule) === true) { + // String module. + $values['str_warning'] = io_safe_input( + $candidate['warningMax'] + ); + $values['str_critical'] = io_safe_input( + $candidate['criticalMax'] + ); + } else { + // Numeric module. + $values['min_warning'] = $candidate['warningMin']; + $values['max_warning'] = $candidate['warningMax']; + $values['min_critical'] = $candidate['criticalMin']; + $values['max_critical'] = $candidate['criticalMax']; + } + + $values['warning_inverse'] = $candidate['warningInv']; + $values['critical_inverse'] = $candidate['criticalInv']; + + // Insert modules. + $result = policies_create_module( + $values['name'], + $this->idPolicy, + $values['id_module'], + $values + ); + + if ($result === false) { + $errorflag = true; + $this->message['type'][] = 'error'; + $this->message['message'][] = __( + 'Module "%s" problems insert in bbdd', + $candidate['name'] + ); + } + } + + if ($errorflag === false) { + $this->message['type'][] = 'success'; + $this->message['message'][] = __('Modules created'); + } + } + + + /** + * Process the information received for modules creation in this agent. + * + * @param array $modulesCandidates Modules for create. + * + * @return void + */ + public function processModulesAgents(array $modulesCandidates) + { + $modules = []; + $errorflag = false; + foreach ($modulesCandidates as $candidate) { + $tmp = Module::search( + [ + 'nombre' => io_safe_input($candidate['name']), + 'id_agente' => $this->idAgent, + ], + 1 + ); + + if ($tmp !== null) { + // Already defined. + $this->message['type'][] = 'error'; + $this->message['message'][] = __( + 'Module "%s" exits in this agent', + $candidate['name'] + ); + $errorflag = true; + continue; + } + + // Not found, it is new. + $tmp = new Module(); + $tmp->nombre(io_safe_input($candidate['name'])); + $tmp->descripcion(io_safe_input($candidate['description'])); + $tmp->unit($candidate['unit']); + $tmp->id_tipo_modulo($candidate['moduleType']); + $tmp->id_agente($this->idAgent); + $tmp->module_interval(agents_get_interval($this->idAgent)); + + if ($this->protocol === 'snmp') { + if ($candidate['execution_type'] === 0 + || $candidate['execution_type'] === EXECUTION_TYPE_NETWORK + ) { + if ($this->serverType === SERVER_TYPE_ENTERPRISE_SATELLITE) { + $tmp->module_interval(300); + $tmp->id_modulo(MODULE_DATA); + $tmp->updateConfigurationData( + 'module_name', + $candidate['name'] + ); + $tmp->updateConfigurationData( + 'module_type', + $tmp->moduleType()->nombre() + ); + $tmp->updateConfigurationData( + 'module_snmp', + $this->targetIp + ); + $tmp->updateConfigurationData( + 'module_version', + $this->version + ); + $tmp->updateConfigurationData( + 'module_oid', + $candidate['value'] + ); + $tmp->updateConfigurationData( + 'module_community', + $this->community + ); + + if ($this->version === '3') { + $tmp->updateConfigurationData( + 'module_seclevel', + $this->securityLevelV3 + ); + $tmp->updateConfigurationData( + 'module_secname', + $this->authUserV3 + ); + + if ($this->securityLevelV3 === 'authNoPriv' + || $this->securityLevelV3 === 'authPriv' + ) { + $tmp->updateConfigurationData( + 'module_authproto', + $this->authMethodV3 + ); + $tmp->updateConfigurationData( + 'module_authpass', + $this->authPassV3 + ); + if ($this->securityLevelV3 === 'authPriv') { + $tmp->updateConfigurationData( + 'module_privproto', + $this->privacyMethodV3 + ); + $tmp->updateConfigurationData( + 'module_privpass', + $this->privacyPassV3 + ); + } + } + } + } else { + $tmp->id_modulo(MODULE_NETWORK); + } + + $tmp->ip_target($this->targetIp); + $tmp->snmp_community($this->community); + $tmp->tcp_send($this->version); + $tmp->snmp_oid($candidate['value']); + $tmp->tcp_port($this->targetPort); + if ($this->version === '3') { + $tmp->custom_string_3($this->securityLevelV3); + $tmp->plugin_user($this->authUserV3); + if ($this->securityLevelV3 === 'authNoPriv' + || $this->securityLevelV3 === 'authPriv' + ) { + $tmp->plugin_parameter($this->authMethodV3); + $tmp->plugin_pass($this->authPassV3); + if ($this->securityLevelV3 === 'authPriv') { + $tmp->custom_string_1($this->privacyMethodV3); + $tmp->custom_string_2($this->privacyPassV3); + } + } + } + } else if ($candidate['execution_type'] === EXECUTION_TYPE_PLUGIN) { + $infoMacros = json_decode( + base64_decode($candidate['macros']), + true + ); + + if (isset($infoMacros['macros']) === false + || is_array($infoMacros['macros']) === false + ) { + $infoMacros['macros'] = []; + } + + if (isset($candidate['nameOid']) === true + && empty($candidate['nameOid']) === false + ) { + $infoMacros['macros']['_nameOID_'] = $candidate['nameOid']; + } + + if ($this->serverType === SERVER_TYPE_ENTERPRISE_SATELLITE) { + $tmp->module_interval(300); + $tmp->id_modulo(MODULE_DATA); + $tmp->updateConfigurationData( + 'module_name', + $candidate['name'] + ); + $tmp->updateConfigurationData( + 'module_type', + $tmp->moduleType()->nombre() + ); + + if (empty($infoMacros['satellite_execution']) === true) { + // Already defined. + $this->message['type'][] = 'error'; + $this->message['message'][] = __( + 'Module %s module_exec not configuration', + $candidate['name'] + ); + + $errorflag = true; + continue; + } + + $tmp->updateConfigurationData( + 'module_exec', + io_safe_output( + $this->replacementMacrosPlugin( + $infoMacros['satellite_execution'], + $infoMacros['macros'] + ) + ) + ); + } else { + $tmp->ip_target($this->targetIp); + $tmp->id_modulo(MODULE_PLUGIN); + $fieldsPlugin = db_get_value_sql( + sprintf( + 'SELECT macros FROM tplugin WHERE id=%d', + (int) $infoMacros['server_plugin'] + ) + ); + + if ($fieldsPlugin !== false) { + $fieldsPlugin = json_decode($fieldsPlugin, true); + $i = 1; + foreach ($infoMacros as $key => $value) { + if (empty(preg_match('/_snmp_field/', $key)) === false) { + $new_macros = []; + foreach ($fieldsPlugin as $k => $v) { + if ($v['macro'] === preg_replace('/_snmp_field/', '', $key)) { + $fieldsPlugin[$k]['value'] = $this->replacementMacrosPlugin( + $value, + $infoMacros['macros'] + ); + $i++; + continue; + } + } + } + } + } + + $tmp->id_plugin($infoMacros['server_plugin']); + $tmp->macros(json_encode($fieldsPlugin)); + } + } + } else if ($this->protocol === 'wmi') { + if ($candidate['execution_type'] === EXECUTION_TYPE_NETWORK) { + // Generals fields. + $tmp->plugin_user(io_safe_input($this->usernameWMI)); + $tmp->plugin_pass(io_safe_input($this->passwordWMI)); + $tmp->tcp_send(io_safe_input($this->namespaceWMI)); + $tmp->ip_target(io_safe_input($this->targetIp)); + + // Build query WMI. + $dataWMI = [ + 'query_class' => $candidate['queryClass'], + 'query_filters' => io_safe_output( + base64_decode( + $candidate['queryFilters'] + ) + ), + 'macros' => base64_decode( + $candidate['macros'] + ), + 'query_key_field' => $candidate['queryKeyField'], + ]; + + $candidate['wmi_query'] = $this->wmiQuery( + $dataWMI, + 'execution', + true + ); + + $queryFilters = json_decode( + base64_decode( + $candidate['queryFilters'] + ), + true + ); + + if ($this->serverType === SERVER_TYPE_ENTERPRISE_SATELLITE) { + $tmp->module_interval(300); + $tmp->id_modulo(MODULE_DATA); + $tmp->updateConfigurationData( + 'module_name', + $candidate['name'] + ); + $tmp->updateConfigurationData( + 'module_type', + $tmp->moduleType()->nombre() + ); + $tmp->updateConfigurationData( + 'module_wmi', + $this->targetIp + ); + $tmp->updateConfigurationData( + 'module_wmiquery', + $candidate['wmi_query'] + ); + $tmp->updateConfigurationData( + 'module_wmiauth', + $this->usernameWMI.'%'.$this->passwordWMI + ); + $tmp->updateConfigurationData( + 'module_wmicolumn', + (isset($queryFilters['field']) === true) ? $queryFilters['field'] : 0 + ); + } else { + $tmp->id_modulo(MODULE_WMI); + } + + $tmp->snmp_oid(io_safe_input($candidate['wmi_query'])); + + $tmp->tcp_port( + (isset($queryFilters['field']) === true) ? $queryFilters['field'] : 0 + ); + + $tmp->snmp_community( + (isset($queryFilters['key_string']) === true) ? $queryFilters['key_string'] : '' + ); + } else if ($candidate['execution_type'] === EXECUTION_TYPE_PLUGIN) { + $infoMacros = json_decode( + base64_decode($candidate['macros']), + true + ); + + if (isset($infoMacros['macros']) === false + || is_array($infoMacros['macros']) === false + ) { + $infoMacros['macros'] = []; + } + + if (isset($candidate['queryClass']) === true + && empty($candidate['queryClass']) === false + ) { + $infoMacros['macros']['_class_wmi_'] = $candidate['queryClass']; + } + + if (isset($candidate['queryKeyField']) === true + && empty($candidate['queryKeyField']) === false + ) { + $infoMacros['macros']['_field_wmi_0_'] = $candidate['queryKeyField']; + } + + if ($this->serverType === SERVER_TYPE_ENTERPRISE_SATELLITE) { + $tmp->module_interval(300); + $tmp->id_modulo(MODULE_DATA); + $tmp->updateConfigurationData( + 'module_name', + $candidate['name'] + ); + $tmp->updateConfigurationData( + 'module_type', + $tmp->moduleType()->nombre() + ); + + if (empty($infoMacros['satellite_execution']) === true) { + // Already defined. + $this->message['type'][] = 'error'; + $this->message['message'][] = __( + 'Module %s satellite execution not configuration', + $candidate['name'] + ); + $errorflag = true; + continue; + } + + $tmp->updateConfigurationData( + 'module_exec', + io_safe_output( + $this->replacementMacrosPlugin( + $infoMacros['satellite_execution'], + $infoMacros['macros'] + ) + ) + ); + } else { + $tmp->id_modulo(MODULE_PLUGIN); + $fieldsPlugin = db_get_value_sql( + sprintf( + 'SELECT macros FROM tplugin WHERE id=%d', + (int) $infoMacros['server_plugin'] + ) + ); + + if ($fieldsPlugin !== false) { + $fieldsPlugin = json_decode($fieldsPlugin, true); + $i = 1; + foreach ($infoMacros as $key => $value) { + if (empty(preg_match('/_wmi_field/', $key)) === false) { + $new_macros = []; + foreach ($fieldsPlugin as $k => $v) { + if ($v['macro'] === preg_replace('/_wmi_field/', '', $key)) { + $fieldsPlugin[$k]['value'] = $this->replacementMacrosPlugin( + $value, + $infoMacros['macros'] + ); + $i++; + continue; + } + } + } + } + } + + $tmp->id_plugin($infoMacros['server_plugin']); + $tmp->macros(json_encode($fieldsPlugin)); + } + + $tmp->ip_target(io_safe_input($this->targetIp)); + $tmp->snmp_oid(io_safe_input($candidate['wmi_query'])); + } + } + + if (preg_match('/string/', $tmp->moduleType()->nombre()) === true) { + // String module. + $tmp->str_warning(io_safe_input($candidate['warningMax'])); + $tmp->str_critical(io_safe_input($candidate['criticalMax'])); + } else { + // Numeric module. + $tmp->min_warning($candidate['warningMin']); + $tmp->max_warning($candidate['warningMax']); + $tmp->min_critical($candidate['criticalMin']); + $tmp->max_critical($candidate['criticalMax']); + } + + $tmp->warning_inverse($candidate['warningInv']); + $tmp->critical_inverse($candidate['criticalInv']); + + // Insert modules. + try { + $res = $tmp->save(); + } catch (\Exception $e) { + $errorflag = true; + $this->message['type'][] = 'error'; + $this->message['message'][] = $e->getMessage(); + } + } + + if ($errorflag === false) { + $this->message['type'][] = 'success'; + $this->message['message'][] = __('Modules created'); + } + } + + + /** + * Replacement macros. + * + * @param string $text String. + * @param array $macros Macros for replacement. + * + * @return string Retun string to replacement. + */ + private function replacementMacrosPlugin( + string $text, + array $macros + ):string { + // Only agents. + if (empty($this->idPolicy) === true) { + // Common. + $text = preg_replace('/_address_/', $this->targetIp, $text); + } + + // WMI. + $text = preg_replace('/_user_wmi_/', $this->usernameWMI, $text); + $text = preg_replace('/_namespace_wmi_/', $this->namespaceWMI, $text); + $text = preg_replace('/_pass_wmi_/', $this->passwordWMI, $text); + + // SNMP. + $text = preg_replace('/_port_/', $this->targetPort, $text); + $text = preg_replace('/_version_/', $this->version, $text); + $text = preg_replace('/_community_/', $this->community, $text); + $text = preg_replace('/_auth_user_/', $this->authUserV3, $text); + $text = preg_replace('/_auth_pass_/', $this->authPassV3, $text); + $text = preg_replace('/_auth_method_/', $this->authMethodV3, $text); + $text = preg_replace('/_priv_method_/', $this->privacyMethodV3, $text); + $text = preg_replace('/_priv_pass_/', $this->privacyPassV3, $text); + $text = preg_replace('/_sec_level_/', $this->securityLevelV3, $text); + + // Dinamic. + if (empty($macros) === false) { + foreach ($macros as $key => $value) { + $text = preg_replace('/'.$key.'/', $value, $text); + } + } + + return $text; + } + + + /** + * Value with unit. + * + * @param string|null $value Value. + * @param string|null $unit Type unit. + * @param integer|null $moduleType Type Module. + * + * @return string + */ + private function replacementUnit( + ?string $value, + ?string $unit='', + ?int $moduleType=0 + ):string { + if ($moduleType !== MODULE_TYPE_REMOTE_SNMP_INC + && $moduleType !== MODULE_TYPE_GENERIC_DATA_INC + && $moduleType !== MODULE_TYPE_REMOTE_TCP_INC + && $moduleType !== MODULE_TYPE_REMOTE_CMD_INC + ) { + if ($unit === '_timeticks_') { + preg_match('/\((\d+?)\)/', $value, $match); + if (isset($match[1]) === true) { + $value = human_milliseconds_to_string($match[1]); + } else { + $value = human_milliseconds_to_string($value); + } + } else if (empty($unit) === false && $unit !== 'none') { + $value .= ' '.$unit; + } + } + + return $value; + } + + + /** + * Perform Interface Wizard and show a table with results. + * + * @return void + */ + private function resultsInterfaceWizard() + { + $generalInterfaceModules = $this->getInterfacesModules(); + $generalInterfaceTables = []; + $generalInterfaceModulesUpdated = []; + $component_id_number = 0; + foreach ($generalInterfaceModules as $moduleIndex => $moduleData) { + if ($this->serverType === SERVER_TYPE_ENTERPRISE_SATELLITE) { + if ($moduleData['module_type'] == MODULE_TYPE_REMOTE_SNMP) { + $moduleData['module_type'] = MODULE_TYPE_GENERIC_DATA; + } else if ($moduleData['module_type'] == MODULE_TYPE_REMOTE_SNMP_PROC) { + $moduleData['module_type'] = MODULE_TYPE_GENERIC_PROC; + } else if ($moduleData['module_type'] == MODULE_TYPE_REMOTE_SNMP_INC) { + $moduleData['module_type'] = MODULE_TYPE_GENERIC_DATA_INC; + } else if ($moduleData['module_type'] == MODULE_TYPE_REMOTE_SNMP_STRING) { + // MODULE_TYPE_REMOTE_SNMP_STRING. + $moduleData['module_type'] = MODULE_TYPE_GENERIC_DATA_STRING; + } + } + + // Get current value. + $currentValue = $this->snmpgetValue($moduleData['value']); + // It unit of measure have data, attach to current value. + if (empty($moduleData['module_unit']) === false) { + $currentValue .= ' '.$moduleData['module_unit']; + } + + // Stablish the data for show. + $generalInterfaceModulesUpdated[] = [ + 'component_id' => $component_id_number++, + 'name' => $moduleData['module_name'], + 'type' => $moduleData['module_type'], + 'description' => $moduleData['module_info'], + 'min_warning' => $moduleData['module_thresholds']['min_warning'], + 'max_warning' => $moduleData['module_thresholds']['max_warning'], + 'inv_warning' => $moduleData['module_thresholds']['inv_warning'], + 'min_critical' => $moduleData['module_thresholds']['min_critical'], + 'max_critical' => $moduleData['module_thresholds']['max_critical'], + 'inv_critical' => $moduleData['module_thresholds']['inv_critical'], + 'module_enabled' => $moduleData['default_enabled'], + 'name_oid' => $moduleData['value'], + 'value' => $moduleData['value'], ]; } - // Lets generate the block tables. - $output = ''; - foreach ($blockTables as $id_group => $blockTable) { - // Data with all components. - $blockData = $blockTable['data']; - // Creation of list of all components. - $blockComponentList = ''; - foreach ($blockData as $component) { - $blockComponentList .= $component['component_id'].','; - } + $generalInterfaceTables[0]['data'] = $generalInterfaceModulesUpdated; - $blockComponentList = chop($blockComponentList, ','); - // Title of Block. - $blockTitle = $blockTable['name']; - $blockTitle .= html_print_div( + // General Default monitoring. + html_print_div( + [ + 'class' => 'wizard wizard-result', + 'style' => 'margin-top: 20px;', + 'content' => $this->toggleTableModules( + $generalInterfaceTables, + false, + true, + true + ), + ] + ); + + // Interface filter. + $form = [ + 'action' => $this->sectionUrl, + 'id' => 'form-filter-interfaces', + 'method' => 'POST', + 'class' => 'modal flex flex-row', + 'extra' => '', + ]; + // Inputs. + $inputs = []; + + $inputs[] = [ + 'direct' => 1, + 'class' => 'select-interfaces', + 'block_content' => [ [ - 'class' => 'white_table_header_checkbox', - 'content' => html_print_checkbox_switch_extended( - 'sel_block_'.$id_group, - 1, - 0, - false, - 'switchBlockControl(event)', - '', - true - ), + 'label' => __('Select all filtered interfaces'), + 'arguments' => [ + 'name' => 'select-all-interfaces', + 'type' => 'switch', + 'class' => '', + 'return' => true, + 'value' => 1, + 'onclick' => 'switchBlockControlInterfaces(this);', + ], ], + ], + ]; + + $inputs[] = [ + 'direct' => 1, + 'block_content' => [ + [ + 'label' => __('Search'), + 'id' => 'txt-filter-search', + 'arguments' => [ + 'name' => 'filter-search', + 'type' => 'text', + 'class' => '', + 'return' => true, + ], + ], + ], + ]; + + // Print the filter form. + $filterForm = $this->printForm( + [ + 'form' => $form, + 'inputs' => $inputs, true - ); - - $table = new StdClasS(); - $table->class = 'databox data'; - $table->width = '75%'; - $table->styleTable = 'margin: 2em auto 0;border: 1px solid #ddd;background: white;'; - $table->rowid = []; - $table->data = []; - - $table->cellpadding = 0; - $table->cellspacing = 0; - $table->width = '100%'; - $table->class = 'info_table'; - - $table->head = []; - $table->head[0] = html_print_div(['style' => 'font-weight:700;', 'content' => __('Module Name')], true); - $table->head[1] = html_print_div(['style' => 'font-weight:700;text-align:center;', 'content' => __('Type')], true); - $table->head[2] = html_print_div(['style' => 'font-weight:700;', 'content' => __('Module info')], true); - $table->head[3] = html_print_div(['style' => 'font-weight:700;text-align:center;', 'content' => __('Warning')], true); - $table->head[4] = html_print_div(['style' => 'font-weight:700;text-align:center;', 'content' => __('Critical')], true); - $table->head[5] = html_print_div(['style' => 'font-weight:700;margin-right:1.2em;', 'content' => __('Active')], true); - - $table->size = []; - $table->size[0] = '15%'; - $table->size[1] = '3%'; - $table->size[3] = '210px'; - $table->size[4] = '210px'; - $table->size[5] = '3%'; - - $table->align = []; - $table->align[5] = 'right'; - - $table->data = []; - - foreach ($blockData as $module) { - // Module Name column. - $data[0] = $module['name']; - // Module Type column. - $data[1] = ui_print_moduletype_icon($module['type'], true); - // Module info column. - $data[2] = mb_strimwidth(io_safe_output($module['description']), 0, 150, '...'); - // Warning column. - $data[3] = html_print_div( - [ - 'class' => 'wizard-column-levels', - 'content' => 'Min: '.html_print_input_text( - 'warning_min_'.$module['component_id'], - '0', - '', - 3, - 4, - true - ).' ', - ], - true - ); - $data[3] .= html_print_div( - [ - 'class' => 'wizard-column-levels', - 'content' => 'Max: '.html_print_input_text( - 'warning_max_'.$module['component_id'], - '0', - '', - 3, - 4, - true - ), - ], - true - ); - $data[3] .= html_print_div( - [ - 'class' => 'wizard-column-levels', - 'style' => 'margin-top: 0.3em;', - 'content' => 'Inv: '.html_print_checkbox( - 'warning_inv_'.$module['component_id'], - 0, - false, - true, - false - ), - ], - true - ); - // Critical column. - $data[4] = html_print_div( - [ - 'class' => 'wizard-column-levels', - 'content' => 'Min: '.html_print_input_text( - 'critical_min_'.$module['component_id'], - '0', - '', - 3, - 4, - true - ).' ', - ], - true - ); - $data[4] .= html_print_div( - [ - 'class' => 'wizard-column-levels', - 'content' => 'Max: '.html_print_input_text( - 'critical_max_'.$module['component_id'], - '0', - '', - 3, - 4, - true - ), - ], - true - ); - $data[4] .= html_print_div( - [ - 'class' => 'wizard-column-levels', - 'style' => 'margin-top: 0.3em;', - 'content' => 'Inv: '.html_print_checkbox( - 'critical_inv_'.$module['component_id'], - 0, - false, - true, - false - ), - ], - true - ); - // Activation column. - $data[5] = html_print_checkbox_switch_extended('sel_module_'.$id_group.'_'.$module['component_id'], 1, 0, false, 'switchBlockControl(event)', '', true); - - array_push($table->data, $data); - } - - $content = html_print_table($table, true); - - $output .= ui_toggle($content, $blockTitle, '', '', false, true); - } + ], + true + ); html_print_div( [ 'class' => 'white_box', 'style' => 'margin-top: 20px;', - 'content' => $output, + 'content' => $filterForm, ] ); - // Form. Not used at this moment. + $interfaceTables = []; + // Build the information of the blocks. + foreach ($this->interfacesFound as $index => $interface) { + // Add the index position of this interface. + $interface['index'] = $index; + + if (key_exists($interface['name'], $interfaceTables) === false) { + $interfaceTables[$interface['name']] = [ + 'name' => $interface['name'], + 'data' => [], + ]; + } + + $thisInterfaceModules = $this->getInterfacesModules($interface); + + $interfaceModulesUpdated = []; + $component_id_number = 0; + foreach ($thisInterfaceModules as $moduleIndex => $moduleData) { + if ($this->serverType === SERVER_TYPE_ENTERPRISE_SATELLITE) { + if ($moduleData['module_type'] == MODULE_TYPE_REMOTE_SNMP) { + $moduleData['module_type'] = MODULE_TYPE_GENERIC_DATA; + } else if ($moduleData['module_type'] == MODULE_TYPE_REMOTE_SNMP_PROC) { + $moduleData['module_type'] = MODULE_TYPE_GENERIC_PROC; + } else if ($moduleData['module_type'] == MODULE_TYPE_REMOTE_SNMP_INC) { + $moduleData['module_type'] = MODULE_TYPE_GENERIC_DATA_INC; + } else if ($moduleData['module_type'] == MODULE_TYPE_REMOTE_SNMP_STRING) { + // MODULE_TYPE_REMOTE_SNMP_STRING. + $moduleData['module_type'] = MODULE_TYPE_GENERIC_DATA_STRING; + } + } + + // Get current value. + $currentValue = $this->snmpgetValue($moduleData['value']); + // Format current value with thousands and decimals. + if (is_numeric($currentValue) === true) { + $decimals = (is_float($currentValue) === true) ? 2 : 0; + $currentValue = number_format($currentValue, $decimals); + } + + // It unit of measure have data, attach to current value. + if (empty($moduleData['module_unit']) === false) { + $currentValue .= ' '.$moduleData['module_unit']; + } + + // Stablish the data for show. + $interfaceModulesUpdated[] = [ + 'component_id' => $component_id_number++, + 'name' => $moduleData['module_name'], + 'type' => $moduleData['module_type'], + 'description' => $moduleData['module_description'], + 'min_warning' => $moduleData['module_thresholds']['min_warning'], + 'max_warning' => $moduleData['module_thresholds']['max_warning'], + 'inv_warning' => $moduleData['module_thresholds']['inv_warning'], + 'min_critical' => $moduleData['module_thresholds']['min_critical'], + 'max_critical' => $moduleData['module_thresholds']['max_critical'], + 'inv_critical' => $moduleData['module_thresholds']['inv_critical'], + 'module_enabled' => $moduleData['module_enabled'], + 'current_value' => $currentValue, + 'name_oid' => $moduleData['value'], + 'value' => $moduleData['value'], + ]; + } + + $interfaceTables[$interface['name']]['data'] = $interfaceModulesUpdated; + } + + html_print_div( + [ + 'class' => 'wizard wizard-result', + 'style' => 'margin-top: 20px;', + 'content' => $this->toggleTableModules( + $interfaceTables, + true, + true + ), + ] + ); + + // Add Create Modules form. + $this->createModulesForm(); + } + + + /** + * Perform WMI Module Wizard and show a table with results. + * + * @return void + */ + private function resultsWMIExplorerWizard() + { + $moduleBlocks = $this->moduleBlocks; + + $blockTables = []; + foreach ($moduleBlocks as $k => $module) { + // Construction of the WMI query. + $execCommand = $this->wmiQuery($module, 'scan'); + + // Execution of the WMI Query. + $outputCommand = $this->wmiExecution(io_safe_output($execCommand)); + + // Unpack the extra fields + // and include with key field in a field set. + $macros = json_decode($module['macros'], true); + $fieldSet = [ '0' => $module['query_key_field'] ]; + foreach ($macros as $fieldKey => $fieldMacro) { + if (preg_match('/extra_field_/', $fieldKey) !== 0) { + $tmpKey = explode('_', $fieldKey); + $macros['macros']['_field_wmi_'.$tmpKey[2].'_'] = $fieldMacro; + $fieldSet[(string) $tmpKey[2]] = $fieldMacro; + } + } + + // Value operation. + $valueOperation = io_safe_output($macros['value_operation']); + // Unpack the query filters. + $queryFilters = json_decode($module['query_filters'], true); + // Name of query filter field. + $fieldValueName = $fieldSet[$queryFilters['field']]; + + // Evaluate type of scan and execution. + if ($module['scan_type'] == SCAN_TYPE_FIXED) { + // Common actions for FIXED scan type. + $columnsList = []; + $rowList = []; + + foreach ($outputCommand as $rowLine => $rowContent) { + if (($rowLine == 0) + && (preg_match( + '/CLASS: '.$module['query_class'].'/', + $rowContent + ) === 0) + ) { + // Erase this module because give us an error. + unset($moduleBlocks[$k]); + // Do not continue with this module. + continue 2; + // The second row has the columns list. + } else if ($rowLine == 1) { + $columnsList = explode('|', $rowContent); + $columnFieldIndex = array_search( + $fieldValueName, + $columnsList, + true + ); + // The rest of the lines have results. + } else if ($rowLine == 2) { + $rowList = explode('|', $rowContent); + } + } + + // If name of the module have a macro. + $moduleBlocks[$k]['name'] = $this->macroFilter( + $module['name'], + $columnsList, + $rowList + ); + // Description can have macros too. + $moduleBlocks[$k]['description'] = $this->macroFilter( + $module['description'], + $columnsList, + $rowList + ); + // Query filters can have macros too. + $moduleBlocks[$k]['query_filters'] = $this->macroFilter( + $module['query_filters'], + $columnsList, + $rowList + ); + + foreach ($columnsList as $columnKey => $columnValue) { + $macros['macros']['_'.$columnValue.'_'] = $rowList[$columnKey]; + } + + $moduleBlocks[$k]['macros'] = json_encode($macros); + + if ($module['execution_type'] == EXECUTION_TYPE_NETWORK) { + // Construction of the WMI query. + // $execCommand = $this->wmiQuery($module, 'execution'); + // Execution of the WMI Query. + // $outputCommand = $this->wmiExecution($execCommand); + // Setting of value of this module (field query filter). + if ($queryFilters['field'] != '') { + if (empty($queryFilters['key_string']) === false) { + // Evaluate if the value is equal than key string. + $moduleBlocks[$k]['current_value'] = (io_safe_output($queryFilters['key_string']) == io_safe_output($rowList[$columnFieldIndex])) ? 1 : 0; + } else { + // Set the value getted. + $moduleBlocks[$k]['current_value'] = $rowList[$columnFieldIndex]; + } + + $moduleBlocks[$k]['current_value'] = $this->replacementUnit( + $moduleBlocks[$k]['current_value'], + $module['unit'], + $module['type'] + ); + } else { + $moduleBlocks[$k]['current_value'] = 0; + } + } else if ($module['execution_type'] == EXECUTION_TYPE_PLUGIN) { + // Combine both data list. + $dataCombined = array_combine($columnsList, $rowList); + // Change the macros for values. + foreach ($dataCombined as $macroKey => $macroValue) { + if (preg_match('/_'.$macroKey.'_/', $valueOperation) !== 0) { + $valueOperation = preg_replace( + '/_'.$macroKey.'_/', + $macroValue, + $valueOperation + ); + } + } + + // Evaluate the operation and set the current value. + $moduleBlocks[$k]['current_value'] = $this->evalOperation( + $valueOperation, + $module['unit'], + $module['type'] + ); + } + } else if ($module['scan_type'] == SCAN_TYPE_DYNAMIC) { + $columnsList = []; + $columnFieldIndex = '0'; + + foreach ($outputCommand as $rowLine => $rowContent) { + // The first result must be the class name. + if (($rowLine == 0) && (preg_match( + '/CLASS: '.$module['query_class'].'/', + $rowContent + ) === 0) + ) { + // Erase this module because give us an error. + unset($moduleBlocks[$k]); + // Do not continue with this module. + continue 2; + // The second row has the columns list. + } else if ($rowLine == 1) { + $columnsList = explode('|', $rowContent); + $columnFieldIndex = array_search( + $fieldValueName, + $columnsList, + true + ); + // The rest of the lines have results. + } else if ($rowLine > 1) { + $newModule = $module; + $rowList = explode('|', $rowContent); + // If name of the module have a macro. + $newModule['name'] = $this->macroFilter( + $module['name'], + $columnsList, + $rowList + ); + // Description can have macros too. + $newModule['description'] = $this->macroFilter( + $module['description'], + $columnsList, + $rowList + ); + + $newModule['query_filters'] = $this->macroFilter( + $module['query_filters'], + $columnsList, + $rowList + ); + + $keyString = $this->macroFilter( + io_safe_output($queryFilters['key_string']), + $columnsList, + $rowList + ); + + foreach ($columnsList as $columnKey => $columnValue) { + $macros['macros']['_'.$columnValue.'_'] = $rowList[$columnKey]; + } + + $newModule['macros'] = json_encode($macros); + + // Setting of value of this module (field query filter). + if ($module['execution_type'] == EXECUTION_TYPE_NETWORK) { + if ($queryFilters['field'] != '') { + // If key string filter filled. + if (empty($keyString) === false) { + // Evaluate if the value + // is equal than key string. + $newModule['current_value'] = ($keyString == io_safe_output($rowList[$columnFieldIndex])) ? 1 : 0; + } else { + // Set the value getted. + $newModule['current_value'] = $rowList[$columnFieldIndex]; + } + + $newModule['current_value'] = $this->replacementUnit( + $newModule['current_value'], + $module['unit'], + $module['type'] + ); + } else { + $newModule['current_value'] = 0; + } + } else if ($module['execution_type'] == EXECUTION_TYPE_PLUGIN) { + // Combine both data list. + $dataCombined = array_combine( + $columnsList, + $rowList + ); + // Change the macros for values. + foreach ($dataCombined as $macroKey => $macroValue) { + if (preg_match('/_'.$macroKey.'_/', $valueOperation) !== 0) { + $valueOperation = preg_replace( + '/_'.$macroKey.'_/', + $macroValue, + $valueOperation + ); + } + } + + // Evaluate the operation and set the result. + $newModule['current_value'] = $this->evalOperation( + $valueOperation, + $module['unit'], + $module['type'] + ); + } + + // Adding new module to the block. + $moduleBlocks[] = $newModule; + } + } + + // Clear the original module. + unset($moduleBlocks[$k]); + } + } + + // Create the final table with all of data received. + foreach ($moduleBlocks as $module) { + // Prepare the blocks. If its new, create a new index. + if (key_exists($module['group'], $blockTables) === false) { + $blockTables[$module['group']] = [ + 'name' => $module['group_name'], + 'data' => [], + ]; + } + + // Add the module info in the block. + $blockTables[$module['group']]['data'][] = $module; + if (isset($blockTables[$module['group']]['activeModules']) === false + && (int) $module['module_enabled'] === 1 + ) { + $blockTables[$module['group']]['activeModules'] = 2; + } else if (isset($blockTables[$module['group']]['activeModules']) === true + && (int) $module['module_enabled'] === 0 + ) { + $blockTables[$module['group']]['activeModules'] = 1; + } + } + + // General Default monitoring. + html_print_div( + [ + 'class' => 'wizard wizard-result', + 'style' => 'margin-top: 20px;', + 'content' => $this->toggleTableModules($blockTables), + ] + ); + // Add Create Modules form. + $this->createModulesForm(); + } + + + /** + * Perform SNMP Module Wizard and show a table with results. + * + * @return void + */ + private function resultsSNMPExplorerWizard() + { + $moduleBlocks = $this->moduleBlocks; + + $blockTables = []; + // Lets work with the modules. + foreach ($moduleBlocks as $k => $module) { + if ($this->serverType === SERVER_TYPE_ENTERPRISE_SATELLITE) { + if ($module['type'] == MODULE_TYPE_REMOTE_SNMP) { + $module['type'] = MODULE_TYPE_GENERIC_DATA; + $moduleBlocks[$k]['type'] = $module['type']; + } else if ($module['type'] == MODULE_TYPE_REMOTE_SNMP_PROC) { + $module['type'] = MODULE_TYPE_GENERIC_PROC; + $moduleBlocks[$k]['type'] = $module['type']; + } else if ($module['type'] == MODULE_TYPE_REMOTE_SNMP_INC) { + $module['type'] = MODULE_TYPE_GENERIC_DATA_INC; + $moduleBlocks[$k]['type'] = $module['type']; + } else if ($module['type'] == MODULE_TYPE_REMOTE_SNMP_STRING) { + // MODULE_TYPE_REMOTE_SNMP_STRING. + $module['type'] = MODULE_TYPE_GENERIC_DATA_STRING; + $moduleBlocks[$k]['type'] = $module['type']; + } + } + + if ($module['scan_type'] == SCAN_TYPE_FIXED) { + // Common for FIXED Scan types. + // If _nameOID_ macro exists, stablish the name getted. + if (empty($module['name_oid']) === false) { + $nameValue = $this->snmpgetValue($module['name_oid']); + $moduleBlocks[$k]['name'] = str_replace( + '_nameOID_', + $nameValue, + $module['name'] + ); + } + + if ($module['execution_type'] == EXECUTION_TYPE_NETWORK) { + // Set the current value to this module. + if (empty($module['value']) === true) { + $module['value'] = 0; + } + + $value = $this->snmpgetValue($module['value']); + // If the value is missing, we must not show this module. + if (empty($value) === true) { + unset($moduleBlocks[$k]); + } else { + $moduleBlocks[$k]['current_value'] = $this->replacementUnit( + $value, + $module['unit'], + $module['type'] + ); + } + + $moduleBlocks[$k]['macros'] = ''; + } else { + // Three steps for FIXED PLUGIN wizard modules. + // Break up macros. + $macros = json_decode($module['macros'], true); + $operation = io_safe_output($macros['value_operation']); + // Loop through the macros for get the + // OIDs and get his values. + foreach ($macros as $key => $oid) { + if (preg_match('/extra_field_/', $key) !== 0) { + $value = (float) $this->snmpgetValue($oid); + + // If the value not exists, + // we must not create a module. + if (empty($value) === true) { + unset($moduleBlocks[$k]); + continue 2; + } else { + $tmp = explode('_', $key); + $newKey = str_replace( + $key, + '_oid_'.$tmp[2].'_', + $key + ); + $macros['macros']['_oid_'.$tmp[2].'_'] = $oid; + $operation = preg_replace( + '/'.$newKey.'/', + $value, + $operation + ); + } + } + } + + $moduleBlocks[$k]['macros'] = json_encode($macros); + + // Get the result of the operation and set it. + $moduleBlocks[$k]['current_value'] = $this->evalOperation( + $operation, + $module['unit'], + $module['type'] + ); + } + } else { + if ($module['execution_type'] == EXECUTION_TYPE_NETWORK) { + // Get the values of snmpwalk. + $snmpwalkNames = $this->snmpwalkValues($module['name_oid']); + $snmpwalkValues = $this->snmpwalkValues($module['value']); + + $snmpwalkCombined = []; + foreach ($snmpwalkNames as $index => $name) { + $snmpwalkCombined[$index] = [ + 'name' => $name, + 'value' => $snmpwalkValues[$index], + ]; + } + + foreach ($snmpwalkCombined as $index => $r) { + $name = $r['name']; + $value = $r['value']; + + $newModule = $module; + // Setting the new values. + $newModule['name'] = str_replace( + '_nameOID_', + io_safe_input($name), + $module['name'] + ); + + // Save complete OID reference + index. + $newModule['value'] = $module['value'].$index; + $newModule['current_value'] = $this->replacementUnit( + $value, + $module['unit'], + $module['type'] + ); + $newModule['macros'] = ''; + + // Add this new module to the module list. + $moduleBlocks[] = $newModule; + } + + // Erase the main module. + unset($moduleBlocks[$k]); + } else { + // Break up macros. + $macros = (array) json_decode($module['macros']); + $operation = io_safe_output($macros['value_operation']); + $oids = []; + foreach ($macros as $key => $oid) { + if (preg_match('/extra_field_/', $key) !== 0) { + $tmp = explode('_', $key); + $newKey = str_replace( + $key, + '_oid_'.$tmp[2].'_', + $key + ); + $oids[$newKey] = $oid; + } + } + + $snmpwalkNamesTmp = []; + // Is needed the index and the values of snmpwalk. + $snmpwalkNamesTmp = $this->snmpwalkValues( + $module['name_oid'], + true + ); + + $snmpwalkNames = []; + foreach ($snmpwalkNamesTmp as $value) { + // Generate a new module based + // in the first for every name found. + $newModule = $module; + // Split the values got to obtain the name. + $tmpFirst = explode('.', $value); + $tmpSecond = explode(' ', $tmpFirst[1]); + // Position 0 is the index, Position 3 is the MIB name. + $snmpwalkNames[$tmpSecond[0]] = $tmpSecond[3]; + // Perform the operations for get the values. + $thisOperation = $operation; + foreach ($oids as $oidName => $oid) { + $currentOid = $oid.'.'.$tmpSecond[0]; + $macros['macros'][$oidName] = $currentOid; + $currentOidValue = $this->snmpgetValue($currentOid); + $thisOperation = preg_replace( + '/'.$oidName.'/', + $currentOidValue, + $thisOperation + ); + } + + $newModule['macros'] = json_encode($macros); + + // Get the result of the operation and set it. + $newModule['current_value'] = $this->evalOperation( + $thisOperation, + $module['unit'], + $module['type'] + ); + + // Add the name to this module. + $newModule['name'] = str_replace( + '_nameOID_', + io_safe_input($tmpSecond[3]), + $module['name'] + ); + + // Add this new module to the module list. + $moduleBlocks[] = $newModule; + } + + // Erase the main module. + unset($moduleBlocks[$k]); + } + } + } + + // Create the final table with all of data received. + foreach ($moduleBlocks as $module) { + if (is_array($module) === true + && count($module) <= 1 + && empty($module['macros']) === true + ) { + // Invalid module. + continue; + } + + // Prepare the blocks. If its new, create a new index. + if (key_exists($module['group'], $blockTables) === false) { + $blockTables[$module['group']] = [ + 'name' => $module['group_name'], + 'data' => [], + ]; + } + + // Add the module info in the block. + $blockTables[$module['group']]['data'][] = $module; + if (isset($blockTables[$module['group']]['activeModules']) === false + && (int) $module['module_enabled'] === 1 + ) { + $blockTables[$module['group']]['activeModules'] = 2; + } else if (isset($blockTables[$module['group']]['activeModules']) === true + && (int) $module['module_enabled'] === 0 + ) { + $blockTables[$module['group']]['activeModules'] = 1; + } + } + + if (empty($blockTables) === true) { + $this->message['type'][] = 'warning'; + $this->message['message'][] = __( + 'No information could be retrieved.' + ); + } else { + // General Default monitoring. + html_print_div( + [ + 'class' => 'wizard wizard-result', + 'style' => 'margin-top: 20px;', + 'content' => $this->toggleTableModules($blockTables), + ] + ); + + // Add Create Modules form. + $this->createModulesForm(); + } + + } + + + /** + * Get the data from the module blocks + * + * @return array Return an array with the module blocks needed. + */ + private function getModuleBlocks() + { + // Definition of filters. + $whereString = sprintf( + 'nc.id_modulo = %d AND nc.protocol = "%s"', + MODULE_WIZARD, + $this->protocol + ); + // Special considerations for both protocols. + if ($this->protocol === 'snmp') { + if (empty($this->penName) === true) { + return false; + } + + $whereString .= sprintf( + ' AND ( + nc.manufacturer_id = "all" OR nc.manufacturer_id = "%s" + )', + $this->penName + ); + $fields = 'nc.name_oid'; + } else if ($this->protocol === 'wmi') { + $fields = 'nc.query_class, nc.query_key_field,'; + $fields .= 'nc.scan_filters, nc.query_filters'; + } else { + $fields = ''; + } + + $sql = sprintf( + 'SELECT nc.id_nc AS component_id, + nc.name, + nc.type, + nc.description, + nc.id_group AS `group`, + ncg.name AS `group_name`, + nc.min_warning, + nc.max_warning, + nc.warning_inverse AS `inv_warning`, + nc.min_critical, + nc.max_critical, + nc.critical_inverse AS `inv_critical`, + nc.module_enabled, + %s, + nc.scan_type, + nc.execution_type, + nc.value, + nc.macros, + nc.unit + FROM tnetwork_component AS nc + LEFT JOIN tnetwork_component_group AS ncg + ON nc.id_group = ncg.id_sg + WHERE %s AND nc.enabled=1', + $fields, + $whereString + ); + + return db_get_all_rows_sql($sql); + } + + + /** + * Perform a snmpget for get a value from provided oid. + * + * @param string $oid Oid for get the value. + * @param boolean $full_output Array with full output.. + * + * @return mixed String when response, null if error. + */ + private function snmpgetValue(string $oid, ?bool $full_output=false) + { + $output = get_snmpwalk( + $this->targetIp, + $this->version, + $this->community, + $this->authUserV3, + $this->securityLevelV3, + $this->authMethodV3, + $this->authPassV3, + $this->privacyMethodV3, + $this->privacyPassV3, + 0, + $oid, + $this->targetPort, + $this->server, + $this->extraArguments, + (($full_output === false) ? '-Oa -On' : '-Oa') + ); + + if (is_array($output) === true) { + foreach ($output as $k => $v) { + if ($full_output === true) { + return $k.' = '.$v; + } + + $value = explode(': ', $v, 2); + return $value[1]; + } + } + + return false; + + } + + + /** + * Perform a snmpwalk for get the values from the provided oid. + * + * @param string $oid Oid for get the values. + * @param boolean $full_output Array with full output. + * + * @return array + */ + private function snmpwalkValues(string $oid, bool $full_output=false) + { + $output = []; + $temporal = get_snmpwalk( + $this->targetIp, + $this->version, + $this->community, + $this->authUserV3, + $this->securityLevelV3, + $this->authMethodV3, + $this->authPassV3, + $this->privacyMethodV3, + $this->privacyPassV3, + 0, + $oid, + $this->targetPort, + $this->server, + $this->extraArguments, + (($full_output === false) ? '-Oa -On' : '-Oa') + ); + + if (empty($temporal) === false) { + foreach ($temporal as $key => $oid_unit) { + if ($full_output === true) { + $output[] = $key.' = '.$oid_unit; + } else { + preg_match('/\.\d+$/', $key, $index); + $tmp = explode(': ', $oid_unit); + $output[$index[0]] = $tmp[1]; + } + } + } + + return $output; + } + + + /** + * Add a button for Create the modules selected. + * + * @return void + */ + private function createModulesForm() + { + // Create modules form. $form = [ - 'action' => $this->baseUrl, - 'id' => 'modal_form_action_response', + 'action' => $this->sectionUrl, + 'id' => 'form-create-modules', 'method' => 'POST', 'class' => 'modal', 'extra' => '', @@ -578,17 +3236,21 @@ class AgentWizard extends HTML // Inputs. $inputs = []; - + // Submit button. $inputs[] = [ - 'id' => 'inp-id_np', 'arguments' => [ - 'name' => 'id_np', - 'type' => 'hidden', - 'value' => '69', - 'return' => true, + 'label' => __('Create modules'), + 'name' => 'create-modules-action', + 'type' => 'button', + 'attributes' => 'class="sub cog float-right"', + 'script' => 'processListModules();', + 'return' => true, ], ]; + $inputs = array_merge($inputs, $this->getCommonDataInputs()); + + // Print the the submit button for create modules. $this->printForm( [ 'form' => $form, @@ -600,31 +3262,1360 @@ class AgentWizard extends HTML /** - * Perform SNMP + * Inputs. * - * @return void + * @return array Inputs for common data. */ - private function performSNMP() + private function getCommonDataInputs():array { - echo 'HOLA'; + $inputs[] = [ + 'id' => 'create-modules-action', + 'arguments' => [ + 'name' => 'create-modules-action', + 'type' => 'hidden', + 'value' => 1, + 'return' => true, + ], + ]; + + $inputs[] = [ + 'id' => 'protocol', + 'arguments' => [ + 'name' => 'protocol', + 'id' => 'protocol_data', + 'type' => 'hidden', + 'value' => $this->protocol, + 'return' => true, + ], + ]; + + $inputs[] = [ + 'id' => 'targetIp', + 'arguments' => [ + 'name' => 'targetIp', + 'type' => 'hidden', + 'value' => $this->targetIp, + 'return' => true, + ], + ]; + + $inputs[] = [ + 'id' => 'targetPort', + 'arguments' => [ + 'name' => 'targetPort', + 'type' => 'hidden', + 'value' => $this->targetPort, + 'return' => true, + ], + ]; + + $inputs[] = [ + 'id' => 'community', + 'arguments' => [ + 'name' => 'community', + 'type' => 'hidden', + 'value' => $this->community, + 'return' => true, + ], + ]; + + $inputs[] = [ + 'id' => 'version', + 'arguments' => [ + 'name' => 'version', + 'type' => 'hidden', + 'value' => $this->version, + 'return' => true, + ], + ]; + + $inputs[] = [ + 'id' => 'server', + 'arguments' => [ + 'name' => 'server', + 'type' => 'hidden', + 'value' => $this->server, + 'return' => true, + ], + ]; + + $inputs[] = [ + 'id' => 'authUserV3', + 'arguments' => [ + 'name' => 'authUserV3', + 'type' => 'hidden', + 'value' => $this->authUserV3, + 'return' => true, + ], + ]; + + $inputs[] = [ + 'id' => 'authPassV3', + 'arguments' => [ + 'name' => 'authPassV3', + 'type' => 'hidden', + 'value' => $this->authPassV3, + 'return' => true, + ], + ]; + + $inputs[] = [ + 'id' => 'authMethodV3', + 'arguments' => [ + 'name' => 'authMethodV3', + 'type' => 'hidden', + 'value' => $this->authMethodV3, + 'return' => true, + ], + ]; + + $inputs[] = [ + 'id' => 'securityLevelV3', + 'arguments' => [ + 'name' => 'securityLevelV3', + 'type' => 'hidden', + 'value' => $this->securityLevelV3, + 'return' => true, + ], + ]; + + $inputs[] = [ + 'id' => 'privacyMethodV3', + 'arguments' => [ + 'name' => 'privacyMethodV3', + 'type' => 'hidden', + 'value' => $this->privacyMethodV3, + 'return' => true, + ], + ]; + + $inputs[] = [ + 'id' => 'privacyPassV3', + 'arguments' => [ + 'name' => 'privacyPassV3', + 'type' => 'hidden', + 'value' => $this->privacyPassV3, + 'return' => true, + ], + ]; + + $inputs[] = [ + 'id' => 'namespaceWMI', + 'arguments' => [ + 'name' => 'namespaceWMI', + 'type' => 'hidden', + 'value' => $this->namespaceWMI, + 'return' => true, + ], + ]; + + $inputs[] = [ + 'id' => 'usernameWMI', + 'arguments' => [ + 'name' => 'usernameWMI', + 'type' => 'hidden', + 'value' => $this->usernameWMI, + 'return' => true, + ], + ]; + + $inputs[] = [ + 'id' => 'passwordWMI', + 'arguments' => [ + 'name' => 'passwordWMI', + 'type' => 'hidden', + 'value' => $this->passwordWMI, + 'return' => true, + ], + ]; + + $inputs[] = [ + 'id' => 'idAgent', + 'arguments' => [ + 'name' => 'idAgent', + 'type' => 'hidden', + 'value' => $this->idAgent, + 'return' => true, + ], + ]; + + $inputs[] = [ + 'id' => 'idPolicy', + 'arguments' => [ + 'name' => 'id', + 'type' => 'hidden', + 'value' => $this->idPolicy, + 'return' => true, + ], + ]; + + $inputs[] = [ + 'id' => 'wizardSection', + 'arguments' => [ + 'name' => 'wizard_section', + 'type' => 'hidden', + 'value' => $this->wizardSection, + 'return' => true, + ], + ]; + + return $inputs; } /** - * Perform WMI + * Create the tables with toggle interface for show the modules availables. * - * @return void + * @param mixed $blocks Info getted. + * @param boolean $showCurrentValue If true, show the + * column of current values. + * @param boolean $isInterface If true, the form is + * displayed for interface purposes. + * @param boolean $isPrincipal If true, the form is + * displayed for first interface module list. + * + * @return mixed String with the tables formed. */ - private function performWMI() - { + private function toggleTableModules( + $blocks, + bool $showCurrentValue=true, + bool $isInterface=false, + bool $isPrincipal=false + ) { + $output = ''; + foreach ($blocks as $idBlock => $block) { + // Data with all components. + $blockData = $block['data']; + // Active modules. + $activeModules = 0; + if (isset($block['activeModules']) === true) { + $activeModules = $block['activeModules']; + } + + // Creation of list of all components. + $blockComponentList = ''; + foreach ($blockData as $component) { + $blockComponentList .= $component['component_id'].','; + } + + $blockComponentList = chop($blockComponentList, ','); + // Title of Block. + if ($isInterface === true) { + if ($isPrincipal === true) { + $blockTitle = ''; + $blockTitle .= __( + 'Add general monitoring for all selected interfaces' + ); + $blockTitle .= ''; + } else { + $blockTitle = html_print_checkbox_switch_extended( + 'interfaz_select_'.$idBlock, + 1, + true, + false, + '', + 'form="form-create-modules" class="interfaz_select"', + true, + '' + ); + $blockTitle .= ''.$block['name']; + $blockTitle .= '  '; + $blockTitle .= html_print_image( + 'images/tip_help.png', + true, + [ + 'title' => __('Modules selected'), + 'alt' => __('Modules selected'), + 'id' => 'image-info-modules-'.$idBlock, + 'class' => 'hidden', + ] + ); + $blockTitle .= ''; + } + } else { + $blockTitle = ''.$block['name']; + $classImg = ''; + if ($activeModules === 0) { + $classImg = 'hidden'; + } + + $blockTitle .= '  '; + $blockTitle .= html_print_image( + 'images/tip_help.png', + true, + [ + 'title' => __('Modules selected'), + 'alt' => __('Modules selected'), + 'id' => 'image-info-modules-'.$idBlock, + 'class' => $classImg, + ] + ); + $blockTitle .= ''; + } + + $table = new StdClass(); + $table->styleTable = 'margin: 2em auto 0;border: 1px solid #ddd;background: white;'; + $table->rowid = []; + $table->data = []; + + $table->cellpadding = 0; + $table->cellspacing = 0; + $table->width = '100%'; + $table->class = 'info_table'; + // Subheaders for Warning and Critical columns. + $subheaders = 'Min.'; + $subheaders .= 'Max.'; + $subheaders .= 'Inv.'; + // Warning header. + $warning_header = html_print_div( + [ + 'style' => 'font-weight:700;text-align:center;', + 'content' => html_print_div( + [ + 'style' => 'width: 100%; text-align:center;', + 'content' => __('Warning'), + ], + true + ), + ], + true + ); + // Critical header. + $critical_header = html_print_div( + [ + 'style' => 'font-weight:700;text-align:center;', + 'content' => html_print_div( + [ + 'style' => 'width: 100%; text-align:center;', + 'content' => __('Critical'), + ], + true + ), + ], + true + ); + // Header section. + $table->head = []; + $table->head[0] = html_print_div( + [ + 'style' => 'font-weight:700;', + 'content' => __('Module Name'), + ], + true + ); + $table->head[1] = html_print_div( + [ + 'style' => 'font-weight:700;', + 'content' => __('Type'), + ], + true + ); + if ($isPrincipal === true) { + $headerInfo = __('Module info'); + } else { + $headerInfo = __('Description'); + } + + $table->head[2] = html_print_div( + [ + 'style' => 'font-weight:700;', + 'content' => $headerInfo, + ], + true + ); + $table->head[3] = $warning_header.$subheaders; + $table->head[4] = $critical_header.$subheaders; + + // Size. + $table->size = []; + $table->size[0] = '15%'; + $table->size[1] = '3%'; + $table->size[3] = '140px'; + $table->size[4] = '140px'; + $table->size[5] = '3%'; + + // If is needed show current value, we must correct the table. + if ($showCurrentValue === true) { + // Correct headers. + $table->head[5] = html_print_div( + [ + 'style' => 'font-weight:700;text-align:center;', + 'content' => __('Current value'), + ], + true + ); + + $class = ''; + if ($activeModules === 1) { + $class = 'alpha50'; + } + + $table->head[6] = html_print_checkbox_switch_extended( + 'sel_block_'.$idBlock, + 1, + $activeModules, + false, + 'switchBlockControl(event)', + '', + true, + '', + $class + ); + + // Correct size. + $table->size[5] = '5%'; + $table->size[6] = '3%'; + } else { + // Correct size. + $table->size[5] = '1%'; + $table->size[6] = '3%'; + $table->head[5] = ''; + $table->head[6] = html_print_checkbox_switch_extended( + 'sel_block_'.$idBlock, + 1, + true, + false, + 'switchBlockControl(event)', + '', + true, + '', + 'alpha50' + ); + } + + $table->data = []; + + foreach ($blockData as $kId => $module) { + $uniqueId = $idBlock.'_'.$module['component_id'].'-'.$kId; + + // Module Name column. + if ($isPrincipal === true) { + $data[0] = $module['name']; + } else { + $data[0] = html_print_input_text( + 'module-name-set-'.$uniqueId, + $module['name'], + '', + 25, + 255, + true, + false, + false, + '', + '', + '', + '', + false, + '', + 'form-create-modules' + ); + } + + // Module Type column. + $data[1] = ui_print_moduletype_icon($module['type'], true); + // Module info column. + if ($isPrincipal === true) { + $data[2] = io_safe_output($module['description']); + } else { + $data[2] = html_print_textarea( + 'module-description-set-'.$uniqueId, + 1, + 20, + $module['description'], + 'form=\'form-create-modules\' style=\'min-height: 50px;\'', + true + ); + } + + // Warning column. + $data_warning = ''; + $data_warning = html_print_div( + [ + 'class' => 'wizard-column-levels', + 'content' => html_print_input_text( + 'module-warning-min-'.$uniqueId, + $module['min_warning'], + '', + 3, + 4, + true, + false, + false, + '', + '', + '', + '', + false, + '', + 'form-create-modules' + ).' ', + ], + true + ); + $data_warning .= html_print_div( + [ + 'class' => 'wizard-column-levels', + 'content' => html_print_input_text( + 'module-warning-max-'.$uniqueId, + $module['max_warning'], + '', + 3, + 4, + true, + false, + false, + '', + '', + '', + '', + false, + '', + 'form-create-modules' + ), + ], + true + ); + $data_warning .= html_print_div( + [ + 'class' => 'wizard-column-levels', + 'style' => 'margin-top: 0.3em;', + 'content' => html_print_checkbox( + 'module-warning-inv-'.$uniqueId, + $module['inv_warning'], + $module['inv_warning'], + true, + false, + '', + false, + 'form="form-create-modules"' + ), + ], + true + ); + $data[3] = $data_warning; + // Critical column. + $data[4] = ''; + $data[4] .= html_print_div( + [ + 'class' => 'wizard-column-levels', + 'content' => html_print_input_text( + 'module-critical-min-'.$uniqueId, + $module['min_critical'], + '', + 3, + 4, + true, + false, + false, + '', + '', + '', + '', + false, + '', + 'form-create-modules' + ).' ', + ], + true + ); + $data[4] .= html_print_div( + [ + 'class' => 'wizard-column-levels', + 'content' => html_print_input_text( + 'module-critical-max-'.$uniqueId, + $module['max_critical'], + '', + 3, + 4, + true, + false, + false, + '', + '', + '', + '', + false, + '', + 'form-create-modules' + ), + ], + true + ); + + $data[4] .= html_print_div( + [ + 'class' => 'wizard-column-levels', + 'style' => 'margin-top: 0.3em;', + 'content' => html_print_checkbox( + 'module-critical_inv_'.$uniqueId, + $module['inv_critical'], + $module['inv_critical'], + true, + false, + '', + false, + 'form="form-create-modules"' + ), + ], + true + ); + + if (is_string($module['module_enabled']) === true) { + if ($module['module_enabled'] === false || $module['module_enabled'] === '0') { + $module['module_enabled'] = false; + } else { + $module['module_enabled'] = true; + } + } + + if ($isPrincipal === true) { + // Activation column. + $data[5] = ''; + $data[6] = html_print_checkbox_switch_extended( + 'sel_module_'.$uniqueId, + $module['module_enabled'], + $module['module_enabled'], + false, + 'switchBlockControl(event)', + '', + true + ); + } else { + // WIP. Current value of this module. + if (isset($module['current_value']) === false) { + $module['current_value'] = 'NO DATA'; + } + + $data[5] = ui_print_truncate_text( + io_safe_output($module['current_value']), + 20, + false, + true, + true, + '…', + false + ); + + // Activation column. + $data[6] = html_print_checkbox_switch_extended( + 'sel_module_'.$uniqueId, + $module['module_enabled'], + $module['module_enabled'], + false, + 'switchBlockControl(event)', + 'form="form-create-modules"', + true + ); + } + + // Input info for activate (active: 1 true 0 false). + $data[6] .= html_print_input_hidden( + 'module-active-'.$uniqueId, + $module['module_enabled'], + true, + false, + 'form="form-create-modules"' + ); + + // Type module. + $data[6] .= html_print_input_hidden( + 'module-type-'.$uniqueId, + $module['type'], + true, + false, + 'form="form-create-modules"' + ); + + // Unit module. + $data[6] .= html_print_input_hidden( + 'module-unit-'.$uniqueId, + $module['unit'], + true, + false, + 'form="form-create-modules"' + ); + + // Value module OID. + $data[6] .= html_print_input_hidden( + 'module-value-'.$uniqueId, + $module['value'], + true, + false, + 'form="form-create-modules"' + ); + + // Macro module. + $data[6] .= html_print_input_hidden( + 'module-macros-'.$uniqueId, + base64_encode($module['macros']), + true, + false, + 'form="form-create-modules"' + ); + + // Macro module. + $data[6] .= html_print_input_hidden( + 'module-name-oid-'.$uniqueId, + $module['name_oid'], + true, + false, + 'form="form-create-modules"' + ); + + // Scan type module. + $data[6] .= html_print_input_hidden( + 'module-scan_type-'.$uniqueId, + $module['scan_type'], + true, + false, + 'form="form-create-modules"' + ); + + // Execution type module. + $data[6] .= html_print_input_hidden( + 'module-execution_type-'.$uniqueId, + $module['execution_type'], + true, + false, + 'form="form-create-modules"' + ); + + // WMI Query class. + $data[6] .= html_print_input_hidden( + 'module-query_class-'.$uniqueId, + $module['query_class'], + true, + false, + 'form="form-create-modules"' + ); + + // WMI Query key. + $data[6] .= html_print_input_hidden( + 'module-query_key_field-'.$uniqueId, + $module['query_key_field'], + true, + false, + 'form="form-create-modules"' + ); + + // WMI scan filters. + $data[6] .= html_print_input_hidden( + 'module-scan_filters-'.$uniqueId, + $module['scan_filters'], + true, + false, + 'form="form-create-modules"' + ); + + // WMI query filters. + $data[6] .= html_print_input_hidden( + 'module-query_filters-'.$uniqueId, + base64_encode($module['query_filters']), + true, + false, + 'form="form-create-modules"' + ); + + if ($isInterface === true) { + // Is neccesary for default + // module name and description uin general monitoring. + $data[6] .= html_print_input_hidden( + 'module-default_name-'.$uniqueId, + $module['name'], + true, + false, + 'form="form-create-modules"' + ); + + $data[6] .= html_print_input_hidden( + 'module-default_description-'.$uniqueId, + $module['description'], + true, + false, + 'form="form-create-modules"' + ); + } + + array_push($table->data, $data); + } + + $content = html_print_table($table, true); + + $open = true; + $buttonSwitch = false; + $class = 'box-shadow white_table_graph interfaces_search'; + $reverseImg = true; + if ($isPrincipal === true) { + $open = false; + $buttonSwitch = true; + $class = 'box-shadow white_table_graph'; + $reverseImg = false; + } + + $output .= ui_toggle( + $content, + $blockTitle, + '', + $idBlock, + $open, + true, + '', + 'white-box-content', + $class, + 'images/arrow_down_green.png', + 'images/arrow_right_green.png', + false, + $reverseImg, + $buttonSwitch, + 'form="form-create-modules"' + ); + } + + return $output; + } + + + /** + * This function return the definition of modules for SNMP Interfaces + * + * @param array $data Data. + * + * @return array Return modules for defect. + */ + private function getInterfacesModules(array $data=[]) + { + $moduleDescription = ''; + $name = ''; + $value = '1'; + // Unpack the array with data. + if (empty($data) === false) { + if (empty($data['mac']) === false) { + $moduleDescription .= 'MAC: '.$data['mac'].' - '; + } else { + $moduleDescription .= ''; + } + + if (empty($data['ip']) === false) { + $moduleDescription .= 'IP: '.$data['ip'].' - '; + } else { + $moduleDescription .= ''; + } + + $name = $data['name'].'_'; + $value = $data['index']; + } + + // Definition object. + $definition = []; + // IfInOctets. + $moduleName = $name.'ifInOctets'; + $definition['ifInOctets'] = [ + 'module_name' => $moduleName, + 'module_type' => MODULE_TYPE_REMOTE_SNMP_INC, + 'module_description' => sprintf( + '(%s%s)', + $moduleDescription, + $moduleName + ), + 'module_info' => 'The total number of octets received on the interface, including framing characters', + 'execution_type' => 'network', + 'value' => '1.3.6.1.2.1.2.2.1.10.'.$value, + 'module_unit' => 'bytes/s', + 'default_enabled' => true, + 'module_enabled' => false, + 'module_thresholds' => [ + 'min_warning' => '0', + 'max_warning' => '0', + 'inv_warning' => false, + 'min_critical' => '0', + 'max_critical' => '0', + 'inv_critical' => false, + ], + + ]; + // IfOutOctets. + $moduleName = $name.'ifOutOctets'; + $definition['ifOutOctets'] = [ + 'module_name' => $moduleName, + 'module_type' => MODULE_TYPE_REMOTE_SNMP_INC, + 'module_description' => sprintf( + '(%s%s)', + $moduleDescription, + $moduleName + ), + 'module_info' => 'The total number of octets transmitted out of the interface, including framing characters', + 'execution_type' => 'network', + 'value' => '1.3.6.1.2.1.2.2.1.16.'.$value, + 'module_unit' => 'bytes/s', + 'default_enabled' => true, + 'module_enabled' => false, + 'module_thresholds' => [ + 'min_warning' => '0', + 'max_warning' => '0', + 'inv_warning' => false, + 'min_critical' => '0', + 'max_critical' => '0', + 'inv_critical' => false, + ], + ]; + // IfOperStatus. + $adminStatusValue = 1; + if (empty($data) === false) { + $adminStatusValue = $this->snmpgetValue( + '1.3.6.1.2.1.2.2.1.7.'.$value + ); + preg_match('/\((\d+?)\)/', $adminStatusValue, $match); + $adminStatusValue = (int) $match[1]; + } + + if ($adminStatusValue === 3) { + $min_warning = 3; + $max_warning = 4; + $min_critical = 2; + $max_critical = 3; + $inv_warning = true; + $inv_critical = false; + } else if ($adminStatusValue === 2) { + $min_warning = 3; + $max_warning = 0; + $min_critical = 1; + $max_critical = 2; + $inv_warning = false; + $inv_critical = false; + } else { + $min_warning = 3; + $max_warning = 0; + $min_critical = 2; + $max_critical = 3; + $inv_warning = false; + $inv_critical = false; + } + + $moduleName = $name.'ifOperStatus'; + $definition['ifOperStatus'] = [ + 'module_name' => $moduleName, + 'module_type' => MODULE_TYPE_REMOTE_SNMP, + 'module_description' => sprintf( + '(%s%s)', + $moduleDescription, + $moduleName + ), + 'module_info' => 'The current operational state of the interface: up(1), down(2), testing(3), unknown(4), dormant(5), notPresent(6), lowerLayerDown(7)', + 'execution_type' => 'network', + 'value' => '1.3.6.1.2.1.2.2.1.8.'.$value, + 'module_unit' => '', + 'default_enabled' => true, + 'module_enabled' => false, + 'module_thresholds' => [ + 'min_warning' => $min_warning, + 'max_warning' => $max_warning, + 'inv_warning' => $inv_warning, + 'min_critical' => $min_critical, + 'max_critical' => $max_critical, + 'inv_critical' => $inv_critical, + ], + ]; + + // IfAdminStatus. + $moduleName = $name.'ifAdminStatus'; + $definition['ifAdminStatus'] = [ + 'module_name' => $moduleName, + 'module_type' => MODULE_TYPE_REMOTE_SNMP, + 'module_description' => sprintf( + '(%s%s)', + $moduleDescription, + $moduleName + ), + 'module_info' => 'The desired state of the interface: up(1), down(2), testing(3)', + 'execution_type' => 'network', + 'value' => '1.3.6.1.2.1.2.2.1.7.'.$value, + 'module_unit' => '', + 'default_enabled' => false, + 'module_enabled' => false, + 'module_thresholds' => [ + 'min_warning' => '0', + 'max_warning' => '0', + 'inv_warning' => false, + 'min_critical' => '0', + 'max_critical' => '0', + 'inv_critical' => false, + ], + ]; + // IfInDiscards. + $moduleName = $name.'ifInDiscards'; + $definition['ifInDiscards'] = [ + 'module_name' => $moduleName, + 'module_type' => MODULE_TYPE_REMOTE_SNMP_INC, + 'module_description' => sprintf( + '(%s%s)', + $moduleDescription, + $moduleName + ), + 'module_info' => 'The number of inbound packets which were chosen to be discarded even though no errors had been detected to prevent their being deliverable to a higher-layer protocol', + 'execution_type' => 'network', + 'value' => '1.3.6.1.2.1.2.2.1.13.'.$value, + 'module_unit' => 'packets/s', + 'default_enabled' => false, + 'module_enabled' => false, + 'module_thresholds' => [ + 'min_warning' => '0', + 'max_warning' => '0', + 'inv_warning' => false, + 'min_critical' => '0', + 'max_critical' => '0', + 'inv_critical' => false, + ], + ]; + // IfOutDiscards. + $moduleName = $name.'ifOutDiscards'; + $definition['ifOutDiscards'] = [ + 'module_name' => $moduleName, + 'module_type' => MODULE_TYPE_REMOTE_SNMP_INC, + 'module_description' => sprintf( + '(%s%s)', + $moduleDescription, + $moduleName + ), + 'module_info' => 'The number of outbound packets which were chosen to be discarded even though no errors had been detected to prevent their being transmitted', + 'execution_type' => 'network', + 'value' => '1.3.6.1.2.1.2.2.1.19.'.$value, + 'module_unit' => 'packets/s', + 'default_enabled' => false, + 'module_enabled' => false, + 'module_thresholds' => [ + 'min_warning' => '0', + 'max_warning' => '0', + 'inv_warning' => false, + 'min_critical' => '0', + 'max_critical' => '0', + 'inv_critical' => false, + ], + ]; + // IfInErrors. + $moduleName = $name.'ifInErrors'; + $definition['ifInErrors'] = [ + 'module_name' => $moduleName, + 'module_type' => MODULE_TYPE_REMOTE_SNMP_INC, + 'module_description' => sprintf( + '(%s%s)', + $moduleDescription, + $moduleName + ), + 'module_info' => 'For packet-oriented interfaces, the number of inbound packets that contained errors preventing them from being deliverable to a higher-layer protocol. For character- oriented or fixed-length interfaces, the number of inbound transmission units that contained errors preventing them from being deliverable to a higher-layer protocol', + 'execution_type' => 'network', + 'value' => '1.3.6.1.2.1.2.2.1.14.'.$value, + 'module_unit' => 'packets/s', + 'default_enabled' => false, + 'module_enabled' => false, + 'module_thresholds' => [ + 'min_warning' => '0', + 'max_warning' => '0', + 'inv_warning' => false, + 'min_critical' => '0', + 'max_critical' => '0', + 'inv_critical' => false, + ], + ]; + // IfOutErrors. + $moduleName = $name.'ifOutErrors'; + $definition['ifOutErrors'] = [ + 'module_name' => $moduleName, + 'module_type' => MODULE_TYPE_REMOTE_SNMP_INC, + 'module_description' => sprintf( + '(%s%s)', + $moduleDescription, + $moduleName + ), + 'module_info' => 'For packet-oriented interfaces, the number of outbound packets that could not be transmitted because of errors. For character-oriented or fixed-length interfaces, the number of outbound transmission units that could not be transmitted because of errors', + 'execution_type' => 'network', + 'value' => '1.3.6.1.2.1.2.2.1.20.'.$value, + 'module_unit' => 'packets/s', + 'default_enabled' => false, + 'module_enabled' => false, + 'module_thresholds' => [ + 'min_warning' => '0', + 'max_warning' => '0', + 'inv_warning' => false, + 'min_critical' => '0', + 'max_critical' => '0', + 'inv_critical' => false, + ], + ]; + // IfInUcastPkts. + $moduleName = $name.'ifInUcastPkts'; + $definition['ifInUcastPkts'] = [ + 'module_name' => $moduleName, + 'module_type' => MODULE_TYPE_REMOTE_SNMP_INC, + 'module_description' => sprintf( + '(%s%s)', + $moduleDescription, + $moduleName + ), + 'module_info' => 'The number of packets, delivered by this sub-layer to a higher (sub-)layer, which were not addressed to a multicast or broadcast address at this sub-layer', + 'execution_type' => 'network', + 'value' => '1.3.6.1.2.1.2.2.1.11.'.$value, + 'module_unit' => 'packets/s', + 'default_enabled' => false, + 'module_enabled' => false, + 'module_thresholds' => [ + 'min_warning' => '0', + 'max_warning' => '0', + 'inv_warning' => false, + 'min_critical' => '0', + 'max_critical' => '0', + 'inv_critical' => false, + ], + ]; + // IfOutUcastPkts. + $moduleName = $name.'ifOutUcastPkts'; + $definition['ifOutUcastPkts'] = [ + 'module_name' => $moduleName, + 'module_type' => MODULE_TYPE_REMOTE_SNMP_INC, + 'module_description' => sprintf( + '(%s%s)', + $moduleDescription, + $moduleName + ), + 'module_info' => 'The total number of packets that higher-level protocols requested be transmitted, and which were not addressed to a multicast or broadcast address at this sub-layer, including those that were discarded or not sent', + 'execution_type' => 'network', + 'value' => '1.3.6.1.2.1.2.2.1.17.'.$value, + 'module_unit' => 'packets/s', + 'default_enabled' => false, + 'module_enabled' => false, + 'module_thresholds' => [ + 'min_warning' => '0', + 'max_warning' => '0', + 'inv_warning' => false, + 'min_critical' => '0', + 'max_critical' => '0', + 'inv_critical' => false, + ], + ]; + // IfInNUcastPkts. + $moduleName = $name.'ifInNUcastPkts'; + $definition['ifInNUcastPkts'] = [ + 'module_name' => $moduleName, + 'module_type' => MODULE_TYPE_REMOTE_SNMP_INC, + 'module_description' => sprintf( + '(%s%s)', + $moduleDescription, + $moduleName + ), + 'module_info' => 'The number of packets, delivered by this sub-layer to a higher (sub-)layer, which were addressed to a multicast or broadcast address at this sub-layer', + 'execution_type' => 'network', + 'value' => '1.3.6.1.2.1.2.2.1.12.'.$value, + 'module_unit' => 'packets/s', + 'default_enabled' => false, + 'module_enabled' => false, + 'module_thresholds' => [ + 'min_warning' => '0', + 'max_warning' => '0', + 'inv_warning' => false, + 'min_critical' => '0', + 'max_critical' => '0', + 'inv_critical' => false, + ], + ]; + // IfOutNUcastPkts. + $moduleName = $name.'ifOutNUcastPkts'; + $definition['ifOutNUcastPkts'] = [ + 'module_name' => $moduleName, + 'module_type' => MODULE_TYPE_REMOTE_SNMP_INC, + 'module_description' => sprintf( + '(%s%s)', + $moduleDescription, + $moduleName + ), + 'module_info' => 'The total number of packets that higher-level protocols requested be transmitted, and which were addressed to a multicast or broadcast address at this sub-layer, including those that were discarded or not sent', + 'execution_type' => 'network', + 'value' => '1.3.6.1.2.1.2.2.1.18.'.$value, + 'module_unit' => 'packets/s', + 'default_enabled' => false, + 'module_enabled' => false, + 'module_thresholds' => [ + 'min_warning' => '0', + 'max_warning' => '0', + 'inv_warning' => false, + 'min_critical' => '0', + 'max_critical' => '0', + 'inv_critical' => false, + ], + ]; + + return $definition; + } + + + /** + * Watch if is a arithmetic operation and perform it. + * + * @param string $operation Operation for perform. + * @param string $unit If filled, + * add unit of measure to the output. + * @param integer|null $type Module type. + * + * @return string + */ + private function evalOperation( + string $operation, + string $unit='', + ?int $type=0 + ) { + // Avoid non-numeric or arithmetic chars for security reasons. + if (preg_match('/(([^0-9\s\+\-\*\/\(\).,])+)/', $operation) === 1) { + $output = 'ERROR'; + } else { + try { + // Get the result of the operation and set it. + $output = ''; + eval('$output = '.$operation.';'); + // If this module has unit, attach to current value. + $output = $this->replacementUnit( + round($output, 2), + $unit, + $type + ); + } catch (Exception $e) { + $output = 'ERROR'; + } + } + + return $output; + } + + + /** + * Filters macros in attributes + * + * @param string $attribute String for manage. + * @param array $columnsList List of the columns. + * @param array $rowList List of the values of current row. + * + * @return string Returns the value filtered. + */ + private function macroFilter( + string $attribute, + array $columnsList, + array $rowList + ) { + // By default, the output is the raw input of attribute. + $output = $attribute; + // If the attribute has a macro, here is filled with the info. + if (preg_match('/_(.*?)_/', $attribute, $macro) !== 0) { + $indexColumn = array_search($macro[1], $columnsList, true); + if ($indexColumn !== false) { + $output = str_replace( + $macro[0], + $rowList[$indexColumn], + $attribute + ); + } + } + + return $output; + } + + + /** + * WMI query execution. + * + * @param string $execution Entire string with the execution command. + * + * @return mixed Result of the operation. + */ + private function wmiExecution(string $execution) + { + $output = []; + try { + exec($execution, $output); + } catch (Exception $ex) { + $output = [ '0' => 'ERROR: Failed execution: '.(string) $ex]; + } + + return $output; + } + + + /** + * WMI query constructor. + * + * @param array $moduleAttr Array with attributes of modules. + * @param string $filterType If filled, what query filter to use. + * @param boolean $onlyQuery Return only query, no command. + * + * @return string A string with the complete query to perform + */ + private function wmiQuery( + array $moduleAttr, + string $filterType='', + ?bool $onlyQuery=false + ) { + // Definition of vars. + $queryClass = $moduleAttr['query_class']; + $queryFilters = json_decode( + $moduleAttr['query_filters'], + true + ); + $macros = json_decode($moduleAttr['macros'], true); + + $queryFields = []; + + // If query key field is filled, add to the query fields. + if (empty($moduleAttr['query_key_field']) === false) { + $queryFields[] = $moduleAttr['query_key_field']; + } + + // Unpack the macros. + foreach ($macros as $key => $macro) { + // Only attach extra field macros and with data inside. + if (preg_match('/extra_field_/', $key) !== 0) { + if (empty($macro) === false) { + $queryFields[] = $macro; + } + } + } + + // Generate the string with fields to perform the query. + $queryFieldsStr = implode(',', $queryFields); + + // Where statement. + if (($filterType === 'scan' || $filterType === 'execution') + && empty($queryFilters[$filterType]) === false + ) { + $queryWhere = ' WHERE '; + $queryWhere .= $queryFilters[$filterType]; + } else { + $queryWhere = ' '; + } + + if ($onlyQuery === true) { + // Set up the execute command. + $executeCommand = sprintf( + 'SELECT %s FROM %s%s', + $queryFieldsStr, + $queryClass, + $queryWhere + ); + } else { + // Set up the execute command. + $executeCommand = sprintf( + '%s \'SELECT %s FROM %s%s\'', + $this->wmiCommand, + $queryFieldsStr, + $queryClass, + $queryWhere + ); + } + + return $executeCommand; } /** * Generate the JS needed for use inside * - * @return void + * @return mixed */ private function loadJS() { @@ -633,49 +4624,78 @@ class AgentWizard extends HTML ob_start(); ?> @@ -779,4 +4905,6 @@ class AgentWizard extends HTML echo $str; return $str; } -} \ No newline at end of file + + +} diff --git a/pandora_console/include/constants.php b/pandora_console/include/constants.php index 1217677bb5..677dac4743 100644 --- a/pandora_console/include/constants.php +++ b/pandora_console/include/constants.php @@ -50,7 +50,9 @@ define('EVENT_NO_VALIDATED', 3); define('AGENT_ENABLED', 0); define('AGENT_DISABLED', 1); - +// Module disabled status. +define('MODULE_ENABLED', 0); +define('MODULE_DISABLED', 1); // Error report codes. define('NOERR', 11111); @@ -347,6 +349,7 @@ define('MODULE_PREDICTION', 5); define('MODULE_WMI', 6); define('MODULE_WEB', 7); define('MODULE_WUX', 8); +define('MODULE_WIZARD', 9); // Type of Modules of Prediction. define('MODULE_PREDICTION_SERVICE', 2); @@ -674,3 +677,54 @@ define('W_CREATE_MODULE', 3); define('W_CREATE_ALERT', 4); define('W_CREATE_TASK', 5); define('WELCOME_FINISHED', -1); + +// Fixed tnetwork_component values. +define('MODULE_TYPE_NUMERIC', 1); +define('MODULE_TYPE_INCREMENTAL', 2); +define('MODULE_TYPE_BOOLEAN', 3); +define('MODULE_TYPE_ALPHANUMERIC', 4); +define('SCAN_TYPE_FIXED', 1); +define('SCAN_TYPE_DYNAMIC', 2); +define('EXECUTION_TYPE_NETWORK', 1); +define('EXECUTION_TYPE_PLUGIN', 2); + +// Id of component type. +define('COMPONENT_TYPE_NETWORK', 2); +define('COMPONENT_TYPE_PLUGIN', 4); +define('COMPONENT_TYPE_WMI', 6); +define('COMPONENT_TYPE_WIZARD', 9); + +// Wizard Internal Plugins. +define('PLUGIN_WIZARD_SNMP_MODULE', 1); +define('PLUGIN_WIZARD_SNMP_PROCESS', 2); +define('PLUGIN_WIZARD_WMI_MODULE', 3); + +// Module Types. +define('MODULE_TYPE_GENERIC_DATA', 1); +define('MODULE_TYPE_GENERIC_PROC', 2); +define('MODULE_TYPE_GENERIC_DATA_STRING', 3); +define('MODULE_TYPE_GENERIC_DATA_INC', 4); +define('MODULE_TYPE_GENERIC_DATA_INC_ABS', 5); +define('MODULE_TYPE_REMOTE_ICMP_PROC', 6); +define('MODULE_TYPE_REMOTE_ICMP', 7); +define('MODULE_TYPE_REMOTE_TCP', 8); +define('MODULE_TYPE_REMOTE_TCP_PROC', 9); +define('MODULE_TYPE_REMOTE_TCP_STRING', 10); +define('MODULE_TYPE_REMOTE_TCP_INC', 11); +define('MODULE_TYPE_REMOTE_SNMP', 15); +define('MODULE_TYPE_REMOTE_SNMP_INC', 16); +define('MODULE_TYPE_REMOTE_SNMP_STRING', 17); +define('MODULE_TYPE_REMOTE_SNMP_PROC', 18); +define('MODULE_TYPE_ASYNC_PROC', 21); +define('MODULE_TYPE_ASYNC_DATA', 22); +define('MODULE_TYPE_ASYNC_STRING', 23); +define('MODULE_TYPE_WEB_ANALYSIS', 25); +define('MODULE_TYPE_WEB_DATA', 30); +define('MODULE_TYPE_WEB_PROC', 31); +define('MODULE_TYPE_WEB_CONTENT_DATA', 32); +define('MODULE_TYPE_WEB_CONTENT_STRING', 33); +define('MODULE_TYPE_REMOTE_CMD', 34); +define('MODULE_TYPE_REMOTE_CMD_PROC', 35); +define('MODULE_TYPE_REMOTE_CMD_STRING', 36); +define('MODULE_TYPE_REMOTE_CMD_INC', 37); +define('MODULE_TYPE_KEEP_ALIVE', 100); diff --git a/pandora_console/include/functions_html.php b/pandora_console/include/functions_html.php index a57d062ec6..dc96a3b115 100644 --- a/pandora_console/include/functions_html.php +++ b/pandora_console/include/functions_html.php @@ -1797,6 +1797,7 @@ function html_print_div($options, $return=false) 'id', 'style', 'class', + 'title', ]; if (isset($options['hidden'])) { @@ -2224,21 +2225,36 @@ function html_print_input_image($name, $src, $value, $style='', $return=false, $ * * The element will have an id like: "hidden-$name" * - * @param string $name Input name. - * @param string $value Input value. - * @param boolean $return Whether to return an output string or echo now (optional, echo by default). - * @param string $class Set the class of input. + * @param string $name Input name. + * @param string $value Input value. + * @param boolean $return Whether to return an output string or echo now + * (optional, echo by default). + * @param string $class Set the class of input. + * @param string $attributes String with the needed attributes to add. + * @param string $id Specific id. * * @return string HTML code if return parameter is true. */ -function html_print_input_hidden($name, $value, $return=false, $class=false) -{ +function html_print_input_hidden( + $name, + $value, + $return=false, + $class=false, + $attributes=false, + $id='' +) { if ($class !== false) { $classText = 'class="'.$class.'"'; } else { $classText = ''; } + if ($attributes !== false) { + $otherAttributes = $attributes; + } else { + $otherAttributes = ''; + } + $separator = '"'; if (is_string($value)) { @@ -2247,7 +2263,12 @@ function html_print_input_hidden($name, $value, $return=false, $class=false) } } - $output = ''; + $idInput = 'hidden-'.$name; + if (empty($id) === false) { + $idInput = $id; + } + + $output = ''; if ($return) { return $output; @@ -3042,34 +3063,53 @@ function html_print_checkbox( /** - * Render a checkbox button input switch type. Extended version, use html_print_checkbox_switch() to simplify. + * Render a checkbox button input switch type. + * Extended version, use html_print_checkbox_switch() to simplify. * - * @param string Input name. - * @param string Input value. - * @param string Set the button to be marked (optional, unmarked by default). - * @param bool Disable the button (optional, button enabled by default). - * @param string Script to execute when onClick event is triggered (optional). - * @param string Optional HTML attributes. It's a free string which will be - * @param bool Whether to return an output string or echo now (optional, echo by default). + * @param string $name Input name. + * @param integer $value Input value. + * @param integer $checked Input checked. + * @param boolean $disabled Disable the button (optional, + * button enabled by default). + * @param string $script Script to execute when onClick event + * is triggered (optional). + * @param string $attributes Optional HTML attributes. + * It's a free string which will be. + * @param boolean $return Whether to return an output string or echo now + * (optional, echo by default). + * @param string $id Input id. + * @param string $classParent Class for label. * - * @return string HTML code if return parameter is true. + * @return string Input html. */ - - -function html_print_checkbox_switch_extended($name, $value, $checked, $disabled, $script, $attributes, $return=false, $id='') -{ +function html_print_checkbox_switch_extended( + $name, + $value, + $checked, + $disabled=false, + $script='', + $attributes='', + $return=false, + $id='', + $classParent='' +) { static $idcounter = []; - // If duplicate names exist, it will start numbering. Otherwise it won't + // If duplicate names exist, it will start numbering. Otherwise it won't. if (isset($idcounter[$name])) { $idcounter[$name]++; } else { $idcounter[$name] = 0; } - $id_aux = preg_replace('/[^a-z0-9\:\;\-\_]/i', '', $name.($idcounter[$name] ? $idcounter[$name] : '')); + $id_aux = preg_replace( + '/[^a-z0-9\:\;\-\_]/i', + '', + $name.($idcounter[$name] ? $idcounter[$name] : '') + ); - $output = '