From 92a200c5e2d3913f9e1aaf12f4d75cd699e9565f Mon Sep 17 00:00:00 2001 From: Pablo Aragon Date: Tue, 30 Apr 2024 17:14:54 +0200 Subject: [PATCH 1/2] 13598-Add item End of life in Report templates --- .../reporting_builder.item_editor.php | 4 +-- .../include/functions_reporting.php | 36 ++++++++++++++----- 2 files changed, 30 insertions(+), 10 deletions(-) diff --git a/pandora_console/godmode/reporting/reporting_builder.item_editor.php b/pandora_console/godmode/reporting/reporting_builder.item_editor.php index cd53da1f95..74d38e8ec4 100755 --- a/pandora_console/godmode/reporting/reporting_builder.item_editor.php +++ b/pandora_console/godmode/reporting/reporting_builder.item_editor.php @@ -1362,12 +1362,12 @@ $class = 'databox filters'; $result_select = []; - foreach ($os as $item) { + foreach ($os_list as $item) { $result_select[$item['id_os']] = $item['name']; } html_print_select( - $os_list, + $result_select, 'os_selector', $os_selector, '' diff --git a/pandora_console/include/functions_reporting.php b/pandora_console/include/functions_reporting.php index aa2567952b..0dfee24029 100755 --- a/pandora_console/include/functions_reporting.php +++ b/pandora_console/include/functions_reporting.php @@ -3817,10 +3817,18 @@ function reporting_end_of_life($report, $content) $return['data'] = []; - $external_source = json_decode( - $content['external_source'], - true - ); + if (isset($content['external_source']) === true && $content['external_source'] !== 'null') { + $external_source = json_decode( + $content['external_source'], + true + ); + } else { + $external_source = [ + 'end_of_life_date' => $content['end_of_life_date'], + 'os_selector' => $content['os_selector'], + 'os_version' => $content['os_version'], + ]; + } $servers_ids = [0]; @@ -3856,26 +3864,38 @@ function reporting_end_of_life($report, $content) ); $es_os_version = $external_source['os_version']; + $os_selector_name = db_get_value('name', 'tconfig_os', 'id_os', (int) $external_source['os_selector']); $es_limit_eol_datetime = DateTime::createFromFormat('Y/m/d', $external_source['end_of_life_date']); // Post-process returned agents to filter agents using correctly formatted fields. + $agents_tmp = []; foreach ($agents as $idx => $agent) { + if (empty($agent['os_version']) === true) { + $agent['os_version'] = '.*'; + } + // Must perform this query and subsequent operations in each iteration (note this is costly) since OS version field may contain HTML entities in BD and decoding can't be fully handled with mysql methods when doing a REGEXP. - $result_end_of_life = db_get_value_sql('SELECT end_of_support FROM tconfig_os_version WHERE "'.io_safe_output($agent['os_version']).'" REGEXP version AND "'.io_safe_output($agent['name']).'" REGEXP product'); + $result_end_of_life = db_get_value_sql('SELECT end_of_support FROM tconfig_os_version'); $agent_eol_datetime = DateTime::createFromFormat('Y/m/d', $result_end_of_life); - if ((preg_match('/'.$es_os_version.'/i', $agent['os_version']) || $es_os_version === '') && $result_end_of_life !== false && ($es_limit_eol_datetime === false || $es_limit_eol_datetime >= $agent_eol_datetime)) { + if ((preg_match('/'.$es_os_version.'/i', $agent['os_version']) || $es_os_version === '') + && $os_selector_name === io_safe_output($agent['name']) + && $result_end_of_life !== false + && ($es_limit_eol_datetime === false || $es_limit_eol_datetime >= $agent_eol_datetime) + ) { // Agent matches an existing OS version. $agents[$idx]['end_of_life'] = $result_end_of_life; + $agents_tmp[] = $agents[$idx]; } else { // Set agent to be filtered out. $agents[$idx] = null; } } - if ($agents !== false) { - $agents = array_filter($agents); + // TODO: + if ($agents_tmp !== false) { + $agents = $agents_tmp; } if (is_metaconsole() === true) { From c5a131407709efaae0dea31795e06d70b139bf04 Mon Sep 17 00:00:00 2001 From: Pablo Aragon Date: Tue, 7 May 2024 13:01:22 +0200 Subject: [PATCH 2/2] 13598-Fix item End of life in Report templates --- .../reporting_builder.item_editor.php | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/pandora_console/godmode/reporting/reporting_builder.item_editor.php b/pandora_console/godmode/reporting/reporting_builder.item_editor.php index 5f18e837e2..a1be5b91f6 100755 --- a/pandora_console/godmode/reporting/reporting_builder.item_editor.php +++ b/pandora_console/godmode/reporting/reporting_builder.item_editor.php @@ -2757,14 +2757,16 @@ if (is_metaconsole() === true) {