From f9d123603b2154c158d25a28b4620917cdf753b0 Mon Sep 17 00:00:00 2001 From: "marcos.alconada" <marcos.alconada@artica.es> Date: Mon, 11 Mar 2019 18:03:05 +0100 Subject: [PATCH 01/83] Resolved Former-commit-id: f5628a1fd34771329b2b06664b552beaacf4c369 --- 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 fa8287f406..c5669d808a 100644 --- a/pandora_console/include/functions_events.php +++ b/pandora_console/include/functions_events.php @@ -431,7 +431,7 @@ function events_change_status( $ack_user = $config['id_user']; } else { $acl_utimestamp = 0; - $ack_user = ''; + $ack_user = $config['id_user']; } switch ($new_status) { From aba2ef509a2da8a16862a7f6bb1530ca06170131 Mon Sep 17 00:00:00 2001 From: samucarc <samuel.carcases> Date: Wed, 13 Mar 2019 11:58:21 +0100 Subject: [PATCH 02/83] Fixed messages count Former-commit-id: df7b230fe009e6f73d836cf2290f33deb8a743d9 --- pandora_console/include/functions_messages.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandora_console/include/functions_messages.php b/pandora_console/include/functions_messages.php index 5374fb7b1e..63c12d019d 100644 --- a/pandora_console/include/functions_messages.php +++ b/pandora_console/include/functions_messages.php @@ -383,7 +383,7 @@ function messages_get_count( } $sql = sprintf( - 'SELECT count(*) as "n" FROM ( + 'SELECT count(distinct id_mensaje) as "n" FROM ( SELECT tm.*, utimestamp_read > 0 as "read" From 0863c2ffd64c3d8338dcd7eda6153eb6750b36e5 Mon Sep 17 00:00:00 2001 From: samucarc <samuel.carcases> Date: Fri, 15 Mar 2019 11:51:39 +0100 Subject: [PATCH 03/83] Hidden buttons template and wizard in the open visual console Former-commit-id: 42796373226cf112f1abda8b54a780b1546f46c3 --- pandora_console/godmode/reporting/map_builder.php | 2 +- pandora_console/godmode/reporting/visual_console_favorite.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pandora_console/godmode/reporting/map_builder.php b/pandora_console/godmode/reporting/map_builder.php index 6a20eeb30d..4471f8cbd8 100644 --- a/pandora_console/godmode/reporting/map_builder.php +++ b/pandora_console/godmode/reporting/map_builder.php @@ -61,7 +61,7 @@ $buttons['visual_console_favorite'] = [ 'text' => '<a href="'.$url_visual_console_favorite.'">'.html_print_image('images/list.png', true, ['title' => __('Visual Favourite Console')]).'</a>', ]; -if ($is_enterprise && $vconsoles_manage) { +if ($is_enterprise !== ENTERPRISE_NOT_HOOK && $vconsoles_manage) { $buttons['visual_console_template'] = [ 'active' => false, 'text' => '<a href="'.$url_visual_console_template.'">'.html_print_image('images/templates.png', true, ['title' => __('Visual Console Template')]).'</a>', diff --git a/pandora_console/godmode/reporting/visual_console_favorite.php b/pandora_console/godmode/reporting/visual_console_favorite.php index df13291539..d6fb18de15 100644 --- a/pandora_console/godmode/reporting/visual_console_favorite.php +++ b/pandora_console/godmode/reporting/visual_console_favorite.php @@ -54,7 +54,7 @@ $buttons['visual_console_favorite'] = [ 'text' => '<a href="'.$url_visual_console_favorite.'">'.html_print_image('images/list.png', true, ['title' => __('Visual Favourite Console')]).'</a>', ]; -if ($is_enterprise && $vconsoles_manage) { +if ($is_enterprise !== ENTERPRISE_NOT_HOOK && $vconsoles_manage) { $buttons['visual_console_template'] = [ 'active' => false, 'text' => '<a href="'.$url_visual_console_template.'">'.html_print_image('images/templates.png', true, ['title' => __('Visual Console Template')]).'</a>', From 1a01c311d6e0d208a98177371d3fb65a8a7fd88e Mon Sep 17 00:00:00 2001 From: samucarc <samuel.carcases> Date: Wed, 20 Mar 2019 18:30:52 +0100 Subject: [PATCH 04/83] Fixed down paginations in manage agents Former-commit-id: 28f7546b2d0cc8f4e1d13763e9c92ac99c2de2f9 --- pandora_console/godmode/agentes/modificar_agente.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandora_console/godmode/agentes/modificar_agente.php b/pandora_console/godmode/agentes/modificar_agente.php index 4673bf2f46..82078fc109 100644 --- a/pandora_console/godmode/agentes/modificar_agente.php +++ b/pandora_console/godmode/agentes/modificar_agente.php @@ -670,7 +670,7 @@ if ($agents !== false) { } echo '</table>'; - ui_pagination($total_agents, "index.php?sec=gagente&sec2=godmode/agentes/modificar_agente&group_id=$ag_group&search=$search&sort_field=$sortField&sort=$sort&disabled=$disabled&os=$os", $offset); + ui_pagination($total_agents, "index.php?sec=gagente&sec2=godmode/agentes/modificar_agente&group_id=$ag_group&recursion=$recursion&search=$search&sort_field=$sortField&sort=$sort&disabled=$disabled&os=$os", $offset); echo "<table width='100%'><tr><td align='right'>"; } else { ui_print_info_message(['no_close' => true, 'message' => __('There are no defined agents') ]); From 4b6c21bb309c82ae67daf826739437254d700db8 Mon Sep 17 00:00:00 2001 From: "marcos.alconada" <marcos.alconada@artica.es> Date: Tue, 4 Jun 2019 11:44:11 +0200 Subject: [PATCH 05/83] Add policies to general search and deleted help functions --- pandora_console/operation/search_main.php | 11 +- .../operation/search_policies.getdata.php | 199 ++++++++++++++++++ pandora_console/operation/search_policies.php | 65 ++++++ pandora_console/operation/search_results.php | 41 ++-- 4 files changed, 294 insertions(+), 22 deletions(-) create mode 100644 pandora_console/operation/search_policies.getdata.php create mode 100644 pandora_console/operation/search_policies.php diff --git a/pandora_console/operation/search_main.php b/pandora_console/operation/search_main.php index ffc9d93f74..d5ae3bff42 100644 --- a/pandora_console/operation/search_main.php +++ b/pandora_console/operation/search_main.php @@ -20,6 +20,7 @@ $searchGraphs = check_acl($config['id_user'], 0, 'RR'); $searchMaps = check_acl($config['id_user'], 0, 'RR'); $searchReports = check_acl($config['id_user'], 0, 'RR'); $searchUsers = check_acl($config['id_user'], 0, 'UM'); +$searchPolicies = check_acl($config['id_user'], 0, 'UM'); $searchHelps = true; echo '<br><div style="margin:auto; width:90%; padding: 10px; background: #fff">'; @@ -44,8 +45,12 @@ $table->style[9] = 'font-weight: bold; text-align: center;'; $table->style[10] = 'font-weight: bold; text-align: center;'; $table->style[11] = 'font-weight: bold; text-align: center;'; $table->style[13] = 'font-weight: bold; text-align: center;'; +$table->style[14] = 'font-weight: bold; text-align: center;'; $table->style[15] = 'font-weight: bold; text-align: center;'; + + + $table->data[0][0] = html_print_image('images/agent.png', true, ['title' => __('Agents found')]); $table->data[0][1] = "<a href='index.php?search_category=agents&keywords=".$config['search_keywords']."&head_search_keywords=Search'>".sprintf(__('%s Found'), $totalAgents).'</a>'; $table->data[0][2] = html_print_image('images/module.png', true, ['title' => __('Modules found')]); @@ -64,8 +69,10 @@ $table->data[0][10] = html_print_image('images/reporting.png', true, ['title' => $table->data[0][11] = "<a href='index.php?search_category=reports&keywords=".$config['search_keywords']."&head_search_keywords=Search'>".sprintf(__('%s Found'), $totalReports).'</a>'; $table->data[0][12] = html_print_image('images/visual_console_green.png', true, ['title' => __('Maps found')]); $table->data[0][13] = "<a href='index.php?search_category=maps&keywords=".$config['search_keywords']."&head_search_keywords=Search'>".sprintf(__('%s Found'), $totalMaps).'</a>'; -$table->data[0][14] = html_print_image('images/help.png', true, ['title' => __('Helps found')]); -$table->data[0][15] = "<a href='index.php?search_category=helps&keywords=".$config['search_keywords']."&head_search_keywords=Search'>".sprintf(__('%s Found'), $totalHelps).'</a>'; +if (file_exists(ENTERPRISE_DIR.'/load_enterprise.php')) { + $table->data[0][14] = html_print_image('images/policies.png', true, ['title' => __('Policies')]); + $table->data[0][15] = "<a href='index.php?search_category=policies&keywords=".$config['search_keywords']."&head_search_keywords=Search'>".sprintf(__('%s Found'), $totalPolicies).'</a>'; +} html_print_table($table); diff --git a/pandora_console/operation/search_policies.getdata.php b/pandora_console/operation/search_policies.getdata.php new file mode 100644 index 0000000000..c91e7e4279 --- /dev/null +++ b/pandora_console/operation/search_policies.getdata.php @@ -0,0 +1,199 @@ +<?php + +// Pandora FMS - http://pandorafms.com +// ================================================== +// Copyright (c) 2005-2011 Artica Soluciones Tecnologicas +// Please see http://pandorafms.org for full contribution list +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; version 2 +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +global $config; + + +require_once $config['homedir'].'/enterprise/include/functions_policies.php'; + + +$searchpolicies = check_acl($config['id'], 0, 'UM'); + +$selectpolicieIDUp = ''; +$selectpolicieIDDown = ''; +$selectNameUp = ''; +$selectNameDown = ''; +$selectDescriptionUp = ''; +$selectDescriptionDown = ''; +$selectId_groupUp = ''; +$selectId_groupDown = ''; +$selectStatusUp = ''; +$selectStatusDown = ''; + +switch ($sortField) { + case 'id': + switch ($sort) { + case 'up': + $selectpolicieIDUp = $selected; + $order = [ + 'field' => 'id', + 'order' => 'ASC', + ]; + break; + + case 'down': + $selectpolicieIDDown = $selected; + $order = [ + 'field' => 'id', + 'order' => 'DESC', + ]; + break; + } + break; + + case 'name': + switch ($sort) { + case 'up': + $selectNameUp = $selected; + $order = [ + 'field' => 'name', + 'order' => 'ASC', + ]; + break; + + case 'down': + $selectNameDown = $selected; + $order = [ + 'field' => 'name', + 'order' => 'DESC', + ]; + break; + } + break; + + case 'description': + switch ($sort) { + case 'up': + $selectId_groupUp = $selected; + $order = [ + 'field' => 'description', + 'order' => 'ASC', + ]; + break; + + case 'down': + $selectDescriptionDown = $selected; + $order = [ + 'field' => 'description', + 'order' => 'DESC', + ]; + break; + } + break; + + case 'last_contact': + switch ($sort) { + case 'up': + $selectId_groupUp = $selected; + $order = [ + 'field' => 'last_connect', + 'order' => 'ASC', + ]; + break; + + case 'down': + $selectId_groupDown = $selected; + $order = [ + 'field' => 'last_connect', + 'order' => 'DESC', + ]; + break; + } + break; + + case 'id_group': + switch ($sort) { + case 'up': + $selectId_groupUp = $selected; + $order = [ + 'field' => 'last_connect', + 'order' => 'ASC', + ]; + break; + + case 'down': + $selectId_groupDown = $selected; + $order = [ + 'field' => 'last_connect', + 'order' => 'DESC', + ]; + break; + } + break; + + case 'status': + switch ($sort) { + case 'up': + $selectStatusUp = $selected; + $order = [ + 'field' => 'is_admin', + 'order' => 'ASC', + ]; + break; + + case 'down': + $selectStatusDown = $selected; + $order = [ + 'field' => 'is_admin', + 'order' => 'DESC', + ]; + break; + } + break; + + default: + $selectpolicieIDUp = $selected; + $selectpolicieIDDown = ''; + $selectNameUp = ''; + $selectNameDown = ''; + $selectDescriptionUp = ''; + $selectDescriptionDown = ''; + $selectId_groupUp = ''; + $selectId_groupDown = ''; + $selectStatusUp = ''; + $selectStatusDown = ''; + + $order = [ + 'field' => 'id', + 'order' => 'ASC', + ]; + break; +} + +if ($searchpolicies == 0) { + $sql = "SELECT id, name, description, id_group, status FROM tpolicies + WHERE name LIKE '%".$stringSearchSQL."%' OR + description LIKE '%".$stringSearchSQL."%' + ORDER BY ".$order['field'].' '.$order['order']; +} + + $sql .= ' LIMIT '.$config['block_size'].' OFFSET '.get_parameter('offset', 0); + + + $policies = db_process_sql($sql); + +if ($policies !== false) { + if ($only_count) { + unset($policies); + } + + $sql = "SELECT COUNT(id) AS count FROM tpolicies + WHERE name LIKE '%".$stringSearchSQL."%' OR + description LIKE '%".$stringSearchSQL."%'"; + + + // q$totalPolicies = db_get_value_sql($sql); + $totalPolicies = count($policies); +} else { + $totalPolicies = 0; +} diff --git a/pandora_console/operation/search_policies.php b/pandora_console/operation/search_policies.php new file mode 100644 index 0000000000..8f339b7c1b --- /dev/null +++ b/pandora_console/operation/search_policies.php @@ -0,0 +1,65 @@ +<?php + +// Pandora FMS - http://pandorafms.com +// ================================================== +// Copyright (c) 2005-2011 Artica Soluciones Tecnologicas +// Please see http://pandorafms.org for full contribution list +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; version 2 +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +global $config; + +// require_once $config['homedir'].'/include/functions_status.php'; +require_once $config['homedir'].'/enterprise/include/functions_policies.php'; +require_once $config['homedir'].'/enterprise/include/functions_groups.php'; + +$searchpolicies = check_acl($config['id_user'], 0, 'UM'); + +if (!$policies || !$searchpolicies) { + echo "<br><div class='nf'>".__('Zero results found')."</div>\n"; +} else { + $table->cellpadding = 4; + $table->cellspacing = 4; + $table->width = '98%'; + $table->class = 'databox'; + + $table->align = []; + $table->align[4] = 'center'; + + $table->head = []; + $table->head[0] = __('ID').' '.'<a href="index.php?search_category=policies&keywords='.$config['search_keywords'].'&head_search_keywords=abc&offset='.$offset.'&sort_field=id_policie&sort=up">'.html_print_image('images/sort_up.png', true, ['style' => $selectpolicieIDUp]).'</a>'.'<a href="index.php?search_category=policies&keywords='.$config['search_keywords'].'&head_search_keywords=abc&offset='.$offset.'&sort_field=id_policie&sort=down">'.html_print_image('images/sort_down.png', true, ['style' => $selectpolicieIDDown]).'</a>'; + $table->head[1] = __('Name').' '.'<a href="index.php?search_category=policies&keywords='.$config['search_keywords'].'&head_search_keywords=abc&offset='.$offset.'&sort_field=name&sort=up">'.html_print_image('images/sort_up.png', true, ['style' => $selectNameUp]).'</a>'.'<a href="index.php?search_category=policies&keywords='.$config['search_keywords'].'&head_search_keywords=abc&offset='.$offset.'&sort_field=name&sort=down">'.html_print_image('images/sort_down.png', true, ['style' => $selectNameDown]).'</a>'; + $table->head[2] = __('Description').' '.'<a href="index.php?search_category=policies&keywords='.$config['search_keywords'].'&head_search_keywords=abc&offset='.$offset.'&sort_field=description&sort=up">'.html_print_image('images/sort_up.png', true, ['style' => $selectDescriptionUp]).'</a>'.'<a href="index.php?search_category=policies&keywords='.$config['search_keywords'].'&head_search_keywords=abc&offset='.$offset.'&sort_field=description&sort=down">'.html_print_image('images/sort_down.png', true, ['style' => $selectDescriptionDown]).'</a>'; + $table->head[3] = __('Id_group').' '.'<a href="index.php?search_category=policies&keywords='.$config['search_keywords'].'&head_search_keywords=abc&offset='.$offset.'&sort_field=last_contact&sort=up">'.html_print_image('images/sort_up.png', true, ['style' => $selectId_groupUp]).'</a>'.'<a href="index.php?search_category=policies&keywords='.$config['search_keywords'].'&head_search_keywords=abc&offset='.$offset.'&sort_field=last_contact&sort=down">'.html_print_image('images/sort_down.png', true, ['style' => $selectId_groupDown]).'</a>'; + $table->head[4] = __('Status').' '.'<a href="index.php?search_category=policies&keywords='.$config['search_keywords'].'&head_search_keywords=abc&offset='.$offset.'&sort_field=status&sort=up">'.html_print_image('images/sort_up.png', true, ['style' => $selectStatusUp]).'</a>'.'<a href="index.php?search_category=policies&keywords='.$config['search_keywords'].'&head_search_keywords=abc&offset='.$offset.'&sort_field=status&sort=down">'.html_print_image('images/sort_down.png', true, ['style' => $selectstatusDown]).'</a>'; + + $table->data = []; + + foreach ($policies as $policie) { + $policieIDCell = "<a href='?sec=gmodules&sec2=enterprise/godmode/policies/policies&id=".$policies['id']."'>".$policies['id'].'</a>'; + + + array_push( + $table->data, + [ + $policie['id'], + $policie['name'], + $policie['description'], + $policie['id_group'], + $policie['status'], + + ] + ); + } + + $totalPolicies = count($policies); + echo '<br />'; + ui_pagination($totalPolicies); + html_print_table($table); + unset($table); + ui_pagination($totalPolicies); +} diff --git a/pandora_console/operation/search_results.php b/pandora_console/operation/search_results.php index d59e6908cb..cbd49ccc28 100644 --- a/pandora_console/operation/search_results.php +++ b/pandora_console/operation/search_results.php @@ -18,7 +18,7 @@ require_once $config['homedir'].'/include/functions_reporting.php'; enterprise_include('operation/reporting/custom_reporting.php'); $searchAgents = $searchAlerts = $searchModules = check_acl($config['id_user'], 0, 'AR'); -$searchUsers = check_acl($config['id_user'], 0, 'UM'); +$searchUsers = $searchPolicies = check_acl($config['id_user'], 0, 'UM'); $searchMaps = $searchReports = $searchGraphs = check_acl($config['id_user'], 0, 'IR'); $searchMain = true; $searchHelps = true; @@ -43,6 +43,7 @@ if ($config['search_category'] == 'all') { // INI SECURITY ACL if ((!$searchAgents && !$searchUsers && !$searchMaps) || (!$searchUsers && $searchTab == 'users') + || (!$searchPolicies && $searchTab == 'policies') || (!$searchAgents && ($searchTab == 'agents' || $searchTab == 'alerts')) || (!$searchGraphs && ($searchTab == 'graphs' || $searchTab == 'maps' || $searchTab == 'reports')) ) { @@ -161,29 +162,29 @@ if ($searchModules) { $modules_tab = ''; } -if ($searchHelps) { - $helps_tab = [ - 'text' => "<a href='index.php?search_category=helps&keywords=".$config['search_keywords']."&head_search_keywords=Search'>".html_print_image( - 'images/help_w.png', +if ($searchPolicies) { + $policies_tab = [ + 'text' => "<a href='index.php?search_category=policies&keywords=".$config['search_keywords']."&head_search_keywords=Search'>".html_print_image( + 'images/policies.png', true, - ['title' => __('Helps')] + ['title' => __('Policies')] ).'</a>', - 'active' => $searchTab == 'helps', + 'active' => $searchTab == 'policies', ]; } else { - $helps_tab = ''; + $policies_tab = ''; } $onheader = [ - 'main' => $main_tab, - 'agents' => $agents_tab, - 'modules' => $modules_tab, - 'alerts' => $alerts_tab, - 'users' => $users_tab, - 'graphs' => $graphs_tab, - 'reports' => $reports_tab, - 'maps' => $maps_tab, - 'helps' => $helps_tab, + 'main' => $main_tab, + 'agents' => $agents_tab, + 'modules' => $modules_tab, + 'alerts' => $alerts_tab, + 'users' => $users_tab, + 'graphs' => $graphs_tab, + 'reports' => $reports_tab, + 'maps' => $maps_tab, + 'policies' => $policies_tab, ]; ui_print_page_header( @@ -251,8 +252,8 @@ switch ($searchTab) { include_once 'search_modules.php'; break; - case 'helps': - include_once 'search_helps.getdata.php'; - include_once 'search_helps.php'; + case 'policies': + include_once 'search_policies.getdata.php'; + include_once 'search_policies.php'; break; } From c5cb76b2714e559a9acc6a60267653e8c476da5e Mon Sep 17 00:00:00 2001 From: "marcos.alconada" <marcos.alconada@artica.es> Date: Tue, 4 Jun 2019 11:52:56 +0200 Subject: [PATCH 06/83] Add policies to general search --- pandora_console/operation/search_policies.getdata.php | 1 + pandora_console/operation/search_results.php | 1 + 2 files changed, 2 insertions(+) diff --git a/pandora_console/operation/search_policies.getdata.php b/pandora_console/operation/search_policies.getdata.php index c91e7e4279..fd97335421 100644 --- a/pandora_console/operation/search_policies.getdata.php +++ b/pandora_console/operation/search_policies.getdata.php @@ -177,6 +177,7 @@ if ($searchpolicies == 0) { ORDER BY ".$order['field'].' '.$order['order']; } + $sql .= ' LIMIT '.$config['block_size'].' OFFSET '.get_parameter('offset', 0); diff --git a/pandora_console/operation/search_results.php b/pandora_console/operation/search_results.php index cbd49ccc28..e4dbe38a0c 100644 --- a/pandora_console/operation/search_results.php +++ b/pandora_console/operation/search_results.php @@ -255,5 +255,6 @@ switch ($searchTab) { case 'policies': include_once 'search_policies.getdata.php'; include_once 'search_policies.php'; + break; } From 22efc4ba44c2d2fe4b1a820e436d40156ea92506 Mon Sep 17 00:00:00 2001 From: "marcos.alconada" <marcos.alconada@artica.es> Date: Tue, 4 Jun 2019 17:05:17 +0200 Subject: [PATCH 07/83] Resolved problem with counts on search main --- pandora_console/operation/search_graphs.getdata.php | 4 ++++ pandora_console/operation/search_main.php | 1 + pandora_console/operation/search_policies.getdata.php | 6 ++---- pandora_console/operation/search_policies.php | 2 +- pandora_console/operation/search_results.php | 1 + 5 files changed, 9 insertions(+), 5 deletions(-) diff --git a/pandora_console/operation/search_graphs.getdata.php b/pandora_console/operation/search_graphs.getdata.php index aefd6e2073..bd3159d72f 100644 --- a/pandora_console/operation/search_graphs.getdata.php +++ b/pandora_console/operation/search_graphs.getdata.php @@ -26,6 +26,7 @@ if ($searchGraphs) { $usergraphs_id = array_keys($usergraphs); if (empty($usergraphs_id)) { + $totalGraphs = 0; return; } @@ -37,6 +38,7 @@ if ($searchGraphs) { 'id_graph', 'name', 'description', + ]; $totalGraphs = (int) db_get_value_filter('COUNT(id_graph) AS count', 'tgraph', $filter); @@ -46,4 +48,6 @@ if ($searchGraphs) { $filter['offset'] = (int) get_parameter('offset'); $graphs = db_get_all_rows_filter('tgraph', $filter, $columns); } + + $totalGraphs = 0; } diff --git a/pandora_console/operation/search_main.php b/pandora_console/operation/search_main.php index d5ae3bff42..f4ba5e3f91 100644 --- a/pandora_console/operation/search_main.php +++ b/pandora_console/operation/search_main.php @@ -86,4 +86,5 @@ if ($searchAgents && $totalAgents > 0) { ).'</a>'; } + echo '</div>'; diff --git a/pandora_console/operation/search_policies.getdata.php b/pandora_console/operation/search_policies.getdata.php index fd97335421..0a28651e7a 100644 --- a/pandora_console/operation/search_policies.getdata.php +++ b/pandora_console/operation/search_policies.getdata.php @@ -13,8 +13,7 @@ // GNU General Public License for more details. global $config; - -require_once $config['homedir'].'/enterprise/include/functions_policies.php'; +enterprise_include_once('include/functions_policies.php'); $searchpolicies = check_acl($config['id'], 0, 'UM'); @@ -193,8 +192,7 @@ if ($policies !== false) { description LIKE '%".$stringSearchSQL."%'"; - // q$totalPolicies = db_get_value_sql($sql); - $totalPolicies = count($policies); + $totalPolicies = db_get_value_sql($sql); } else { $totalPolicies = 0; } diff --git a/pandora_console/operation/search_policies.php b/pandora_console/operation/search_policies.php index 8f339b7c1b..c048e12c7c 100644 --- a/pandora_console/operation/search_policies.php +++ b/pandora_console/operation/search_policies.php @@ -14,7 +14,7 @@ global $config; // require_once $config['homedir'].'/include/functions_status.php'; -require_once $config['homedir'].'/enterprise/include/functions_policies.php'; +enterprise_include_once('include/functions_policies.php'); require_once $config['homedir'].'/enterprise/include/functions_groups.php'; $searchpolicies = check_acl($config['id_user'], 0, 'UM'); diff --git a/pandora_console/operation/search_results.php b/pandora_console/operation/search_results.php index e4dbe38a0c..11b4aedec9 100644 --- a/pandora_console/operation/search_results.php +++ b/pandora_console/operation/search_results.php @@ -213,6 +213,7 @@ switch ($searchTab) { include_once 'search_maps.getdata.php'; include_once 'search_modules.getdata.php'; include_once 'search_helps.getdata.php'; + include_once 'search_policies.getdata.php'; include_once 'search_main.php'; break; From 9bc83b4ffd7c2275ab53a83ae237faef499f5d5b Mon Sep 17 00:00:00 2001 From: "marcos.alconada" <marcos.alconada@artica.es> Date: Tue, 4 Jun 2019 17:08:08 +0200 Subject: [PATCH 08/83] Add new else --- pandora_console/operation/search_graphs.getdata.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pandora_console/operation/search_graphs.getdata.php b/pandora_console/operation/search_graphs.getdata.php index bd3159d72f..4dc6f3ba74 100644 --- a/pandora_console/operation/search_graphs.getdata.php +++ b/pandora_console/operation/search_graphs.getdata.php @@ -47,7 +47,7 @@ if ($searchGraphs) { $filter['limit'] = $config['block_size']; $filter['offset'] = (int) get_parameter('offset'); $graphs = db_get_all_rows_filter('tgraph', $filter, $columns); + } else { + $totalGraphs = 0; } - - $totalGraphs = 0; } From 1ee347684e5357766142b3c4b0ff34f7dcf61ad8 Mon Sep 17 00:00:00 2001 From: "marcos.alconada" <marcos.alconada@artica.es> Date: Wed, 5 Jun 2019 10:17:28 +0200 Subject: [PATCH 09/83] Added condition if enterprise installed --- 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 f4ba5e3f91..2da3377ff4 100644 --- a/pandora_console/operation/search_main.php +++ b/pandora_console/operation/search_main.php @@ -69,7 +69,7 @@ $table->data[0][10] = html_print_image('images/reporting.png', true, ['title' => $table->data[0][11] = "<a href='index.php?search_category=reports&keywords=".$config['search_keywords']."&head_search_keywords=Search'>".sprintf(__('%s Found'), $totalReports).'</a>'; $table->data[0][12] = html_print_image('images/visual_console_green.png', true, ['title' => __('Maps found')]); $table->data[0][13] = "<a href='index.php?search_category=maps&keywords=".$config['search_keywords']."&head_search_keywords=Search'>".sprintf(__('%s Found'), $totalMaps).'</a>'; -if (file_exists(ENTERPRISE_DIR.'/load_enterprise.php')) { +if (enterprise_installed()) { $table->data[0][14] = html_print_image('images/policies.png', true, ['title' => __('Policies')]); $table->data[0][15] = "<a href='index.php?search_category=policies&keywords=".$config['search_keywords']."&head_search_keywords=Search'>".sprintf(__('%s Found'), $totalPolicies).'</a>'; } From 738958386a0e70e53823ca561e3457d0741dc8ed Mon Sep 17 00:00:00 2001 From: "marcos.alconada" <marcos.alconada@artica.es> Date: Tue, 11 Jun 2019 10:01:51 +0200 Subject: [PATCH 10/83] guardo cambios --- pandora_console/operation/search_main.php | 2 +- .../operation/search_policies.getdata.php | 20 ++++++++++++++++--- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/pandora_console/operation/search_main.php b/pandora_console/operation/search_main.php index 2da3377ff4..b236539695 100644 --- a/pandora_console/operation/search_main.php +++ b/pandora_console/operation/search_main.php @@ -69,7 +69,7 @@ $table->data[0][10] = html_print_image('images/reporting.png', true, ['title' => $table->data[0][11] = "<a href='index.php?search_category=reports&keywords=".$config['search_keywords']."&head_search_keywords=Search'>".sprintf(__('%s Found'), $totalReports).'</a>'; $table->data[0][12] = html_print_image('images/visual_console_green.png', true, ['title' => __('Maps found')]); $table->data[0][13] = "<a href='index.php?search_category=maps&keywords=".$config['search_keywords']."&head_search_keywords=Search'>".sprintf(__('%s Found'), $totalMaps).'</a>'; -if (enterprise_installed()) { +if (enterprise_installed() || is_metaconsole()) { $table->data[0][14] = html_print_image('images/policies.png', true, ['title' => __('Policies')]); $table->data[0][15] = "<a href='index.php?search_category=policies&keywords=".$config['search_keywords']."&head_search_keywords=Search'>".sprintf(__('%s Found'), $totalPolicies).'</a>'; } diff --git a/pandora_console/operation/search_policies.getdata.php b/pandora_console/operation/search_policies.getdata.php index 0a28651e7a..0288c24d1b 100644 --- a/pandora_console/operation/search_policies.getdata.php +++ b/pandora_console/operation/search_policies.getdata.php @@ -177,19 +177,33 @@ if ($searchpolicies == 0) { } - $sql .= ' LIMIT '.$config['block_size'].' OFFSET '.get_parameter('offset', 0); + $sql .= ' LIMIT '.$config['block_size'].' OFFSET '.get_parameter('offset', 0); $policies = db_process_sql($sql); + $sql = "SELECT id_grupo FROM tusuario_perfil + WHERE id_usuario LIKE '%".$config['id_user']."%'"; + + $groups_for_search = db_process_sql($sql); + + +foreach ($policies as $p) { + foreach ($groups_for_search as $group) { + if ($p['id_group'] == $group['id_grupo'] || $group['id_grupo'] == 0) { + $policies_final = $p; + } + } +} + +$policies = $policies_final; if ($policies !== false) { if ($only_count) { unset($policies); } $sql = "SELECT COUNT(id) AS count FROM tpolicies - WHERE name LIKE '%".$stringSearchSQL."%' OR - description LIKE '%".$stringSearchSQL."%'"; + WHERE id = '".$policies_final['id']."'"; $totalPolicies = db_get_value_sql($sql); From 23469796f89cdee6c959eeb75addc843e8f4f826 Mon Sep 17 00:00:00 2001 From: "marcos.alconada" <marcos.alconada@artica.es> Date: Tue, 11 Jun 2019 16:23:42 +0200 Subject: [PATCH 11/83] Limited result for user groups --- .../operation/search_policies.getdata.php | 38 ++++++------------- 1 file changed, 11 insertions(+), 27 deletions(-) diff --git a/pandora_console/operation/search_policies.getdata.php b/pandora_console/operation/search_policies.getdata.php index 0288c24d1b..980a71cec8 100644 --- a/pandora_console/operation/search_policies.getdata.php +++ b/pandora_console/operation/search_policies.getdata.php @@ -170,43 +170,27 @@ switch ($sortField) { } if ($searchpolicies == 0) { - $sql = "SELECT id, name, description, id_group, status FROM tpolicies - WHERE name LIKE '%".$stringSearchSQL."%' OR - description LIKE '%".$stringSearchSQL."%' - ORDER BY ".$order['field'].' '.$order['order']; + $user_groups = users_get_groups($config['id_user'], 'AR', false); + $id_user_groups = array_keys($user_groups); + $id_user_groups_str = implode(',', $id_user_groups); + + $sql = "SELECT id, name, description, id_group, status + FROM tpolicies + WHERE name LIKE '$stringSearchSQL' + AND id_group IN ($id_user_groups_str)"; } - $sql .= ' LIMIT '.$config['block_size'].' OFFSET '.get_parameter('offset', 0); - + $sql .= ' LIMIT '.$config['block_size'].' OFFSET '.get_parameter('offset', 0); $policies = db_process_sql($sql); - $sql = "SELECT id_grupo FROM tusuario_perfil - WHERE id_usuario LIKE '%".$config['id_user']."%'"; - - $groups_for_search = db_process_sql($sql); - - -foreach ($policies as $p) { - foreach ($groups_for_search as $group) { - if ($p['id_group'] == $group['id_grupo'] || $group['id_grupo'] == 0) { - $policies_final = $p; - } - } -} - -$policies = $policies_final; if ($policies !== false) { + $totalPolicies = count($policies); + if ($only_count) { unset($policies); } - - $sql = "SELECT COUNT(id) AS count FROM tpolicies - WHERE id = '".$policies_final['id']."'"; - - - $totalPolicies = db_get_value_sql($sql); } else { $totalPolicies = 0; } From 4b224d1314d9b71dae9c58e94d3a7731193b471e Mon Sep 17 00:00:00 2001 From: "marcos.alconada" <marcos.alconada@artica.es> Date: Wed, 12 Jun 2019 10:13:37 +0200 Subject: [PATCH 12/83] ad coments and delete is_metaconsole() condition --- pandora_console/operation/search_main.php | 2 +- pandora_console/operation/search_policies.getdata.php | 4 ++++ pandora_console/operation/search_policies.php | 1 - 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/pandora_console/operation/search_main.php b/pandora_console/operation/search_main.php index b236539695..2da3377ff4 100644 --- a/pandora_console/operation/search_main.php +++ b/pandora_console/operation/search_main.php @@ -69,7 +69,7 @@ $table->data[0][10] = html_print_image('images/reporting.png', true, ['title' => $table->data[0][11] = "<a href='index.php?search_category=reports&keywords=".$config['search_keywords']."&head_search_keywords=Search'>".sprintf(__('%s Found'), $totalReports).'</a>'; $table->data[0][12] = html_print_image('images/visual_console_green.png', true, ['title' => __('Maps found')]); $table->data[0][13] = "<a href='index.php?search_category=maps&keywords=".$config['search_keywords']."&head_search_keywords=Search'>".sprintf(__('%s Found'), $totalMaps).'</a>'; -if (enterprise_installed() || is_metaconsole()) { +if (enterprise_installed()) { $table->data[0][14] = html_print_image('images/policies.png', true, ['title' => __('Policies')]); $table->data[0][15] = "<a href='index.php?search_category=policies&keywords=".$config['search_keywords']."&head_search_keywords=Search'>".sprintf(__('%s Found'), $totalPolicies).'</a>'; } diff --git a/pandora_console/operation/search_policies.getdata.php b/pandora_console/operation/search_policies.getdata.php index 980a71cec8..aec8298170 100644 --- a/pandora_console/operation/search_policies.getdata.php +++ b/pandora_console/operation/search_policies.getdata.php @@ -170,6 +170,10 @@ switch ($sortField) { } if ($searchpolicies == 0) { + /* + We take the user groups to get policies that meet the requirements of the search + and which the user have permission on this groups + */ $user_groups = users_get_groups($config['id_user'], 'AR', false); $id_user_groups = array_keys($user_groups); $id_user_groups_str = implode(',', $id_user_groups); diff --git a/pandora_console/operation/search_policies.php b/pandora_console/operation/search_policies.php index c048e12c7c..a71d76a733 100644 --- a/pandora_console/operation/search_policies.php +++ b/pandora_console/operation/search_policies.php @@ -13,7 +13,6 @@ // GNU General Public License for more details. global $config; -// require_once $config['homedir'].'/include/functions_status.php'; enterprise_include_once('include/functions_policies.php'); require_once $config['homedir'].'/enterprise/include/functions_groups.php'; From f74b32fe3c120796c6fa185d595b3d3004c71e98 Mon Sep 17 00:00:00 2001 From: alejandro-campos <alejandro.campos@artica.es> Date: Fri, 14 Jun 2019 10:34:51 +0200 Subject: [PATCH 13/83] Added more parameters to SAML configuration --- pandora_console/include/constants.php | 8 ---- pandora_console/include/functions_config.php | 48 ++++++++++++++++++++ pandora_console/index.php | 4 +- 3 files changed, 50 insertions(+), 10 deletions(-) diff --git a/pandora_console/include/constants.php b/pandora_console/include/constants.php index 7266e9eff4..e9373ce2f3 100644 --- a/pandora_console/include/constants.php +++ b/pandora_console/include/constants.php @@ -526,14 +526,6 @@ define('NODE_MODULE', 1); define('NODE_PANDORA', 2); define('NODE_GENERIC', 3); -// SAML attributes constants. -define('SAML_ROLE_AND_TAG', 'eduPersonEntitlement'); -define('SAML_USER_DESC', 'commonName'); -define('SAML_ID_USER_IN_PANDORA', 'eduPersonTargetedId'); -define('SAML_GROUP_IN_PANDORA', 'schacHomeOrganization'); -define('SAML_MAIL_IN_PANDORA', 'mail'); -define('SAML_DEFAULT_PROFILES_AND_TAGS_FORM', 'urn:mace:rediris.es:entitlement:monitoring:'); - // Other constants. define('STATUS_OK', 0); define('STATUS_ERROR', 1); diff --git a/pandora_console/include/functions_config.php b/pandora_console/include/functions_config.php index 87d0601a4f..24a9b7301d 100644 --- a/pandora_console/include/functions_config.php +++ b/pandora_console/include/functions_config.php @@ -652,6 +652,30 @@ function config_update_config() $error_update[] = __('Saml path'); } + if (!config_update_value('saml_source', get_parameter('saml_source'))) { + $error_update[] = __('Saml source'); + } + + if (!config_update_value('saml_user_id', get_parameter('saml_user_id'))) { + $error_update[] = __('Saml user id parameter'); + } + + if (!config_update_value('saml_mail', get_parameter('saml_mail'))) { + $error_update[] = __('Saml mail parameter'); + } + + if (!config_update_value('saml_group_name', get_parameter('saml_group_name'))) { + $error_update[] = __('Saml group name parameter'); + } + + if (!config_update_value('saml_profiles_and_tags', get_parameter('saml_profiles_and_tags'))) { + $error_update[] = __('Saml profiles and tags parameter'); + } + + if (!config_update_value('saml_profile_tag_separator', get_parameter('saml_profile_tag_separator'))) { + $error_update[] = __('Saml profile and tag separator'); + } + if (!config_update_value('double_auth_enabled', get_parameter('double_auth_enabled'))) { $error_update[] = __('Double authentication'); } @@ -2364,6 +2388,30 @@ function config_process_config() config_update_value('saml_path', '/opt/'); } + if (!isset($config['saml_source'])) { + config_update_value('saml_source', ''); + } + + if (!isset($config['saml_user_id'])) { + config_update_value('saml_user_id', ''); + } + + if (!isset($config['saml_mail'])) { + config_update_value('saml_mail', ''); + } + + if (!isset($config['saml_group_name'])) { + config_update_value('saml_group_name', ''); + } + + if (!isset($config['saml_profiles_and_tags'])) { + config_update_value('saml_profiles_and_tags', ''); + } + + if (!isset($config['saml_profile_tag_separator'])) { + config_update_value('saml_profile_tag_separator', ''); + } + if (!isset($config['autoupdate'])) { config_update_value('autoupdate', 1); } diff --git a/pandora_console/index.php b/pandora_console/index.php index 06793c1a87..bb3500f721 100755 --- a/pandora_console/index.php +++ b/pandora_console/index.php @@ -366,7 +366,7 @@ if (! isset($config['id_user'])) { $nick_in_db = $saml_user_id; if (!$nick_in_db) { include_once $config['saml_path'].'simplesamlphp/lib/_autoload.php'; - $as = new SimpleSAML_Auth_Simple('PandoraFMS'); + $as = new SimpleSAML_Auth_Simple($config['saml_source']); $as->logout(); } } else { @@ -868,7 +868,7 @@ if (isset($_GET['bye'])) { if ($config['auth'] == 'saml') { include_once $config['saml_path'].'simplesamlphp/lib/_autoload.php'; - $as = new SimpleSAML_Auth_Simple('PandoraFMS'); + $as = new SimpleSAML_Auth_Simple($config['saml_source']); $as->logout(); } From 988eb2e257fdc7e3e2e0e937d475a2561f56762f Mon Sep 17 00:00:00 2001 From: Tatiana Llorente <tatiana.llorente@artica.es> Date: Wed, 19 Jun 2019 17:36:55 +0200 Subject: [PATCH 14/83] Add module filter by text -#2094 --- .../godmode/massive/massive_edit_modules.php | 8 ++++ .../include/javascript/pandora_modules.js | 39 +++++++++++++++++++ 2 files changed, 47 insertions(+) diff --git a/pandora_console/godmode/massive/massive_edit_modules.php b/pandora_console/godmode/massive/massive_edit_modules.php index a803fa4725..1a18b410d5 100755 --- a/pandora_console/godmode/massive/massive_edit_modules.php +++ b/pandora_console/godmode/massive/massive_edit_modules.php @@ -388,6 +388,11 @@ $table->data['form_modules_4'][1] = html_print_select( true ); +$table->rowstyle['form_modules_filter'] = 'vertical-align: top;'; +$table->rowclass['form_modules_filter'] = 'select_modules_row select_modules_row_2'; +$table->data['form_modules_filter'][0] = __('Filter Modules'); +$table->data['form_modules_filter'][1] = html_print_input_text('filter_modules', '', '', 20, 255, true); + $table->rowstyle['form_modules_2'] = 'vertical-align: top;'; $table->rowclass['form_modules_2'] = 'select_modules_row select_modules_row_2'; $table->data['form_modules_2'][0] = __('Modules'); @@ -1247,6 +1252,9 @@ $(document).ready (function () { }); $("#module_loading").hide (); $("#module_name").removeAttr ("disabled"); + //Filter modules. Call the function when the select is fully loaded. + var textNoData = "<?php echo __('None'); ?>"; + filterByText($('#module_name'), $("#text-filter_modules"), textNoData); }, "json" ); diff --git a/pandora_console/include/javascript/pandora_modules.js b/pandora_console/include/javascript/pandora_modules.js index 0487923b38..049bb9e96b 100644 --- a/pandora_console/include/javascript/pandora_modules.js +++ b/pandora_console/include/javascript/pandora_modules.js @@ -1223,3 +1223,42 @@ function get_explanation_recon_script(id, id_rt, url) { taskManager.addTask(xhr); } + +// Filter modules in a select (bulk operations) +function filterByText(selectbox, textbox, textNoData) { + return selectbox.each(function() { + var select = selectbox; + var options = []; + $(select) + .find("option") + .each(function() { + options.push({ value: $(this).val(), text: $(this).text() }); + }); + $(select).data("options", options); + $(textbox).bind("change keyup", function() { + var options = $(select) + .empty() + .scrollTop(0) + .data("options"); + var search = $(this).val(); + var regex = new RegExp(search, "gi"); + $.each(options, function(i) { + var option = options[i]; + if (option.text.match(regex) !== null) { + $(select).append( + $("<option>") + .text(option.text) + .val(option.value) + ); + } + }); + if ($(select)[0].length == 0) { + $(select).append( + $("<option>") + .text(textNoData) + .val(textNoData) + ); + } + }); + }); +} From c084adfa278caa730e0275629fc10de0ba3a2d9b Mon Sep 17 00:00:00 2001 From: Tatiana Llorente <tatiana.llorente@artica.es> Date: Thu, 20 Jun 2019 09:31:36 +0200 Subject: [PATCH 15/83] Add module filter by text -#2094 --- pandora_console/godmode/massive/massive_copy_modules.php | 8 ++++++++ .../godmode/massive/massive_delete_modules.php | 9 +++++++++ 2 files changed, 17 insertions(+) diff --git a/pandora_console/godmode/massive/massive_copy_modules.php b/pandora_console/godmode/massive/massive_copy_modules.php index b79a64460e..5ca25ebc11 100755 --- a/pandora_console/godmode/massive/massive_copy_modules.php +++ b/pandora_console/godmode/massive/massive_copy_modules.php @@ -177,6 +177,9 @@ $table->data['operations'][1] .= html_print_checkbox('copy_alerts', 1, true, tru $table->data['operations'][1] .= html_print_label(__('Copy alerts'), 'checkbox-copy_alerts', true); $table->data['operations'][1] .= '</span>'; +$table->data['form_modules_filter'][0] = __('Filter Modules'); +$table->data['form_modules_filter'][1] = html_print_input_text('filter_modules', '', '', 20, 255, true); + $table->data[1][0] = __('Modules'); $table->data[1][1] = '<span class="with_modules'.(empty($modules) ? ' invisible' : '').'">'; $table->data[1][1] .= html_print_select( @@ -302,6 +305,8 @@ echo '<h3 class="error invisible" id="message"> </h3>'; ui_require_jquery_file('form'); ui_require_jquery_file('pandora.controls'); ?> + +<script type="text/javascript" src="include/javascript/pandora_modules.js"></script> <script type="text/javascript"> /* <![CDATA[ */ var module_alerts; @@ -478,6 +483,9 @@ $(document).ready (function () { } $("#fieldset_targets").show (); $("#target_modules, #target_alerts").enable (); + //Filter modules. Call the function when the select is fully loaded. + var textNoData = "<?php echo __('None'); ?>"; + filterByText($('#target_modules'), $("#text-filter_modules"), textNoData); }, "json" ); diff --git a/pandora_console/godmode/massive/massive_delete_modules.php b/pandora_console/godmode/massive/massive_delete_modules.php index 334669c2bf..c52878c5da 100755 --- a/pandora_console/godmode/massive/massive_delete_modules.php +++ b/pandora_console/godmode/massive/massive_delete_modules.php @@ -429,6 +429,11 @@ $table->data['form_modules_3'][1] = html_print_select( ); $table->data['form_modules_3'][3] = ''; +$table->rowstyle['form_modules_filter'] = 'vertical-align: top;'; +$table->rowclass['form_modules_filter'] = 'select_modules_row select_modules_row_2'; +$table->data['form_modules_filter'][0] = __('Filter Modules'); +$table->data['form_modules_filter'][1] = html_print_input_text('filter_modules', '', '', 20, 255, true); + $table->rowstyle['form_modules_2'] = 'vertical-align: top;'; $table->rowclass['form_modules_2'] = 'select_modules_row select_modules_row_2'; $table->data['form_modules_2'][0] = __('Modules'); @@ -571,6 +576,7 @@ if ($selection_mode == 'modules') { } ?> +<script type="text/javascript" src="include/javascript/pandora_modules.js"></script> <script type="text/javascript"> /* <![CDATA[ */ @@ -650,6 +656,9 @@ $(document).ready (function () { }); $("#module_loading").hide(); $("#module_name").removeAttr ("disabled"); + //Filter modules. Call the function when the select is fully loaded. + var textNoData = "<?php echo __('None'); ?>"; + filterByText($('#module_name'), $("#text-filter_modules"), textNoData); }, "json" ); From 58009b43c66dd70625ec9038835a0eb7309ac54f Mon Sep 17 00:00:00 2001 From: alejandro-campos <alejandro.campos@artica.es> Date: Fri, 21 Jun 2019 13:39:48 +0200 Subject: [PATCH 16/83] fix bug: custom graphs not showing properly --- pandora_console/include/functions_graph.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandora_console/include/functions_graph.php b/pandora_console/include/functions_graph.php index 72bc9b5c91..b1e70b5c1a 100644 --- a/pandora_console/include/functions_graph.php +++ b/pandora_console/include/functions_graph.php @@ -2235,7 +2235,6 @@ function combined_graph_summatory_average( $data_array_pop[$key_reverse] = array_pop( $data_array_reverse[$key_reverse] ); - $count_data_array_reverse--; } } @@ -2287,6 +2286,7 @@ function combined_graph_summatory_average( } $count++; + $count_data_array_reverse--; } if ($summatory && isset($array_sum_reverse) From 43b83af2c6eb0637425b428f57011378e3735daf Mon Sep 17 00:00:00 2001 From: Tatiana Llorente <tatiana.llorente@artica.es> Date: Mon, 24 Jun 2019 11:59:17 +0200 Subject: [PATCH 17/83] Changed default images status set for css - #4195 --- .../default/module_alertsfired_rounded.png | Bin 251 -> 0 bytes .../default/module_critical_rounded.png | Bin 250 -> 0 bytes .../default/module_no_data_rounded.png | Bin 251 -> 0 bytes .../status_sets/default/module_ok_rounded.png | Bin 251 -> 0 bytes .../default/module_unknown_rounded.png | Bin 246 -> 0 bytes .../default/module_warning_rounded.png | Bin 249 -> 0 bytes pandora_console/include/ajax/module.php | 2 +- pandora_console/include/functions_modules.php | 41 +++- pandora_console/include/functions_ui.php | 179 ++++++++++++------ pandora_console/include/styles/pandora.css | 42 ++++ pandora_console/include/styles/tree.css | 4 + 11 files changed, 201 insertions(+), 67 deletions(-) delete mode 100644 pandora_console/images/status_sets/default/module_alertsfired_rounded.png delete mode 100644 pandora_console/images/status_sets/default/module_critical_rounded.png delete mode 100644 pandora_console/images/status_sets/default/module_no_data_rounded.png delete mode 100644 pandora_console/images/status_sets/default/module_ok_rounded.png delete mode 100644 pandora_console/images/status_sets/default/module_unknown_rounded.png delete mode 100644 pandora_console/images/status_sets/default/module_warning_rounded.png diff --git a/pandora_console/images/status_sets/default/module_alertsfired_rounded.png b/pandora_console/images/status_sets/default/module_alertsfired_rounded.png deleted file mode 100644 index 7a9b5ae0cdbf28de7a92696c9381bfddecbcc168..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 251 zcmeAS@N?(olHy`uVBq!ia0vp^wm>Yy!3HERP1;@sq$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~-c70vZ@aSW-r_2$M#-UbDM*2FCvj`6NpBYRLVrs0s_ofAhK zOIWg{We?6erEHc_()d`t(o!!ZUN0cQr%Ah8+Wu;om-@;nmi#A!cD$`vz<S4HrfS&7 z3Du4LhE?Gf57&o23k+5*S~}b2XgiNd#)Sor&1}3<2*wNfFOwR+Pg!GFW$=CZj<gQ} qJKmnTr(U-zdg%+(hQrT<5*U88OKrVgzcLu;PzFy|KbLh*2~7arx?)BE diff --git a/pandora_console/images/status_sets/default/module_critical_rounded.png b/pandora_console/images/status_sets/default/module_critical_rounded.png deleted file mode 100644 index 7fceda18dad688b1eccc63bebbf6b27430565f5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 250 zcmeAS@N?(olHy`uVBq!ia0vp^wm>Yy!3HERP1;@sq$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~-c70vN<aSW-r_2z~lZ-aqA>q9xN1B^lw8dxMGCpIXXxv2zj zmNEzxFt|r>F*0A@fAaL#OD|6^m3<Y{<o)Q`i(4_?i#2;K&3mV3-jmB<4UZD@&8s-E z_t0^Py;5^NT-VyPLQ{C>rO;`QoY|yIGA=A|Y-Zy{Fuw5LQh#vQRMCz9-9M4-JaQ?s o$}8u~#70ZIwsY6y`Z2OG#6OnWnk?Aa2XrTcr>mdKI;Vst0D06|UjP6A diff --git a/pandora_console/images/status_sets/default/module_no_data_rounded.png b/pandora_console/images/status_sets/default/module_no_data_rounded.png deleted file mode 100644 index fd5e433ece26563296312403d351e64ecc4b0471..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 251 zcmeAS@N?(olHy`uVBq!ia0vp^wm>Yy!3HERP1;@sq$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~-c70vZ@aSW-r_2$Mx-Ub7K)`y2!78v$i5Zqv4(kFO><0#iu z119N!;PV_Z2Su2;WB#k@U-!N`-CH}$r%Ahe_PtgoFZGpEE%&C(y?x650@Jo2G0%k+ zCz=l|m)NU4=fica&ns36@4RH@|51^dSIQ*g!UD%;HU#4r`(CvNwkpv*a%cZ)u9LJm rms^_he)7FmH_fWu2d+O8Nnj9&liDgYZ{-c3Lm50>{an^LB{Ts5@*7@o diff --git a/pandora_console/images/status_sets/default/module_ok_rounded.png b/pandora_console/images/status_sets/default/module_ok_rounded.png deleted file mode 100644 index d47f2ef4ff90a0c2d335c60e338b2f1158c22948..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 251 zcmeAS@N?(olHy`uVBq!ia0vp^wm>Yy!3HERP1;@sq$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~-c70vZ@aSW-r_2xz(Z-ausu|ktZGleGJ0<{fIf;tbHJ$)A4 zIKU=#kVEb>>s&F5e>wO2r2Y5beZZJ36cc%eXS4Q_Ekdi$RC@fmvF13l?gOt=N}3}4 zJB5FUEG};q{uh-hXKFT4JNBujUCIK-W;R|alZ*>UjQ<O2neGK|I{M<?o%xSu9sGM^ pP5L)G$+U27*L+49v*`@X49A~IZEbz}K?dkh22WQ%mvv4FO#tsIUdaFe diff --git a/pandora_console/images/status_sets/default/module_unknown_rounded.png b/pandora_console/images/status_sets/default/module_unknown_rounded.png deleted file mode 100644 index 2ec6d98f39a059562c5107196a774513ecd58dad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^wm>Yy!3HERP1;@sq$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~-c70vK;aSW-r_2z~nZ-W6(>%&H-f(8~9g~sUf9tQ-kuVUb| zVBnnWAg<Tk(D*L?(<M{u+RSZ-oiqwUD;KZooqF+-W%0aezAoq3Zyne>_39-Hxlbt{ zRNdwI)c<U~WtF|lX<bSD^dA!%*?6T)GA=A|Y(_BtHs9m=;C6c6;^zhRUDa&om4sG* l?_9;_cd?pj`B~Ki3==e^wjNCs-3N3dgQu&X%Q~loCIHe5UW@<$ diff --git a/pandora_console/images/status_sets/default/module_warning_rounded.png b/pandora_console/images/status_sets/default/module_warning_rounded.png deleted file mode 100644 index c28924178df6993295d3ef46c601b8e89ed6863d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 249 zcmeAS@N?(olHy`uVBq!ia0vp^wm>Yy!3HERP1;@sq$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~-c70vc^aSW-r_2z~lZ-aqA>%-=mj4~TaU73V7G_+V9;`B&J zW#Z)Fc)-QX%gB6v|H;!|FTFgyR90)!gHw;5MJ%~;DKjhioUgIyyH)&A2YaUl2205m zt^c6tww_J>&(>8oS+88yl}uj#V?rYvuarr~g$0hy2*%&$c|srF&9Zc>-f4eSx4HIV o%K3Zh$CcIwevvtlSj=U>py(^MH8r_+1JIcap00i_>zopr0Q5dzRR910 diff --git a/pandora_console/include/ajax/module.php b/pandora_console/include/ajax/module.php index ef998be34a..5ec365849e 100755 --- a/pandora_console/include/ajax/module.php +++ b/pandora_console/include/ajax/module.php @@ -1011,7 +1011,7 @@ if (check_login()) { $title ); - $data[5] = ui_print_module_status($module['estado'], $title, true, false, true); + $data[5] = ui_print_status_image($status, $title, true); if (!$show_context_help_first_time) { $show_context_help_first_time = true; diff --git a/pandora_console/include/functions_modules.php b/pandora_console/include/functions_modules.php index 0335e851c9..8e42c186fb 100755 --- a/pandora_console/include/functions_modules.php +++ b/pandora_console/include/functions_modules.php @@ -2308,32 +2308,67 @@ function modules_get_color_status($status) return COL_UNKNOWN; } - switch ($status) { - case AGENT_MODULE_STATUS_NORMAL: - case AGENT_STATUS_NORMAL: + switch ((string) $status) { + case (string) AGENT_MODULE_STATUS_NORMAL: + case (string) AGENT_STATUS_NORMAL: + case STATUS_MODULE_OK: + case STATUS_AGENT_OK: + case STATUS_ALERT_NOT_FIRED: + case STATUS_SERVER_OK: + case STATUS_MODULE_OK_BALL: + case STATUS_AGENT_OK_BALL: + case STATUS_ALERT_NOT_FIRED_BALL: return COL_NORMAL; case AGENT_MODULE_STATUS_NOT_INIT: case AGENT_STATUS_NOT_INIT: + case STATUS_MODULE_NO_DATA: + case STATUS_AGENT_NOT_INIT: + case STATUS_AGENT_NO_DATA: + case STATUS_MODULE_NO_DATA_BALL: + case STATUS_AGENT_NO_DATA_BALL: + case STATUS_AGENT_NO_MONITORS_BALL: return COL_NOTINIT; case AGENT_MODULE_STATUS_CRITICAL_BAD: case AGENT_STATUS_CRITICAL: + case STATUS_MODULE_CRITICAL: + case STATUS_AGENT_CRITICAL: + case STATUS_MODULE_CRITICAL_BALL: + case STATUS_AGENT_CRITICAL_BALL: return COL_CRITICAL; case AGENT_MODULE_STATUS_WARNING: case AGENT_STATUS_WARNING: + case STATUS_MODULE_WARNING: + case STATUS_AGENT_WARNING: + case STATUS_MODULE_WARNING_BALL: + case STATUS_AGENT_WARNING_BALL: return COL_WARNING; case AGENT_MODULE_STATUS_CRITICAL_ALERT: case AGENT_MODULE_STATUS_WARNING_ALERT: case AGENT_STATUS_ALERT_FIRED: + case STATUS_ALERT_FIRED: + case STATUS_ALERT_FIRED_BALL: return COL_ALERTFIRED; case AGENT_MODULE_STATUS_UNKNOWN: case AGENT_STATUS_UNKNOWN: + case STATUS_MODULE_UNKNOWN: + case STATUS_AGENT_UNKNOWN: + case STATUS_AGENT_DOWN: + case STATUS_ALERT_DISABLED: + case STATUS_MODULE_UNKNOWN_BALL: + case STATUS_AGENT_UNKNOWN_BALL: + case STATUS_AGENT_DOWN_BALL: + case STATUS_ALERT_DISABLED_BALL: return COL_UNKNOWN; + case STATUS_SERVER_DOWN: + case STATUS_SERVER_DOWN_BALL: + return '#444'; + default: // Ignored. break; diff --git a/pandora_console/include/functions_ui.php b/pandora_console/include/functions_ui.php index ea07c20d6a..9ffb578a07 100755 --- a/pandora_console/include/functions_ui.php +++ b/pandora_console/include/functions_ui.php @@ -2592,12 +2592,12 @@ function ui_get_status_images_path() /** * Prints an image representing a status. * - * @param string $type Type. - * @param string $title Title. - * @param boolean $return Whether to return an output string or echo now (optional, echo by default). - * @param array $options Options to set image attributes: I.E.: style. - * @param string $path Path of the image, if not provided use the status path. - * @param boolean $rounded_image Round. + * @param string $type Type. + * @param string $title Title. + * @param boolean $return Whether to return an output string or echo now (optional, echo by default). + * @param array $options Options to set image attributes: I.E.: style. + * @param string $path Path of the image, if not provided use the status path. + * @param boolean $image_with_css Don't use an image. Draw an image with css styles. * * @return string HTML code if return parameter is true. */ @@ -2607,37 +2607,8 @@ function ui_print_status_image( $return=false, $options=false, $path=false, - $rounded_image=false + $image_with_css=false ) { - // This is for the List of Modules in Agent View. - if ($rounded_image === true) { - switch ($type) { - case 'module_ok.png': - $type = 'module_ok_rounded.png'; - break; - - case 'module_critical.png': - $type = 'module_critical_rounded.png'; - break; - - case 'module_warning.png': - $type = 'module_warning_rounded.png'; - break; - - case 'module_no_data.png': - $type = 'module_no_data_rounded.png'; - break; - - case 'module_unknown.png': - $type = 'module_unknown_rounded.png'; - break; - - default: - $type = $type; - break; - } - } - if ($path === false) { $imagepath_array = ui_get_status_images_path(); $imagepath = $imagepath_array[0]; @@ -2645,35 +2616,112 @@ function ui_print_status_image( $imagepath = $path; } - $imagepath .= '/'.$type; - - if ($options === false) { - $options = []; + if ($imagepath == 'images/status_sets/default') { + $image_with_css = true; } - $options['title'] = $title; + $imagepath .= '/'.$type; - return html_print_image($imagepath, $return, $options, false, false, false, true); + if ($image_with_css === true) { + $shape_status = get_shape_status_set($type); + return ui_print_status_sets($type, $title, $return, $shape_status); + } else { + if ($options === false) { + $options = []; + } + + $options['title'] = $title; + + return html_print_image($imagepath, $return, $options, false, false, false, true); + } +} + + +/** + * Get the shape of an image by assigning it a CSS class. Prints an image with CSS representing a status. + * + * @param string $type Module/Agent/Alert status. + * + * @return array With CSS class. + */ +function get_shape_status_set($type) +{ + switch ($type) { + // Small rectangles. + case STATUS_ALERT_NOT_FIRED: + case STATUS_ALERT_FIRED: + case STATUS_ALERT_DISABLED: + $return = ['class' => 'status_small_rectangles']; + break; + + // Rounded rectangles. + case STATUS_MODULE_OK: + case STATUS_AGENT_OK: + case STATUS_MODULE_NO_DATA: + case STATUS_AGENT_NO_DATA: + case STATUS_MODULE_CRITICAL: + case STATUS_AGENT_CRITICAL: + case STATUS_MODULE_WARNING: + case STATUS_AGENT_WARNING: + case STATUS_MODULE_UNKNOWN: + case STATUS_AGENT_UNKNOWN: + case STATUS_AGENT_DOWN: + $return = ['class' => 'status_rounded_rectangles']; + break; + + // Small squares. + case STATUS_SERVER_OK: + case STATUS_SERVER_DOWN: + $return = ['class' => 'status_small_squares']; + break; + + // Balls. + case STATUS_AGENT_CRITICAL_BALL: + case STATUS_AGENT_WARNING_BALL: + case STATUS_AGENT_DOWN_BALL: + case STATUS_AGENT_UNKNOWN_BALL: + case STATUS_AGENT_OK_BALL: + case STATUS_AGENT_NO_DATA_BALL: + case STATUS_AGENT_NO_MONITORS_BALL: + $return = ['class' => 'status_balls']; + break; + + // Small Balls. + case STATUS_MODULE_OK_BALL: + case STATUS_MODULE_CRITICAL_BALL: + case STATUS_MODULE_WARNING_BALL: + case STATUS_MODULE_NO_DATA_BALL: + case STATUS_MODULE_UNKNOWN_BALL: + case STATUS_ALERT_FIRED_BALL: + case STATUS_ALERT_NOT_FIRED_BALL: + case STATUS_ALERT_DISABLED_BALL: + $return = ['class' => 'status_small_balls']; + break; + + default: + // Ignored. + break; + } + + return $return; } /** * Prints an image representing a status. * - * @param string $status Module status. - * @param string $title Title. - * @param boolean $return Whether to return an output string or echo now (optional, echo by default). - * @param array $options Options to set image attributes: I.E.: style. - * @param boolean $rounded_image Round. + * @param string $status Module status. + * @param string $title Title. + * @param boolean $return Whether to return an output string or echo now (optional, echo by default). + * @param array $options Options to set image attributes: I.E.: style. * * @return string HTML. */ -function ui_print_module_status( +function ui_print_status_sets( $status, $title='', $return=false, - $options=false, - $rounded_image=false + $options=false ) { global $config; @@ -2681,21 +2729,26 @@ function ui_print_module_status( $options = []; } - $options['style'] .= 'width: 50px;'; - $options['style'] .= 'height: 2em;'; - $options['style'] .= 'display: inline-block;'; - - include_once __DIR__.'/functions_modules.php'; - $options['style'] .= 'background: '.modules_get_color_status($status).';'; - - if ($rounded_image === true) { - $options['style'] .= 'border-radius: 5px;'; + if (isset($options['style'])) { + $options['style'] .= ' background: '.modules_get_color_status($status).'; display: inline-block;'; + } else { + $options['style'] = 'background: '.modules_get_color_status($status).'; display: inline-block;'; } - $options['title'] = $title; - $options['data-title'] = $title; - $options['data-use_title_for_force_title'] = 1; - $options['class'] = 'forced_title'; + if (isset($options['class'])) { + $options['class'] = $options['class']; + } + + if ($title != '') { + $options['title'] = $title; + $options['data-title'] = $title; + $options['data-use_title_for_force_title'] = 1; + if (isset($options['class'])) { + $options['class'] .= ' forced_title'; + } else { + $options['class'] = 'forced_title'; + } + } $output = '<div '; foreach ($options as $k => $v) { diff --git a/pandora_console/include/styles/pandora.css b/pandora_console/include/styles/pandora.css index 06507058ee..002a20db79 100644 --- a/pandora_console/include/styles/pandora.css +++ b/pandora_console/include/styles/pandora.css @@ -5803,3 +5803,45 @@ div#status_pie { align-items: center; grid-template-columns: 50px auto; } + +/* + * --------------------------------------------------------------------- + * - IMAGES FOR STATUS. This replaces the images of /images/status_sets/default/ + * - Don't delete this + * --------------------------------------------------------------------- + */ +.status_small_rectangles { + width: 20px; + height: 10px; + display: inline-block; +} + +.status_rounded_rectangles { + width: 50px; + height: 2em; + display: inline-block; + border-radius: 5px; +} + +.status_small_squares, +.status_balls { + width: 12px; + height: 12px; + display: inline-block; +} + +.status_balls { + border-radius: 50%; +} + +.status_small_balls { + width: 8px; + height: 8px; + display: inline-block; + border-radius: 50%; +} +/* + * --------------------------------------------------------------------- + * - END - IMAGES FOR STATUS. Don't delete this + * --------------------------------------------------------------------- + */ diff --git a/pandora_console/include/styles/tree.css b/pandora_console/include/styles/tree.css index f35339a886..42649bd048 100644 --- a/pandora_console/include/styles/tree.css +++ b/pandora_console/include/styles/tree.css @@ -138,3 +138,7 @@ div#tree-controller-recipient { width: 98%; margin-top: 10px; } + +.tree-node > .node-content > div + div:not(.tree-node-counters) { + margin-left: 3px; +} From f69fea81c281524f81cca2f2d2d7438bd53de750 Mon Sep 17 00:00:00 2001 From: Luis Calvo <luis.calvo@artica.es> Date: Tue, 25 Jun 2019 14:28:33 +0200 Subject: [PATCH 18/83] Added satellite remote conficg check in snmp wizard --- .../agent_wizard.snmp_interfaces_explorer.php | 36 +++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/pandora_console/godmode/agentes/agent_wizard.snmp_interfaces_explorer.php b/pandora_console/godmode/agentes/agent_wizard.snmp_interfaces_explorer.php index b08dc62c4f..2dca9353ac 100644 --- a/pandora_console/godmode/agentes/agent_wizard.snmp_interfaces_explorer.php +++ b/pandora_console/godmode/agentes/agent_wizard.snmp_interfaces_explorer.php @@ -23,7 +23,6 @@ $idAgent = (int) get_parameter('id_agente', 0); $ipAgent = db_get_value('direccion', 'tagente', 'id_agente', $idAgent); check_login(); - $ip_target = (string) get_parameter('ip_target', $ipAgent); $use_agent = get_parameter('use_agent'); $snmp_community = (string) get_parameter('snmp_community', 'public'); @@ -469,6 +468,9 @@ if (enterprise_installed()) { if ($row['server_type'] != 13) { $s_type = ' (Standard)'; } else { + // Check if satellite server has remote configuration enabled + $satellite_remote = config_agents_has_remote_configuration($id_agent); + $id_satellite = $row['id_server']; $s_type = ' (Satellite)'; } @@ -477,7 +479,17 @@ if (enterprise_installed()) { } $table->data[1][2] = '<b>'.__('Server to execute command').'</b>'; -$table->data[1][3] = html_print_select($servers_to_exec, 'server_to_exec', $server_to_exec, '', '', '', true); +$table->data[1][2] .= '<span id=satellite_remote_tip>'.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:').'</span>'; +$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'; @@ -607,8 +619,12 @@ ui_require_jquery_file('bgiframe'); /* <![CDATA[ */ $(document).ready (function () { + + var inputActive = true; + $('#server_to_exec option').trigger('change'); + $(document).data('text_for_module', $("#none_text").html()); $("#id_snmp").change(snmp_changed_by_multiple_snmp); @@ -628,6 +644,7 @@ $(document).ready (function () { $("#no_snmp").hide (); $("#form_interfaces").hide (); }); + }); function snmp_changed_by_multiple_snmp (event, id_snmp, selected) { @@ -682,5 +699,20 @@ function snmp_changed_by_multiple_snmp (event, id_snmp, selected) { "json"); } + +function satellite_remote_warn(id_satellite, remote) +{ + if(!remote) + { + $('#server_to_exec option[value='+id_satellite+']').prop('disabled', true); + $('#satellite_remote_tip').removeAttr("style").show(); + } + else + { + $('#satellite_remote_tip').removeAttr("style").hide(); + } + +} + /* ]]> */ </script> From 058abdd552c986199450fc4e5fcf736f0ce5687c Mon Sep 17 00:00:00 2001 From: alejandro-campos <alejandro.campos@artica.es> Date: Wed, 26 Jun 2019 17:17:56 +0200 Subject: [PATCH 19/83] Add condition in tactical view to exclude disabled alerts from count of triggered alerts --- pandora_console/include/functions_tactical.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pandora_console/include/functions_tactical.php b/pandora_console/include/functions_tactical.php index c10f194386..39f44a9beb 100644 --- a/pandora_console/include/functions_tactical.php +++ b/pandora_console/include/functions_tactical.php @@ -444,7 +444,7 @@ function tactical_monitor_fired_alerts($group_array, $strict_user=false, $id_gro WHERE tagente.id_grupo IN $group_clause_strict AND tagente_modulo.id_agente = tagente.id_agente AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo AND talert_template_modules.id_agent_module = tagente_modulo.id_agente_modulo - AND times_fired > 0 "; + AND times_fired > 0 AND talert_template_modules.disabled = 0"; $count = db_get_sql($sql); return $count; @@ -456,7 +456,7 @@ function tactical_monitor_fired_alerts($group_array, $strict_user=false, $id_gro WHERE tagente.id_grupo IN $group_clause AND tagente_modulo.id_agente = tagente.id_agente AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo AND talert_template_modules.id_agent_module = tagente_modulo.id_agente_modulo - AND times_fired > 0" + AND times_fired > 0 AND talert_template_modules.disabled = 0" ); } From 3d75e045f9f9141dc421659ef1c84934b7939722 Mon Sep 17 00:00:00 2001 From: alejandro-campos <alejandro.campos@artica.es> Date: Thu, 27 Jun 2019 17:42:29 +0200 Subject: [PATCH 20/83] added new fields to saml configuration and added check to not allow user creation with all group in case an empty value was specified in group name attribute input --- pandora_console/include/functions_config.php | 24 ++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/pandora_console/include/functions_config.php b/pandora_console/include/functions_config.php index 5a11249f74..61e16be8ab 100644 --- a/pandora_console/include/functions_config.php +++ b/pandora_console/include/functions_config.php @@ -668,10 +668,22 @@ function config_update_config() $error_update[] = __('Saml group name parameter'); } + if (!config_update_value('saml_attr_type', (bool) get_parameter('saml_attr_type'))) { + $error_update[] = __('Saml attr type parameter'); + } + if (!config_update_value('saml_profiles_and_tags', get_parameter('saml_profiles_and_tags'))) { $error_update[] = __('Saml profiles and tags parameter'); } + if (!config_update_value('saml_profile', get_parameter('saml_profile'))) { + $error_update[] = __('Saml profile parameters'); + } + + if (!config_update_value('saml_tag', get_parameter('saml_tag'))) { + $error_update[] = __('Saml tag parameter'); + } + if (!config_update_value('saml_profile_tag_separator', get_parameter('saml_profile_tag_separator'))) { $error_update[] = __('Saml profile and tag separator'); } @@ -2404,10 +2416,22 @@ function config_process_config() config_update_value('saml_group_name', ''); } + if (!isset($config['saml_attr_type'])) { + config_update_value('saml_attr_type', false); + } + if (!isset($config['saml_profiles_and_tags'])) { config_update_value('saml_profiles_and_tags', ''); } + if (!isset($config['saml_profile'])) { + config_update_value('saml_profile', ''); + } + + if (!isset($config['saml_tag'])) { + config_update_value('saml_tag', ''); + } + if (!isset($config['saml_profile_tag_separator'])) { config_update_value('saml_profile_tag_separator', ''); } From 63e0df4434e62781057ae94bc9358f00ef3e7172 Mon Sep 17 00:00:00 2001 From: Daniel Maya <daniel.maya@artica.es> Date: Fri, 28 Jun 2019 12:11:25 +0200 Subject: [PATCH 21/83] Fixed unordered groups --- pandora_console/godmode/agentes/modificar_agente.php | 2 +- pandora_console/include/functions_users.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pandora_console/godmode/agentes/modificar_agente.php b/pandora_console/godmode/agentes/modificar_agente.php index 9e7ce18c4e..4f51ede323 100644 --- a/pandora_console/godmode/agentes/modificar_agente.php +++ b/pandora_console/godmode/agentes/modificar_agente.php @@ -163,7 +163,7 @@ echo '<td>'; echo __('Group').' '; $own_info = get_user_info($config['id_user']); -if (!$own_info['is_admin'] && check_acl($config['id_user'], 0, 'AW')) { +if (!$own_info['is_admin'] && !check_acl($config['id_user'], 0, 'AR') && !check_acl($config['id_user'], 0, 'AW')) { $return_all_group = false; } else { $return_all_group = true; diff --git a/pandora_console/include/functions_users.php b/pandora_console/include/functions_users.php index 3b4af210d0..d461ca9754 100755 --- a/pandora_console/include/functions_users.php +++ b/pandora_console/include/functions_users.php @@ -293,7 +293,7 @@ function users_get_groups( } // Per-group permissions. else { - $query = 'SELECT * FROM tgrupo ORDER BY parent,id_grupo DESC'; + $query = 'SELECT * FROM tgrupo ORDER BY nombre'; $raw_groups = db_get_all_rows_sql($query); $query = sprintf( From a6327a16ad6f3493e07c5e421ed10700458754bf Mon Sep 17 00:00:00 2001 From: fbsanchez <fborja.sanchez@artica.es> Date: Mon, 1 Jul 2019 12:46:09 +0200 Subject: [PATCH 22/83] Session expiration ignoring notifications checks --- pandora_console/ajax.php | 55 +++++--- pandora_console/include/functions_config.php | 12 +- pandora_console/include/load_session.php | 130 ++++++++++++++++--- 3 files changed, 159 insertions(+), 38 deletions(-) diff --git a/pandora_console/ajax.php b/pandora_console/ajax.php index 92f6c146bc..beb07e7752 100644 --- a/pandora_console/ajax.php +++ b/pandora_console/ajax.php @@ -1,17 +1,34 @@ <?php +/** + * Ajax handler. + * + * @category Ajax handler. + * @package Pandora FMS. + * @subpackage OpenSource. + * @version 1.0.0 + * @license See below + * + * ______ ___ _______ _______ ________ + * | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __| + * | __/| _ | | _ || _ | _| _ | | ___| |__ | + * |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______| + * + * ============================================================================ + * Copyright (c) 2005-2019 Artica Soluciones Tecnologicas + * Please see http://pandorafms.org for full contribution list + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation for version 2. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * ============================================================================ + */ + +// Begin. +define('AJAX', true); -// Pandora FMS - http://pandorafms.com -// ================================================== -// Copyright (c) 2005-2011 Artica Soluciones Tecnologicas -// Please see http://pandorafms.org for full contribution list -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public License -// as published by the Free Software Foundation; version 2 -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// Enable profiler for testing if (!defined('__PAN_XHPROF__')) { define('__PAN_XHPROF__', 0); } @@ -56,7 +73,7 @@ if (isset($_GET['loginhash'])) { $public_hash = get_parameter('hash', false); -// Check user +// Check user. if ($public_hash == false) { check_login(); } else { @@ -68,9 +85,9 @@ if ($public_hash == false) { } } -define('AJAX', true); -// Enterprise support + +// Enterprise support. if (file_exists(ENTERPRISE_DIR.'/load_enterprise.php')) { include_once ENTERPRISE_DIR.'/load_enterprise.php'; } @@ -86,11 +103,9 @@ if ($isFunctionSkins !== ENTERPRISE_NOT_HOOK) { $config['relative_path'] = enterprise_hook('skins_set_image_skin_path', [$config['id_user']]); } -if (isset($config['metaconsole'])) { - // Not cool way of know if we are executing from metaconsole or normal console - if ($config['metaconsole']) { - define('METACONSOLE', true); - } +if (is_metaconsole()) { + // Backward compatibility. + define('METACONSOLE', true); } if (file_exists($page)) { diff --git a/pandora_console/include/functions_config.php b/pandora_console/include/functions_config.php index 1d346f3b6d..9196168901 100644 --- a/pandora_console/include/functions_config.php +++ b/pandora_console/include/functions_config.php @@ -2879,7 +2879,17 @@ function config_prepare_session() // Reset the expiration time upon page load //session_name() is default name of session PHPSESSID. if (isset($_COOKIE[session_name()])) { - setcookie(session_name(), $_COOKIE[session_name()], (time() + $sessionCookieExpireTime), '/'); + $update_cookie = true; + if (is_ajax()) { + // Avoid session upadte while processing ajax responses - notifications. + if (get_parameter('check_new_notifications', false)) { + $update_cookie = false; + } + } + + if ($update_cookie === true) { + setcookie(session_name(), $_COOKIE[session_name()], (time() + $sessionCookieExpireTime), '/'); + } } ini_set('post_max_size', $config['max_file_size']); diff --git a/pandora_console/include/load_session.php b/pandora_console/include/load_session.php index 22a7226a8f..99bae81244 100644 --- a/pandora_console/include/load_session.php +++ b/pandora_console/include/load_session.php @@ -1,32 +1,75 @@ <?php +/** + * Session manager. + * + * @category Session handler. + * @package Pandora FMS. + * @subpackage OpenSource. + * @version 1.0.0 + * @license See below + * + * ______ ___ _______ _______ ________ + * | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __| + * | __/| _ | | _ || _ | _| _ | | ___| |__ | + * |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______| + * + * ============================================================================ + * Copyright (c) 2005-2019 Artica Soluciones Tecnologicas + * Please see http://pandorafms.org for full contribution list + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation for version 2. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * ============================================================================ + */ -// Pandora FMS - http://pandorafms.com -// ================================================== -// Copyright (c) 2005-2009 Artica Soluciones Tecnologicas -// Please see http://pandorafms.org for full contribution list -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public License -// as published by the Free Software Foundation; version 2 -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. +// Begin. + + +/** + * Open session. + * + * @param string $save_path Save path. + * @param string $session_name Session name. + * + * @return boolean + */ function pandora_session_open($save_path, $session_name) { return true; } +/** + * Close session. + * + * @return boolean + */ function pandora_session_close() { return true; } +/** + * Read a session. + * + * @param string $session_id Session ID. + * + * @return string Session data. + */ function pandora_session_read($session_id) { $session_id = addslashes($session_id); - $session_data = db_get_value('data', 'tsessions_php', 'id_session', $session_id); + $session_data = db_get_value( + 'data', + 'tsessions_php', + 'id_session', + $session_id + ); if (!empty($session_data)) { return $session_data; @@ -36,10 +79,25 @@ function pandora_session_read($session_id) } +/** + * Write session data. + * + * @param string $session_id Session id. + * @param string $data Data. + * + * @return boolean + */ function pandora_session_write($session_id, $data) { $session_id = addslashes($session_id); + if (is_ajax()) { + // Avoid session upadte while processing ajax responses - notifications. + if (get_parameter('check_new_notifications', false)) { + return false; + } + } + $values = []; $values['last_active'] = time(); @@ -47,29 +105,55 @@ function pandora_session_write($session_id, $data) $values['data'] = addslashes($data); } - $session_exists = (bool) db_get_value('COUNT(id_session)', 'tsessions_php', 'id_session', $session_id); + $session_exists = (bool) db_get_value( + 'COUNT(id_session)', + 'tsessions_php', + 'id_session', + $session_id + ); if (!$session_exists) { $values['id_session'] = $session_id; $retval_write = db_process_sql_insert('tsessions_php', $values); } else { - $retval_write = db_process_sql_update('tsessions_php', $values, ['id_session' => $session_id]); + $retval_write = db_process_sql_update( + 'tsessions_php', + $values, + ['id_session' => $session_id] + ); } return $retval_write !== false; } +/** + * Destroy a session. + * + * @param string $session_id Session Id. + * + * @return boolean + */ function pandora_session_destroy($session_id) { $session_id = addslashes($session_id); - $retval = (bool) db_process_sql_delete('tsessions_php', ['id_session' => $session_id]); + $retval = (bool) db_process_sql_delete( + 'tsessions_php', + ['id_session' => $session_id] + ); return $retval; } +/** + * Session garbage collector. + * + * @param integer $max_lifetime Max lifetime. + * + * @return boolean. + */ function pandora_session_gc($max_lifetime=300) { global $config; @@ -80,7 +164,12 @@ function pandora_session_gc($max_lifetime=300) $time_limit = (time() - $max_lifetime); - $retval = (bool) db_process_sql_delete('tsessions_php', ['last_active' => '<'.$time_limit]); + $retval = (bool) db_process_sql_delete( + 'tsessions_php', + [ + 'last_active' => '<'.$time_limit, + ] + ); return $retval; } @@ -88,5 +177,12 @@ function pandora_session_gc($max_lifetime=300) // FIXME: SAML should work with pandora session handlers if (db_get_value('value', 'tconfig', 'token', 'auth') != 'saml') { - $result_handler = session_set_save_handler('pandora_session_open', 'pandora_session_close', 'pandora_session_read', 'pandora_session_write', 'pandora_session_destroy', 'pandora_session_gc'); + $result_handler = session_set_save_handler( + 'pandora_session_open', + 'pandora_session_close', + 'pandora_session_read', + 'pandora_session_write', + 'pandora_session_destroy', + 'pandora_session_gc' + ); } From 6349c29eb50b052e63cdcf0273460f93b9c559f7 Mon Sep 17 00:00:00 2001 From: "marcos.alconada" <marcos.alconada@artica.es> Date: Mon, 1 Jul 2019 13:45:42 +0200 Subject: [PATCH 23/83] Add message for autenticaition error SAML --- pandora_console/general/noaccesssaml.php | 164 ++++++++++++++++++++++ pandora_console/include/auth/saml.php | 166 +++++++++++++++++++++++ pandora_console/index.php | 11 +- 3 files changed, 338 insertions(+), 3 deletions(-) create mode 100644 pandora_console/general/noaccesssaml.php create mode 100755 pandora_console/include/auth/saml.php diff --git a/pandora_console/general/noaccesssaml.php b/pandora_console/general/noaccesssaml.php new file mode 100644 index 0000000000..e357e040dc --- /dev/null +++ b/pandora_console/general/noaccesssaml.php @@ -0,0 +1,164 @@ +<html> +<head> + +<style> + +#alert_messages_na{ + z-index:2; + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + -webkit-transform: translate(-50%, -50%); + width:650px; + height: 400px; + background:white; + background-image:url('images/imagen-no-acceso.jpg'); + background-repeat:no-repeat; + justify-content: center; + display: flex; + flex-direction: column; + box-shadow:4px 5px 10px 3px rgba(0, 0, 0, 0.4); +} + +.modalheade{ + text-align:center; + width:100%; + position:absolute; + top:0; +} +.modalheadertex{ + color:#000; + font-family:Nunito; + line-height: 40px; + font-size: 23pt; + margin-bottom:30px; +} +.modalclose{ + cursor:pointer; + display:inline; + float:right; + margin-right:10px; + margin-top:10px; +} +.modalconten{ + color:black; + width:300px; + margin-left: 30px; +} +.modalcontenttex{ + text-align:left; + color:black; + font-size: 11pt; + line-height:13pt; + margin-bottom:30px; +} +.modalokbutto{ + cursor:pointer; + text-align:center; + display: inline-block; + padding: 6px 45px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + background-color:white; + border: 1px solid #82b92e; +} +.modalokbuttontex{ + color:#82b92e; + font-family:Nunito; + font-size:13pt; +} +.modalgobutto{ + cursor:pointer; + text-align:center; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + background-color:white; + border: 1px solid #82b92e; +} +.modalgobuttontex{ +color:#82b92e; +font-family:Nunito; +font-size:10pt; +} + + +#opacidad{ + position:fixed; + background:black; + opacity:0.6; + z-index:-1; + left:0px; + top:0px; + width:100%; + height:100%; +} +/* +.textodialog{ + margin-left: 0px; + color:#333; + padding:20px; + font-size:9pt; +} + +.cargatextodialog{ + max-width:58.5%; + width:58.5%; + min-width:58.5%; + float:left; + margin-left: 0px; + font-size:18pt; + padding:20px; + text-align:center; +} + +.cargatextodialog p, .cargatextodialog b, .cargatextodialog a{ + font-size:18pt; +} +*/ +</style> +</head> +<body> + + <div id="alert_messages_na"> + + <div class='modalheade'> + <img class='modalclose cerrar' src='<?php echo $config['homeurl']; ?>images/input_cross.png'> + </div> + + <div class='modalconten'> + <div class='modalheadertex'> + <?php echo __("You don't have access to this page"); ?> + </div> + + <div class='modalcontenttex'> + <?php + echo __('Access to this page is restricted to authorized users SAML only, please contact system administrator if you need assistance.'); + echo '<br/> <br/>'; + echo __('Please make sure you have SAML authentication properly configured. For more information the error to access this page are recorded in security logs of %s System Database', get_product_name()); + ?> + + </div> + + <div class='modalokbutto cerrar'> + <span class='modalokbuttontex'>OK</span> + </div> + </div> + </div> + + <div id="opacidad"></div> + +</body> +</html> + +<script> + + $(".cerrar").click(function(){ + window.location="."; + }); + + $('div#page').css('background-color','#d3d3d3'); + +</script> diff --git a/pandora_console/include/auth/saml.php b/pandora_console/include/auth/saml.php new file mode 100755 index 0000000000..6ffbc8cf4b --- /dev/null +++ b/pandora_console/include/auth/saml.php @@ -0,0 +1,166 @@ +<?php +// ______ __ _______ _______ _______ +// | __ \.---.-.-----.--| |.-----.----.---.-. | ___| | | __| +// | __/| _ | | _ || _ | _| _ | | ___| |__ | +// |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______| +// +// ============================================================================ +// Copyright (c) 2007-2010 Artica Soluciones Tecnologicas, http://www.artica.es +// This code is NOT free software. This code is NOT licenced under GPL2 licence +// You cannnot redistribute it without written permission of copyright holder. +// ============================================================================ +global $config; + +if (!file_exists($config['saml_path'].'simplesamlphp/lib/_autoload.php')) { + return false; +} + + +/** + * Authenticate in saml system (red.es) + * + * @param string Login + * @param string Password + * + * @return boolean True if the login succeeds, false otherwise + */ +function saml_process_user_login() +{ + global $config; + + // SAML authentication attributes + $as = new SimpleSAML_Auth_Simple('PandoraFMS'); + $as->requireAuth(); + $session = SimpleSAML_Session::getSessionFromRequest(); + $session->cleanup(); + $attributes = $as->getAttributes(); + + if (empty($attributes)) { + return false; + } + + $id_user = $attributes[SAML_MAIL_IN_PANDORA][0]; + $email = $attributes[SAML_MAIL_IN_PANDORA][0]; + $group_name = $attributes[SAML_GROUP_IN_PANDORA][0]; + $profiles_and_tags = $attributes[SAML_ROLE_AND_TAG]; + + $profile_names = []; + $tag_names = []; + // Manages array with tags and roles to separate them + foreach ($profiles_and_tags as $profile_or_tag) { + $is_profile_or_tag = explode(SAML_DEFAULT_PROFILES_AND_TAGS_FORM, $profile_or_tag); + $is_profile_or_tag2 = explode(':', $is_profile_or_tag[1]); + if ($is_profile_or_tag2[0] == 'role') { + $profile_names[] = $is_profile_or_tag2[1]; + } else if ($is_profile_or_tag2[0] == 'tag') { + $tag_names[] = $is_profile_or_tag2[1]; + } + } + + // Connect to Pandora db + $connection = mysql_connect_db( + $config['pandora_server'], + $config['pandora_dbname'], + $config['pandora_user'], + $config['pandora_pass'] + ); + + if ($connection === false) { + return false; + } + + // Get the red.es user id + $rows = db_get_all_rows_sql( + "SELECT * FROM tusuario + WHERE id_user = '".$id_user."'", + false, + false, + $connection + ); + + // Checks group id, profiles id and tags id + $group_id = ''; + $profile_id = []; + $tag_id = ''; + $tags_to_profile = ''; + if ($group_name != '') { + $group_id = db_get_all_rows_sql("SELECT id_grupo FROM tgrupo WHERE nombre = '".$group_name."'"); + $group_id = $group_id[0]['id_grupo']; + if (empty($group_id)) { + $config['auth_error'] = 'Group not found in database'; + db_pandora_audit('Logon Failed', 'Group '.$group_name.' not found in database', $_SERVER['REMOTE_ADDR']); + return false; + } + } + + if (!empty($profile_names)) { + foreach ($profile_names as $profile_name) { + $profile_id[] = db_get_row_sql("SELECT id_perfil FROM tperfil WHERE name = '".io_safe_input($profile_name)."'"); + } + } + + if (!empty($tag_names)) { + $i = 0; + foreach ($tag_names as $tag_name) { + $tag_id = db_get_row_sql("SELECT id_tag FROM ttag WHERE name = '".io_safe_input($tag_name)."'"); + if ($i == 0) { + $tags_to_profile = (String) $tag_id['id_tag']; + } else { + $tags_to_profile .= ','.(String) $tag_id['id_tag']; + } + + $i++; + } + } + + // If user does not exist in Pandora + if (empty($rows)) { + if ($id_user != '') { + $values_user = []; + $values_user['id_user'] = $id_user; + $values_user['email'] = $email; + $result_insert_user = db_process_sql_insert('tusuario', $values_user); + + // Separates user insert of profile insert + $values_user_profile = []; + $values_user_profile['id_usuario'] = $id_user; + $values_user_profile['id_grupo'] = $group_id; + $values_user_profile['tags'] = $tags_to_profile; + foreach ($profile_id as $id) { + $values_user_profile['id_perfil'] = $id['id_perfil']; + $result_insert_user_profile = db_process_sql_insert('tusuario_perfil', $values_user_profile); + } + + if (!$result_insert_user_profile) { + $config['auth_error'] = 'Login error'; + return false; + } + + return $id_user; + } else { + return false; + } + } else { + $user = $rows[0]; + // To update the profiles, delete the old and insert the new + $have_profiles = db_get_all_rows_sql("SELECT id_up FROM tusuario_perfil WHERE id_usuario = '".$user['id_user']."'"); + if ($have_profiles) { + $delete_old_profiles = db_process_sql("DELETE FROM tusuario_perfil WHERE id_usuario = '".$user['id_user']."'"); + } + + $values_user_profile = []; + $values_user_profile['id_usuario'] = $user['id_user']; + $values_user_profile['id_grupo'] = $group_id; + $values_user_profile['tags'] = $tags_to_profile; + foreach ($profile_id as $id) { + $values_user_profile['id_perfil'] = $id['id_perfil']; + $result_insert_user_profile = db_process_sql_insert('tusuario_perfil', $values_user_profile); + } + + return $user['id_user']; + } + + $config['auth_error'] = 'User not found in database or incorrect password'; + + return false; +} diff --git a/pandora_console/index.php b/pandora_console/index.php index 3c95074171..a543829bb7 100755 --- a/pandora_console/index.php +++ b/pandora_console/index.php @@ -359,12 +359,17 @@ if (! isset($config['id_user'])) { $nick_in_db = $_SESSION['prepared_login_da']['id_user']; $expired_pass = false; } else if (($config['auth'] == 'saml') && ($login_button_saml)) { - include_once ENTERPRISE_DIR.'/include/auth/saml.php'; - - $saml_user_id = saml_process_user_login(); + if (!include_once 'include/auth/saml.php') { + include_once 'general/noaccesssaml.php'; + } else { + $saml_user_id = saml_process_user_login(); + } $nick_in_db = $saml_user_id; + if (!$nick_in_db) { + include_once 'general/noaccesssaml.php'; + include_once $config['saml_path'].'simplesamlphp/lib/_autoload.php'; $as = new SimpleSAML_Auth_Simple('PandoraFMS'); $as->logout(); From 9163f725eda92e59f021b3172a86dfe03e027ffa Mon Sep 17 00:00:00 2001 From: Tatiana Llorente <tatiana.llorente@artica.es> Date: Mon, 1 Jul 2019 16:57:33 +0200 Subject: [PATCH 24/83] Created black theme - #4194 --- pandora_console/extras/pandora_diag.php | 2 +- pandora_console/include/functions_ui.php | 14 +- pandora_console/include/styles/pandoraPDF.css | 2 + .../include/styles/pandora_black.css | 4365 +---------------- pandora_console/index.php | 9 +- 5 files changed, 189 insertions(+), 4203 deletions(-) diff --git a/pandora_console/extras/pandora_diag.php b/pandora_console/extras/pandora_diag.php index f3b11177d1..9258a3be42 100644 --- a/pandora_console/extras/pandora_diag.php +++ b/pandora_console/extras/pandora_diag.php @@ -362,7 +362,7 @@ if ($console_mode == 1) { true ); - echo "<table width='1000px' border='0' style='border:0px;' class='databox data' cellpadding='4' cellspacing='4'>"; + echo "<table id='diagnostic_info' width='1000px' border='0' style='border:0px;' class='databox data' cellpadding='4' cellspacing='4'>"; echo "<tr><th style='background-color:#b1b1b1;font-weight:bold;font-style:italic;border-radius:2px;' align=center colspan='2'>".__('Pandora status info').'</th></tr>'; } diff --git a/pandora_console/include/functions_ui.php b/pandora_console/include/functions_ui.php index ef8089ac3a..33603c8072 100755 --- a/pandora_console/include/functions_ui.php +++ b/pandora_console/include/functions_ui.php @@ -1755,6 +1755,12 @@ function ui_process_page_head($string, $bitfield) // Add the dialog styles CSS. $config['css']['dialog'] = 'include/styles/js/introjs.css'; + // If the theme is the default, we don't load it twice. + if ($config['style'] !== 'pandora') { + // It loads the last of all. + $config['css']['theme'] = 'include/styles/'.$config['style'].'.css'; + } + // If skin's css files exists then add them. if ($exists_css) { foreach ($skin_styles as $filename => $name) { @@ -1766,10 +1772,10 @@ function ui_process_page_head($string, $bitfield) // User style should go last so it can rewrite common styles. $config['css'] = array_merge( [ - 'common' => 'include/styles/common.css', - 'menu' => 'include/styles/menu.css', - 'tables' => 'include/styles/tables.css', - $config['style'] => 'include/styles/'.$config['style'].'.css', + 'common' => 'include/styles/common.css', + 'menu' => 'include/styles/menu.css', + 'tables' => 'include/styles/tables.css', + 'general' => 'include/styles/pandora.css', ], $config['css'] ); diff --git a/pandora_console/include/styles/pandoraPDF.css b/pandora_console/include/styles/pandoraPDF.css index 37d527c30b..5bb0e15174 100644 --- a/pandora_console/include/styles/pandoraPDF.css +++ b/pandora_console/include/styles/pandoraPDF.css @@ -1,4 +1,6 @@ /** + * Exclude css from visual styles + * * Extension to manage a list of gateways and the node address where they should * point to. * diff --git a/pandora_console/include/styles/pandora_black.css b/pandora_console/include/styles/pandora_black.css index 8e2d756e0c..e2a4f41602 100644 --- a/pandora_console/include/styles/pandora_black.css +++ b/pandora_console/include/styles/pandora_black.css @@ -21,4242 +21,217 @@ Description: The default Pandora FMS theme layout // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -/* Tree view styles */ -@import url(tree.css); - -* { - font-family: verdana, sans-serif; - letter-spacing: 0.03pt; - font-size: 8pt; - color: #fff; -} -svg * { - font-size: 11pt; -} -body { - background-color: #5b5b5b; - margin: 0 auto; -} - -div#page { - background: #5b5b5b; - background-image: none; -} - -body.pure { - background-color: #5b5b5b; -} -input, -textarea { - border: 1px solid #ddd; -} - -textarea { - padding: 5px; - min-height: 100px; - width: 99%; -} -textarea.conf_editor { - padding: 5px; - width: 650px; - height: 350px; -} -textarea.conf_error { - background-image: url(../../images/err.png); - background-repeat: no-repeat; - background-position: top right; -} -input { - padding: 2px 3px 4px 3px; - vertical-align: middle; -} - -input[type="checkbox"] { - display: inline; -} - -select { - padding: 2px 3px 3px 3px; - vertical-align: middle; -} -input.button { - font-family: Arial, Sans-serif; - border: 4px solid #ccc; - background: #5b5b5b; - padding: 2px 3px; - margin: 10px 15px; -} - -input[type="submit"], -input[type="button"] { - cursor: pointer; -} - -select { - border: 1px solid #ddd; -} -checkbox { - padding: 4px; - border: 1px solid #eee; -} -h1, -h2, -h3, -h4 { - font-weight: bold; - font-size: 1em; - font-family: Arial, Sans-serif; - text-transform: uppercase; - color: #fff; - padding-bottom: 4px; - padding-top: 7px; -} -h1 { - font-size: 16px; -} -h2 { - font-size: 15px; -} -h3 { - font-size: 14px; -} -h4 { - margin-bottom: 10px; - font-size: 13px; - color: #fff; - text-transform: none; -} -a { - color: #fff; - text-decoration: none; -} -a:hover { - color: #fff; - text-decoration: underline; -} -a.white_bold { - color: #eee; - text-decoration: none; - font-weight: bold; -} -a.white { - color: #eee; - text-decoration: none; -} -p.center { - text-align: center; -} -h1#log_title { - font-size: 18px; - margin-bottom: 0px; - color: #fff; - width: 300px; -} -div#log_msg { - display: none; -} -div#error_buttons { - margin-top: 20px; -} -div#error_buttons a { - margin: 14px; -} - -#noaccess { - position: relative; - margin-top: 25px; - left: 15px; - padding-top: 5px; - background-color: #5b5b5b; - border-top-left-radius: 2px; - border-top-right-radius: 2px; - border-bottom-left-radius: 2px; - border-bottom-right-radius: 2px; -} - -#noaccess-title { - color: #fff; - font-weight: bold; - padding-top: 5px; - margin-left: 5px; - background: none repeat scroll 0% 0% #82b92e; - border-top-left-radius: 2px; - border-top-right-radius: 2px; - border-bottom-left-radius: 2px; - border-bottom-right-radius: 2px; - text-align: center; -} - -#noaccess-text { - font-size: 12px; - text-align: justify; - padding-top: 25px; - padding-right: 50px; - float: right; -} - -#noaccess-image { - position: relative; - left: 10px; - top: 10px; - float: left; -} - -div#activity { - padding-top: 0px; - padding-bottom: 18px; -} -div#noa { - float: right; - padding-right: 50px; - margin-top: 25px; -} -div#db_f { - text-align: justify; - margin: auto; - padding: 0.5em; - width: 55em; - margin-top: 3em; -} -div#db_ftxt { - float: right; - padding-top: 10px; -} -div#container { - margin: 0 auto; - min-width: 960px; - text-align: left; - #border-left: solid 2px #000; - #border-right: solid 2px #000; - #border-top: solid 2px #000; - #margin-top: 5px; - height: 100%; - background: #5b5b5b; -} -div#page { - width: 960px; - clear: both; -} -div#main { - width: auto; - margin: 0px 2% 0px 0%; - float: right; - position: relative; - min-height: 850px; -} -div#main_help { - width: 100%; - padding-left: 0px; - padding-top: 0px; - background-color: #5b5b5b; - margin-top: 0px; - margin-left: 0px; - margin-right: 0px; - border-radius: 10px; -} -div#main_help div.databox, -.license_databox { - background: F3F3F3; - -moz-border-radius: 8px; - -webkit-border-radius: 8px; - border-radius: 8px; - border: 0px; - padding-left: 25px; - padding-right: 25px; - margin-top: 10px; - -moz-box-shadow: -1px 1px 6px #aaa; - -webkit-box-shadow: -1px 1px 6px #aaa; - box-shadow: -1px 1px 6px #aaa; -} - -div#main_help div.databox h1 { - padding-bottom: 0px; - margin-bottom: 0px; - font-weight: bold; - font-family: sans-serif, verdana; -} - -div#main_help div.databox h3, -div#main_help div.databox h2 { - color: #6eb432; - font-family: sans-serif, verdana; -} - -div#main_help div.databox h3 { - font-size: 12px; -} - -div#main_help a.footer, -div#main_help span { - color: #999; -} - -a.footer, -a.footer span { - font-size: 9px; - color: white; -} - -div#main_help div.databox hr { - width: 100%; - border: 0px; - height: 1px; - background-color: #222; - margin: 0px; -} - -div#main_help div.databox p { - line-height: 15px; - text-align: justify; -} - -div#menu_container { - -moz-border-top-right-radius: 6px; - -webkit-border-top-right-radius: 6px; - border-top-right-radius: 6px; - z-index: 1010; - width: 40px; - height: 100%; -} - -div#menu { - width: 45px; - float: left; - z-index: 2000; - position: absolute; -} - -div#head { - font-size: 8pt; - width: 100%; - height: 60px; - padding-top: 0px; - margin-bottom: 20px; - border-bottom-style: solid; - border-bottom-width: 3px; - border-color: #82b92e; - min-width: 882px; - background-color: #333; - color: white; - background-image: url("../../images/header_f2b.jpg"); -} - -.fixed_header { - z-index: 9999; - position: fixed; - left: 0; - top: 0; - width: 100%; -} - -div#foot { - font-size: 6pt; - border-top: solid 2px #222; - padding-top: 8px; - padding-bottom: 5px; - text-align: center; - background: #333333; - height: 30px; - clear: both; - width: auto; -} -#ver { - margin-bottom: 25px; -} - -/****************/ -/* LOGIN STYLES */ -/****************/ - -@font-face { - font-family: "Nunito"; - font-style: normal; - font-weight: 400; - src: local("Nunito-Regular"), url(../../fonts/nunito.woff) format("woff"); -} - -@font-face { - font-family: "roboto"; - src: url("../../fonts/roboto.woff2") format("woff2"); -} - -@font-face { - font-family: "opensans"; - src: url("../../fonts/opensans.woff2") format("woff2"); -} - -@font-face { - font-family: "lato"; - src: url("../../fonts/lato.woff2") format("woff2"); -} - -@font-face { - font-family: "leaguegothic"; - src: url("../../fonts/leaguegothic.woff") format("woff"); -} - -#login_body { - /* Set rules to fill background */ - min-height: 100%; - min-width: 1024px; - width: 100%; - z-index: -9999; - position: absolute; -} - -@media screen and (max-width: 1024px) { - /* Specific to this particular image */ - #login_body { - left: 50%; - margin-left: -512px; /* 50% */ - } -} -@media screen and (max-width: 1100px) { - /* Specific to this particular image */ - #login_body { - background-image: url("../../images/backgrounds/fondo_madera_bn_1100.jpg"); - background-repeat: repeat; - background-position: center center; - } -} -@media screen and (max-width: 1400px) { - /* Specific to this particular image */ - #login_body { - background-image: url("../../images/backgrounds/fondo_madera_bn_1400.jpg"); - background-repeat: repeat; - background-position: center center; - } -} -@media screen and (max-width: 2000px) { - /* Specific to this particular image */ - #login_body { - background-image: url("../../images/backgrounds/fondo_madera_bn_2000.jpg"); - background-repeat: repeat; - background-position: center center; - } -} -@media screen and (min-width: 2000px) { - /* Specific to this particular image */ - #login_body { - background-image: url("../../images/backgrounds/fondo_madera_bn_2500.jpg"); - background-repeat: repeat; - background-position: center center; - } -} - -p.log_in { - color: #fff; - padding: 0px 10px; - width: 300px; -} -h1#log_f { - color: #c00; - border-bottom: 1px solid #c00; - padding-bottom: 3px; -} -div#login { - border-width: 2px 2px 2px 2px; - border-style: solid; - border-color: #000; - font-size: 12px; -} -div#login_in, -#login_f { - /*margin: 0 auto 0 140px; - width: 400px;*/ -} - -.databox_login, -.databox_logout { - border-radius: 5px; - height: 200px; -} - -#login_inner { - width: 100%; - height: 100%; - border-radius: 5px; - /* Browser without multibackground support */ - background-color: #373737; -} -#login_outer { - border-radius: 11px; - background-color: #000; - width: 500px; - color: #fff; - margin: 0px auto; -} - -.version_login { - transform: rotate(36deg); - /* Old browser support */ - -ms-transform: rotate(36deg); /* IE */ - -moz-transform: rotate(36deg); /* FF */ - -o-transform: rotate(36deg); /* Opera */ - -webkit-transform: rotate(36deg); /* Safari and Chrome */ - - float: right; - margin-top: 18px; - width: 80px; - height: 0px; - border-right: 13px solid transparent; - border-left: 25px solid transparent; - border-bottom: 18px solid #82b92e; - left: 16px; - position: relative; -} - -#login_outer * { - font-family: Nunito, "Arial Rounded MT", Arial, Helvetica, sans-serif; - font-weight: bold; -} -.login_border { - border-right: 1px solid #fff; - text-align: center; -} -table#login_layout { - width: 100%; - height: 160px; - position: absolute; -} - -div#error_login { - text-align: center; - margin-top: 5px; - margin-left: 5px; - width: 75%; - float: right; - text-align: left; - top: 100px; -} - -div#error_login_icon { - #margin: 0 auto; - margin-top: 10px; - margin-right: 7px; - text-align: center; - #margin-left: 20px; - width: 20%; - float: right; -} - -div#login_f { - margin-top: 10px; - margin-bottom: 25px; -} - -a:focus, -input:focus, -button:focus { - utline-width: 0; - outline: 0; -} - -/*DIV.login_links { - margin: 10px 0px 0px; - color: #FFF; - text-align: center; -} - -DIV.login_links>a { - color: #FFF; -} - -DIV.login_button{ - text-align:right; - width: 100%; - margin-top: 15px; -} - -DIV.login_button>input{ - background-color: #373737; - border: 0px none; - background-image: url("../../images/input_go.png"); - padding-right: 25px; -} - -.login_page{ - height: 200px; - padding-top: 10%; - text-align: center; - width: 100%; - position: absolute; -} - -input.next_login { - padding-right: 12px; - padding-left: 12px; - height: 23px; - text-align: center; - font-weight: 600; - letter-spacing: 0.5pt; - font-size: 12px; - border-radius: 3px; -} - -DIV.login_nick, DIV.login_pass { - text-align:left; - padding-left: 15px; - margin-top: 10px; -} - -DIV.login_nick>input, DIV.login_pass>input { - height: 20px; - border-radius:0px; - margin-left: 10px; -} - -DIV.login_nick>input:focus,DIV.login_pass>input:focus { - outline-width: 0px; - border-color: #82b92e; - background-color: #82b92e; - font-size: 12px; - height: 20px; - box-shadow: 0px 0px 3px 3px #82b92e; -} - -DIV.login_nick>img, DIV.login_pass>img { - vertical-align: middle; -} - -DIV.login_links a { - letter-spacing: 0.8pt; -} - -DIV.login_links a:first-child { - margin-right: 5px; -} - -DIV.login_links a:last-child { - margin-left: 5px; -} - -DIV.login_nick_text { - text-align: left; - margin-bottom: 3px; - width: 191px; - margin: 5px 0px; - font-size: 12px; - letter-spacing: 0.4pt; -} - -DIV.login_pass_text { - text-align: left; - width: 191px; - margin: 13px 0px 5px 0px; - font-size: 12px; - letter-spacing: 0.4pt; -} - -DIV.login_pass { -} - -input.login { - border: 0px none; - margin: 0px 0px; - width: 135px; - height: 18px; - font-weight: 100; - - letter-spacing: 0.3pt; -} - -input.login_user { - - color: #373737; - padding-left: 8px; - width: 179px; - color: #222; - height: 18px; -} - -input.login_password { - - padding-left: 8px; - width: 179px; - color: #222; - height: 20px; -} -*/ - -.databox_error { - width: 657px; - height: 400px; - border: none; - background-color: #fafafa; - background: url(../../images/splash_error.png) no-repeat; -} - -#ver_num { - margin: 0px auto; - width: 100%; - position: absolute; - bottom: 10px; - color: #fff; - text-align: center; -} - -input:-webkit-autofill { - #-webkit-box-shadow: 0 0 0px 1000px #ddd inset; -} -/***********************/ -/* END OF LOGIN STYLES */ -/***********************/ - -th > label { - padding-top: 7px; -} -input.chk { - margin-right: 0px; - border: 0px none; - height: 14px; -} -input.datos { - background-color: #f5f5f5; -} -input.datos_readonly { - background-color: #050505; -} - -input.sub { - font-weight: normal; - - -moz-border-radius: 2px; - -webkit-border-radius: 2px; - border-radius: 2px; - - font-size: 8pt; - - background-color: #333; - background-repeat: no-repeat; - background-position: 92% 3px; - - color: white; - padding: 3px 3px 5px 12px; - - border-color: #333; -} - -input.sub[disabled] { - color: #b4b4b4; - background-color: #f3f3f3; - border-color: #b6b6b6; - cursor: default; -} - -input.next, -input.upd, -input.ok, -input.wand, -input.delete, -input.cog, -input.target, -input.search, -input.copy, -input.add, -input.graph, -input.percentile, -input.binary, -input.camera, -input.config, -input.cancel, -input.default, -input.filter, -input.pdf { - padding-right: 30px; - height: 23px; -} - -input.next { - background-image: url(../../images/input_go.png); -} -input.upd { - background-image: url(../../images/input_update.png); -} -input.wand { - background-image: url(../../images/input_wand.png); -} -input.wand:disabled { - background-image: url(../../images/input_wand.disabled.png); -} -input.search { - background-image: url(../../images/input_zoom.png); -} -input.search:disabled { - background-image: url(../../images/input_zoom.disabled.png); -} -input.ok { - background-image: url(../../images/input_tick.png); -} -input.ok:disabled { - background-image: url(../../images/input_tick.disabled.png); -} -input.add { - background-image: url(../../images/input_add.png); -} -input.add:disabled { - background-image: url(../../images/input_add.disabled.png); -} -input.cancel { - background-image: url(../../images/input_cross.png); -} -input.cancel:disabled { - background-image: url(../../images/input_cross.disabled.png); -} -input.delete { - background-image: url(../../images/input_delete.png); -} -input.delete:disabled { - background-image: url(../../images/input_delete.disabled.png); -} -input.cog { - background-image: url(../../images/input_cog.png); -} -input.cog:disabled { - background-image: url(../../images/input_cog.disabled.png); -} -input.config { - background-image: url(../../images/input_config.png); -} -input.config:disabled { - background-image: url(../../images/input_config.disabled.png); -} -input.filter { - background-image: url(../../images/input_filter.png); -} -input.filter:disabled { - background-image: url(../../images/input_filter.disabled.png); -} -input.pdf { - background-image: url(../../images/input_pdf.png); -} -input.pdf:disabled { - background-image: url(../../images/input_pdf.disabled.png); -} -input.camera { - background-image: url(../../images/input_camera.png); -} - -#toolbox #auto_save { - padding-top: 5px; -} - -#toolbox { - margin-top: 13px; -} -input.visual_editor_button_toolbox { - padding-right: 15px; - padding-top: 10px; - margin-top: 5px; -} -input.delete_min { - background: #fefefe url(../../images/cross.png) no-repeat center; -} -input.delete_min[disabled] { - background: #fefefe url(../../images/cross.disabled.png) no-repeat center; -} -input.graph_min { - background: #fefefe url(../../images/chart_curve.png) no-repeat center; -} -input.graph_min[disabled] { - background: #fefefe url(../../images/chart_curve.disabled.png) no-repeat - center; -} -input.percentile_min { - background: #fefefe url(../../images/chart_bar.png) no-repeat center; -} -input.percentile_min[disabled] { - background: #fefefe url(../../images/chart_bar.disabled.png) no-repeat center; -} -input.percentile_item_min { - background: #fefefe url(../../images/percentile_item.png) no-repeat center; -} -input.percentile_item_min[disabled] { - background: #fefefe url(../../images/percentile_item.disabled.png) no-repeat - center; -} -input.binary_min { - background: #fefefe url(../../images/binary.png) no-repeat center; -} -input.binary_min[disabled] { - background: #fefefe url(../../images/binary.disabled.png) no-repeat center; -} -input.camera_min { - background: #fefefe url(../../images/camera.png) no-repeat center; -} -input.camera_min[disabled] { - background: #fefefe url(../../images/camera.disabled.png) no-repeat center; -} -input.config_min { - background: #fefefe url(../../images/config.png) no-repeat center; -} -input.config_min[disabled] { - background: #fefefe url(../../images/config.disabled.png) no-repeat center; -} -input.label_min { - background: #fefefe url(../../images/tag_red.png) no-repeat center; -} -input.label_min[disabled] { - background: #fefefe url(../../images/tag_red.disabled.png) no-repeat center; -} -input.icon_min { - background: #fefefe url(../../images/photo.png) no-repeat center; -} -input.icon_min[disabled] { - background: #fefefe url(../../images/photo.disabled.png) no-repeat center; -} -input.box_item { - background: #fefefe url(../../images/box_item.png) no-repeat center; -} -input.box_item[disabled] { - background: #fefefe url(../../images/box_item.disabled.png) no-repeat center; -} -input.line_item { - background: #fefefe url(../../images/line_item.png) no-repeat center; -} -input.line_item[disabled] { - background: #fefefe url(../../images/line_item.disabled.png) no-repeat center; -} -input.copy_item { - background: #fefefe url(../../images/copy_visualmap.png) no-repeat center; -} -input.copy_item[disabled] { - background: #fefefe url(../../images/copy_visualmap.disabled.png) no-repeat - center; -} -input.grid_min { - background: #fefefe url(../../images/grid.png) no-repeat center; -} -input.grid_min[disabled] { - background: #fefefe url(../../images/grid.disabled.png) no-repeat center; -} -input.save_min { - background: #fefefe url(../../images/file.png) no-repeat center; -} -input.save_min[disabled] { - background: #fefefe url(../../images/file.disabled.png) no-repeat center; -} -input.service_min { - background: #fefefe url(../../images/box.png) no-repeat center; -} -input.service_min[disabled] { - background: #fefefe url(../../images/box.disabled.png) no-repeat center; -} - -input.group_item_min { - background: #fefefe url(../../images/group_green.png) no-repeat center; -} -input.group_item_min[disabled] { - background: #fefefe url(../../images/group_green.disabled.png) no-repeat - center; -} - -div#cont { - position: fixed; - max-height: 320px; - overflow-y: auto; - overflow-x: hidden; -} - -.termframe { - background-color: #82b92e; -} - -table, -img { - border: 0px; -} - -tr:first-child > th { - background-color: #373737; -} - -th { - color: #fff; - background-color: #666; - font-size: 7.5pt; - letter-spacing: 0.3pt; -} -tr.datos, -tr.datost, -tr.datosb, -tr.datos_id, -tr.datosf9 { - #background-color: #eaeaea; -} - -tr.datos2, -tr.datos2t, -tr.datos2b, -tr.datos2_id, -tr.datos2f9 { - #background-color: #f2f2f2; -} - -tr.datos:hover, -tr.datost:hover, -tr.datosb:hover, -tr.datos_id:hover, -tr.datosf9:hover, -tr.datos2:hover, -tr.datos2t:hover, -tr.datos2b:hover, -tr.datos2_id:hover, -tr.datos2f9:hover { - #background-color: #efefef; -} - -/* Checkbox styles */ -td input[type="checkbox"] { - /* Double-sized Checkboxes */ - -ms-transform: scale(1.3); /* IE */ - -moz-transform: scale(1.3); /* FF */ - -o-transform: scale(1.3); /* Opera */ - -webkit-transform: scale(1.3); /* Safari and Chrome */ - padding: 10px; - margin-top: 2px; - display: table-cell; -} - -td.datos3, -td.datos3 * { - background-color: #666; - color: white; -} - -td.datos4, -td.datos4 * { - /*Add because in php the function html_print_table write style in cell and this is style head.*/ - text-align: center; - background-color: #666; - color: white; -} - -td.datos_id { - color: #1a313a; -} - -tr.disabled_row_user * { - color: grey; -} - -.bg { - /* op menu */ - background: #82b92e; -} - -.bg2 { - /* main page */ - background-color: #0a160c; -} -.bg3 { - /* godmode */ - background: #666666; -} -.bg4 { - /* links */ - background-color: #989898; -} -.bg, -.bg2, -.bg3, -.bg4 { - position: relative; - width: 100%; -} -.bg { - height: 20px; -} -.bg2, -.bg3, -.bg4 { - height: 18px; -} -.f10, -#ip { - font-size: 7pt; - text-align: center; -} -.f9, -.f9i, -.f9b, -.datos_greyf9, -.datos_bluef9, -.datos_greenf9, -.datos_redf9, -.datos_yellowf9, -td.f9, -td.f9i, -td.datosf9, -td.datos2f9 { - font-size: 6.5pt; -} -.f9i, -.redi { - font-style: italic; -} -.tit { - padding: 6px 0px; - height: 14px; -} -.tit, -.titb { - font-weight: bold; - color: #fff; - text-align: center; -} - -.suc * { - color: #5a8629; -} - -.info * { - color: #006f9d; -} - -.error * { - color: #f85858; -} - -.warning * { - color: #f3b200; -} - -.help { - background: url(../../images/help.png) no-repeat; -} -.red, -.redb, -.redi, -.error { - color: #c00; -} - -.sep { - margin-left: 30px; - border-bottom: 1px solid #708090; - width: 100%; -} -.orange { - color: #fd7304; -} -.green { - color: #5a8629; -} -.yellow { - color: #f3c500; -} -.greenb { - color: #00aa00; -} -.grey { - color: #808080; - font-weight: bold; -} -.blue { - color: #5ab7e5; - font-weight: bold; -} -.redb, -.greenb, -td.datos_id, -td.datos2_id, -f9b { - font-weight: bold; -} -.p10 { - padding-top: 1px; - padding-bottom: 0px; -} -.p21 { - padding-top: 2px; - padding-bottom: 1px; -} -.w120 { - width: 120px; -} -.w130, -#table-agent-configuration select { - width: 130px; -} -.w135 { - width: 135px; -} -.w155, -#table_layout_data select { - width: 155px; -} -.top, -.top_red, -.bgt, -td.datost, -td.datos2t { - vertical-align: top; -} -.top_red { - background: #ff0000; -} -.bot, -.titb, -td.datosb { - vertical-align: bottom; -} -.msg { - margin-top: 15px; - text-align: justify; -} -ul.mn { - list-style: none; - padding: 0px 0px 0px 0px; - margin: 0px 0px 0px 0px; - line-height: 15px; -} -.gr { - font-size: 10pt; - font-weight: bold; -} -a.mn, -.gr { - font-family: Arial, Verdana, sans-serif, Helvetica; -} -div.nf { - background: url(../../images/info.png) no-repeat scroll 0 50% transparent; - margin-left: 7px; - padding: 8px 1px 6px 25px; -} -div.title_line { - background-color: #4e682c; - height: 5px; - width: 762px; -} - -.alpha50 { - filter: alpha(opacity=50); - -moz-opacity: 0.5; - opacity: 0.5; - -khtml-opacity: 0.5; -} - +div#page, #menu_tab_frame, -#menu_tab_frame_view { - display: block; - border-bottom: 1px solid #82b92e; - /* float:left; */ - margin-left: 0px; - max-height: 31px; - min-height: 31px; - padding-right: 28px; - width: 100%; -} - -#menu_tab { - margin: 0px 0px 0px 0px; -} - -#menu_tab .mn, -#menu_tab ul, -#menu_tab .mn ul { - padding: 0px; - list-style: none; - margin: 0px 0px 0px 0px; -} -#menu_tab .mn li { - float: right; - position: relative; - margin: 0px 0px 0px 0px; -} -/* -#menu_tab li a, #menu_tab a { - padding: 2px 0px; - font-weight: bold; - line-height: 18px; - margin-left: 3px; - margin-right: 0px; - - -moz-border-top-right-radius: 5px; - -webkit-border-top-right-radius: 5px; - border-top-right-radius: 5px; - - -moz-border-top-left-radius: 5px; - -webkit-border-top-left-radius: 5px; - border-top-left-radius: 5px; -} - -#menu_tab li>form { - padding-left: 7px; - padding-top: 4px; -} -*/ - -#menu_tab li.separator_view { - padding: 4px; -} - -#menu_tab li.separator { - padding: 4px; -} - -#menu_tab li.nomn_high a { - /*background: #82b92e;*/ - color: #fff; -} -#menu_tab .mn li a { - display: block; - text-decoration: none; - padding: 0px; - margin: 0px; - height: 21px; - width: 21px; -} -#menu_tab li.nomn:hover a, -#menu_tab li:hover ul a:hover { - /*background: #82b92e;*/ - color: #fff; -} -#menu_tab li:hover a { - /*background: #b2b08a url("../../images/arrow.png") no-repeat right 3px;*/ -} - -#menu_tab li.nomn { - min-width: 30px; - height: 28px; -} -#menu_tab li.nomn_high { - min-width: 30px; - height: 28px; -} -/* TAB TITLE */ -#menu_tab_left { - margin-left: 0px; -} - -#menu_tab_left .mn, -#menu_tab_left ul, -#menu_tab_left .mn ul { - background-color: #000; - color: #fff; - font-weight: bold; - padding: 0px 0px 0px 0px; - list-style: none; - margin: 0px 0px 0px 0px; -} -#menu_tab_left .mn li { - float: left; - position: relative; - height: 26px; - max-height: 26px; -} -#menu_tab_left li a, -#menu_tab_left li span { - /* text-transform: uppercase; */ - padding: 0px 0px 0px 0px; - color: #fff; - font-size: 8.5pt; - font-weight: bold; - line-height: 20px; -} -#menu_tab_left .mn li a { - display: block; - text-decoration: none; -} -#menu_tab_left li.view a { - padding: 2px 10px 2px 10px; - color: #fff; - font-weight: bold; - line-height: 18px; - display: none; -} - -#menu_tab_left li.view { - background: #82b92e; - max-width: 40%; - min-width: 20%; - padding: 5px 5px 0px; - text-align: center; - -moz-border-top-right-radius: 3px; - -webkit-border-top-right-radius: 3px; - border-top-right-radius: 3px; - - -moz-border-top-left-radius: 3px; - -webkit-border-top-left-radius: 3px; - border-top-left-radius: 3px; - margin-left: 0px; - overflow-y: hidden; -} - -#menu_tab_left li.view img.bottom { - width: 24px; - height: 24px; -} - -#menu_tab_frame *, -#menu_tab_frame_view * { - #margin: 0px 0px 0px 0px; -} - -span.users { - background: url(../../images/group.png) no-repeat; -} -span.agents { - background: url(../../images/bricks.png) no-repeat; -} -span.data { - background: url(../../images/data.png) no-repeat; -} -span.alerts { - background: url(../../images/bell.png) no-repeat; -} -span.time { - background: url(../../images/hourglass.png) no-repeat; -} -span.net { - background: url(../../images/network.png) no-repeat; -} -span.master { - background: url(../../images/master.png) no-repeat; -} -span.wmi { - background: url(../../images/wmi.png) no-repeat; -} -span.prediction { - background: url(../../images/chart_bar.png) no-repeat; -} -span.plugin { - background: url(../../images/plugin.png) no-repeat; -} -span.export { - background: url(../../images/database_refresh.png) no-repeat; -} -span.snmp { - background: url(../../images/snmp.png) no-repeat; -} -span.binary { - background: url(../../images/binary.png) no-repeat; -} -span.recon { - background: url(../../images/recon.png) no-repeat; -} -span.rmess { - background: url(../../images/email_open.png) no-repeat; -} -span.nrmess { - background: url(../../images/email.png) no-repeat; -} -span.recon_server { - background: url(../../images/recon.png) no-repeat; -} -span.wmi_server { - background: url(../../images/wmi.png) no-repeat; -} -span.export_server { - background: url(../../images/server_export.png) no-repeat; -} -span.inventory_server { - background: url(../../images/page_white_text.png) no-repeat; -} -span.web_server { - background: url(../../images/world.png) no-repeat; -} -/* This kind of span do not have any sense, should be replaced on PHP code -by a real img in code. They are not useful because insert too much margin around -(for example, not valid to use in the table of server view */ -span.users, -span.agents, -span.data, -span.alerts, -span.time, -span.net, -span.master, -span.snmp, -span.binary, -span.recon, -span.wmi, -span.prediction, -span.plugin, -span.plugin, -span.export, -span.recon_server, -span.wmi_server, -span.export_server, -span.inventory_server, -span.web_server { - margin-left: 4px; - margin-top: 10px; - padding: 4px 8px 12px 30px; - display: block; -} -span.rmess, -span.nrmess { - margin-left: 14px; - padding: 1px 0px 10px 30px; - display: block; -} -/* New styles for data box */ -.databox, -.databox_color, -.databox_frame { - margin-bottom: 5px; - margin-top: 0px; - margin-left: 0px; - border: 1px solid #e2e2e2; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - border-radius: 4px; -} -.databox_color { - padding-top: 5px; -} - -table.databox { - background-color: #5b5b5b; - border-spacing: 0px; - -moz-box-shadow: 0px 0px 0px #ddd; - -webkit-box-shadow: 0px 0px 0px #ddd; - box-shadow: 0px 0px 0px #ddd; -} - -.databox td { - -moz-border-radius: 0px; - -webkit-border-radius: 0px; - border-radius: 0px; - border: 0px none #e2e2e2; -} - -.databox th { - padding: 9px 7px; - font-weight: normal; - color: #fff; -} -.databox td { - #border-bottom: 1px solid #e2e2e2; -} - -.databox th * { - color: #fff; -} - -.databox th input, -.databox th textarea, -.databox th select, -.databox th select option { - color: #222; -} - -.tabletitle { - color: #333; -} - -.tactical_set legend { - text-align: left; - color: #fff; -} - -.tactical_set { - background: #5b5b5b; - border: 1px solid #e2e2e2; - margin-left: auto; - margin-right: auto; - width: auto; -} - -/* For use in Netflow */ - -table.databox_grid { - margin: 25px; -} - -table.databox_grid th { - font-size: 12px; -} - -table.databox_grid td { - padding: 6px; - margin: 4px; - border-bottom: 1px solid #acacac; - border-right: 1px solid #acacac; -} - -table.alternate tr:nth-child(odd) td { - background-color: #5b5b5b; -} -table.alternate tr:nth-child(even) td { - background-color: #e4e5e4; -} - -table.rounded_cells td { - padding: 4px 4px 4px 10px; - -moz-border-radius: 6px; - -webkit-border-radius: 6px; - border-radius: 6px; -} - -.databox_color { - background-color: #fafafa; -} -#head_l { - float: left; - margin: 0; - padding: 0; -} -#head_r { - float: right; - text-align: right; - margin-right: 10px; - padding-top: 0px; -} -#head_m { - position: absolute; - padding-top: 6px; - padding-left: 12em; -} -span#logo_text1 { - font: bolder 3em Arial, Sans-serif; - letter-spacing: -2px; - color: #eee; -} -span#logo_text2 { - font: 3em Arial, Sans-serif; - letter-spacing: -2px; - color: #aaa; -} - -div#logo_text3 { - text-align: right; - font: 2em Arial, Sans-serif; - letter-spacing: 6px; - color: #aaa; - font-weight: bold; - margin-top: 0px; - margin-left: 4px; - padding-top: 0px; -} - -.bb0 { - border-bottom: 0px; -} -.bt0 { - border-top: 0px; -} -.action-buttons { - text-align: right; -} -#table-add-item select, -#table-add-sla select { - width: 180px; -} - -/* end of classes for event priorities */ -div#main_pure { - background-color: #fefefe; - text-align: left; - margin-bottom: 25px; - margin-top: 30px; - margin-left: 10px; - margin-right: 10px; - height: 1000px; - width: 98%; - position: static; -} -#table-agent-configuration radio { - margin-right: 40px; -} -.ui-draggable { - cursor: move; -} -#layout_trash_drop { - float: right; - width: 300px; - height: 180px; - background: #fff url("../../images/trash.png") no-repeat bottom left; -} -#layout_trash_drop div { - display: block; -} -#layout_editor_drop { - float: left; - width: 300px; -} -.agent_reporting { - margin: 5px; - padding: 5px; -} -.report_table, -.agent_reporting { - border: #ccc outset 3px; -} -.img_help { - cursor: help; -} -#loading { - position: fixed; - width: 200px; - margin-left: 30%; - text-align: center; - top: 50%; - background-color: #999999; - padding: 20px; -} -/* IE 7 Hack */ -#editor { - *margin-top: 10px; -} -/* big_data is used in tactical and logon_ok */ -.big_data { - text-decoration: none; - font: bold 2em Arial, Sans-serif; -} - -.med_data { - text-decoration: none; - font: bold 1.5em Arial, Sans-serif; -} - -.notify { - background-color: #f7ffa5; - text-align: center; - font-weight: bold; - padding: 8px; - margin: 0px 0px 0px 0px; - z-index: -1; -} - -.notify a { - color: #003a3a; - text-decoration: underline; -} - -.listing { - border-collapse: collapse; -} -.listing td { - border-bottom: 1px solid #cccccc; - border-top: 1px solid #cccccc; -} -ul { - list-style-type: none; - padding-left: 0; - margin-left: 0; -} -span.actions { - margin-left: 30px; -} -.actions { - min-width: 200px; -} -code, -pre { - font-family: courier, serif; -} -select#template, -select#action { - width: 250px; -} -#label-checkbox-matches_value, -#label-checkbox-copy_modules, -#label-checkbox-copy_alerts { - display: inline; - font-weight: normal; -} -input[type="image"] { - border: 0px; - background-color: transparent; -} -table#simple select#id_module_type, -table#alert_search select#id_agent, -table#alert_search select#id_group, -table#network_component select#type { - width: 200px; -} -table#simple select#select_snmp_oid, -table#simple select#id_plugin, -table#network_component select#id_plugin { - width: 270px; -} -table#simple select#prediction_id_group, -table#simple select#prediction_id_agent, -table#simple select#prediction_module { - width: 50%; - display: block; -} -table#simple input#text-plugin_parameter, -table#simple input#text-snmp_oid, -table#source_table select, -table#destiny_table select, -table#target_table select, -table#filter_compound_table select, -table#filter_compound_table #text-search, -table#delete_table select { - width: 100%; -} -table#simple select#network_component_group, -table#simple select#network_component { - width: 90%; -} -table#simple span#component_group, -table#simple span#component { - width: 45%; - font-style: italic; -} -table#simple label { - display: inline; - font-weight: normal; - font-style: italic; -} -.clickable { - cursor: pointer; -} -table#agent_list tr, -table.alert_list tr { - vertical-align: top; -} -.toggle { - border-collapse: collapse; -} -.toggle td { - border-left: 1px solid #d3d3d3; -} - -ul.actions_list { - list-style-image: url(../../images/arrow.png); - list-style-position: inside; - margin-top: 0; -} -div.loading { - background-color: #fff1a8; - margin-left: auto; - margin-right: auto; - padding: 5px; - text-align: center; - font-style: italic; - width: 95%; -} -div.loading img { - float: right; -} -/* Tablesorter jQuery pager */ -div.pager { - margin-left: 10px; - margin-top: 5px; -} -div.pager img { - position: relative; - top: 4px; - padding-left: 5px; -} -div.pager input { - padding-left: 5px; -} -.pagedisplay { - border: 0; - width: 35px; -} -/* Steps style */ -ol.steps { - margin-bottom: 15px; - padding: 0; - list-style-type: none; - list-style-position: outside; -} -ol.steps li { - float: left; - background-color: #efefef; - padding: 5px; - margin-left: 5px; - width: 150px; -} -ol.steps li a { - color: #111; -} -ol.steps li.visited a { - color: #999; -} -ol.steps li span { - font-weight: normal; - display: block; -} -ol.steps li span { - color: #777; -} -ol.steps li.visited span { - color: #999; -} -ol.steps li.current { - border-left: 5px solid #778866; - margin-left: 0; - font-weight: bold; - background-color: #e9f3d2; -} -ol.steps li.visited { - color: #999; -} - -fieldset { - background-color: #5b5b5b; - border: 1px solid #e2e2e2; - padding: 0.5em; - margin-bottom: 20px; - position: relative; -} -fieldset legend { - font-size: 1.1em; - font-weight: bold; - #color: #3f4e2f; - line-height: 20px; - color: #3f3f3f; - #top: -2em; -} - -fieldset .databox { - border: 0px solid; -} - -fieldset.databox { - padding: 14px; -} - -fieldset legend span, -span#latest_value { - font-style: italic; -} -span#latest_value span#value { - font-style: normal; -} -form#filter_form { - margin-bottom: 15px; -} -ul.action_list { - margin: 0; - list-style: none inside circle; -} -ul.action_list li div { - margin-left: 15px; -} -span.action_name { - float: none; -} -div.actions_container { - overflow: auto; - width: 100%; - max-height: 200px; -} -div.actions_container label { - display: inline; - font-weight: normal; - font-style: italic; -} -a.add_action { - clear: both; - display: block; -} - -/* timeEntry styles */ -.timeEntry_control { - vertical-align: middle; - margin-left: 2px; -} -div#steps_clean { - clear: both; -} -div#event_control { - clear: right; -} - -/* Autocomplete styles */ -.ac_results { - padding: 0px; - border: 1px solid black; - background-color: white; - overflow: hidden; - z-index: 99999; -} - -.ac_results ul { - width: 100%; - list-style-position: outside; - list-style: none; - padding: 0; - margin: 0; - text-align: left; -} - -.ac_results li { - margin: 0px; - padding: 2px 5px; - cursor: default; - display: block; - /* - if width will be 100% horizontal scrollbar will apear - when scroll mode will be used - */ - /*width: 100%;*/ - font: menu; - font-size: 12px; - /* - it is very important, if line-height not setted or setted - in relative units scroll will be broken in firefox - */ - line-height: 16px; -} - -.ac_loading { - background: white url("../images/loading.gif") right center no-repeat; -} - -.ac_over { - background-color: #efefef; -} -span.ac_extra_field, -span.ac_extra_field strong { - font-style: italic; - font-size: 9px; -} - -div#pandora_logo_header { - /* Put here your company logo (139x60 pixels) like this: */ - /* background: url(../../images/MiniLogoArtica.jpg); */ - background: url(../../images/pandora_logo_head.png); - background-position: 0% 0%; - width: 139px; - height: 60px; - float: left; -} - -#header_table img { - margin-top: 0px; -} - -.autorefresh_disabled { - cursor: not-allowed; -} - -a.autorefresh { - padding-right: 8px; -} - -#refrcounter { - color: white; -} - -#combo_refr select { - margin-right: 8px; -} - -.disabled_module { - color: #aaa; -} -div.warn { - background: url(../../images/info.png) no-repeat; - margin-top: 7px; - padding: 2px 1px 6px 25px; -} - -.submenu_not_selected { - transition-property: background-color; - transition-duration: 0.5s; - transition-timing-function: ease-out; - -webkit-transition-property: background-color; - -webkit-transition-duration: 0.5s; - -webkit-transition-timing-function: ease-out; - -moz-transition-property: background-color; - -moz-transition-duration: 0.5s; - -moz-transition-timing-function: ease-out; - -o-transition-property: background-color; - -o-transition-duration: 0.5s; - -o-transition-timing-function: ease-out; - font-weight: normal; -} - -/* Submenus havent borders */ -.submenu_not_selected, -.submenu_selected, -.submenu2 { - border: 0px; - min-height: 35px; -} - -/* Pandora width style theme */ - -div#container { - width: 100%; -} -div#page { - width: auto; -} -div#main { - max-width: 93%; - min-width: 93%; -} - -ol.steps { - margin-bottom: 70px; -} -div#steps_clean { - display: none; -} - -#menu_tab_frame, -#menu_tab_frame_view { - width: 100%; - padding-right: 0px; - margin-left: 0px; - margin-bottom: 20px; - height: 31px; -} -div#events_list { - float: left; - width: 100%; -} -span#logo_text1 { - font: bolder 3em Arial, Sans-serif; - letter-spacing: -2px; - color: #eee; -} -span#logo_text2 { - font: 3em Arial, Sans-serif; - letter-spacing: -2px; - color: #aaa; -} -div#logo_text3 { - text-align: right; - font: 2em Arial, Sans-serif; - letter-spacing: 6px; - color: #aaa; - font-weight: bold; - margin-top: 0px; - margin-left: 4px; - padding-top: 0px; -} -.pagination { - margin-top: 15px; - margin-bottom: 5px; -} -.pagination * { - margin-left: 0px; - margin-right: 0px; - vertical-align: middle; -} - -/*CALENDAR TOOLTIP STYLE*/ - -/* Calendar background */ -table.scw { - background-color: #82b92e; - border: 0; - border-radius: 4px; -} - -/* Week number heading */ -td.scwWeekNumberHead { - color: #111; -} - -td.scwWeek { - color: #111; -} - -Today selector td.scwFoot { - background-color: #daedae; - color: #111; -} - -td.scwFootDisabled { - background-color: #000; - color: #ffffff; -} - -tfoot.scwFoot { - color: #111; -} - -.scwFoot :hover { - color: #3f3f3f; -} - -table.scwCells { - background-color: #5b5b5b; - color: #3c3c3c; -} - -table.scwCells:hover { - background-color: #5b5b5b; -} - -td.scwCellsExMonth { - background-color: #eee; - color: #3c3c3c; -} - -td.scwCellsWeekend { - background-color: #3c3c3c; - color: #fff; - border: 0; -} - -td.scwInputDate { - background-color: #777; - color: #ffffff; - border: 0; -} - -td.scwFoot { - background-color: #5b5b5b; - color: #3c3c3c; - border: 0; -} - -/* Cells divs to set individual styles with the table objects */ -div.cellBold { - width: 100%; - height: 100%; - font-weight: bold; -} - -div.cellRight { - width: 100%; - height: 100%; - text-align: right; -} - -div.cellCenter { - width: 100%; - height: 100%; - text-align: center; -} - -div.cellWhite { - width: 100%; - height: 100%; - background: #5b5b5b; - color: #111; -} - -div.cellNormal { - width: 100%; - height: 100%; - background: #6eb432; - color: #fff; -} - -div.cellCritical { - width: 100%; - height: 100%; - background: #f85858; - color: #fff; -} - -div.cellWarning { - width: 100%; - height: 100%; - background: #ffea59; - color: #111; -} - -div.cellUnknown { - width: 100%; - height: 100%; - background: #aaaaaa; - color: #ffffff; -} - -div.cellNotInit { - width: 100%; - height: 100%; - background: #4a83f3; - color: #ffffff; -} - -div.cellAlert { - width: 100%; - height: 100%; - background: #ff8800; - color: #111; -} - -div.cellBorder1 { - width: 100%; - height: 100%; - border: 1px solid #666; -} - -div.cellBig { - width: 100%; - height: 100%; - font-size: 18px; -} - -.info_box { - background: #5b5b5b; - margin-top: 10px; - margin-bottom: 10px; - padding: 0px 5px 5px 10px; - border-color: #e2e2e2; - border-style: solid; - border-width: 1px; - width: 100%; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - border-radius: 4px; -} - -.info_box .title * { - font-size: 10pt; - font-weight: bolder; -} - -.info_box .icon { - width: 30px; - text-align: center; -} - -/* Standard styles for status colos (groups, events, backgrounds...) */ - -.opacity_cell { - filter: alpha(opacity=80); - -moz-opacity: 0.8; - opacity: 0.8; - -khtml-opacity: 0.8; -} - -tr.group_view_data, -.group_view_data { - color: #3f3f3f; -} - -tr.group_view_crit, -.group_view_crit { - background-color: #e63c52; - color: #fff; -} - -tr.group_view_norm, -.group_view_norm, -tr.group_view_normal, -.group_view_normal { - #background-color: #5b5b5b; -} -tr.group_view_ok, -.group_view_ok { - background-color: #82b92e; - color: #fff; -} - -tr.group_view_not_init, -.group_view_not_init, -tr.group_view_not_init, -.group_view_not_init { - background-color: #5bb6e5; - color: #fff; -} - -tr.group_view_warn, -.group_view_warn, -tr.group_view_warn.a, -a.group_view_warn, -tr.a.group_view_warn { - background-color: #f3b200; - color: #3f3f3f; -} - -a.group_view_warn { - color: #f3b200; -} - -tr.group_view_alrm, -.group_view_alrm { - background-color: #ffa631; - color: #fff; -} - -tr.group_view_unk, -.group_view_unk { - background-color: #b2b2b2; - color: #fff; -} - -/* classes for event priorities. Sits now in functions.php */ -.datos_green, -.datos_greenf9, -.datos_green a, -.datos_greenf9 a, -.datos_green * { - background-color: #82b92e; - color: #fff; -} -.datos_red, -.datos_redf9, -.datos_red a, -.datos_redf9 a, -.datos_red * { - background-color: #e63c52; - color: #fff; -} - -.datos_yellow, -.datos_yellowf9, -.datos_yellow * { - background-color: #f3b200; - color: #111; -} - -a.datos_blue, -.datos_bluef9, -.datos_blue, -.datos_blue * { - background-color: #4ca8e0; - color: #fff; -} - -.datos_grey, -.datos_greyf9, -.datos_grey * { - background-color: #999999; - color: #fff; -} - -.datos_pink, -.datos_pinkf9, -.datos_pink * { - background-color: #fdc4ca; - color: #111; -} - -.datos_brown, -.datos_brownf9, -.datos_brown * { - background-color: #a67c52; - color: #fff; -} - -.datos_orange, -.datos_orangef9, -.datos_orange * { - background-color: #f7931e; - color: #111; -} - -td.datos_greyf9, -td.datos_bluef9, -td.datos_greenf9, -td.datos_redf9, -td.datos_yellowf9, -td.datos_pinkf9, -td.datos_brownf9, -td.datos_orangef9 { - padding: 5px 5px 5px 5px; -} - -.menu li.selected { - font-weight: bold; -} - -ul.operation li a:hover { - #font-weight: bold; -} - -.menu_icon { - transition-property: background-color; - transition-duration: 0.5s; - transition-timing-function: ease-out; - -webkit-transition-property: background-color; - -webkit-transition-duration: 0.5s; - -webkit-transition-timing-function: ease-out; - -moz-transition-property: background-color; - -moz-transition-duration: 0.5s; - -moz-transition-timing-function: ease-out; - -o-transition-property: background-color; - -o-transition-duration: 0.5s; - -o-transition-timing-function: ease-out; -} - -.menu_icon:hover { - transition-property: background-color; - transition-duration: 0.5s; - transition-timing-function: ease-out; - -webkit-transition-property: background-color; - -webkit-transition-duration: 0.5s; - -webkit-transition-timing-function: ease-out; - -moz-transition-property: background-color; - -moz-transition-duration: 0.5s; - -moz-transition-timing-function: ease-out; - -o-transition-property: background-color; - -o-transition-duration: 0.5s; - -o-transition-timing-function: ease-out; - background-color: #b1b1b1; -} -.submenu_not_selected:hover { - transition-property: background-color; - transition-duration: 0.5s; - transition-timing-function: ease-out; - -webkit-transition-property: background-color; - -webkit-transition-duration: 0.5s; - -webkit-transition-timing-function: ease-out; - -moz-transition-property: background-color; - -moz-transition-duration: 0.5s; - -moz-transition-timing-function: ease-out; - -o-transition-property: background-color; - -o-transition-duration: 0.5s; - -o-transition-timing-function: ease-out; - background-color: #b1b1b1; -} - -.submenu_selected:hover { - background-color: #b1b1b1; -} - -.sub_subMenu { - transition-property: background-color; - transition-duration: 0.5s; - transition-timing-function: ease-out; - -webkit-transition-property: background-color; - -webkit-transition-duration: 0.5s; - -webkit-transition-timing-function: ease-out; - -moz-transition-property: background-color; - -moz-transition-duration: 0.5s; - -moz-transition-timing-function: ease-out; - -o-transition-property: background-color; - -o-transition-duration: 0.5s; -} -.sub_subMenu:hover { - transition-property: background-color; - transition-duration: 0.5s; - transition-timing-function: ease-out; - -webkit-transition-property: background-color; - -webkit-transition-duration: 0.5s; - -webkit-transition-timing-function: ease-out; - -moz-transition-property: background-color; - -moz-transition-duration: 0.5s; - -moz-transition-timing-function: ease-out; - -o-transition-property: background-color; - -o-transition-duration: 0.5s; - background-color: #b1b1b1; -} - -.submenu_text { - color: #fff; -} - -.menu li.selected { - box-shadow: inset 4px 0 #b1b1b1; -} - -li.links a:hover { - #font-weight: bold; -} - -.is_submenu2 li { - background-color: #ff0000; -} - -.is_submenu2 { - background-color: #222222; -} - -.operation { - background-color: #333; -} - -.operation .selected { - background-color: #b1b1b1; -} - -.menu li, -.menu .li.not_selected { - border-radius: 0px 0px 0px 0px; - display: block; - min-height: 35px; - border-bottom: 0px none #424242; - vertical-align: middle; -} - -#menu_tab li.separator { - /* Empty */ -} - -.operation { - border-top-right-radius: 5px; - border-right-style: solid; - border-right-width: 0px; -} - +#menu_tab_frame_view, +#menu_tab_frame_view_bc, +input.search_input, +.filters input, input#text-id_parent.ac_input, input, textarea, -select { - background-color: #5b5b5b; - border: 1px solid #cbcbcb; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - border-radius: 3px; -} - -span#plugin_description { - font-size: 9px; -} - -/*FOR TINYMCE*/ -#tinymce { - text-align: left; -} -.visual_font_size_4pt, -.visual_font_size_4pt > em, -.visual_font_size_4pt > strong, -.visual_font_size_4pt > strong > span, -.visual_font_size_4pt > span, -.visual_font_size_4pt > strong > em, -.visual_font_size_4pt > em > strong, -.visual_font_size_4pt em span, -.visual_font_size_4pt span em { - font-size: 4pt; - line-height: 4pt; -} -.visual_font_size_6pt, -.visual_font_size_6pt > em, -.visual_font_size_6pt > strong, -.visual_font_size_6pt > strong > span, -.visual_font_size_6pt > span, -.visual_font_size_6pt > strong > em, -.visual_font_size_6pt > em > strong, -.visual_font_size_6pt em span, -.visual_font_size_6pt span em { - font-size: 6pt; - line-height: 6pt; -} -.visual_font_size_8pt, -.visual_font_size_8pt > em, -.visual_font_size_8pt > strong, -.visual_font_size_8pt > strong > span, -.visual_font_size_8pt > span, -.visual_font_size_8pt > strong > em, -.visual_font_size_8pt > em > strong, -.visual_font_size_8pt em span, -.visual_font_size_8pt span em { - font-size: 8pt; - line-height: 8pt; -} -.visual_font_size_10pt, -.visual_font_size_10pt > em, -.visual_font_size_10pt > strong, -.visual_font_size_10pt > strong > em, -.visual_font_size_10pt > em > strong, -.visual_font_size_10pt em span, -.visual_font_size_10pt span em { - font-size: 10pt; - line-height: 10pt; -} -.visual_font_size_12pt, -.visual_font_size_12pt > em, -.visual_font_size_12pt > strong, -.visual_font_size_12pt > strong > em, -.visual_font_size_12pt > em > strong, -.visual_font_size_12pt em span, -.visual_font_size_12pt span em { - font-size: 12pt; - line-height: 12pt; -} -.visual_font_size_14pt, -.visual_font_size_14pt > em, -.visual_font_size_14pt > strong, -.visual_font_size_14pt > strong > span, -.visual_font_size_14pt > span, -.visual_font_size_14pt > strong > em, -.visual_font_size_14pt > em > strong, -.visual_font_size_14pt em span, -.visual_font_size_14pt span em { - font-size: 14pt; - line-height: 14pt; -} -.visual_font_size_18pt, -.visual_font_size_18pt > em, -.visual_font_size_18pt > strong, -.visual_font_size_18pt > strong > span, -.visual_font_size_18pt > span, -.visual_font_size_18pt > strong > em, -.visual_font_size_18pt > em > strong, -.visual_font_size_18pt em span, -.visual_font_size_18pt span em { - font-size: 18pt; - line-height: 18pt; -} -.visual_font_size_24pt, -.visual_font_size_24pt > em, -.visual_font_size_24pt > strong, -.visual_font_size_24pt > strong > span, -.visual_font_size_24pt > span, -.visual_font_size_24pt > strong > em, -.visual_font_size_24pt > em > strong, -.visual_font_size_24pt em span, -.visual_font_size_24pt span em { - font-size: 24pt; - line-height: 24pt; -} -.visual_font_size_28pt, -.visual_font_size_28pt > em, -.visual_font_size_28pt > strong, -.visual_font_size_28pt > strong > span, -.visual_font_size_28pt > span, -.visual_font_size_28pt > strong > em, -.visual_font_size_28pt > em > strong, -.visual_font_size_28pt em span, -.visual_font_size_28pt span em { - font-size: 28pt; - line-height: 28pt; -} -.visual_font_size_36pt, -.visual_font_size_36pt > em, -.visual_font_size_36pt > strong, -.visual_font_size_36pt > strong > span, -.visual_font_size_36pt > span, -.visual_font_size_36pt > strong > em, -.visual_font_size_36pt > em > strong, -.visual_font_size_36pt em span, -.visual_font_size_36pt span em { - font-size: 36pt; - line-height: 36pt; -} -.visual_font_size_48pt, -.visual_font_size_48pt > em, -.visual_font_size_48pt > strong, -.visual_font_size_48pt > strong > span, -.visual_font_size_48pt > span, -.visual_font_size_48pt > strong > em, -.visual_font_size_48pt > em > strong, -.visual_font_size_48pt em span, -.visual_font_size_48pt span em { - font-size: 48pt; - line-height: 48pt; -} -.visual_font_size_60pt, -.visual_font_size_60pt > em, -.visual_font_size_60pt > strong, -.visual_font_size_60pt > strong > span, -.visual_font_size_60pt > span, -.visual_font_size_60pt > strong > em, -.visual_font_size_60pt > em > strong, -.visual_font_size_60pt em span, -.visual_font_size_60pt span em { - font-size: 60pt; - line-height: 60pt; -} -.visual_font_size_72pt, -.visual_font_size_72pt > em, -.visual_font_size_72pt > strong, -.visual_font_size_72pt > strong > span, -.visual_font_size_72pt > span, -.visual_font_size_72pt > strong > em, -.visual_font_size_72pt > em > strong, -.visual_font_size_72pt em span, -.visual_font_size_72pt span em { - font-size: 72pt; - line-height: 72pt; -} -.visual_font_size_84pt, -.visual_font_size_84pt > em, -.visual_font_size_84pt > strong, -.visual_font_size_84pt > strong > span, -.visual_font_size_84pt > span, -.visual_font_size_84pt > strong > em, -.visual_font_size_84pt > em > strong, -.visual_font_size_84pt em span, -.visual_font_size_84pt span em { - font-size: 84pt; - line-height: 84pt; -} - -.visual_font_size_96pt, -.visual_font_size_96pt > em, -.visual_font_size_96pt > strong, -.visual_font_size_96pt > strong > span, -.visual_font_size_96pt > span, -.visual_font_size_96pt > strong > em, -.visual_font_size_96pt > em > strong, -.visual_font_size_96pt em span, -.visual_font_size_96pt span em { - font-size: 96pt; - line-height: 96pt; -} - -.visual_font_size_116pt, -.visual_font_size_116pt > em, -.visual_font_size_116pt > strong, -.visual_font_size_116pt > strong > span, -.visual_font_size_116pt > span, -.visual_font_size_116pt > strong > em, -.visual_font_size_116pt > em > strong, -.visual_font_size_116pt em span, -.visual_font_size_116pt span em { - font-size: 116pt; - line-height: 116pt; -} - -.visual_font_size_128pt, -.visual_font_size_128pt > em, -.visual_font_size_128pt > strong, -.visual_font_size_128pt > strong > span, -.visual_font_size_128pt > span, -.visual_font_size_128pt > strong > em, -.visual_font_size_128pt > em > strong, -.visual_font_size_128pt em span, -.visual_font_size_128pt span em { - font-size: 128pt; - line-height: 128pt; -} - -.visual_font_size_140pt, -.visual_font_size_140pt > em, -.visual_font_size_140pt > strong, -.visual_font_size_140pt > strong > span, -.visual_font_size_140pt > span, -.visual_font_size_140pt > strong > em, -.visual_font_size_140pt > em > strong, -.visual_font_size_140pt em span, -.visual_font_size_140pt span em { - font-size: 140pt; - line-height: 140pt; -} - -.visual_font_size_154pt, -.visual_font_size_154pt > em, -.visual_font_size_154pt > strong, -.visual_font_size_154pt > strong > span, -.visual_font_size_154pt > span, -.visual_font_size_154pt > strong > em, -.visual_font_size_154pt > em > strong, -.visual_font_size_154pt em span, -.visual_font_size_154pt span em { - font-size: 154pt; - line-height: 154pt; -} - -.visual_font_size_196pt, -.visual_font_size_196pt > em, -.visual_font_size_196pt > strong, -.visual_font_size_196pt > strong > span, -.visual_font_size_196pt > span, -.visual_font_size_196pt > strong > em, -.visual_font_size_196pt > em > strong, -.visual_font_size_196pt em span, -.visual_font_size_196pt span em { - font-size: 196pt; - line-height: 196pt; -} - -.resize_visual_font_size_8pt, -.resize_visual_font_size_8pt > em, -.resize_visual_font_size_8pt > strong, -.resize_visual_font_size_8pt > strong > span, -.resize_visual_font_size_8pt > span, -.resize_visual_font_size_8pt > strong > em, -.resize_visual_font_size_8pt > em > strong, -.visual_font_size_8pt em span, -.visual_font_size_8pt span em { - font-size: 4pt; - line-height: 4pt; -} -.resize_visual_font_size_14pt, -.resize_visual_font_size_14pt > em, -.resize_visual_font_size_14pt > strong, -.resize_visual_font_size_14pt > strong > span, -.resize_visual_font_size_14pt > span, -.resize_visual_font_size_14pt > strong > em, -.resize_visual_font_size_14pt > em > strong, -.visual_font_size_14pt em span, -.visual_font_size_14pt span em { - font-size: 7pt; - line-height: 7pt; -} -.resize_visual_font_size_24pt, -.resize_visual_font_size_24pt > em, -.resize_visual_font_size_24pt > strong, -.resize_visual_font_size_24pt > strong > span, -.resize_visual_font_size_24pt > span, -.resize_visual_font_size_24pt > strong > em, -.resize_visual_font_size_24pt > em > strong, -.visual_font_size_14pt em span, -.visual_font_size_14pt span em { - font-size: 12pt; - line-height: 12pt; -} -.resize_visual_font_size_36pt, -.resize_visual_font_size_36pt > em, -.resize_visual_font_size_36pt > strong, -.resize_visual_font_size_36pt > strong > span, -.resize_visual_font_size_36pt > span, -.resize_visual_font_size_36pt > strong > em, -.resize_visual_font_size_36pt > em > strong, -.visual_font_size_36pt em span, -.visual_font_size_36pt span em { - font-size: 18pt; - line-height: 18pt; -} -.resize_visual_font_size_72pt, -.resize_visual_font_size_72pt > em, -.resize_visual_font_size_72pt > strong, -.resize_visual_font_size_72pt > strong > span, -.resize_visual_font_size_72pt > span, -.resize_visual_font_size_72pt > strong > em, -.resize_visual_font_size_72pt > em > strong, -.visual_font_size_72pt em span, -.visual_font_size_72pt span em { - font-size: 36pt; - line-height: 36pt; -} - -/*SIDEBAR*/ -.menu_sidebar { - color: #111; - background: #3f3f3f; - - margin-left: 10px; - padding-left: 0px; - padding-right: 0px; - padding-top: 10px; - text-align: left; - font-family: arial, sans-serif, verdana; - font-size: 10px; - border: 1px solid #000; - position: absolute; - margin: 0; - width: 400px; - height: 260px; - - -moz-box-shadow: 0px 4px 4px #010e1b; - -webkit-box-shadow: 0px 4px 4px #010e1b; - box-shadow: 0px 4px 4px #010e1b; - - filter: alpha(opacity=97); - -moz-opacity: 0.97; - opacity: 0.97; -} - -.menu_sidebar_radius_left { - -moz-border-top-left-radius: 8px; - -webkit-border-top-left-radius: 8px; - border-top-left-radius: 8px; - - -moz-border-bottom-left-radius: 8px; - -webkit-border-bottom-left-radius: 8px; - border-bottom-left-radius: 8px; - - border-right: 0px solid #000; -} - -.menu_sidebar_radius_right { - -moz-border-top-right-radius: 8px; - -webkit-border-top-right-radius: 8px; - border-top-right-radius: 8px; - -moz-border-bottom-right-radius: 8px; - -webkit-border-bottom-right-radius: 8px; - border-bottom-right-radius: 8px; -} - -.menu_sidebar_outer { - margin-left: 3px; - background: #ececec; - width: 100%; - text-align: center; - -moz-border-radius: 6px; - -webkit-border-radius: 6px; - border-radius: 6px; - padding: 8px; -} - -/*Groupsview*/ - -.groupsview { - border-spacing: 0px 4px; -} - -.groupsview tr { - background-color: #666; -} - -.groupsview th { - font-size: 12px; - padding: 5px; -} - -.groupsview td.first, -.groupsview th.first { - -moz-border-top-left-radius: 10px; - -webkit-border-top-left-radius: 10px; - border-top-left-radius: 10px; - - -moz-border-bottom-left-radius: 10px; - -webkit-border-bottom-left-radius: 10px; - border-bottom-left-radius: 10px; -} - -.groupsview td.last, -.groupsview th.last { - -moz-border-top-right-radius: 10px; - -webkit-border-top-right-radius: 10px; - border-top-right-radius: 10px; - -moz-border-bottom-right-radius: 10px; - -webkit-border-bottom-right-radius: 10px; - border-bottom-right-radius: 10px; -} - -a.tip { - display: inline; - cursor: help; -} - -a.tip > img { - margin-left: 2px; - margin-right: 2px; -} - -input.search_input { - background: white url("../../images/input_zoom.png") no-repeat right; - padding: 0px; - padding-left: 5px; - margin: 0; - width: 80%; - height: 19px; - margin-bottom: 5px; - margin-left: 2px; - padding-right: 25px; - color: #999; -} - -.vertical_fields td input, -.vertical_fields td select { - margin-top: 8px; -} - -a[id^="tgl_ctrl_"] > img, -a[id^="tgl_ctrl_"] > b > img { - vertical-align: middle; -} - -.noshadow { - -moz-box-shadow: 0px; - -webkit-box-shadow: 0px; - box-shadow: 0px; -} - -/* Images forced title */ - -div.forced_title_layer { - display: block; - text-decoration: none; - position: absolute; - z-index: 100000; - border: 1px solid #708090; - background-color: #666; +select, +.edit_user_comments #textarea_comments, +.discovery_textarea_input { + background-color: #111; color: #fff; - padding: 4px 5px; - font-weight: bold; - font-size: small; - font-size: 11px; - /* IE 8 */ - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=9)"; - /* Netscape */ - -moz-opacity: 0.9; - opacity: 0.9; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - border-radius: 3px; -} - -/* Graphs styles */ - -div.legend > div { - pointer-events: none; /* Allow to click the graphs below */ - opacity: 0.65; -} - -div.nodata_text { - padding: 5px 12px 0px 68px; - font-weight: bold; - color: #c1c1c1; - text-transform: uppercase; - display: table-cell; - vertical-align: middle; - text-align: left; -} - -div.nodata_container { - width: 150px; - height: 100px; - background-repeat: no-repeat; - background-position: center; - margin: auto auto; - display: table; -} - -#snmp_data { - width: 40%; - position: absolute; - top: 0; - right: 20px; - - #background-color: #5b5b5b; - #padding: 10px; -} - -#rmf_data { - width: 40%; - height: 80%; - position: absolute; - top: 0; - right: 20px; - overflow: auto; - - #background-color: #5b5b5b; - #padding: 10px; -} - -/* Subtab styles */ - -ul.subsubmenu { - border-bottom-right-radius: 5px; - border-bottom-left-radius: 5px; - -moz-border-bottom-right-radius: 5px; - -moz-border-bottom-left-radius: 5px; - -webkit-border-bottom-right-radius: 5px; - -webkit-border-bottom-left-radius: 5px; - - background: #ececec; -} - -ul.subsubmenu li { - background-color: #ececec; - font-weight: bold; - text-decoration: none; - font-size: 14px; - border-color: #e2e2e2; - border-style: solid; - border-width: 1px; -} - -ul.subsubmenu li a { - padding: 0px 10px 5px; -} - -div#agent_wizard_subtabs { - position: absolute; - margin-left: 0px; - display: none; - padding-bottom: 3px; - z-index: 1000; -} - -.agent_wizard_tab:hover { - cursor: default; -} - -#container_servicemap_legend { - position: absolute; - width: 200px; - background: #5b5b5b; - margin-top: 10px; - right: 2px; - border: 1px solid #e2e2e2; - border-radius: 5px; - padding: 10px; - opacity: 0.9; -} - -#container_servicemap_legend table { - text-align: left; -} - -.legend_square { - width: 20px; - padding-left: 20px; - padding-right: 10px; -} - -.legend_square_simple { - padding-left: 0px; - padding-right: 10px; - padding-bottom: 3px; -} -.legend_square div, -.legend_square_simple div { - width: 20px; - height: 20px; - border-radius: 3px; -} - -.legend_basic { - background: #f4f4f4; - margin-top: 10px; - border-radius: 5px; - padding: 10px; -} - -.agents_modules_table th { - background: #3f3f3f; -} - -.agents_modules_table th * { - color: #ffffff; -} - -/* - * LOAD_ENTERPRISE.PHP - */ -#code_license_dialog { - padding: 50px; - padding-top: 10px; -} -#code_license_dialog #logo { - margin-bottom: 20px; - text-align: center; -} -#code_license_dialog, -#code_license_dialog * { - font-size: 14px; -} -#code_license_dialog ul { - padding-left: 30px; - list-style-image: url("../../images/input_tick.png"); -} -#code_license_dialog li { - margin-bottom: 12px; -} - -#code_license_dialog #code { - font-weight: bolder; - font-size: 20px; - border: 1px solid #dddddd; - padding: 5px; - text-align: center; - -moz-border-radius: 8px; - -webkit-border-radius: 8px; - border-radius: 8px; -} - -#code_license_dialog a { - text-decoration: underline; -} - -/* GRAPHS CSS */ - -.parent_graph { - position: relative; -} - -.menu_graph, -.timestamp_graph { - position: absolute; -} - -.menu_graph { - -moz-border-top-right-radius: 6px; - -webkit-border-top-right-radius: 6px; - border-top-right-radius: 6px; - -moz-border-top-left-radius: 6px; - -webkit-border-top-left-radius: 6px; - border-top-left-radius: 6px; -} - -.legend_graph { - margin: 0px; - padding: 0px; - text-align: left; -} - -.legendColorBox * { - font-size: 0px; - padding: 0px 4px; - overflow: visible; -} - -/* GIS CSS */ - -.olLayerDiv { - z-index: 102; -} - -/* Alert view */ - -table.alert_days th, -table.alert_time th { - height: 30px; - vertical-align: middle; -} - -table.alert_escalation th img { - width: 18px; -} - -td.used_field { - #border: solid #6eb432; - background: #6eb432; - color: #ffffff; - font-weight: bold; -} - -td.overrided_field { - color: #666; -} - -td.unused_field { - color: #888; -} - -td.empty_field { - background: url("../../images/long_arrow.png") no-repeat 100% center; -} - -#table_macros textarea { - width: 96%; -} - -/* Policies styles */ - -table#policy_modules td * { - display: inline; -} - -.context_help_title { - font-weight: bolder; - text-align: left; -} -.context_help_body { - text-align: left; -} - -#left_column_logon_ok { - width: 750px; - float: left; -} - -#news_board { - min-width: 530px; -} - -#right_column_logon_ok { - width: 350px; - float: right; - margin-right: 20px; -} - -#clippy_head_title { - font-weight: bold; - background: #82b92e; - color: #ffffff; - margin-top: -15px; - margin-left: -15px; - margin-right: -15px; - padding: 5px; - margin-bottom: 10px; - border-top-left-radius: 2px; - border-top-right-radius: 2px; -} - -.clippy_body { - color: black; -} - -#dialog-double_auth-container { - width: 100%; - text-align: center; - vertical-align: middle; -} - -.center_align { - text-align: center; -} - -.left_align { - text-align: left; -} - -.status_tactical { - width: 100%; - margin-left: auto; - margin-right: auto; - background-color: #5b5b5b; - padding: 10px; - border: 1px solid #e2e2e2; - margin-top: 5%; - text-align: left; -} - -.status_tactical img { - border: 3px solid #000; - border-radius: 100px; -} - -#sumary { - color: #fff; - margin: 15px; - padding: 10px 30px; - font-size: 20px; - font-weight: bold; - height: 66px; - width: 191px; - border-radius: 2px; -} - -.databox.data td { - border-bottom: 1px solid #e2e2e2; -} - -.databox .search { - margin-top: 0px; -} - -.databox.data td.progress_bar img { - border: 3px solid #000; - border-radius: 100px; -} - -.databox td { - padding-left: 9px; - padding-right: 9px; - padding-top: 7px; - padding-bottom: 7px; -} -.databox.pies fieldset.tactical_set { - width: 70%; - height: 285px; -} - -.difference { - border-left-width: 2px; - border-left-style: solid; - border-right-width: 2px; - border-right-style: solid; - border-color: #e2e2e2; -} - -#title_menu { - color: #fff; - float: right; - width: 70%; - letter-spacing: 0pt; - font-size: 8pt; - white-space: pre-wrap; -} - -.no_hidden_menu { - background-position: 11% 50%; -} - -#menu_tab li.nomn, -#menu_tab li.nomn_high { - background-color: #ececec; - padding-right: 3px; - padding-left: 3px; - font-weight: bold; - text-decoration: none; - font-size: 14px; - border-color: #e2e2e2; - border-style: solid; - border-width: 1px; - margin-top: -10px; } +div#head, #menu_tab li.nomn_high, -#menu_tab li.nomn_high span { +#menu_tab li.nomn_high span, +.info_box, +.white_table_graph_header, +.white-box-content, +fieldset, +.databox.filters, +table.databox, +.legend_basic, +.databox_color, +.white_box { + background-color: #222 !important; color: #fff; - background-color: #5b5b5b; } +/* Tabs icons change color */ #menu_tab li.nomn img, #menu_tab li img { - margin-top: 3px; - margin-left: 3px; + filter: invert(100%); } -#menu_tab li.tab_operation a, -#menu_tab a.tab_operation { - background: none; +/* White text */ +a, +#menu_tab_left li a, +#menu_tab_left li span, +fieldset legend, +.tactical_set legend, +#user-notifications-wrappe, +#user_form *, +h1, +h2, +h3, +h4, +.info_table > tbody > tr > th, +.info_table > thead > tr > th, +.info_table > thead > tr > th a, +.info_table > thead > tr > th > span, +form.discovery label, +.edit_user_labels, +.input_label { + color: #fff; } -.subsubmenu { - position: absolute; - float: right; - z-index: 9999; - display: none; - margin-top: 6px; - left: 0px; -} -.subsubmenu li { - margin-top: 0px; +/* Overwrite inline styles */ +.textodialogo td { + color: #fff !important; } -.agents_modules_table { - border: 1px solid #e2e2e2; - border-spacing: 0px; -} -.agents_modules_table td { - border: 1px solid #e2e2e2; -} -.agents_modules_table th { - border: 1px solid #e2e2e2; +.box-shadow { + box-shadow: none; } -.databox.filters, -.databox.data, -.databox.profile_list { - margin-bottom: 20px; +select:disabled, +textarea:disabled { + background-color: #666; } -.databox.filters td { - padding: 10px; - padding-left: 20px; -} -.databox.profile_list td { - padding: 4px 1px; - padding-left: 5px; - border-bottom: 1px solid #e2e2e2; -} -.databox.profile_list a.tip > img { - margin: 0px; +.status_tactical, +.tactical_set, +.td-bg-white td { + background-color: transparent; } -.databox.filters td > img, -.databox.filters td > div > a > img, -.databox.filters td > span > img, -.databox.filters td > span > a > img, -.databox.filters td > a > img { - vertical-align: middle; - margin-left: 5px; -} -.databox.data td > img, -.databox.data th > img, -.databox.data td > div > a > img, -.databox.data td > span > img, -.databox.data td > span > a > img, -.databox.data td > a > img, -.databox.data td > form > a > img { - vertical-align: middle; +/* tables */ +.info_table { + background-color: #222; } -.databox.filters td > a > img { - vertical-align: middle; +.info_table > tbody > tr:nth-child(even) { + background-color: #111; } -.databox.data td > input[type="checkbox"] { - margin: 0px; +.info_table tr:first-child > th, +.info_table th { + background-color: #222; + color: #fff; } -.databox_color td { - padding-left: 10px; +.info_table > tbody > tr:hover, +.databox.data > tbody > tr:hover, +.rowPair:hover, +.rowOdd:hover { + background-color: #555 !important; /* porque tables.css se carga depues.... */ } -.databox.agente td > div > canvas { - width: 100%; - text-align: left; +.info_table .datos3, +.datos3, +.info_table .datos4, +.datos4 { + background-color: #666; + color: #fff; } -.databox.agente td > div.graph { - width: 100%; - text-align: left; +.agent_details_col, +.white_table, +.white_table tr:first-child > th, +.white_table_graph_content { + background-color: #222; + color: #fff; +} + +/* action buttons in tables */ +.action_buttons a[href] img, +.action_buttons input[type="image"], +.action_button_img { + filter: brightness(2.5) contrast(50%); +} + +/* fix cosas generales */ +.notify, +.notify h3 { + color: #000; +} + +/* firts_task.css */ +.new_task, +div.new_task_cluster, +div.new_task_cluster > div { + background-color: #222; +} + +/* webchat */ +#chat_box, +#userlist_box { + background: #222 !important; +} + +/* tree.css */ +.node-content:hover { + background-color: #222; +} + +ul.tree-group + li.tree-node + div.node-content + img:not(.module-status):not(.agent-status):not(.agent-alerts-fired) { + filter: brightness(2); +} + +/* login.css */ +div.login_nick input, +div.login_pass input { + background-color: #fff !important; +} + +/* user edit */ +.edit_user_info_right input { + border-bottom: 1px solid #5f5f5f; +} + +/* datatables */ +table.dataTable tbody tr { + background-color: #222; +} + +table.dataTable span { + color: #fff; +} + +/* diagnostic info */ +table#diagnostic_info { + background-color: #111 !important; +} + +table#diagnostic_info tbody td div { + background-color: #222 !important; +} + +/* agent view */ +.agent_details_graph div#status_pie { + background: #fff; + border-radius: 5px; +} + +/* menu.css */ +.operation { + background-color: #252525; } .godmode, -.menu_icon ul li { - background-color: #222; -} -.operation .menu_icon ul li { - background-color: #333; -} - -.godmode { - border-top: 4px solid; - padding-bottom: 4px; - border-bottom-right-radius: 5px; - border-right-style: solid; - border-right-width: 0px; -} - -.green_title { - background-color: #82b92e; - font-weight: normal; - text-align: center; -} - -.dashboard { - top: 23px; -} - -.dashboard li a { - width: 158px; -} - -.text_subDashboard { - float: left; - margin-top: 5%; - margin-left: 3%; -} - -/* The items with the class 'spinner' will rotate */ -/* Not supported on IE9 and below */ -.spinner { - -webkit-animation: spinner 2s infinite linear; - animation: spinner 2s infinite linear; -} - -@-webkit-keyframes spinner { - 0% { - -ms-transform: rotate(0deg); /* IE */ - -moz-transform: rotate(0deg); /* FF */ - -o-transform: rotate(0deg); /* Opera */ - -webkit-transform: rotate(0deg); /* Safari and Chrome */ - transform: rotate(0deg); - } - 100% { - -ms-transform: rotate(359deg); /* IE */ - -moz-transform: rotate(359deg); /* FF */ - -o-transform: rotate(359deg); /* Opera */ - -webkit-transform: rotate(359deg); /* Safari and Chrome */ - transform: rotate(359deg); - } -} - -@keyframes spinner { - 0% { - -ms-transform: rotate(0deg); /* IE */ - -moz-transform: rotate(0deg); /* FF */ - -o-transform: rotate(0deg); /* Opera */ - -webkit-transform: rotate(0deg); /* Safari and Chrome */ - transform: rotate(0deg); - } - 100% { - -ms-transform: rotate(359deg); /* IE */ - -moz-transform: rotate(359deg); /* FF */ - -o-transform: rotate(359deg); /* Opera */ - -webkit-transform: rotate(359deg); /* Safari and Chrome */ - transform: rotate(359deg); - } -} - -#alert_messages { - -moz-border-bottom-right-radius: 5px; - -webkit-border-bottom-left-radius: 5px; - border-bottom-right-radius: 5px; - border-bottom-left-radius: 5px; - z-index: 3; - position: fixed; - width: 750px; - max-width: 750px; - min-width: 750px; - top: 20%; - background: white; -} -.modalheader { - text-align: center; - width: 100%; - height: 37px; - left: 0px; - background-color: #82b92e; -} -.modalheadertext { - color: white; - position: relative; - font-family: Nunito; - font-size: 13pt; - top: 8px; -} -.modalclosex { - cursor: pointer; - display: inline; - float: right; - margin-right: 10px; - margin-top: 10px; -} -.modalcontent { - color: black; - background: white; -} -.modalcontentimg { - float: left; - margin-left: 30px; - margin-top: 30px; - margin-bottom: 30px; -} -.modalcontenttext { - float: left; - text-align: justify; - color: #666; - font-size: 9.5pt; - line-height: 13pt; - margin-top: 30px; - width: 430px; - margin-left: 30px; -} - -.modalcontenttext > p { - color: black; -} -.modalcontenttext > p > a { - color: black; -} - -.modalokbutton { - transition-property: background-color, color; - transition-duration: 1s; - transition-timing-function: ease-out; - -webkit-transition-property: background-color, color; - -webkit-transition-duration: 1s; - -o-transition-property: background-color, color; - -o-transition-duration: 1s; - cursor: pointer; - text-align: center; - margin-right: 45px; - float: right; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - margin-bottom: 30px; - border-radius: 3px; - width: 90px; - height: 30px; - background-color: white; - border: 1px solid #82b92e; -} -.modalokbuttontext { - transition-property: background-color, color; - transition-duration: 1s; - transition-timing-function: ease-out; - -webkit-transition-property: background-color, color; - -webkit-transition-duration: 1s; - -o-transition-property: background-color, color; - -o-transition-duration: 1s; - color: #82b92e; - font-family: Nunito; - font-size: 10pt; - position: relative; - top: 6px; -} - -.modalokbutton:hover { - transition-property: background-color, color; - transition-duration: 1s; - transition-timing-function: ease-out; - -webkit-transition-property: background-color, color; - -webkit-transition-duration: 1s; - -o-transition-property: background-color, color; - -o-transition-duration: 1s; - background-color: #82b92e; -} - -.modalokbutton:hover .modalokbuttontext { - transition-property: background-color, color; - transition-duration: 1s; - transition-timing-function: ease-out; - -webkit-transition-property: background-color, color; - -webkit-transition-duration: 1s; - -o-transition-property: background-color, color; - -o-transition-duration: 1s; - color: white; -} -.modalgobutton { - transition-property: background-color, color; - transition-duration: 1s; - transition-timing-function: ease-out; - -webkit-transition-property: background-color, color; - -webkit-transition-duration: 1s; - -o-transition-property: background-color, color; - -o-transition-duration: 1s; - cursor: pointer; - text-align: center; - margin-right: 15px; - margin-bottom: 30px; - float: right; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - border-radius: 3px; - width: 240px; - height: 30px; - background-color: white; - border: 1px solid #82b92e; -} -.modalgobuttontext { - transition-property: background-color, color; - transition-duration: 1s; - transition-timing-function: ease-out; - -webkit-transition-property: background-color, color; - -webkit-transition-duration: 1s; - -o-transition-property: background-color, color; - -o-transition-duration: 1s; - color: #82b92e; - font-family: Nunito; - font-size: 10pt; - position: relative; - top: 6px; -} - -.modalgobutton:hover { - transition-property: background-color, color; - transition-duration: 1s; - transition-timing-function: ease-out; - -webkit-transition-property: background-color, color; - -webkit-transition-duration: 1s; - -o-transition-property: background-color, color; - -o-transition-duration: 1s; - background-color: #82b92e; -} - -.modalgobutton:hover .modalgobuttontext { - transition-property: background-color, color; - transition-duration: 1s; - transition-timing-function: ease-out; - -webkit-transition-property: background-color, color; - -webkit-transition-duration: 1s; - -o-transition-property: background-color, color; - -o-transition-duration: 1s; - color: white; -} - -#opacidad { - opacity: 0.5; - z-index: 1; - width: 100%; - height: 100%; - position: absolute; - left: 0px; - top: 0px; -} - -.textodialogo { - margin-left: 0px; - color: black; - font-size: 9pt; -} - -.cargatextodialogo { - max-width: 58.5%; - width: 58.5%; - min-width: 58.5%; - float: left; - margin-left: 0px; - font-size: 18pt; - padding: 20px; - text-align: center; -} - -.cargatextodialogo b { - color: black; -} -.cargatextodialogo p { - color: black; -} - -.cargatextodialogo b { - color: black; -} -.cargatextodialogo a { - color: black; -} - -.cargatextodialogo > div { - color: black; -} - -.cargatextodialogo p, -.cargatextodialogo b, -.cargatextodialogo a { - font-size: 18pt; -} - -#toolbox > input { - border-width: 0px 1px 0px 0px; - border-color: lightgray; -} - -#toolbox > input.service_min { - border-width: 0px 0px 0px 0px; -} - -#toolbox > input.grid_min { - border-width: 0px 0px 0px 0px; -} -#tinymce { - padding-top: 20px; -} - -.rowPair:hover, -.rowOdd:hover { - background-color: #6e6e6e; -} -.databox.data > tbody > tr:hover { - background-color: #6e6e6e; -} -.checkselected { - background-color: #eee; -} - -#login_help_dialog * { - color: #222222; -} - -.introjs-tooltip * { - color: #222222; -} - -.dd_widget_content * { - color: #222222; -} - -#dialog_add_new_widget * { - color: #222222; -} - -.widget_configuration_form table tbody tr td:first-child { - color: #222222; -} - -.widget_configuration_form .container * { - color: #222222; -} -.widget_configuration_form b { - color: #222222; -} - -form[action="index.php?sec=estado&sec2=godmode/agentes/planned_downtime.list"] - * { - color: #222222; -} - -form[action="index.php?sec=estado&sec2=godmode/agentes/planned_downtime.list"] - input { - color: white; -} - -form[action="index.php?sec=estado&sec2=godmode/agentes/planned_downtime.list"] - select { - color: white; -} -.notify { - color: black; -} -.notify * { - color: black; -} -#login_logout * { - color: #222222; -} - -/*modal windows login*/ -div.content_alert { - width: 98%; - margin-top: 20px; +#menu_full { + background-color: #1a1a1a; } -div.icon_message_alert { - float: left; - width: 25%; - text-align: center; -} - -div.icon_message_alert img { - width: 85px; -} - -div.content_message_alert { - width: 75%; - float: right; -} - -div.content_message_alert * { - color: black; -} - -div.text_message_alert { - width: 100%; - margin-top: 10px; -} - -div.text_message_alert h1 { - margin: 0px; -} - -div.text_message_alert p { - margin: 0px; - font-size: 10.3pt; - line-height: 14pt; -} - -div.button_message_alert { - width: 100%; -} - -div.button_message_alert input { - float: right; - width: 87px; - height: 33px; - color: #82b92e; - border: 1px solid #82b92e; - font-weight: bold; - margin-right: 20px; - margin-top: 20px; - font-size: 10pt; -} - -div.form_message_alert { - width: 90%; - clear: both; - padding-top: 20px; - padding-left: 40px; -} - -div.form_message_alert ul li { - display: inline-block; - padding: 10px; -} - -div.form_message_alert ul li input { - border: none; - background-color: #dadada; - border-radius: 0px; - height: 17px; - width: 145px; - padding-left: 5px; -} - -div.form_message_alert ul li label { - font-size: 10pt; - padding-right: 20px; -} - -div.form_message_alert h4 { - margin: 0px; - margin-bottom: 10px; -} - -div.button_message_alert_form input { - float: right; - width: 87px; - height: 33px; - color: #82b92e; - border: 1px solid #82b92e; - font-weight: bold; - font-size: 10pt; - margin-right: 25px; -} - -.ui-dialog .ui-dialog-titlebar { - background-color: #82b92e; -} - -/* - styles header login -*/ -div#header_login { - width: 100%; - height: 65px; - background-color: rgba(255, 255, 255, 0.06); -} - -div#icon_custom_pandora { - float: left; - margin-top: 5px; - margin-left: 4%; -} - -div#list_icon_docs_support { - float: right; - margin-top: 8px; - margin-right: 4%; -} - -div#list_icon_docs_support ul { - margin-top: 5px; -} - -div#list_icon_docs_support ul li { - display: inline-block; - color: white; - vertical-align: middle; - margin-right: 5px; - font-size: 10pt; -} - -li#li_margin_left { - margin-left: 30px; -} - -/* - styles login form -*/ - -div.container_login { - margin-top: 10%; - margin-left: 5%; - margin-right: 5%; -} - -div.login_page { - width: 35%; - min-height: 600px; - float: left; -} - -div.login_page form { - border-right: 1px solid #868686; - padding-top: 30px; - padding-bottom: 50px; - min-width: 400px; - max-height: 600px; -} - -div.login_logo_icon { - margin-bottom: 40px; - text-align: center; -} - -div.login_logo_icon img { - margin: 0 auto; - width: 150px; -} -div.login_double_auth_code, -div.login_nick, -div.login_pass { - margin: 0 auto; - width: 70%; - height: 40px; - background-color: rgba(255, 255, 255, 0.2); - margin-bottom: 25px; - min-width: 260px; -} - -div.login_nick img, -div.login_pass img { - vertical-align: middle; - margin: 3px; -} - -div.login_nick input, -div.login_pass input { - background-color: rgba(255, 255, 255, 0); - border: 0px; - color: white; - border-radius: 0px; - width: 89%; - height: 40px; - font-size: 9pt; - padding: 0px; -} - -div.login_nick input:focus, -div.login_pass input:focus { - outline: none; -} - -div.login_nick input:-webkit-autofill, -div.login_nick input:-webkit-autofill:hover, -div.login_nick input:-webkit-autofill:focus, -div.login_nick input:-webkit-autofill:active, -div.login_pass input:-webkit-autofill, -div.login_pass input:-webkit-autofill:hover, -div.login_pass input:-webkit-autofill:focus, -div.login_pass input:-webkit-autofill:active { - transition: background-color 10000s ease-in-out 0s; - -webkit-box-shadow: 0 0 0px 0px transparent inset; - -webkit-text-fill-color: white; - border: 0px; - width: 89%; -} - -div.login_nick input::-webkit-input-placeholder, -div.login_pass input::-webkit-input-placeholder { - color: white; -} - -div.login_pass img, -div.login_nick img { - width: 30px; -} - -div.login_pass div, -div.login_nick div { - float: left; - width: 11%; -} - -div.login_button { - margin: 0 auto; - width: 70%; - height: 40px; - background-color: rgb(25, 25, 25); - border: 1px solid white; - min-width: 260px; -} - -div.login_button input { - width: 100%; - background-color: rgb(25, 25, 25); - text-align: center; - border: 0px; - border-radius: 0px; - height: 40px; - padding: 0px; - font-size: 9pt; - color: white; -} - -div.login_data { - width: 65%; - min-height: 600px; - float: left; -} - -div.text_banner_login { - width: 100%; - margin-bottom: 60px; - color: white; - text-align: center; -} - -div.text_banner_login span { - width: 100%; -} - -span.span1 { - font-size: 3vw; - font-family: "lato-thin"; - color: white; -} - -span.span2 { - font-size: 3vw; - font-family: "lato-bolder"; - color: white; -} - -div.img_banner_login { - width: 100%; - text-align: center; -} - -div.img_banner_login img { - max-width: 70%; - min-width: 70%; - max-height: 50%; - min-height: 50%; -} - -@media all and (max-width: 1200px) { - span.span1 { - font-size: 30pt; - } - span.span2 { - font-size: 30pt; - } -} - -.new_task p, -.new_task h3, -.new_task h2, -.new_task a, -.new_task strong { - color: #222222; -} -.item p { - color: #222222; +.button_collapse { + background-color: #444; } -.item span { - color: #222222; +.operation .selected, +.godmode .selected, +.menu_icon:hover { + background-color: #080808; } -.widget_config_advice, -.widget_config_advice * { - color: black; +/* footer */ +div#foot { + background: #222; } diff --git a/pandora_console/index.php b/pandora_console/index.php index 3c95074171..58c5998b87 100755 --- a/pandora_console/index.php +++ b/pandora_console/index.php @@ -1214,14 +1214,17 @@ echo "\n<!-- Page generated in $run_time seconds -->\n"; // Values from PHP to be recovered from JAVASCRIPT require 'include/php_to_js_values.php'; - +// if ($config['style'] !== 'pandora') { ?> <script type="text/javascript" language="javascript"> // When there are less than 5 rows, all rows must be white - if($('table.info_table tr').length < 5){ - $('table.info_table tbody > tr').css('background-color', '#fff'); + var theme = "<?php echo $config['style']; ?>"; + if(theme === 'pandora'){ + if($('table.info_table tr').length < 5){ + $('table.info_table tbody > tr').css('background-color', '#fff'); + } } // When the user scrolls down 400px from the top of the document, show the button. From 0064bc0cba71e67791bcc884c1bd1c6b721bc750 Mon Sep 17 00:00:00 2001 From: Daniel Barbero Martin <daniel.barbero@artica.es> Date: Mon, 1 Jul 2019 17:07:39 +0200 Subject: [PATCH 25/83] fixed errors --- pandora_console/extras/mr/30.sql | 0 .../pandoradb_migrate_6.0_to_7.0.mysql.sql | 9 +- .../reporting_builder.item_editor.php | 185 ++++- .../include/ajax/reporting.ajax.php | 14 +- .../include/ajax/update_manager.ajax.php | 2 + .../include/functions_reporting.php | 719 +++++++++++------- .../include/functions_reporting_html.php | 86 ++- pandora_console/pandoradb.sql | 1 + pandora_console/pandoradb_data.sql | 4 +- 9 files changed, 697 insertions(+), 323 deletions(-) create mode 100644 pandora_console/extras/mr/30.sql diff --git a/pandora_console/extras/mr/30.sql b/pandora_console/extras/mr/30.sql new file mode 100644 index 0000000000..e69de29bb2 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 4bad7b3652..b9e48da3f8 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 @@ -1239,13 +1239,13 @@ ALTER TABLE titem MODIFY `source_data` int(10) unsigned; INSERT INTO `tconfig` (`token`, `value`) VALUES ('big_operation_step_datos_purge', '100'); INSERT INTO `tconfig` (`token`, `value`) VALUES ('small_operation_step_datos_purge', '1000'); INSERT INTO `tconfig` (`token`, `value`) VALUES ('days_autodisable_deletion', '30'); -INSERT INTO `tconfig` (`token`, `value`) VALUES ('MR', 29); +INSERT INTO `tconfig` (`token`, `value`) VALUES ('MR', 30); INSERT INTO `tconfig` (`token`, `value`) VALUES ('custom_docs_logo', 'default_docs.png'); INSERT INTO `tconfig` (`token`, `value`) VALUES ('custom_support_logo', 'default_support.png'); INSERT INTO `tconfig` (`token`, `value`) VALUES ('custom_logo_white_bg_preview', 'pandora_logo_head_white_bg.png'); UPDATE tconfig SET value = 'https://licensing.artica.es/pandoraupdate7/server.php' WHERE token='url_update_manager'; DELETE FROM `tconfig` WHERE `token` = 'current_package_enterprise'; -INSERT INTO `tconfig` (`token`, `value`) VALUES ('current_package_enterprise', '736'); +INSERT INTO `tconfig` (`token`, `value`) VALUES ('current_package_enterprise', '737'); INSERT INTO `tconfig` (`token`, `value`) VALUES ('status_monitor_fields', 'policy,agent,data_type,module_name,server_type,interval,status,graph,warn,data,timestamp'); -- --------------------------------------------------------------------- @@ -2209,3 +2209,8 @@ CREATE TABLE IF NOT EXISTS `tcredential_store` ( `extra_2` text, PRIMARY KEY (`identifier`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- --------------------------------------------------------------------- +-- Table `treport_content_sla_combined` +-- --------------------------------------------------------------------- +ALTER TABLE `treport_content_sla_combined` ADD `id_agent_module_secondary` int(10) unsigned NOT NULL; diff --git a/pandora_console/godmode/reporting/reporting_builder.item_editor.php b/pandora_console/godmode/reporting/reporting_builder.item_editor.php index 8c4c21fb8f..d943fbf0fc 100755 --- a/pandora_console/godmode/reporting/reporting_builder.item_editor.php +++ b/pandora_console/godmode/reporting/reporting_builder.item_editor.php @@ -566,7 +566,6 @@ switch ($action) { $include_extended_events = $item['show_extended_events']; $filter_search = $style['event_filter_search']; - break; case 'event_report_group': @@ -2784,8 +2783,21 @@ function print_SLA_list($width, $action, $idItem=null) <th class="header sla_list_module_col" scope="col"> <?php echo __('Module'); - ?> + if ($report_item_type == 'availability_graph') { + ?> + <th class="header sla_list_agent_secondary" scope="col"> + <?php + echo __('Agent Secondary'); + ?> </th> + <th class="header sla_list_module_secondary" scope="col"> + <?php + echo __('Module Secondary'); + ?> + </th> + <?php + } + ?> <th class="header sla_list_service_col" scope="col"> <?php echo __('Service'); @@ -2831,6 +2843,7 @@ function print_SLA_list($width, $action, $idItem=null) case 'update': case 'edit': echo '<tbody id="list_sla">'; + $itemsSLA = db_get_all_rows_filter( 'treport_content_sla_combined', ['id_report_content' => $idItem] @@ -2865,6 +2878,25 @@ function print_SLA_list($width, $action, $idItem=null) ['id_agente_modulo' => $item['id_agent_module']] ); + if (isset($item['id_agent_module_secondary']) === true + && $item['id_agent_module_secondary'] !== 0 + ) { + $idAgentSecondary = db_get_value_filter( + 'id_agente', + 'tagente_modulo', + ['id_agente_modulo' => $item['id_agent_module_secondary']] + ); + $nameAgentSecondary = agents_get_alias( + $idAgentSecondary + ); + + $nameModuleSecondary = db_get_value_filter( + 'nombre', + 'tagente_modulo', + ['id_agente_modulo' => $item['id_agent_module_secondary']] + ); + } + $server_name_element = ''; if ($meta && $server_name != '') { $server_name_element .= ' ('.$server_name.')'; @@ -2878,6 +2910,15 @@ function print_SLA_list($width, $action, $idItem=null) echo printSmallFont($nameModule); echo '</td>'; + if ($report_item_type == 'availability_graph') { + echo '<td class="sla_list_agent_secondary">'; + echo printSmallFont($nameAgentSecondary).$server_name_element; + echo '</td>'; + echo '<td class="sla_list_module_secondary">'; + echo printSmallFont($nameModuleSecondary); + echo '</td>'; + } + if (enterprise_installed() && $report_item_type == 'SLA_services' ) { @@ -2926,6 +2967,13 @@ function print_SLA_list($width, $action, $idItem=null) <td class="sla_list_agent_col agent_name"></td> <td class="sla_list_module_col module_name"></td> <?php + if ($report_item_type == 'availability_graph') { + ?> + <td class="sla_list_agent_secondary agent_name_secondary"></td> + <td class="sla_list_module_secondary module_name_secondary"></td> + <?php + } + if (enterprise_installed() && $report_item_type == 'SLA_services' ) { @@ -2982,6 +3030,42 @@ function print_SLA_list($width, $action, $idItem=null) </select> </td> <?php + if ($report_item_type == 'availability_graph') { + ?> + <td class="sla_list_agent_secondary_col"> + <input id="hidden-id_agent_secondary" name="id_agent_secondary" value="" type="hidden"> + <input id="hidden-server_name_secondary" name="server_name_secondary" value="" type="hidden"> + <?php + $params = []; + $params['show_helptip'] = true; + $params['input_name'] = 'agent_secondary'; + $params['value'] = ''; + $params['use_hidden_input_idagent'] = true; + $params['hidden_input_idagent_id'] = 'hidden-id_agent_secondary'; + $params['javascript_is_function_select'] = true; + $params['selectbox_id'] = 'id_agent_module_secondary'; + $params['add_none_module'] = false; + if ($meta) { + $params['use_input_id_server'] = true; + $params['input_id_server_id'] = 'hidden-id_server'; + $params['disabled_javascript_on_blur_function'] = true; + } + + ui_print_agent_autocomplete_input($params); + ?> + </td> + <td class="sla_list_module_secondary_col"> + <select id="id_agent_module_secondary" name="id_agent_module_secondary" disabled="disabled" style="max-width: 180px"> + <option value="0"> + <?php + echo __('Select an Agent first'); + ?> + </option> + </select> + </td> + <?php + } + if (enterprise_installed() && $report_item_type == 'SLA_services' ) { @@ -3002,23 +3086,23 @@ function print_SLA_list($width, $action, $idItem=null) ], ] ); - if (!empty($services_tmp) - && $services_tmp != ENTERPRISE_NOT_HOOK + if (!empty($services_tmp) + && $services_tmp != ENTERPRISE_NOT_HOOK + ) { + foreach ($services_tmp as $service) { + $check_module_sla = modules_check_agentmodule_exists( + $service['sla_id_module'] + ); + $check_module_sla_value = modules_check_agentmodule_exists( + $service['sla_value_id_module'] + ); + if ($check_module_sla + && $check_module_sla_value ) { - foreach ($services_tmp as $service) { - $check_module_sla = modules_check_agentmodule_exists( - $service['sla_id_module'] - ); - $check_module_sla_value = modules_check_agentmodule_exists( - $service['sla_value_id_module'] - ); - if ($check_module_sla - && $check_module_sla_value - ) { - $services[$service['id']] = $service['name']; - } - } + $services[$service['id']] = $service['name']; } + } + } echo '<td class="sla_list_service_col">'; echo html_print_select( @@ -3915,10 +3999,13 @@ function deleteGeneralRow(id_row) { function addSLARow() { var nameAgent = $("input[name=agent_sla]").val(); + var nameAgentSecondary = $("input[name=agent_secondary]").val(); var idAgent = $("input[name=id_agent_sla]").val(); var serverId = $("input[name=id_server]").val(); var idModule = $("#id_agent_module_sla").val(); + var idModuleSecondary = $("#id_agent_module_secondary").val(); var nameModule = $("#id_agent_module_sla :selected").text(); + var nameModuleSecondary = $("#id_agent_module_secondary :selected").text(); var slaMin = $("input[name=sla_min]").val(); var slaMax = $("input[name=sla_max]").val(); var slaLimit = $("input[name=sla_limit]").val(); @@ -3979,10 +4066,63 @@ function addSLARow() { }); } + if (nameAgentSecondary != '') { + //Truncate nameAgentSecondary + var params = []; + params.push("truncate_text=1"); + params.push("text=" + nameAgentSecondary); + params.push("page=include/ajax/reporting.ajax"); + jQuery.ajax ({ + data: params.join ("&"), + type: 'POST', + url: action= + <?php + echo '"'.ui_get_full_url( + false, + false, + false, + false + ).'"'; + ?> + + "/ajax.php", + async: false, + timeout: 10000, + success: function (data) { + nameAgentSecondary = data; + } + }); + + //Truncate nameModuleSecondary + var params = []; + params.push("truncate_text=1"); + params.push("text=" + nameModuleSecondary); + params.push("page=include/ajax/reporting.ajax"); + jQuery.ajax ({ + data: params.join ("&"), + type: 'POST', + url: action= + <?php + echo '"'.ui_get_full_url( + false, + false, + false, + false + ).'"'; + ?> + + "/ajax.php", + async: false, + timeout: 10000, + success: function (data) { + nameModuleSecondary = data; + } + }); + } + var params = []; params.push("add_sla=1"); params.push("id=" + $("input[name=id_item]").val()); params.push("id_module=" + idModule); + params.push("id_module_secondary=" + idModuleSecondary); params.push("sla_min=" + slaMin); params.push("sla_max=" + slaMax); params.push("sla_limit=" + slaLimit); @@ -4015,6 +4155,8 @@ function addSLARow() { $("#row", row).attr('id', 'sla_' + data['id']); $(".agent_name", row).html(nameAgent); $(".module_name", row).html(nameModule); + $(".agent_name_secondary", row).html(nameAgentSecondary); + $(".module_name_secondary", row).html(nameModuleSecondary); $(".service_name", row).html(serviceName); $(".sla_min", row).html(slaMin); $(".sla_max", row).html(slaMax); @@ -4025,14 +4167,22 @@ function addSLARow() { ); $("#list_sla").append($(row).html()); $("input[name=id_agent_sla]").val(''); + $("input[name=id_agent_secondary]").val(''); $("input[name=id_server]").val(''); $("input[name=agent_sla]").val(''); + $("input[name=agent_secondary]").val(''); $("#id_agent_module_sla").empty(); $("#id_agent_module_sla").attr('disabled', 'true'); $("#id_agent_module_sla").append( $("<option></option>") .attr ("value", 0) .html ($("#module_sla_text").html())); + $("#id_agent_module_secondary").empty(); + $("#id_agent_module_secondary").attr('disabled', 'true'); + $("#id_agent_module_secondary").append( + $("<option></option>") + .attr ("value", 0) + .html ($("#module_sla_text").html())); $("input[name=sla_min]").val(''); $("input[name=sla_max]").val(''); $("input[name=sla_limit]").val(''); @@ -4161,7 +4311,6 @@ function addGeneralRow() { success: function (data) { if (data['correct']) { row = $("#general_template").clone(); - $("#row", row).show(); $("#row", row).attr('id', 'general_' + data['id']); $(".agent_name", row).html(nameAgent); diff --git a/pandora_console/include/ajax/reporting.ajax.php b/pandora_console/include/ajax/reporting.ajax.php index 55ed7dd216..16bdff9527 100755 --- a/pandora_console/include/ajax/reporting.ajax.php +++ b/pandora_console/include/ajax/reporting.ajax.php @@ -65,6 +65,7 @@ if ($add_sla) { $sla_max = get_parameter('sla_max', 0); $sla_min = get_parameter('sla_min', 0); $server_id = (int) get_parameter('server_id', 0); + $id_module_secondary = (int) get_parameter('id_module_secondary', 0); $id_service = (int) get_parameter('id_service'); if (empty($id_module) && !empty($id_service)) { @@ -85,12 +86,13 @@ if ($add_sla) { $result = db_process_sql_insert( 'treport_content_sla_combined', [ - 'id_report_content' => $id, - 'id_agent_module' => $id_module, - 'sla_max' => $sla_max, - 'sla_min' => $sla_min, - 'sla_limit' => $sla_limit, - 'server_name' => $connection['server_name'], + 'id_report_content' => $id, + 'id_agent_module' => $id_module, + 'id_agent_module_secondary' => $id_module_secondary, + 'sla_max' => $sla_max, + 'sla_min' => $sla_min, + 'sla_limit' => $sla_limit, + 'server_name' => $connection['server_name'], ] ); diff --git a/pandora_console/include/ajax/update_manager.ajax.php b/pandora_console/include/ajax/update_manager.ajax.php index 7a7cefc82b..13ea1f560b 100644 --- a/pandora_console/include/ajax/update_manager.ajax.php +++ b/pandora_console/include/ajax/update_manager.ajax.php @@ -134,6 +134,7 @@ if ($install_package) { $accept = (bool) get_parameter('accept', false); if ($accept) { + hd($accept, true); $package = (string) get_parameter('package'); $package = trim($package); @@ -163,6 +164,7 @@ if ($install_package) { unlink($files_copied); } + if (file_exists($package)) { if ($files_h = fopen($files_total, 'r')) { while ($line = stream_get_line($files_h, 65535, "\n")) { diff --git a/pandora_console/include/functions_reporting.php b/pandora_console/include/functions_reporting.php index 4261518b68..ce6d901740 100755 --- a/pandora_console/include/functions_reporting.php +++ b/pandora_console/include/functions_reporting.php @@ -1,20 +1,30 @@ <?php - -// Pandora FMS - http://pandorafms.com -// ================================================== -// Copyright (c) 2005-2011 Artica Soluciones Tecnologicas -// Please see http://pandorafms.org for full contribution list -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public License -// as published by the Free Software Foundation; version 2 -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - /** - * @package Include - * @subpackage Reporting + * Extension to manage a list of gateways and the node address where they should + * point to. + * + * @category Reporting + * @package Pandora FMS + * @subpackage Community + * @version 1.0.0 + * @license See below + * + * ______ ___ _______ _______ ________ + * | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __| + * | __/| _ | | _ || _ | _| _ | | ___| |__ | + * |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______| + * + * ============================================================================ + * Copyright (c) 2005-2019 Artica Soluciones Tecnologicas + * Please see http://pandorafms.org for full contribution list + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation for version 2. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * ============================================================================ */ /** @@ -38,9 +48,7 @@ require_once $config['homedir'].'/include/functions_netflow.php'; require_once $config['homedir'].'/include/functions_os.php'; require_once $config['homedir'].'/include/functions_network.php'; -// -// CONSTANTS DEFINITIONS // -// +// CONSTANTS DEFINITIONS. // Priority modes. define('REPORT_PRIORITY_MODE_OK', 1); define('REPORT_PRIORITY_MODE_UNKNOWN', 2); @@ -6370,11 +6378,15 @@ function reporting_availability($report, $content, $date=false, $time=false) } -/** - * reporting_availability_graph - * - * Generates a structure the report. - */ + /** + * Reporting_availability_graph. + * + * @param array $report Info report. + * @param array $content Content data. + * @param boolean $pdf Output type PDF. + * + * @return array Generates a structure the report. + */ function reporting_availability_graph($report, $content, $pdf=false) { global $config; @@ -6393,7 +6405,7 @@ function reporting_availability_graph($report, $content, $pdf=false) $return['description'] = $content['description']; $return['date'] = reporting_get_date_text($report, $content); - // Get chart + // Get chart. reporting_set_conf_charts( $width, $height, @@ -6437,83 +6449,8 @@ function reporting_availability_graph($report, $content, $pdf=false) foreach ($slas as $sla) { $server_name = $sla['server_name']; - // Metaconsole connection - if ($metaconsole_on && $server_name != '') { - $connection = metaconsole_get_connection($server_name); - if (!metaconsole_load_external_db($connection)) { - // ui_print_error_message ("Error connecting to ".$server_name); - continue; - } - } - if (modules_is_disable_agent($sla['id_agent_module']) - || modules_is_not_init($sla['id_agent_module']) - ) { - if ($metaconsole_on) { - // Restore db connection - metaconsole_restore_db(); - } - - continue; - } - - // controller min and max == 0 then dinamic min and max critical - $dinamic_text = 0; - if ($sla['sla_min'] == 0 && $sla['sla_max'] == 0) { - $sla['sla_min'] = null; - $sla['sla_max'] = null; - $dinamic_text = __('Dynamic'); - } - - // controller inverse interval - $inverse_interval = 0; - if ((isset($sla['sla_max'])) && (isset($sla['sla_min']))) { - if ($sla['sla_max'] < $sla['sla_min']) { - $content_sla_max = $sla['sla_max']; - $sla['sla_max'] = $sla['sla_min']; - $sla['sla_min'] = $content_sla_max; - $inverse_interval = 1; - $dinamic_text = __('Inverse'); - } - } - - // for graph slice for module-interval, if not slice=0; - $module_interval = modules_get_interval($sla['id_agent_module']); - $slice = ($content['period'] / $module_interval); - - // call functions sla - $sla_array = []; - $sla_array = reporting_advanced_sla( - $sla['id_agent_module'], - ($report['datetime'] - $content['period']), - $report['datetime'], - $sla['sla_min'], - // min_value -> dynamic - $sla['sla_max'], - // max_value -> dynamic - $inverse_interval, - // inverse_interval -> dynamic - [ - '1' => $content['sunday'], - '2' => $content['monday'], - '3' => $content['tuesday'], - '4' => $content['wednesday'], - '5' => $content['thursday'], - '6' => $content['friday'], - '7' => $content['saturday'], - ], - $content['time_from'], - $content['time_to'], - $slice - ); - - if ($metaconsole_on) { - // Restore db connection - metaconsole_restore_db(); - } - - $server_name = $sla['server_name']; - // Metaconsole connection + // Metaconsole connection. if ($metaconsole_on && $server_name != '') { $connection = metaconsole_get_connection($server_name); if (metaconsole_connect($connection) != NOERR) { @@ -6521,199 +6458,118 @@ function reporting_availability_graph($report, $content, $pdf=false) } } - $planned_downtimes = reporting_get_planned_downtimes_intervals($sla['id_agent_module'], ($report['datetime'] - $content['period']), $report['datetime']); + if (isset($sla['id_agent_module_secondary']) === true + && $sla['id_agent_module_secondary'] != 0 + ) { + $sla_secondary['primary'] = $sla; + $sla_secondary['failover'] = $sla; + $sla_secondary['failover']['id_agent_module'] = $sla['id_agent_module_secondary']; - if ((is_array($planned_downtimes)) && (count($planned_downtimes) > 0)) { - // Sort retrieved planned downtimes - usort( - $planned_downtimes, - function ($a, $b) { - $a = intval($a['date_from']); - $b = intval($b['date_from']); - if ($a == $b) { - return 0; - } + // For graph slice for module-interval, if not slice=0. + $module_interval = modules_get_interval($sla['id_agent_module']); + $slice = ($content['period'] / $module_interval); - return ($a < $b) ? -1 : 1; - } + foreach ($sla_secondary as $k_sla => $v_sla) { + $sla_array = data_db_uncompress_module( + $v_sla, + $content, + $report['datetime'], + $slice + ); + + $return = prepare_data_for_paint( + $v_sla, + $sla_array, + $content, + $report['datetime'], + $return, + $k_sla + ); + + $data_combined[] = $sla_array; + } + + if (isset($data_combined) === true + && is_array($data_combined) === true + && count($data_combined) > 0 + ) { + $data_a = array_map( + function ($primary, $failover) { + if ($primary['date_from'] === $failover['date_from'] + && $primary['date_to'] === $failover['date_to'] + ) { + if ($primary['sla_fixed'] !== 100 + && $primary['sla_fixed'] < $failover['sla_fixed'] + ) { + $primary['time_total'] = $failover['time_total']; + $primary['time_ok'] = $failover['time_ok']; + $primary['time_error'] = $failover['time_error']; + $primary['time_unknown'] = $failover['time_unknown']; + $primary['time_not_init'] = $failover['time_not_init']; + $primary['time_downtime'] = $failover['time_downtime']; + $primary['time_out'] = $failover['time_out']; + $primary['checks_total'] = $failover['checks_total']; + $primary['checks_ok'] = $failover['checks_ok']; + $primary['checks_error'] = $failover['checks_error']; + $primary['checks_unknown'] = $failover['checks_unknown']; + $primary['checks_not_init'] = $failover['checks_not_init']; + $primary['SLA'] = $failover['SLA']; + $primary['sla_fixed'] = $failover['sla_fixed']; + } + + $return = $primary; + } + + return $return; + }, + $data_combined[0], + $data_combined[1] + ); + + $return = prepare_data_for_paint( + $sla, + $data_a, + $content, + $report['datetime'], + $return, + 'result' + ); + } + } else { + $sla_array = data_db_uncompress_module( + $sla, + $content, + $report['datetime'] ); - // Compress (overlapped) planned downtimes - $npd = count($planned_downtimes); - for ($i = 0; $i < $npd; $i++) { - if (isset($planned_downtimes[($i + 1)])) { - if ($planned_downtimes[$i]['date_to'] >= $planned_downtimes[($i + 1)]['date_from']) { - // merge - $planned_downtimes[$i]['date_to'] = $planned_downtimes[($i + 1)]['date_to']; - array_splice($planned_downtimes, ($i + 1), 1); - $npd--; - } - } - } - } else { - $planned_downtimes = null; + $return = prepare_data_for_paint( + $sla, + $sla_array, + $content, + $report['datetime'], + $return + ); } - $data = []; - $data['agent'] = modules_get_agentmodule_agent_alias($sla['id_agent_module']); - $data['module'] = modules_get_agentmodule_name($sla['id_agent_module']); - $data['max'] = $sla['sla_max']; - $data['min'] = $sla['sla_min']; - $data['sla_limit'] = $sla['sla_limit']; - $data['dinamic_text'] = $dinamic_text; - - if (isset($sla_array[0])) { - $data['time_total'] = 0; - $data['time_ok'] = 0; - $data['time_error'] = 0; - $data['time_unknown'] = 0; - $data['time_not_init'] = 0; - $data['time_downtime'] = 0; - $data['checks_total'] = 0; - $data['checks_ok'] = 0; - $data['checks_error'] = 0; - $data['checks_unknown'] = 0; - $data['checks_not_init'] = 0; - - $raw_graph = []; - $i = 0; - foreach ($sla_array as $value_sla) { - $data['time_total'] += $value_sla['time_total']; - $data['time_ok'] += $value_sla['time_ok']; - $data['time_error'] += $value_sla['time_error']; - $data['time_unknown'] += $value_sla['time_unknown']; - $data['time_downtime'] += $value_sla['time_downtime']; - $data['time_not_init'] += $value_sla['time_not_init']; - $data['checks_total'] += $value_sla['checks_total']; - $data['checks_ok'] += $value_sla['checks_ok']; - $data['checks_error'] += $value_sla['checks_error']; - $data['checks_unknown'] += $value_sla['checks_unknown']; - $data['checks_not_init'] += $value_sla['checks_not_init']; - - // generate raw data for graph - $period = reporting_sla_get_status_period($value_sla, $priority_mode); - $raw_graph[$i]['data'] = reporting_translate_sla_status_for_graph($period); - $raw_graph[$i]['utimestamp'] = ($value_sla['date_to'] - $value_sla['date_from']); - $i++; - } - - $data['sla_value'] = reporting_sla_get_compliance_from_array($data); - $data['sla_fixed'] = sla_truncate($data['sla_value'], $config['graph_precision']); - } else { - // Show only table not divider in slice for defect slice=1 - $data['time_total'] = $sla_array['time_total']; - $data['time_ok'] = $sla_array['time_ok']; - $data['time_error'] = $sla_array['time_error']; - $data['time_unknown'] = $sla_array['time_unknown']; - $data['time_downtime'] = $sla_array['time_downtime']; - $data['time_not_init'] = $sla_array['time_not_init']; - $data['checks_total'] = $sla_array['checks_total']; - $data['checks_ok'] = $sla_array['checks_ok']; - $data['checks_error'] = $sla_array['checks_error']; - $data['checks_unknown'] = $sla_array['checks_unknown']; - $data['checks_not_init'] = $sla_array['checks_not_init']; - $data['sla_value'] = $sla_array['SLA']; - } - - // checks whether or not it meets the SLA - if ($data['sla_value'] >= $sla['sla_limit']) { - $data['sla_status'] = 1; - $sla_failed = false; - } else { - $sla_failed = true; - $data['sla_status'] = 0; - } - - // Do not show right modules if 'only_display_wrong' is active - if ($content['only_display_wrong'] && $sla_failed == false) { - continue; - } - - // find order - $data['order'] = $data['sla_value']; - $return['data'][] = $data; - - $data_init = -1; - $acum = 0; - $sum = 0; - $array_result = []; - $i = 0; - foreach ($raw_graph as $key => $value) { - if ($data_init == -1) { - $data_init = $value['data']; - $acum = $value['utimestamp']; - $sum = $value['data']; - } else { - if ($data_init == $value['data']) { - $acum = ($acum + $value['utimestamp']); - $sum = ($sum + $value['real_data']); - } else { - $array_result[$i]['data'] = $data_init; - $array_result[$i]['utimestamp'] = $acum; - $array_result[$i]['real_data'] = $sum; - $i++; - $data_init = $value['data']; - $acum = $value['utimestamp']; - $sum = $value['real_data']; - } - } - } - - $array_result[$i]['data'] = $data_init; - $array_result[$i]['utimestamp'] = $acum; - $array_result[$i]['real_data'] = $sum; - - // Slice graphs calculation - $dataslice = []; - $dataslice['agent'] = modules_get_agentmodule_agent_alias($sla['id_agent_module']); - $dataslice['module'] = modules_get_agentmodule_name($sla['id_agent_module']); - $dataslice['order'] = $data['sla_value']; - $dataslice['checks_total'] = $data['checks_total']; - $dataslice['checks_ok'] = $data['checks_ok']; - $dataslice['time_total'] = $data['time_total']; - $dataslice['time_not_init'] = $data['time_not_init']; - $dataslice['sla_status'] = $data['sla_status']; - $dataslice['sla_value'] = $data['sla_value']; - - $dataslice['chart'] = graph_sla_slicebar( - $sla['id_agent_module'], - $content['period'], - $sla['sla_min'], - $sla['sla_max'], - $report['datetime'], - $content, - $content['time_from'], - $content['time_to'], - 100, - 70, - $urlImage, - $ttl, - $array_result, - false - ); - - $return['charts'][] = $dataslice; - if ($metaconsole_on) { - // Restore db connection + // Restore db connection. metaconsole_restore_db(); } } - // SLA items sorted descending () + // SLA items sorted descending. if ($content['top_n'] == 2) { arsort($return['data']['']); - } - // SLA items sorted ascending - else if ($content['top_n'] == 1) { + } else if ($content['top_n'] == 1) { + // SLA items sorted ascending. asort($sla_showed_values); } - // order data for ascending or descending + // Order data for ascending or descending. if ($content['top_n'] != 0) { switch ($content['top_n']) { case 1: - // order tables + // Order tables. $temp = []; foreach ($return['data'] as $row) { $i = 0; @@ -6730,7 +6586,7 @@ function reporting_availability_graph($report, $content, $pdf=false) $return['data'] = $temp; - // order graphs + // Order graphs. $temp = []; foreach ($return['charts'] as $row) { $i = 0; @@ -6746,11 +6602,10 @@ function reporting_availability_graph($report, $content, $pdf=false) } $return['charts'] = $temp; - break; case 2: - // order tables + // Order tables. $temp = []; foreach ($return['data'] as $row) { $i = 0; @@ -6767,7 +6622,7 @@ function reporting_availability_graph($report, $content, $pdf=false) $return['data'] = $temp; - // order graph + // Order graph. $temp = []; foreach ($return['charts'] as $row) { $i = 0; @@ -6783,7 +6638,10 @@ function reporting_availability_graph($report, $content, $pdf=false) } $return['charts'] = $temp; + break; + default: + // If not posible. break; } } @@ -6793,6 +6651,311 @@ function reporting_availability_graph($report, $content, $pdf=false) } +/** + * Return data db uncompress for module. + * + * @param array $sla Data neccesary for db_uncompress. + * @param array $content Conetent report. + * @param array $datetime Date. + * @param integer $slice Defined slice. + * + * @return array + */ +function data_db_uncompress_module($sla, $content, $datetime, $slice=0) +{ + // Controller min and max == 0 then dinamic min and max critical. + $dinamic_text = 0; + if ($sla['sla_min'] == 0 && $sla['sla_max'] == 0) { + $sla['sla_min'] = null; + $sla['sla_max'] = null; + $dinamic_text = __('Dynamic'); + } + + // Controller inverse interval. + $inverse_interval = 0; + if ((isset($sla['sla_max'])) && (isset($sla['sla_min']))) { + if ($sla['sla_max'] < $sla['sla_min']) { + $content_sla_max = $sla['sla_max']; + $sla['sla_max'] = $sla['sla_min']; + $sla['sla_min'] = $content_sla_max; + $inverse_interval = 1; + $dinamic_text = __('Inverse'); + } + } + + if ($slice === 0) { + // For graph slice for module-interval, if not slice=0. + $module_interval = modules_get_interval($sla['id_agent_module']); + $slice = ($content['period'] / $module_interval); + } + + // Call functions sla. + $sla_array = []; + $sla_array = reporting_advanced_sla( + $sla['id_agent_module'], + ($datetime - $content['period']), + $datetime, + $sla['sla_min'], + $sla['sla_max'], + $inverse_interval, + [ + '1' => $content['sunday'], + '2' => $content['monday'], + '3' => $content['tuesday'], + '4' => $content['wednesday'], + '5' => $content['thursday'], + '6' => $content['friday'], + '7' => $content['saturday'], + ], + $content['time_from'], + $content['time_to'], + $slice + ); + + return $sla_array; +} + + +/** + * Return array planned downtimes. + * + * @param integer $id_agent_module Id module. + * @param integer $datetime Date utimestamp. + * @param integer $period Period utimestamp. + * + * @return array + */ +function reporting_get_planned_downtimes_sla($id_agent_module, $datetime, $period) +{ + $planned_downtimes = reporting_get_planned_downtimes_intervals( + $id_agent_module, + ($datetime - $period), + $datetime + ); + + if ((is_array($planned_downtimes)) + && (count($planned_downtimes) > 0) + ) { + // Sort retrieved planned downtimes. + usort( + $planned_downtimes, + function ($a, $b) { + $a = intval($a['date_from']); + $b = intval($b['date_from']); + if ($a == $b) { + return 0; + } + + return ($a < $b) ? (-1) : 1; + } + ); + + // Compress (overlapped) planned downtimes. + $npd = count($planned_downtimes); + for ($i = 0; $i < $npd; $i++) { + if (isset($planned_downtimes[($i + 1)])) { + if ($planned_downtimes[$i]['date_to'] >= $planned_downtimes[($i + 1)]['date_from']) { + // Merge. + $planned_downtimes[$i]['date_to'] = $planned_downtimes[($i + 1)]['date_to']; + array_splice($planned_downtimes, ($i + 1), 1); + $npd--; + } + } + } + } else { + $planned_downtimes = []; + } + + return $planned_downtimes; +} + + +/** + * Prepare data for Paint in report. + * + * @param array $sla Data Module to sla. + * @param array $sla_array Data uncompressed. + * @param array $content Content report data. + * @param integer $datetime Date. + * @param array $return Array return. + * @param string $secondary Type secondaary primary, failover, Result. + * + * @return array Return modify. + */ +function prepare_data_for_paint( + $sla, + $sla_array, + $content, + $datetime, + $return, + $secondary='' +) { + $data = []; + $alias_agent = modules_get_agentmodule_agent_alias( + $sla['id_agent_module'] + ); + $name_module = modules_get_agentmodule_name( + $sla['id_agent_module'] + ); + + $data['agent'] = $alias_agent; + $data['module'] = $name_module; + $data['max'] = $sla['sla_max']; + $data['min'] = $sla['sla_min']; + $data['sla_limit'] = $sla['sla_limit']; + $data['dinamic_text'] = $dinamic_text; + $data['secondary'] = $secondary; + if (isset($sla_array[0])) { + $data['time_total'] = 0; + $data['time_ok'] = 0; + $data['time_error'] = 0; + $data['time_unknown'] = 0; + $data['time_not_init'] = 0; + $data['time_downtime'] = 0; + $data['checks_total'] = 0; + $data['checks_ok'] = 0; + $data['checks_error'] = 0; + $data['checks_unknown'] = 0; + $data['checks_not_init'] = 0; + + $raw_graph = []; + $i = 0; + foreach ($sla_array as $value_sla) { + $data['time_total'] += $value_sla['time_total']; + $data['time_ok'] += $value_sla['time_ok']; + $data['time_error'] += $value_sla['time_error']; + $data['time_unknown'] += $value_sla['time_unknown']; + $data['time_downtime'] += $value_sla['time_downtime']; + $data['time_not_init'] += $value_sla['time_not_init']; + $data['checks_total'] += $value_sla['checks_total']; + $data['checks_ok'] += $value_sla['checks_ok']; + $data['checks_error'] += $value_sla['checks_error']; + $data['checks_unknown'] += $value_sla['checks_unknown']; + $data['checks_not_init'] += $value_sla['checks_not_init']; + + // Generate raw data for graph. + $period = reporting_sla_get_status_period( + $value_sla, + $priority_mode + ); + $raw_graph[$i]['data'] = reporting_translate_sla_status_for_graph( + $period + ); + $raw_graph[$i]['utimestamp'] = ($value_sla['date_to'] - $value_sla['date_from']); + $i++; + } + + $data['sla_value'] = reporting_sla_get_compliance_from_array( + $data + ); + $data['sla_fixed'] = sla_truncate( + $data['sla_value'], + $config['graph_precision'] + ); + } else { + // Show only table not divider in slice for defect slice=1. + $data['time_total'] = $sla_array['time_total']; + $data['time_ok'] = $sla_array['time_ok']; + $data['time_error'] = $sla_array['time_error']; + $data['time_unknown'] = $sla_array['time_unknown']; + $data['time_downtime'] = $sla_array['time_downtime']; + $data['time_not_init'] = $sla_array['time_not_init']; + $data['checks_total'] = $sla_array['checks_total']; + $data['checks_ok'] = $sla_array['checks_ok']; + $data['checks_error'] = $sla_array['checks_error']; + $data['checks_unknown'] = $sla_array['checks_unknown']; + $data['checks_not_init'] = $sla_array['checks_not_init']; + $data['sla_value'] = $sla_array['SLA']; + } + + // Checks whether or not it meets the SLA. + if ($data['sla_value'] >= $sla['sla_limit']) { + $data['sla_status'] = 1; + $sla_failed = false; + } else { + $sla_failed = true; + $data['sla_status'] = 0; + } + + // Do not show right modules if 'only_display_wrong' is active. + if ($content['only_display_wrong'] && $sla_failed == false) { + return $return; + } + + // Find order. + $data['order'] = $data['sla_value']; + $return['data'][] = $data; + + $data_init = -1; + $acum = 0; + $sum = 0; + $array_result = []; + $i = 0; + foreach ($raw_graph as $key => $value) { + if ($data_init == -1) { + $data_init = $value['data']; + $acum = $value['utimestamp']; + $sum = $value['data']; + } else { + if ($data_init == $value['data']) { + $acum = ($acum + $value['utimestamp']); + $sum = ($sum + $value['real_data']); + } else { + $array_result[$i]['data'] = $data_init; + $array_result[$i]['utimestamp'] = $acum; + $array_result[$i]['real_data'] = $sum; + $i++; + $data_init = $value['data']; + $acum = $value['utimestamp']; + $sum = $value['real_data']; + } + } + } + + $array_result[$i]['data'] = $data_init; + $array_result[$i]['utimestamp'] = $acum; + $array_result[$i]['real_data'] = $sum; + + // Slice graphs calculation. + $dataslice = []; + $dataslice['agent'] = $alias_agent; + $dataslice['module'] = $name_module; + $dataslice['order'] = $data['sla_value']; + $dataslice['checks_total'] = $data['checks_total']; + $dataslice['checks_ok'] = $data['checks_ok']; + $dataslice['time_total'] = $data['time_total']; + $dataslice['time_not_init'] = $data['time_not_init']; + $dataslice['sla_status'] = $data['sla_status']; + $dataslice['sla_value'] = $data['sla_value']; + + $height = 80; + if ($secondary !== '' && $secondary !== 'result') { + $height = 50; + } + + $dataslice['chart'] = graph_sla_slicebar( + $sla['id_agent_module'], + $content['period'], + $sla['sla_min'], + $sla['sla_max'], + $datetime, + $content, + $content['time_from'], + $content['time_to'], + 100, + $height, + $urlImage, + $ttl, + $array_result, + false + ); + + $return['charts'][] = $dataslice; + + return $return; +} + + /** * reporting_increment * diff --git a/pandora_console/include/functions_reporting_html.php b/pandora_console/include/functions_reporting_html.php index c8d5b3e29e..ecad568d1d 100644 --- a/pandora_console/include/functions_reporting_html.php +++ b/pandora_console/include/functions_reporting_html.php @@ -3252,15 +3252,7 @@ function reporting_html_availability_graph($table, $item, $pdf=0) $tables_chart = ''; - $table1 = new stdClass(); - $table1->width = '99%'; - $table1->data = []; - $table1->size = []; - $table1->size[0] = '10%'; - $table1->size[1] = '80%'; - $table1->size[2] = '5%'; - $table1->size[3] = '5%'; - foreach ($item['charts'] as $chart) { + foreach ($item['charts'] as $k_chart => $chart) { $checks_resume = ''; $sla_value = ''; if (reporting_sla_is_not_init_from_array($chart)) { @@ -3291,14 +3283,74 @@ function reporting_html_availability_graph($table, $item, $pdf=0) $checks_resume = '('.$chart['checks_ok'].'/'.$chart['checks_total'].')'; } - $table1->data[0][0] = $chart['agent'].'<br />'.$chart['module']; - $table1->data[0][1] = $chart['chart']; - $table1->data[0][2] = "<span style = 'font: bold 2em Arial, Sans-serif; color: ".$color."'>".$sla_value.'</span>'; - $table1->data[0][3] = $checks_resume; - $tables_chart .= html_print_table( - $table1, - true - ); + // Check failover availability report. + if ($item['data'][$k_chart]['secondary'] === '') { + $table1 = new stdClass(); + $table1->width = '99%'; + $table1->data = []; + $table1->size = []; + $table1->size[0] = '10%'; + $table1->size[1] = '80%'; + $table1->size[2] = '5%'; + $table1->size[3] = '5%'; + $table1->data[0][0] = $chart['agent'].'<br />'.$chart['module']; + $table1->data[0][1] = $chart['chart']; + $table1->data[0][2] = "<span style = 'font: bold 2em Arial, Sans-serif; color: ".$color."'>".$sla_value.'</span>'; + $table1->data[0][3] = $checks_resume; + $tables_chart .= html_print_table( + $table1, + true + ); + } else { + if ($item['data'][$k_chart]['secondary'] === 'primary') { + $table1 = new stdClass(); + $table1->width = '99%'; + $table1->data = []; + $table1->size = []; + $table1->size[0] = '10%'; + $table1->size[1] = '80%'; + $table1->size[2] = '5%'; + $table1->size[3] = '5%'; + } + + $title = ''; + $checks_resume_text = $checks_resume; + $sla_value_text = "<span style = 'font: bold 2em Arial, Sans-serif; color: ".$color."'>".$sla_value.'</span>'; + switch ($item['data'][$k_chart]['secondary']) { + case 'primary': + $title = '<b>'.__('Primary').'</b>'; + $title .= '<br />'.$chart['agent']; + $title .= '<br />'.$chart['module']; + break; + + case 'failover': + $title = '<b>'.__('Failover').'</b>'; + $title .= '<br />'.$chart['agent']; + $title .= '<br />'.$chart['module']; + break; + + case 'result': + default: + $title = '<b>'.__('Result').'</b>'; + $sla_value_text = "<span style = 'font: bold 3em Arial, Sans-serif; color: ".$color."'>".$sla_value.'</span>'; + $checks_resume_text = '<span style = "font-size: 12pt;">'; + $checks_resume_text .= $checks_resume; + $checks_resume_text .= '</span>'; + break; + } + + $table1->data[$item['data'][$k_chart]['secondary']][0] = $title; + $table1->data[$item['data'][$k_chart]['secondary']][1] = $chart['chart']; + $table1->data[$item['data'][$k_chart]['secondary']][2] = $sla_value_text; + $table1->data[$item['data'][$k_chart]['secondary']][3] = $checks_resume_text; + + if ($item['data'][$k_chart]['secondary'] === 'result') { + $tables_chart .= html_print_table( + $table1, + true + ); + } + } } if ($item['type'] == 'availability_graph') { diff --git a/pandora_console/pandoradb.sql b/pandora_console/pandoradb.sql index 6784ecb309..e73d31209b 100644 --- a/pandora_console/pandoradb.sql +++ b/pandora_console/pandoradb.sql @@ -1464,6 +1464,7 @@ CREATE TABLE IF NOT EXISTS `treport_content_sla_combined` ( `id` INTEGER UNSIGNED NOT NULL auto_increment, `id_report_content` INTEGER UNSIGNED NOT NULL, `id_agent_module` int(10) unsigned NOT NULL, + `id_agent_module_secondary` int(10) unsigned NOT NULL, `sla_max` double(18,2) NOT NULL default 0, `sla_min` double(18,2) NOT NULL default 0, `sla_limit` double(18,2) NOT NULL default 0, diff --git a/pandora_console/pandoradb_data.sql b/pandora_console/pandoradb_data.sql index c69e37e545..6c8811bf22 100644 --- a/pandora_console/pandoradb_data.sql +++ b/pandora_console/pandoradb_data.sql @@ -114,10 +114,10 @@ INSERT INTO `tconfig` (`token`, `value`) VALUES ('custom_report_front_logo', 'images/pandora_logo_white.jpg'), ('custom_report_front_header', ''), ('custom_report_front_footer', ''), -('MR', 29), +('MR', 30), ('identification_reminder', 1), ('identification_reminder_timestamp', 0), -('current_package_enterprise', '736'), +('current_package_enterprise', '737'), ('post_process_custom_values', '{"0.00000038580247":"Seconds to months","0.00000165343915":"Seconds to weeks","0.00001157407407":"Seconds to days","0.01666666666667":"Seconds to minutes","0.00000000093132":"Bytes to Gigabytes","0.00000095367432":"Bytes to Megabytes","0.0009765625":"Bytes to Kilobytes","0.00000001653439":"Timeticks to weeks","0.00000011574074":"Timeticks to days"}'), ('custom_docs_logo', 'default_docs.png'), ('custom_support_logo', 'default_support.png'), From 209681e4c2e5c1affd76586f3b5fd2e8a00d3b1d Mon Sep 17 00:00:00 2001 From: Daniel Barbero <daniel.barbero@artica.es> Date: Tue, 2 Jul 2019 11:50:58 +0200 Subject: [PATCH 26/83] ADD failover option availability_graph --- pandora_console/extras/mr/30.sql | 12 ++ .../pandoradb_migrate_6.0_to_7.0.mysql.sql | 7 +- .../reporting_builder.item_editor.php | 187 +++++++++++++----- .../godmode/reporting/reporting_builder.php | 18 ++ .../include/ajax/reporting.ajax.php | 18 +- .../include/ajax/update_manager.ajax.php | 1 - .../include/functions_reporting.php | 51 +++-- .../include/functions_reporting_html.php | 18 +- pandora_console/pandoradb.sql | 7 +- 9 files changed, 230 insertions(+), 89 deletions(-) diff --git a/pandora_console/extras/mr/30.sql b/pandora_console/extras/mr/30.sql index e69de29bb2..0e37d30c35 100644 --- a/pandora_console/extras/mr/30.sql +++ b/pandora_console/extras/mr/30.sql @@ -0,0 +1,12 @@ +START TRANSACTION; + +ALTER TABLE `treport_content_sla_combined` ADD `id_agent_module_failover` int(10) unsigned NOT NULL; +ALTER TABLE `treport_content_sla_combined` ADD `id_server_failover` int(10) unsigned NOT NULL; + +ALTER TABLE `treport_content` ADD COLUMN `failover_mode` tinyint(1) DEFAULT '0'; +ALTER TABLE `treport_content` ADD COLUMN `failover_type` tinyint(1) DEFAULT '0'; + +ALTER TABLE `treport_content_template` ADD COLUMN `failover_mode` tinyint(1) DEFAULT '1'; +ALTER TABLE `treport_content_template` ADD COLUMN `failover_type` tinyint(1) DEFAULT '1'; + +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 b9e48da3f8..4404ee826d 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 @@ -796,6 +796,8 @@ ALTER TABLE `treport_content_template` ADD COLUMN `unknown_checks` TINYINT(1) DE ALTER TABLE `treport_content_template` ADD COLUMN `agent_max_value` TINYINT(1) DEFAULT '1'; ALTER TABLE `treport_content_template` ADD COLUMN `agent_min_value` TINYINT(1) DEFAULT '1'; ALTER TABLE `treport_content_template` ADD COLUMN `current_month` TINYINT(1) DEFAULT '1'; +ALTER TABLE `treport_content_template` ADD COLUMN `failover_mode` tinyint(1) DEFAULT '1'; +ALTER TABLE `treport_content_template` ADD COLUMN `failover_type` tinyint(1) DEFAULT '1'; -- ----------------------------------------------------- -- Table `treport_content_sla_com_temp` (treport_content_sla_combined_template) @@ -1442,6 +1444,8 @@ ALTER TABLE `treport_content` ADD COLUMN `unknown_checks` TINYINT(1) DEFAULT '1' ALTER TABLE `treport_content` ADD COLUMN `agent_max_value` TINYINT(1) DEFAULT '1'; ALTER TABLE `treport_content` ADD COLUMN `agent_min_value` TINYINT(1) DEFAULT '1'; ALTER TABLE `treport_content` ADD COLUMN `current_month` TINYINT(1) DEFAULT '1'; +ALTER TABLE `treport_content` ADD COLUMN `failover_mode` tinyint(1) DEFAULT '0'; +ALTER TABLE `treport_content` ADD COLUMN `failover_type` tinyint(1) DEFAULT '0'; -- --------------------------------------------------------------------- -- Table `tmodule_relationship` @@ -2213,4 +2217,5 @@ CREATE TABLE IF NOT EXISTS `tcredential_store` ( -- --------------------------------------------------------------------- -- Table `treport_content_sla_combined` -- --------------------------------------------------------------------- -ALTER TABLE `treport_content_sla_combined` ADD `id_agent_module_secondary` int(10) unsigned NOT NULL; +ALTER TABLE `treport_content_sla_combined` ADD `id_agent_module_failover` int(10) unsigned NOT NULL; +ALTER TABLE `treport_content_sla_combined` ADD `id_server_failover` int(10) unsigned NOT NULL; diff --git a/pandora_console/godmode/reporting/reporting_builder.item_editor.php b/pandora_console/godmode/reporting/reporting_builder.item_editor.php index d943fbf0fc..b269b153d5 100755 --- a/pandora_console/godmode/reporting/reporting_builder.item_editor.php +++ b/pandora_console/godmode/reporting/reporting_builder.item_editor.php @@ -165,6 +165,8 @@ switch ($action) { $show_in_landscape = 0; $hide_notinit_agents = 0; $priority_mode = REPORT_PRIORITY_MODE_OK; + $failover_mode = 0; + $failover_type = REPORT_FAILOVER_TYPE_NORMAL; $server_name = ''; $server_id = 0; $dyn_height = 230; @@ -314,6 +316,8 @@ switch ($action) { $sla_sorted_by = $item['top_n']; $period = $item['period']; $current_month = $item['current_month']; + $failover_mode = $item['failover_mode']; + $failover_type = $item['failover_type']; break; case 'module_histogram_graph': @@ -2237,6 +2241,7 @@ $class = 'databox filters'; ?> </td> </tr> + <tr id="row_select_fields2" style="" class="datos"> <td style="font-weight:bold;margin-right:150px;"> <?php @@ -2608,6 +2613,59 @@ $class = 'databox filters'; </td> </tr> + <tr id="row_failover_mode" style="" class="datos"> + <td style="font-weight:bold;"> + <?php + echo __('Failover mode').ui_print_help_tip( + __('XXX.'), + true + ); + ?> + </td> + <td> + <?php + html_print_checkbox_switch( + 'failover_mode', + 1, + $failover_mode + ); + ?> + </td> + </tr> + + <tr id="row_failover_type" style="" class="datos"> + <td style="font-weight:bold;"> + <?php + echo __('Failover type'); + ?> + </td> + <td> + <?php + echo __('Failover normal'); + echo '<span style="margin-left:5px;"></span>'; + html_print_radio_button( + 'failover_type', + REPORT_FAILOVER_TYPE_NORMAL, + '', + $failover_type == REPORT_FAILOVER_TYPE_NORMAL, + '' + ); + + echo '<span style="margin:30px;"></span>'; + + echo __('Failover simple'); + echo '<span style="margin-left:5px;"></span>'; + html_print_radio_button( + 'failover_type', + REPORT_FAILOVER_TYPE_SIMPLE, + '', + $failover_type == REPORT_FAILOVER_TYPE_SIMPLE, + '' + ); + ?> + </td> + </tr> + <tr id="row_filter_search" style="" class="datos"> <td style="font-weight:bold;"><?php echo __('Free search'); ?></td> <td> @@ -2771,6 +2829,13 @@ function print_SLA_list($width, $action, $idItem=null) 'id_rc', $idItem ); + + $failover_mode = db_get_value( + 'failover_mode', + 'treport_content', + 'id_rc', + $idItem + ); ?> <table class="databox data" id="sla_list" border="0" cellpadding="4" cellspacing="4" width="100%"> <thead> @@ -2783,16 +2848,18 @@ function print_SLA_list($width, $action, $idItem=null) <th class="header sla_list_module_col" scope="col"> <?php echo __('Module'); - if ($report_item_type == 'availability_graph') { + if ($report_item_type == 'availability_graph' + && $failover_mode + ) { ?> - <th class="header sla_list_agent_secondary" scope="col"> + <th class="header sla_list_agent_failover" scope="col"> <?php - echo __('Agent Secondary'); + echo __('Agent Failover'); ?> </th> - <th class="header sla_list_module_secondary" scope="col"> + <th class="header sla_list_module_failover" scope="col"> <?php - echo __('Module Secondary'); + echo __('Module Failover'); ?> </th> <?php @@ -2878,22 +2945,22 @@ function print_SLA_list($width, $action, $idItem=null) ['id_agente_modulo' => $item['id_agent_module']] ); - if (isset($item['id_agent_module_secondary']) === true - && $item['id_agent_module_secondary'] !== 0 + if (isset($item['id_agent_module_failover']) === true + && $item['id_agent_module_failover'] !== 0 ) { - $idAgentSecondary = db_get_value_filter( + $idAgentFailover = db_get_value_filter( 'id_agente', 'tagente_modulo', - ['id_agente_modulo' => $item['id_agent_module_secondary']] + ['id_agente_modulo' => $item['id_agent_module_failover']] ); - $nameAgentSecondary = agents_get_alias( - $idAgentSecondary + $nameAgentFailover = agents_get_alias( + $idAgentFailover ); - $nameModuleSecondary = db_get_value_filter( + $nameModuleFailover = db_get_value_filter( 'nombre', 'tagente_modulo', - ['id_agente_modulo' => $item['id_agent_module_secondary']] + ['id_agente_modulo' => $item['id_agent_module_failover']] ); } @@ -2910,12 +2977,14 @@ function print_SLA_list($width, $action, $idItem=null) echo printSmallFont($nameModule); echo '</td>'; - if ($report_item_type == 'availability_graph') { - echo '<td class="sla_list_agent_secondary">'; - echo printSmallFont($nameAgentSecondary).$server_name_element; + if ($report_item_type == 'availability_graph' + && $failover_mode + ) { + echo '<td class="sla_list_agent_failover">'; + echo printSmallFont($nameAgentFailover).$server_name_element; echo '</td>'; - echo '<td class="sla_list_module_secondary">'; - echo printSmallFont($nameModuleSecondary); + echo '<td class="sla_list_module_failover">'; + echo printSmallFont($nameModuleFailover); echo '</td>'; } @@ -2967,10 +3036,12 @@ function print_SLA_list($width, $action, $idItem=null) <td class="sla_list_agent_col agent_name"></td> <td class="sla_list_module_col module_name"></td> <?php - if ($report_item_type == 'availability_graph') { + if ($report_item_type == 'availability_graph' + && $failover_mode + ) { ?> - <td class="sla_list_agent_secondary agent_name_secondary"></td> - <td class="sla_list_module_secondary module_name_secondary"></td> + <td class="sla_list_agent_failover agent_name_failover"></td> + <td class="sla_list_module_failover module_name_failover"></td> <?php } @@ -3030,20 +3101,22 @@ function print_SLA_list($width, $action, $idItem=null) </select> </td> <?php - if ($report_item_type == 'availability_graph') { + if ($report_item_type == 'availability_graph' + && $failover_mode + ) { ?> - <td class="sla_list_agent_secondary_col"> - <input id="hidden-id_agent_secondary" name="id_agent_secondary" value="" type="hidden"> - <input id="hidden-server_name_secondary" name="server_name_secondary" value="" type="hidden"> + <td class="sla_list_agent_failover_col"> + <input id="hidden-id_agent_failover" name="id_agent_failover" value="" type="hidden"> + <input id="hidden-server_name_failover" name="server_name_failover" value="" type="hidden"> <?php $params = []; $params['show_helptip'] = true; - $params['input_name'] = 'agent_secondary'; + $params['input_name'] = 'agent_failover'; $params['value'] = ''; $params['use_hidden_input_idagent'] = true; - $params['hidden_input_idagent_id'] = 'hidden-id_agent_secondary'; + $params['hidden_input_idagent_id'] = 'hidden-id_agent_failover'; $params['javascript_is_function_select'] = true; - $params['selectbox_id'] = 'id_agent_module_secondary'; + $params['selectbox_id'] = 'id_agent_module_failover'; $params['add_none_module'] = false; if ($meta) { $params['use_input_id_server'] = true; @@ -3054,8 +3127,8 @@ function print_SLA_list($width, $action, $idItem=null) ui_print_agent_autocomplete_input($params); ?> </td> - <td class="sla_list_module_secondary_col"> - <select id="id_agent_module_secondary" name="id_agent_module_secondary" disabled="disabled" style="max-width: 180px"> + <td class="sla_list_module_failover_col"> + <select id="id_agent_module_failover" name="id_agent_module_failover" disabled="disabled" style="max-width: 180px"> <option value="0"> <?php echo __('Select an Agent first'); @@ -3701,11 +3774,18 @@ $(document).ready (function () { $("#checkbox-checkbox_show_resume").change(function(){ if($(this).is(":checked")){ $("#row_select_fields2").show(); - $("#row_select_fields3").show(); } else{ $("#row_select_fields2").hide(); - $("#row_select_fields3").hide(); + } + }); + + $("#checkbox-failover_mode").change(function(){ + if($(this).is(":checked")){ + $("#row_failover_type").show(); + } + else{ + $("#row_failover_type").hide(); } }); }); @@ -3999,13 +4079,13 @@ function deleteGeneralRow(id_row) { function addSLARow() { var nameAgent = $("input[name=agent_sla]").val(); - var nameAgentSecondary = $("input[name=agent_secondary]").val(); + var nameAgentFailover = $("input[name=agent_failover]").val(); var idAgent = $("input[name=id_agent_sla]").val(); var serverId = $("input[name=id_server]").val(); var idModule = $("#id_agent_module_sla").val(); - var idModuleSecondary = $("#id_agent_module_secondary").val(); + var idModuleFailover = $("#id_agent_module_failover").val(); var nameModule = $("#id_agent_module_sla :selected").text(); - var nameModuleSecondary = $("#id_agent_module_secondary :selected").text(); + var nameModuleFailover = $("#id_agent_module_failover :selected").text(); var slaMin = $("input[name=sla_min]").val(); var slaMax = $("input[name=sla_max]").val(); var slaLimit = $("input[name=sla_limit]").val(); @@ -4066,11 +4146,11 @@ function addSLARow() { }); } - if (nameAgentSecondary != '') { - //Truncate nameAgentSecondary + if (nameAgentFailover != '') { + //Truncate nameAgentFailover var params = []; params.push("truncate_text=1"); - params.push("text=" + nameAgentSecondary); + params.push("text=" + nameAgentFailover); params.push("page=include/ajax/reporting.ajax"); jQuery.ajax ({ data: params.join ("&"), @@ -4088,14 +4168,14 @@ function addSLARow() { async: false, timeout: 10000, success: function (data) { - nameAgentSecondary = data; + nameAgentFailover = data; } }); - //Truncate nameModuleSecondary + //Truncate nameModuleFailover var params = []; params.push("truncate_text=1"); - params.push("text=" + nameModuleSecondary); + params.push("text=" + nameModuleFailover); params.push("page=include/ajax/reporting.ajax"); jQuery.ajax ({ data: params.join ("&"), @@ -4113,7 +4193,7 @@ function addSLARow() { async: false, timeout: 10000, success: function (data) { - nameModuleSecondary = data; + nameModuleFailover = data; } }); } @@ -4122,7 +4202,7 @@ function addSLARow() { params.push("add_sla=1"); params.push("id=" + $("input[name=id_item]").val()); params.push("id_module=" + idModule); - params.push("id_module_secondary=" + idModuleSecondary); + params.push("id_module_failover=" + idModuleFailover); params.push("sla_min=" + slaMin); params.push("sla_max=" + slaMax); params.push("sla_limit=" + slaLimit); @@ -4155,8 +4235,8 @@ function addSLARow() { $("#row", row).attr('id', 'sla_' + data['id']); $(".agent_name", row).html(nameAgent); $(".module_name", row).html(nameModule); - $(".agent_name_secondary", row).html(nameAgentSecondary); - $(".module_name_secondary", row).html(nameModuleSecondary); + $(".agent_name_failover", row).html(nameAgentFailover); + $(".module_name_failover", row).html(nameModuleFailover); $(".service_name", row).html(serviceName); $(".sla_min", row).html(slaMin); $(".sla_max", row).html(slaMax); @@ -4167,19 +4247,19 @@ function addSLARow() { ); $("#list_sla").append($(row).html()); $("input[name=id_agent_sla]").val(''); - $("input[name=id_agent_secondary]").val(''); + $("input[name=id_agent_failover]").val(''); $("input[name=id_server]").val(''); $("input[name=agent_sla]").val(''); - $("input[name=agent_secondary]").val(''); + $("input[name=agent_failover]").val(''); $("#id_agent_module_sla").empty(); $("#id_agent_module_sla").attr('disabled', 'true'); $("#id_agent_module_sla").append( $("<option></option>") .attr ("value", 0) .html ($("#module_sla_text").html())); - $("#id_agent_module_secondary").empty(); - $("#id_agent_module_secondary").attr('disabled', 'true'); - $("#id_agent_module_secondary").append( + $("#id_agent_module_failover").empty(); + $("#id_agent_module_failover").attr('disabled', 'true'); + $("#id_agent_module_failover").append( $("<option></option>") .attr ("value", 0) .html ($("#module_sla_text").html())); @@ -4360,6 +4440,8 @@ function chooseType() { $("#row_custom_example").hide(); $("#row_group").hide(); $("#row_current_month").hide(); + $("#row_failover_mode").hide(); + $("#row_failover_type").hide(); $("#row_working_time").hide(); $("#row_only_display_wrong").hide(); $("#row_combo_module").hide(); @@ -4533,6 +4615,11 @@ function chooseType() { $("#row_working_time").show(); $("#row_historical_db_check").hide(); $("#row_priority_mode").show(); + $("#row_failover_mode").show(); + var failover_checked = $("input[name='failover_mode']").prop("checked"); + if(failover_checked){ + $("#row_failover_type").show(); + } break; case 'module_histogram_graph': diff --git a/pandora_console/godmode/reporting/reporting_builder.php b/pandora_console/godmode/reporting/reporting_builder.php index d87a8f0e0a..1e552b112a 100755 --- a/pandora_console/godmode/reporting/reporting_builder.php +++ b/pandora_console/godmode/reporting/reporting_builder.php @@ -1441,6 +1441,14 @@ switch ($action) { $values['show_graph'] = get_parameter( 'combo_graph_options' ); + $values['failover_mode'] = get_parameter( + 'failover_mode', + 0 + ); + $values['failover_type'] = get_parameter( + 'failover_type', + REPORT_FAILOVER_TYPE_NORMAL + ); $good_format = true; break; @@ -2398,6 +2406,16 @@ switch ($action) { $values['current_month'] = get_parameter('current_month'); + $values['failover_mode'] = get_parameter( + 'failover_mode', + 0 + ); + + $values['failover_type'] = get_parameter( + 'failover_type', + REPORT_FAILOVER_TYPE_NORMAL + ); + $style = []; $style['show_in_same_row'] = get_parameter( 'show_in_same_row', diff --git a/pandora_console/include/ajax/reporting.ajax.php b/pandora_console/include/ajax/reporting.ajax.php index 16bdff9527..fa87ad72e0 100755 --- a/pandora_console/include/ajax/reporting.ajax.php +++ b/pandora_console/include/ajax/reporting.ajax.php @@ -65,7 +65,8 @@ if ($add_sla) { $sla_max = get_parameter('sla_max', 0); $sla_min = get_parameter('sla_min', 0); $server_id = (int) get_parameter('server_id', 0); - $id_module_secondary = (int) get_parameter('id_module_secondary', 0); + $id_module_failover = (int) get_parameter('id_module_failover', 0); + $id_server_failover = (int) get_parameter('id_server_failover', 0); $id_service = (int) get_parameter('id_service'); if (empty($id_module) && !empty($id_service)) { @@ -86,13 +87,14 @@ if ($add_sla) { $result = db_process_sql_insert( 'treport_content_sla_combined', [ - 'id_report_content' => $id, - 'id_agent_module' => $id_module, - 'id_agent_module_secondary' => $id_module_secondary, - 'sla_max' => $sla_max, - 'sla_min' => $sla_min, - 'sla_limit' => $sla_limit, - 'server_name' => $connection['server_name'], + 'id_report_content' => $id, + 'id_agent_module' => $id_module, + 'id_agent_module_failover' => $id_module_failover, + 'sla_max' => $sla_max, + 'sla_min' => $sla_min, + 'sla_limit' => $sla_limit, + 'server_name' => $connection['server_name'], + 'id_server_failover' => $id_server_failover, ] ); diff --git a/pandora_console/include/ajax/update_manager.ajax.php b/pandora_console/include/ajax/update_manager.ajax.php index 13ea1f560b..9c964536b1 100644 --- a/pandora_console/include/ajax/update_manager.ajax.php +++ b/pandora_console/include/ajax/update_manager.ajax.php @@ -134,7 +134,6 @@ if ($install_package) { $accept = (bool) get_parameter('accept', false); if ($accept) { - hd($accept, true); $package = (string) get_parameter('package'); $package = trim($package); diff --git a/pandora_console/include/functions_reporting.php b/pandora_console/include/functions_reporting.php index ce6d901740..62da376a69 100755 --- a/pandora_console/include/functions_reporting.php +++ b/pandora_console/include/functions_reporting.php @@ -53,6 +53,10 @@ require_once $config['homedir'].'/include/functions_network.php'; define('REPORT_PRIORITY_MODE_OK', 1); define('REPORT_PRIORITY_MODE_UNKNOWN', 2); +// Failover type. +define('REPORT_FAILOVER_TYPE_NORMAL', 1); +define('REPORT_FAILOVER_TYPE_SIMPLE', 2); + // Status. define('REPORT_STATUS_ERR', 0); define('REPORT_STATUS_OK', 1); @@ -6403,6 +6407,7 @@ function reporting_availability_graph($report, $content, $pdf=false) $return['title'] = $content['name']; $return['description'] = $content['description']; + $return['failover_type'] = $content['failover_type']; $return['date'] = reporting_get_date_text($report, $content); // Get chart. @@ -6458,18 +6463,20 @@ function reporting_availability_graph($report, $content, $pdf=false) } } - if (isset($sla['id_agent_module_secondary']) === true - && $sla['id_agent_module_secondary'] != 0 + if (isset($sla['id_agent_module_failover']) === true + && $sla['id_agent_module_failover'] != 0 ) { - $sla_secondary['primary'] = $sla; - $sla_secondary['failover'] = $sla; - $sla_secondary['failover']['id_agent_module'] = $sla['id_agent_module_secondary']; + $sla_failover = []; + $sla_failover['primary'] = $sla; + $sla_failover['failover'] = $sla; + $sla_failover['failover']['id_agent_module'] = $sla['id_agent_module_failover']; // For graph slice for module-interval, if not slice=0. $module_interval = modules_get_interval($sla['id_agent_module']); $slice = ($content['period'] / $module_interval); + $data_combined = []; - foreach ($sla_secondary as $k_sla => $v_sla) { + foreach ($sla_failover as $k_sla => $v_sla) { $sla_array = data_db_uncompress_module( $v_sla, $content, @@ -6477,14 +6484,16 @@ function reporting_availability_graph($report, $content, $pdf=false) $slice ); - $return = prepare_data_for_paint( - $v_sla, - $sla_array, - $content, - $report['datetime'], - $return, - $k_sla - ); + if ($content['failover_type'] == REPORT_FAILOVER_TYPE_NORMAL) { + $return = prepare_data_for_paint( + $v_sla, + $sla_array, + $content, + $report['datetime'], + $return, + $k_sla + ); + } $data_combined[] = $sla_array; } @@ -6493,8 +6502,10 @@ function reporting_availability_graph($report, $content, $pdf=false) && is_array($data_combined) === true && count($data_combined) > 0 ) { + $data_a = []; $data_a = array_map( function ($primary, $failover) { + $return_map = []; if ($primary['date_from'] === $failover['date_from'] && $primary['date_to'] === $failover['date_to'] ) { @@ -6517,10 +6528,10 @@ function reporting_availability_graph($report, $content, $pdf=false) $primary['sla_fixed'] = $failover['sla_fixed']; } - $return = $primary; + $return_map = $primary; } - return $return; + return $return_map; }, $data_combined[0], $data_combined[1] @@ -6778,7 +6789,7 @@ function reporting_get_planned_downtimes_sla($id_agent_module, $datetime, $perio * @param array $content Content report data. * @param integer $datetime Date. * @param array $return Array return. - * @param string $secondary Type secondaary primary, failover, Result. + * @param string $failover Type primary, failover, Result. * * @return array Return modify. */ @@ -6788,7 +6799,7 @@ function prepare_data_for_paint( $content, $datetime, $return, - $secondary='' + $failover='' ) { $data = []; $alias_agent = modules_get_agentmodule_agent_alias( @@ -6804,7 +6815,7 @@ function prepare_data_for_paint( $data['min'] = $sla['sla_min']; $data['sla_limit'] = $sla['sla_limit']; $data['dinamic_text'] = $dinamic_text; - $data['secondary'] = $secondary; + $data['failover'] = $failover; if (isset($sla_array[0])) { $data['time_total'] = 0; $data['time_ok'] = 0; @@ -6929,7 +6940,7 @@ function prepare_data_for_paint( $dataslice['sla_value'] = $data['sla_value']; $height = 80; - if ($secondary !== '' && $secondary !== 'result') { + if ($failover !== '' && $failover !== 'result') { $height = 50; } diff --git a/pandora_console/include/functions_reporting_html.php b/pandora_console/include/functions_reporting_html.php index ecad568d1d..e0cc6ff5ad 100644 --- a/pandora_console/include/functions_reporting_html.php +++ b/pandora_console/include/functions_reporting_html.php @@ -3284,7 +3284,7 @@ function reporting_html_availability_graph($table, $item, $pdf=0) } // Check failover availability report. - if ($item['data'][$k_chart]['secondary'] === '') { + if ($item['data'][$k_chart]['failover'] === '') { $table1 = new stdClass(); $table1->width = '99%'; $table1->data = []; @@ -3302,7 +3302,9 @@ function reporting_html_availability_graph($table, $item, $pdf=0) true ); } else { - if ($item['data'][$k_chart]['secondary'] === 'primary') { + if ($item['data'][$k_chart]['failover'] === 'primary' + || $item['failover_type'] == REPORT_FAILOVER_TYPE_SIMPLE + ) { $table1 = new stdClass(); $table1->width = '99%'; $table1->data = []; @@ -3316,7 +3318,7 @@ function reporting_html_availability_graph($table, $item, $pdf=0) $title = ''; $checks_resume_text = $checks_resume; $sla_value_text = "<span style = 'font: bold 2em Arial, Sans-serif; color: ".$color."'>".$sla_value.'</span>'; - switch ($item['data'][$k_chart]['secondary']) { + switch ($item['data'][$k_chart]['failover']) { case 'primary': $title = '<b>'.__('Primary').'</b>'; $title .= '<br />'.$chart['agent']; @@ -3339,12 +3341,12 @@ function reporting_html_availability_graph($table, $item, $pdf=0) break; } - $table1->data[$item['data'][$k_chart]['secondary']][0] = $title; - $table1->data[$item['data'][$k_chart]['secondary']][1] = $chart['chart']; - $table1->data[$item['data'][$k_chart]['secondary']][2] = $sla_value_text; - $table1->data[$item['data'][$k_chart]['secondary']][3] = $checks_resume_text; + $table1->data[$item['data'][$k_chart]['failover']][0] = $title; + $table1->data[$item['data'][$k_chart]['failover']][1] = $chart['chart']; + $table1->data[$item['data'][$k_chart]['failover']][2] = $sla_value_text; + $table1->data[$item['data'][$k_chart]['failover']][3] = $checks_resume_text; - if ($item['data'][$k_chart]['secondary'] === 'result') { + if ($item['data'][$k_chart]['failover'] === 'result') { $tables_chart .= html_print_table( $table1, true diff --git a/pandora_console/pandoradb.sql b/pandora_console/pandoradb.sql index e73d31209b..2776a42978 100644 --- a/pandora_console/pandoradb.sql +++ b/pandora_console/pandoradb.sql @@ -1452,6 +1452,8 @@ CREATE TABLE IF NOT EXISTS `treport_content` ( `agent_max_value` TINYINT(1) DEFAULT '1', `agent_min_value` TINYINT(1) DEFAULT '1', `current_month` TINYINT(1) DEFAULT '1', + `failover_mode` tinyint(1) DEFAULT '1', + `failover_type` tinyint(1) DEFAULT '1', PRIMARY KEY(`id_rc`), FOREIGN KEY (`id_report`) REFERENCES treport(`id_report`) ON UPDATE CASCADE ON DELETE CASCADE @@ -1464,7 +1466,8 @@ CREATE TABLE IF NOT EXISTS `treport_content_sla_combined` ( `id` INTEGER UNSIGNED NOT NULL auto_increment, `id_report_content` INTEGER UNSIGNED NOT NULL, `id_agent_module` int(10) unsigned NOT NULL, - `id_agent_module_secondary` int(10) unsigned NOT NULL, + `id_agent_module_failover` int(10) unsigned NOT NULL, + `id_server_failover` int(10) unsigned NOT NULL default 0, `sla_max` double(18,2) NOT NULL default 0, `sla_min` double(18,2) NOT NULL default 0, `sla_limit` double(18,2) NOT NULL default 0, @@ -2993,6 +2996,8 @@ CREATE TABLE IF NOT EXISTS `treport_content_template` ( `agent_max_value` TINYINT(1) DEFAULT '1', `agent_min_value` TINYINT(1) DEFAULT '1', `current_month` TINYINT(1) DEFAULT '1', + `failover_mode` tinyint(1) DEFAULT '1', + `failover_type` tinyint(1) DEFAULT '1', PRIMARY KEY(`id_rc`) ) ENGINE = InnoDB DEFAULT CHARSET=utf8; From beace34567c88c54ff487ca137778d81e233a07f Mon Sep 17 00:00:00 2001 From: Tatiana Llorente <tatiana.llorente@artica.es> Date: Tue, 2 Jul 2019 13:12:05 +0200 Subject: [PATCH 27/83] Created black theme - #4194 --- .../include/graphs/functions_d3.php | 25 +++++- pandora_console/include/graphs/pandora.d3.js | 14 ++- .../include/styles/pandora_black.css | 88 ++++++++++++++----- 3 files changed, 102 insertions(+), 25 deletions(-) diff --git a/pandora_console/include/graphs/functions_d3.php b/pandora_console/include/graphs/functions_d3.php index b9f2212b16..e3962bf729 100644 --- a/pandora_console/include/graphs/functions_d3.php +++ b/pandora_console/include/graphs/functions_d3.php @@ -740,6 +740,8 @@ function print_donut_narrow_graph( array $data, $data_total ) { + global $config; + if (empty($data)) { return graph_nodata_image($width, $height, 'pie'); } @@ -754,10 +756,31 @@ function print_donut_narrow_graph( $graph_id = uniqid('graph_'); + // This is for "Style template" in visual styles. + switch ($config['style']) { + case 'pandora': + $textColor = '#000'; + $strokeColor = '#fff'; + break; + + case 'pandora_black': + $textColor = '#fff'; + $strokeColor = '#222'; + break; + + default: + $textColor = '#000'; + $strokeColor = 'transparent'; + break; + } + + $textColor = json_encode($textColor); + $strokeColor = json_encode($strokeColor); + $out = "<div id='$graph_id'></div>"; $out .= include_javascript_d3(true); $out .= "<script type='text/javascript'> - donutNarrowGraph($colors, $width, $height, $data_total) + donutNarrowGraph($colors, $width, $height, $data_total, $textColor, $strokeColor) .donutbody(d3.select($graph_id)) .data($data) .render(); diff --git a/pandora_console/include/graphs/pandora.d3.js b/pandora_console/include/graphs/pandora.d3.js index 49d026ed0f..a334a85357 100644 --- a/pandora_console/include/graphs/pandora.d3.js +++ b/pandora_console/include/graphs/pandora.d3.js @@ -2762,7 +2762,14 @@ function valueToBytes(value) { return value.toFixed(2) + shorts[pos] + "B"; } -function donutNarrowGraph(colores, width, height, total) { +function donutNarrowGraph( + colores, + width, + height, + total, + textColor, + strokeColor +) { // Default settings var donutbody = d3.select("body"); var data = {}; @@ -2848,7 +2855,7 @@ function donutNarrowGraph(colores, width, height, total) { this._current = d; }) .attr("d", arc) - .attr("stroke", "white") + .attr("stroke", strokeColor) .style("fill", function(d) { return color(d.data.key); }); @@ -2872,7 +2879,7 @@ function donutNarrowGraph(colores, width, height, total) { .attr("y", 0 + radius / 10) .attr("class", "text-tooltip") .style("text-anchor", "middle") - //.attr("fill", "#82b92e") + .attr("fill", textColor) .style("font-size", function(d) { if (normal_status) { percentage_normal = (normal_status * 100) / total; @@ -2902,6 +2909,7 @@ function donutNarrowGraph(colores, width, height, total) { /* .attr("fill", function(d) { return color(obj.data.key); })*/ + .attr("fill", textColor) .style("font-size", function(d) { percentage = (d[obj.data.key] * 100) / total; if (Number.isInteger(percentage)) { diff --git a/pandora_console/include/styles/pandora_black.css b/pandora_console/include/styles/pandora_black.css index e2a4f41602..ad24a9012b 100644 --- a/pandora_console/include/styles/pandora_black.css +++ b/pandora_console/include/styles/pandora_black.css @@ -21,12 +21,14 @@ Description: The default Pandora FMS theme layout // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ +body, div#page, #menu_tab_frame, #menu_tab_frame_view, #menu_tab_frame_view_bc, input.search_input, .filters input, +input:-internal-autofill-selected, input#text-id_parent.ac_input, input, textarea, @@ -77,7 +79,10 @@ h4, .info_table > thead > tr > th > span, form.discovery label, .edit_user_labels, -.input_label { +.input_label, +.pagination, +tr.group_view_data, +.group_view_data { color: #fff; } @@ -86,6 +91,12 @@ form.discovery label, color: #fff !important; } +/* snmp */ +#snmp_browser { + background-color: #222 !important; +} + +/* General styles */ .box-shadow { box-shadow: none; } @@ -97,11 +108,29 @@ textarea:disabled { .status_tactical, .tactical_set, -.td-bg-white td { +.td-bg-white td, +#top_btn:hover { background-color: transparent; } -/* tables */ +.agent_details_col, +.white_table, +.white_table tr:first-child > th, +.white_table_graph_content { + background-color: #222; + color: #fff; +} + +.notify, +.notify h3 { + color: #000; +} + +.sort_arrow img { + filter: brightness(2.5) contrast(3.5); +} + +/* tables.css */ .info_table { background-color: #222; } @@ -118,9 +147,10 @@ textarea:disabled { .info_table > tbody > tr:hover, .databox.data > tbody > tr:hover, +.checkselected, .rowPair:hover, .rowOdd:hover { - background-color: #555 !important; /* porque tables.css se carga depues.... */ + background-color: #555 !important; } .info_table .datos3, @@ -130,27 +160,13 @@ textarea:disabled { background-color: #666; color: #fff; } -.agent_details_col, -.white_table, -.white_table tr:first-child > th, -.white_table_graph_content { - background-color: #222; - color: #fff; -} -/* action buttons in tables */ .action_buttons a[href] img, .action_buttons input[type="image"], .action_button_img { filter: brightness(2.5) contrast(50%); } -/* fix cosas generales */ -.notify, -.notify h3 { - color: #000; -} - /* firts_task.css */ .new_task, div.new_task_cluster, @@ -158,12 +174,21 @@ div.new_task_cluster > div { background-color: #222; } +/* events.css */ +.filter_summary div { + background: transparent; +} + /* webchat */ #chat_box, #userlist_box { background: #222 !important; } +#chat_box > div span { + color: #fff !important; +} + /* tree.css */ .node-content:hover { background-color: #222; @@ -187,6 +212,10 @@ div.login_pass input { border-bottom: 1px solid #5f5f5f; } +#user-notifications-wrapper { + color: #fff; +} + /* datatables */ table.dataTable tbody tr { background-color: #222; @@ -201,14 +230,17 @@ table#diagnostic_info { background-color: #111 !important; } +table#diagnostic_info th { + background-color: #444 !important; +} + table#diagnostic_info tbody td div { background-color: #222 !important; } /* agent view */ -.agent_details_graph div#status_pie { - background: #fff; - border-radius: 5px; +.buttons_agent_view { + filter: brightness(2.5); } /* menu.css */ @@ -231,7 +263,21 @@ table#diagnostic_info tbody td div { background-color: #080808; } +.sub_subMenu { + background-color: #343434; +} + /* footer */ div#foot { background: #222; } + +/* jquery custom */ +.ui-dialog, +.ui-widget-content { + background-color: #111; +} +.ui-widget-content, +.ui-widget-content a { + color: #fff; +} From dd8fc659ee050493c758e6f8a248a97f9db1656e Mon Sep 17 00:00:00 2001 From: Tatiana Llorente <tatiana.llorente@artica.es> Date: Tue, 2 Jul 2019 15:15:19 +0200 Subject: [PATCH 28/83] Created green theme - #4194 --- .../include/styles/pandora_black.css | 2 +- .../include/styles/pandora_green_old.css | 3761 +---------------- pandora_console/index.php | 1 - 3 files changed, 31 insertions(+), 3733 deletions(-) diff --git a/pandora_console/include/styles/pandora_black.css b/pandora_console/include/styles/pandora_black.css index ad24a9012b..2fcee7b2ae 100644 --- a/pandora_console/include/styles/pandora_black.css +++ b/pandora_console/include/styles/pandora_black.css @@ -6,7 +6,7 @@ Description: The default Pandora FMS theme layout // Pandora FMS - http://pandorafms.com // ========================================================== -// Copyright (c) 2004-2011 Artica Soluciones Tecnológicas S.L +// Copyright (c) 2004-2019 Artica Soluciones Tecnológicas S.L // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License diff --git a/pandora_console/include/styles/pandora_green_old.css b/pandora_console/include/styles/pandora_green_old.css index 7f03695a57..cb04b54d57 100644 --- a/pandora_console/include/styles/pandora_green_old.css +++ b/pandora_console/include/styles/pandora_green_old.css @@ -1,12 +1,12 @@ /* Author: The Pandora FMS team -Name: Green old theme +Name: GreenOld theme Description: The default Pandora FMS theme layout // Pandora FMS - http://pandorafms.com // ========================================================== -// Copyright (c) 2004-2011 Artica Soluciones Tecnológicas S.L +// Copyright (c) 2004-2019 Artica Soluciones Tecnológicas S.L // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License @@ -21,3771 +21,70 @@ Description: The default Pandora FMS theme layout // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -/* Tree view styles */ -@import url(tree.css); - -* { - font-family: verdana, sans-serif; - letter-spacing: 0.03pt; - font-size: 8pt; - color: #3f3f3f; -} -svg * { - font-size: 11pt; -} -body { - background-color: #fff; - margin: 0 auto; -} - -div#page { - background: #fff; - background-image: none; -} - -body.pure { - background-color: #fff; -} -input, -textarea { - border: 1px solid #ddd; -} - -textarea { - padding: 5px; - min-height: 100px; - width: 99%; -} -textarea.conf_editor { - padding: 5px; - width: 650px; - height: 350px; -} -textarea.conf_error { - background-image: url(../../images/err.png); - background-repeat: no-repeat; - background-position: top right; -} -input { - padding: 2px 3px 4px 3px; - vertical-align: middle; -} - -input[type="checkbox"] { - display: inline; -} - -select { - padding: 2px 3px 3px 3px; - vertical-align: middle; -} -input.button { - font-family: Arial, Sans-serif; - border: 4px solid #ccc; - background: #fff; - padding: 2px 3px; - margin: 10px 15px; -} - -input[type="submit"], -input[type="button"] { - cursor: pointer; -} - -select { - border: 1px solid #ddd; -} -checkbox { - padding: 4px; - border: 1px solid #eee; -} -h1, -h2, -h3, -h4 { - font-weight: bold; - font-size: 1em; - font-family: Arial, Sans-serif; - text-transform: uppercase; - color: #3f3f3f; - padding-bottom: 4px; - padding-top: 7px; -} -h1 { - font-size: 16px; -} -h2 { - font-size: 15px; -} -h3 { - font-size: 14px; -} -h4 { - margin-bottom: 10px; - font-size: 13px; - color: #3f3f3f; - text-transform: none; -} -a { - color: #3f3f3f; - text-decoration: none; -} -a:hover { - color: #373737; - text-decoration: underline; -} -a.white_bold { - color: #eee; - text-decoration: none; - font-weight: bold; -} -a.white { - color: #eee; - text-decoration: none; -} -p.center { - text-align: center; -} -h1#log_title { - font-size: 18px; - margin-bottom: 0px; - color: #fff; - width: 300px; -} -div#log_msg { - display: none; -} -div#error_buttons { - margin-top: 20px; -} -div#error_buttons a { - margin: 14px; -} - -#noaccess { - position: relative; - margin-top: 25px; - left: 15px; - padding-top: 5px; - background-color: #ffffff; - border-top-left-radius: 2px; - border-top-right-radius: 2px; - border-bottom-left-radius: 2px; - border-bottom-right-radius: 2px; -} - -#noaccess-title { - color: #fff; - font-weight: bold; - padding-top: 5px; - margin-left: 5px; - background: none repeat scroll 0% 0% #80ab51; - border-top-left-radius: 2px; - border-top-right-radius: 2px; - border-bottom-left-radius: 2px; - border-bottom-right-radius: 2px; - text-align: center; -} - -#noaccess-text { - font-size: 12px; - text-align: justify; - padding-top: 25px; - padding-right: 50px; - float: right; -} - -#noaccess-image { - position: relative; - left: 10px; - top: 10px; - float: left; -} - -div#activity { - padding-top: 0px; - padding-bottom: 18px; -} -div#noa { - float: right; - padding-right: 50px; - margin-top: 25px; -} -div#db_f { - text-align: justify; - margin: auto; - padding: 0.5em; - width: 55em; - margin-top: 3em; -} -div#db_ftxt { - float: right; - padding-top: 10px; -} -div#container { - margin: 0 auto; - min-width: 960px; - text-align: left; - #border-left: solid 2px #000; - #border-right: solid 2px #000; - #border-top: solid 2px #000; - #margin-top: 5px; - height: 100%; - background: #fff; -} -div#page { - width: 960px; - clear: both; -} -div#main { - width: auto; - margin: 0px 2% 0px 0%; - float: right; - position: relative; - min-height: 850px; -} -div#main_help { - width: 100%; - padding-left: 0px; - padding-top: 0px; - background-color: #ffffff; - margin-top: 0px; - margin-left: 0px; - margin-right: 0px; - border-radius: 10px; -} -div#main_help div.databox, -.license_databox { - background: F3F3F3; - -moz-border-radius: 8px; - -webkit-border-radius: 8px; - border-radius: 8px; - border: 0px; - padding-left: 25px; - padding-right: 25px; - margin-top: 10px; - -moz-box-shadow: -1px 1px 6px #aaa; - -webkit-box-shadow: -1px 1px 6px #aaa; - box-shadow: -1px 1px 6px #aaa; -} - -div#main_help div.databox h1 { - padding-bottom: 0px; - margin-bottom: 0px; - font-weight: bold; - font-family: sans-serif, verdana; -} - -div#main_help div.databox h3, -div#main_help div.databox h2 { - color: #6eb432; - font-family: sans-serif, verdana; -} - -div#main_help div.databox h3 { - font-size: 12px; -} - -div#main_help a.footer, -div#main_help span { - color: #999; -} - -a.footer, -a.footer span { - font-size: 9px; - color: white; -} - -div#main_help div.databox hr { - width: 100%; - border: 0px; - height: 1px; - background-color: #222; - margin: 0px; -} - -div#main_help div.databox p { - line-height: 15px; - text-align: justify; -} - -div#menu_container { - -moz-border-top-right-radius: 6px; - -webkit-border-top-right-radius: 6px; - border-top-right-radius: 6px; - z-index: 1010; - width: 40px; - height: 100%; -} - -div#menu { - width: 45px; - float: left; - z-index: 2000; - position: absolute; -} - +/* header */ div#head { - font-size: 8pt; - width: 100%; - height: 60px; - padding-top: 0px; - margin-bottom: 20px; - border-bottom-style: solid; - border-bottom-width: 3px; - border-color: #80ab51; - min-width: 882px; - background-color: #333; - color: white; - background-image: url("../../images/header.jpg"); -} - -.fixed_header { - z-index: 9999; - position: fixed; - left: 0; - top: 0; - width: 100%; -} - -div#foot { - font-size: 6pt; - border-top: solid 2px #222; - padding-top: 8px; - padding-bottom: 5px; - text-align: center; - background: #333333; - height: 30px; - clear: both; - width: auto; -} -#ver { - margin-bottom: 25px; -} - -/****************/ -/* LOGIN STYLES */ -/****************/ - -@font-face { - font-family: "Nunito"; - font-style: normal; - font-weight: 400; - src: local("Nunito-Regular"), url(../../fonts/nunito.woff) format("woff"); -} - -@font-face { - font-family: "roboto"; - src: url("../../fonts/roboto.woff2") format("woff2"); -} - -@font-face { - font-family: "opensans"; - src: url("../../fonts/opensans.woff2") format("woff2"); -} - -@font-face { - font-family: "lato"; - src: url("../../fonts/lato.woff2") format("woff2"); -} - -@font-face { - font-family: "leaguegothic"; - src: url("../../fonts/leaguegothic.woff") format("woff"); -} - -#login_body { - /* Set rules to fill background */ - min-height: 100%; - min-width: 1024px; - width: 100%; - z-index: -9999; - position: absolute; -} - -@media screen and (max-width: 1024px) { - /* Specific to this particular image */ - #login_body { - left: 50%; - margin-left: -512px; /* 50% */ - } -} -@media screen and (max-width: 1100px) { - /* Specific to this particular image */ - #login_body { - background-image: url("../../images/backgrounds/fondo_madera_bn_1100.jpg"); - background-repeat: repeat; - background-position: center center; - } -} -@media screen and (max-width: 1400px) { - /* Specific to this particular image */ - #login_body { - background-image: url("../../images/backgrounds/fondo_madera_bn_1400.jpg"); - background-repeat: repeat; - background-position: center center; - } -} -@media screen and (max-width: 2000px) { - /* Specific to this particular image */ - #login_body { - background-image: url("../../images/backgrounds/fondo_madera_bn_2000.jpg"); - background-repeat: repeat; - background-position: center center; - } -} -@media screen and (min-width: 2000px) { - /* Specific to this particular image */ - #login_body { - background-image: url("../../images/backgrounds/fondo_madera_bn_2500.jpg"); - background-repeat: repeat; - background-position: center center; - } -} - -p.log_in { - color: #fff; - padding: 0px 10px; - width: 300px; -} -h1#log_f { - color: #c00; - border-bottom: 1px solid #c00; - padding-bottom: 3px; -} -div#login { - border-width: 2px 2px 2px 2px; - border-style: solid; - border-color: #000; - font-size: 12px; -} -div#login_in, -#login_f { - /*margin: 0 auto 0 140px; - width: 400px;*/ -} - -.databox_login, -.databox_logout { - border-radius: 5px; - height: 200px; -} - -#login_inner { - width: 100%; - height: 100%; - border-radius: 5px; - /* Browser without multibackground support */ - background-color: #373737; -} -#login_outer { - border-radius: 11px; - background-color: #000; - width: 500px; - color: #fff; - margin: 0px auto; -} - -.version_login { - transform: rotate(36deg); - /* Old browser support */ - -ms-transform: rotate(36deg); /* IE */ - -moz-transform: rotate(36deg); /* FF */ - -o-transform: rotate(36deg); /* Opera */ - -webkit-transform: rotate(36deg); /* Safari and Chrome */ - - float: right; - margin-top: 18px; - width: 80px; - height: 0px; - border-right: 13px solid transparent; - border-left: 25px solid transparent; - border-bottom: 18px solid #80ab51; - left: 16px; - position: relative; -} - -#login_outer * { - font-family: Nunito, "Arial Rounded MT", Arial, Helvetica, sans-serif; - font-weight: bold; -} -.login_border { - border-right: 1px solid #fff; - text-align: center; -} -table#login_layout { - width: 100%; - height: 160px; - position: absolute; -} - -div#error_login { - text-align: center; - margin-top: 5px; - margin-left: 5px; - width: 75%; - float: right; - text-align: left; - top: 100px; -} - -div#error_login_icon { - #margin: 0 auto; - margin-top: 10px; - margin-right: 7px; - text-align: center; - #margin-left: 20px; - width: 20%; - float: right; -} - -div#login_f { - margin-top: 10px; - margin-bottom: 25px; -} - -a:focus, -input:focus, -button:focus { - utline-width: 0; - outline: 0; -} - -div.login_links { - margin: 10px 0px 0px; - color: #fff; - text-align: center; -} - -div.login_links > a { - color: #fff; -} - -div.login_button { - text-align: right; - width: 100%; - margin-top: 15px; -} - -div.login_button > input { - background-color: #373737; - border: 0px none; - background-image: url("../../images/input_go.png"); - padding-right: 25px; -} - -.login_page { - height: 200px; - padding-top: 10%; - text-align: center; - width: 100%; - position: absolute; -} - -input.next_login { - padding-right: 12px; - padding-left: 12px; - height: 23px; - text-align: center; - font-weight: 600; - letter-spacing: 0.5pt; - font-size: 12px; - border-radius: 3px; -} - -div.login_nick, -div.login_pass { - text-align: left; - padding-left: 15px; - margin-top: 10px; -} - -div.login_nick > input, -div.login_pass > input { - height: 20px; - border-radius: 0px; - margin-left: 10px; -} - -div.login_nick > input:focus, -div.login_pass > input:focus { - outline-width: 0px; - border-color: #80ab51; background-color: #80ab51; - font-size: 12px; - height: 20px; - box-shadow: 0px 0px 3px 3px #80ab51; -} - -div.login_nick > img, -div.login_pass > img { - vertical-align: middle; -} - -div.login_links a { - letter-spacing: 0.8pt; -} - -div.login_links a:first-child { - margin-right: 5px; -} - -div.login_links a:last-child { - margin-left: 5px; -} - -div.login_nick_text { - text-align: left; - margin-bottom: 3px; - width: 191px; - margin: 5px 0px; - font-size: 12px; - letter-spacing: 0.4pt; -} - -div.login_pass_text { - text-align: left; - width: 191px; - margin: 13px 0px 5px 0px; - font-size: 12px; - letter-spacing: 0.4pt; -} - -div.login_pass { -} - -input.login { - border: 0px none; - margin: 0px 0px; - width: 135px; - height: 18px; - font-weight: 100; - - letter-spacing: 0.3pt; -} - -input.login_user { - /* Browser without multibackground support */ - color: #373737; - padding-left: 8px; - width: 179px; - color: #222; - height: 18px; -} - -input.login_password { - /* Browser without multibackground support */ - padding-left: 8px; - width: 179px; - color: #222; - height: 20px; -} -.databox_error { - width: 657px; - height: 400px; - border: none; - background-color: #fafafa; - background: url(../../images/splash_error.png) no-repeat; -} - -#ver_num { - margin: 0px auto; - width: 100%; - position: absolute; - bottom: 10px; - color: #fff; - text-align: center; -} - -input:-webkit-autofill { - #-webkit-box-shadow: 0 0 0px 1000px #ddd inset; -} -/***********************/ -/* END OF LOGIN STYLES */ -/***********************/ - -th > label { - padding-top: 7px; -} -input.chk { - margin-right: 0px; - border: 0px none; - height: 14px; -} -input.datos { - background-color: #f5f5f5; -} -input.datos_readonly { - background-color: #050505; -} - -input.sub { - font-weight: normal; - - -moz-border-radius: 2px; - -webkit-border-radius: 2px; - border-radius: 2px; - - font-size: 8pt; - - background-color: #333; - background-repeat: no-repeat; - background-position: 92% 3px; - color: white; - padding: 3px 3px 5px 12px; - - border-color: #333; -} - -input.sub[disabled] { - color: #b4b4b4; - background-color: #f3f3f3; - border-color: #b6b6b6; - cursor: default; -} - -input.next, -input.upd, -input.ok, -input.wand, -input.delete, -input.cog, -input.target, -input.search, -input.copy, -input.add, -input.graph, -input.percentile, -input.binary, -input.camera, -input.config, -input.cancel, -input.default, -input.filter, -input.pdf { - padding-right: 30px; - height: 23px; -} - -input.next { - background-image: url(../../images/input_go.png); -} -input.upd { - background-image: url(../../images/input_update.png); -} -input.wand { - background-image: url(../../images/input_wand.png); -} -input.wand:disabled { - background-image: url(../../images/input_wand.disabled.png); -} -input.search { - background-image: url(../../images/input_zoom.png); -} -input.search:disabled { - background-image: url(../../images/input_zoom.disabled.png); -} -input.ok { - background-image: url(../../images/input_tick.png); -} -input.ok:disabled { - background-image: url(../../images/input_tick.disabled.png); -} -input.add { - background-image: url(../../images/input_add.png); -} -input.add:disabled { - background-image: url(../../images/input_add.disabled.png); -} -input.cancel { - background-image: url(../../images/input_cross.png); -} -input.cancel:disabled { - background-image: url(../../images/input_cross.disabled.png); -} -input.delete { - background-image: url(../../images/input_delete.png); -} -input.delete:disabled { - background-image: url(../../images/input_delete.disabled.png); -} -input.cog { - background-image: url(../../images/input_cog.png); -} -input.cog:disabled { - background-image: url(../../images/input_cog.disabled.png); -} -input.config { - background-image: url(../../images/input_config.png); -} -input.config:disabled { - background-image: url(../../images/input_config.disabled.png); -} -input.filter { - background-image: url(../../images/input_filter.png); -} -input.filter:disabled { - background-image: url(../../images/input_filter.disabled.png); -} -input.pdf { - background-image: url(../../images/input_pdf.png); -} -input.pdf:disabled { - background-image: url(../../images/input_pdf.disabled.png); -} -input.camera { - background-image: url(../../images/input_camera.png); -} - -#toolbox #auto_save { - padding-top: 5px; -} - -#toolbox { - margin-top: 13px; -} -input.visual_editor_button_toolbox { - padding-right: 15px; - padding-top: 10px; - margin-top: 5px; -} -input.delete_min { - background: #fefefe url(../../images/cross.png) no-repeat center; -} -input.delete_min[disabled] { - background: #fefefe url(../../images/cross.disabled.png) no-repeat center; -} -input.graph_min { - background: #fefefe url(../../images/chart_curve.png) no-repeat center; -} -input.graph_min[disabled] { - background: #fefefe url(../../images/chart_curve.disabled.png) no-repeat - center; -} -input.percentile_min { - background: #fefefe url(../../images/chart_bar.png) no-repeat center; -} -input.percentile_min[disabled] { - background: #fefefe url(../../images/chart_bar.disabled.png) no-repeat center; -} -input.percentile_item_min { - background: #fefefe url(../../images/percentile_item.png) no-repeat center; -} -input.percentile_item_min[disabled] { - background: #fefefe url(../../images/percentile_item.disabled.png) no-repeat - center; -} -input.binary_min { - background: #fefefe url(../../images/binary.png) no-repeat center; -} -input.binary_min[disabled] { - background: #fefefe url(../../images/binary.disabled.png) no-repeat center; -} -input.camera_min { - background: #fefefe url(../../images/camera.png) no-repeat center; -} -input.camera_min[disabled] { - background: #fefefe url(../../images/camera.disabled.png) no-repeat center; -} -input.config_min { - background: #fefefe url(../../images/config.png) no-repeat center; -} -input.config_min[disabled] { - background: #fefefe url(../../images/config.disabled.png) no-repeat center; -} -input.label_min { - background: #fefefe url(../../images/tag_red.png) no-repeat center; -} -input.label_min[disabled] { - background: #fefefe url(../../images/tag_red.disabled.png) no-repeat center; -} -input.icon_min { - background: #fefefe url(../../images/photo.png) no-repeat center; -} -input.icon_min[disabled] { - background: #fefefe url(../../images/photo.disabled.png) no-repeat center; -} -input.box_item { - background: #fefefe url(../../images/box_item.png) no-repeat center; -} -input.box_item[disabled] { - background: #fefefe url(../../images/box_item.disabled.png) no-repeat center; -} -input.line_item { - background: #fefefe url(../../images/line_item.png) no-repeat center; -} -input.line_item[disabled] { - background: #fefefe url(../../images/line_item.disabled.png) no-repeat center; -} -input.copy_item { - background: #fefefe url(../../images/copy_visualmap.png) no-repeat center; -} -input.copy_item[disabled] { - background: #fefefe url(../../images/copy_visualmap.disabled.png) no-repeat - center; -} -input.grid_min { - background: #fefefe url(../../images/grid.png) no-repeat center; -} -input.grid_min[disabled] { - background: #fefefe url(../../images/grid.disabled.png) no-repeat center; -} -input.save_min { - background: #fefefe url(../../images/file.png) no-repeat center; -} -input.save_min[disabled] { - background: #fefefe url(../../images/file.disabled.png) no-repeat center; -} -input.service_min { - background: #fefefe url(../../images/box.png) no-repeat center; -} -input.service_min[disabled] { - background: #fefefe url(../../images/box.disabled.png) no-repeat center; -} - -input.group_item_min { - background: #fefefe url(../../images/group_green.png) no-repeat center; -} -input.group_item_min[disabled] { - background: #fefefe url(../../images/group_green.disabled.png) no-repeat - center; -} - -div#cont { - position: fixed; - max-height: 320px; - overflow-y: auto; - overflow-x: hidden; -} - -.termframe { - background-color: #82b92e; -} - -table, -img { - border: 0px; -} - -tr:first-child > th { - background-color: #373737; -} - -th { - color: #fff; - background-color: #666; - font-size: 7.5pt; - letter-spacing: 0.3pt; -} -tr.datos, -tr.datost, -tr.datosb, -tr.datos_id, -tr.datosf9 { - #background-color: #eaeaea; -} - -tr.datos2, -tr.datos2t, -tr.datos2b, -tr.datos2_id, -tr.datos2f9 { - #background-color: #f2f2f2; -} - -tr.datos:hover, -tr.datost:hover, -tr.datosb:hover, -tr.datos_id:hover, -tr.datosf9:hover, -tr.datos2:hover, -tr.datos2t:hover, -tr.datos2b:hover, -tr.datos2_id:hover, -tr.datos2f9:hover { - #background-color: #efefef; -} - -/* Checkbox styles */ -td input[type="checkbox"] { - /* Double-sized Checkboxes */ - -ms-transform: scale(1.3); /* IE */ - -moz-transform: scale(1.3); /* FF */ - -o-transform: scale(1.3); /* Opera */ - -webkit-transform: scale(1.3); /* Safari and Chrome */ - padding: 10px; - margin-top: 2px; - display: table-cell; -} - -td.datos3, -td.datos3 * { - background-color: #666; - color: white; -} - -td.datos4, -td.datos4 * { - /*Add because in php the function html_print_table write style in cell and this is style head.*/ - text-align: center; - background-color: #666; - color: white; -} - -td.datos_id { - color: #1a313a; -} - -tr.disabled_row_user * { - color: grey; -} - -.bg { - /* op menu */ - background: #80ab51; -} - -.bg2 { - /* main page */ - background-color: #0a160c; -} -.bg3 { - /* godmode */ - background: #666666; -} -.bg4 { - /* links */ - background-color: #989898; -} -.bg, -.bg2, -.bg3, -.bg4 { - position: relative; - width: 100%; -} -.bg { - height: 20px; -} -.bg2, -.bg3, -.bg4 { - height: 18px; -} -.f10, -#ip { - font-size: 7pt; - text-align: center; -} -.f9, -.f9i, -.f9b, -.datos_greyf9, -.datos_bluef9, -.datos_greenf9, -.datos_redf9, -.datos_yellowf9, -td.f9, -td.f9i, -td.datosf9, -td.datos2f9 { - font-size: 6.5pt; -} -.f9i, -.redi { - font-style: italic; -} -.tit { - padding: 6px 0px; - height: 14px; -} -.tit, -.titb { - font-weight: bold; - color: #fff; - text-align: center; -} - -.suc * { - color: #5a8629; -} - -.info * { - color: #006f9d; -} - -.error * { - color: #f85858; -} - -.warning * { - color: #f3b200; -} - -.help { - background: url(../../images/help.png) no-repeat; -} -.red, -.redb, -.redi, -.error { - color: #c00; -} - -.sep { - margin-left: 30px; - border-bottom: 1px solid #708090; - width: 100%; -} -.orange { - color: #fd7304; -} -.green { - color: #5a8629; -} -.yellow { - color: #f3c500; -} -.greenb { - color: #00aa00; -} -.grey { - color: #808080; - font-weight: bold; -} -.blue { - color: #5ab7e5; - font-weight: bold; -} -.redb, -.greenb, -td.datos_id, -td.datos2_id, -f9b { - font-weight: bold; -} -.p10 { - padding-top: 1px; - padding-bottom: 0px; -} -.p21 { - padding-top: 2px; - padding-bottom: 1px; -} -.w120 { - width: 120px; -} -.w130, -#table-agent-configuration select { - width: 130px; -} -.w135 { - width: 135px; -} -.w155, -#table_layout_data select { - width: 155px; -} -.top, -.top_red, -.bgt, -td.datost, -td.datos2t { - vertical-align: top; -} -.top_red { - background: #ff0000; -} -.bot, -.titb, -td.datosb { - vertical-align: bottom; -} -.msg { - margin-top: 15px; - text-align: justify; -} -ul.mn { - list-style: none; - padding: 0px 0px 0px 0px; - margin: 0px 0px 0px 0px; - line-height: 15px; -} -.gr { - font-size: 10pt; - font-weight: bold; -} -a.mn, -.gr { - font-family: Arial, Verdana, sans-serif, Helvetica; -} -div.nf { - background: url(../../images/info.png) no-repeat scroll 0 50% transparent; - margin-left: 7px; - padding: 8px 1px 6px 25px; -} -div.title_line { - background-color: #4e682c; - height: 5px; - width: 762px; -} - -.alpha50 { - filter: alpha(opacity=50); - -moz-opacity: 0.5; - opacity: 0.5; - -khtml-opacity: 0.5; -} - -#menu_tab_frame, -#menu_tab_frame_view { - display: block; - border-bottom: 1px solid #82b92e; - /* float:left; */ - margin-left: 0px; - max-height: 42px; - min-height: 42px; - padding-right: 28px; - width: 100%; -} - -#menu_tab { - margin: 0px 0px 0px 0px; - position: absolute; - right: 0px; - top: 10px; -} - -#menu_tab .mn, -#menu_tab ul, -#menu_tab .mn ul { - padding: 0px; - list-style: none; - margin: 0px 0px 0px 0px; -} -#menu_tab .mn li { - float: right; - position: relative; - margin: 0px 0px 0px 0px; -} -/* -#menu_tab li a, #menu_tab a { - padding: 2px 0px; - font-weight: bold; - line-height: 18px; - margin-left: 3px; - margin-right: 0px; - - -moz-border-top-right-radius: 5px; - -webkit-border-top-right-radius: 5px; - border-top-right-radius: 5px; - - -moz-border-top-left-radius: 5px; - -webkit-border-top-left-radius: 5px; - border-top-left-radius: 5px; -} - -#menu_tab li>form { - padding-left: 7px; - padding-top: 4px; -} -*/ - -#menu_tab li.separator_view { - padding: 4px; -} - -#menu_tab li.separator { - padding: 4px; -} - -#menu_tab li.nomn_high a { - /*background: #80ab51;*/ - color: #fff; -} -#menu_tab .mn li a { - display: block; - text-decoration: none; - padding: 0px; - margin: 0px; - height: 21px; - width: 21px; -} -#menu_tab li.nomn:hover a, -#menu_tab li:hover ul a:hover { - /*background: #80ab51;*/ - color: #fff; -} -#menu_tab li:hover a { - /*background: #b2b08a url("../../images/arrow.png") no-repeat right 3px;*/ -} - -#menu_tab li.nomn { - min-width: 30px; - height: 28px; -} -#menu_tab li.nomn_high { - min-width: 30px; - height: 28px; -} -/* TAB TITLE */ -#menu_tab_left { - margin-left: 0px; -} - -#menu_tab_left .mn, -#menu_tab_left ul, -#menu_tab_left .mn ul { - background-color: #000; - color: #fff; - font-weight: bold; - padding: 0px 0px 0px 0px; - list-style: none; - margin: 0px 0px 0px 0px; -} -#menu_tab_left .mn li { - float: left; - position: relative; - height: 26px; - max-height: 26px; -} -#menu_tab_left li a, -#menu_tab_left li span { - /* text-transform: uppercase; */ - padding: 0px 0px 0px 0px; - color: #fff; - font-size: 8.5pt; - font-weight: bold; - line-height: 20px; -} -#menu_tab_left .mn li a { - display: block; - text-decoration: none; -} -#menu_tab_left li.view a { - padding: 2px 10px 2px 10px; - color: #fff; - font-weight: bold; - line-height: 18px; - display: none; -} - -#menu_tab_left li.view { - background: #80ab51; - max-width: 100%; - min-width: 100%; - padding: 5px 5px 0px; - text-align: left; - -moz-border-top-right-radius: 3px; - -webkit-border-top-right-radius: 3px; - border-top-right-radius: 3px; - - -moz-border-top-left-radius: 3px; - -webkit-border-top-left-radius: 3px; - border-top-left-radius: 3px; - margin-left: 0px; - overflow-y: hidden; -} - -#menu_tab_left li.view img.bottom { - width: 24px; - height: 24px; -} - -#menu_tab_frame *, -#menu_tab_frame_view * { - #margin: 0px 0px 0px 0px; -} - -span.users { - background: url(../../images/group.png) no-repeat; -} -span.agents { - background: url(../../images/bricks.png) no-repeat; -} -span.data { - background: url(../../images/data.png) no-repeat; -} -span.alerts { - background: url(../../images/bell.png) no-repeat; -} -span.time { - background: url(../../images/hourglass.png) no-repeat; -} -span.net { - background: url(../../images/network.png) no-repeat; + background-image: url(../../images/header.jpg); } -span.master { - background: url(../../images/master.png) no-repeat; -} -span.wmi { - background: url(../../images/wmi.png) no-repeat; -} -span.prediction { - background: url(../../images/chart_bar.png) no-repeat; -} -span.plugin { - background: url(../../images/plugin.png) no-repeat; -} -span.export { - background: url(../../images/database_refresh.png) no-repeat; -} -span.snmp { - background: url(../../images/snmp.png) no-repeat; -} -span.binary { - background: url(../../images/binary.png) no-repeat; -} -span.recon { - background: url(../../images/recon.png) no-repeat; -} -span.rmess { - background: url(../../images/email_open.png) no-repeat; -} -span.nrmess { - background: url(../../images/email.png) no-repeat; -} -span.recon_server { - background: url(../../images/recon.png) no-repeat; -} -span.wmi_server { - background: url(../../images/wmi.png) no-repeat; -} -span.export_server { - background: url(../../images/server_export.png) no-repeat; -} -span.inventory_server { - background: url(../../images/page_white_text.png) no-repeat; -} -span.web_server { - background: url(../../images/world.png) no-repeat; -} -/* This kind of span do not have any sense, should be replaced on PHP code -by a real img in code. They are not useful because insert too much margin around -(for example, not valid to use in the table of server view */ -span.users, -span.agents, -span.data, -span.alerts, -span.time, -span.net, -span.master, -span.snmp, -span.binary, -span.recon, -span.wmi, -span.prediction, -span.plugin, -span.plugin, -span.export, -span.recon_server, -span.wmi_server, -span.export_server, -span.inventory_server, -span.web_server { - margin-left: 4px; - margin-top: 10px; - padding: 4px 8px 12px 30px; - display: block; -} -span.rmess, -span.nrmess { - margin-left: 14px; - padding: 1px 0px 10px 30px; - display: block; -} -/* New styles for data box */ -.databox, -.databox_color, -.databox_frame { - margin-bottom: 5px; - margin-top: 0px; - margin-left: 0px; - border: 1px solid #e2e2e2; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - border-radius: 4px; -} -.databox_color { - padding-top: 5px; -} - -table.databox { - background-color: #f9faf9; - border-spacing: 0px; - -moz-box-shadow: 0px 0px 0px #ddd; - -webkit-box-shadow: 0px 0px 0px #ddd; - box-shadow: 0px 0px 0px #ddd; -} - -.databox td { - -moz-border-radius: 0px; - -webkit-border-radius: 0px; - border-radius: 0px; - border: 0px none #e2e2e2; -} - -.databox th { - padding: 9px 7px; - font-weight: normal; - color: #fff; -} -.databox td { - #border-bottom: 1px solid #e2e2e2; -} - -.databox th * { - color: #fff; -} - -.databox th input, -.databox th textarea, -.databox th select, -.databox th select option { - color: #222; -} - -.tabletitle { - color: #333; -} - -.tactical_set legend { - text-align: left; - color: #3f3f3f; -} - -.tactical_set { - background: #fff; - border: 1px solid #e2e2e2; - margin-left: auto; - margin-right: auto; - width: auto; -} - -/* For use in Netflow */ - -table.databox_grid { - margin: 25px; -} - -table.databox_grid th { - font-size: 12px; -} - -table.databox_grid td { - padding: 6px; - margin: 4px; - border-bottom: 1px solid #acacac; - border-right: 1px solid #acacac; -} - -table.alternate tr:nth-child(odd) td { - background-color: #ffffff; -} -table.alternate tr:nth-child(even) td { - background-color: #e4e5e4; -} - -table.rounded_cells td { - padding: 4px 4px 4px 10px; - -moz-border-radius: 6px; - -webkit-border-radius: 6px; - border-radius: 6px; -} - -.databox_color { - background-color: #fafafa; -} -#head_l { - float: left; - margin: 0; - padding: 0; -} -#head_r { - float: right; - text-align: right; - margin-right: 10px; - padding-top: 0px; -} -#head_m { - position: absolute; - padding-top: 6px; - padding-left: 12em; -} -span#logo_text1 { - font: bolder 3em Arial, Sans-serif; - letter-spacing: -2px; - color: #eee; -} -span#logo_text2 { - font: 3em Arial, Sans-serif; - letter-spacing: -2px; - color: #aaa; -} - -div#logo_text3 { - text-align: right; - font: 2em Arial, Sans-serif; - letter-spacing: 6px; - color: #aaa; - font-weight: bold; - margin-top: 0px; - margin-left: 4px; - padding-top: 0px; -} - -.bb0 { - border-bottom: 0px; -} -.bt0 { - border-top: 0px; -} -.action-buttons { - text-align: right; -} -#table-add-item select, -#table-add-sla select { - width: 180px; -} - -/* end of classes for event priorities */ -div#main_pure { - background-color: #fefefe; - text-align: left; - margin-bottom: 25px; - margin-top: 30px; - margin-left: 10px; - margin-right: 10px; - height: 1000px; - width: 98%; - position: static; -} -#table-agent-configuration radio { - margin-right: 40px; -} -.ui-draggable { - cursor: move; -} -#layout_trash_drop { - float: right; - width: 300px; - height: 180px; - background: #fff url("../../images/trash.png") no-repeat bottom left; -} -#layout_trash_drop div { - display: block; -} -#layout_editor_drop { - float: left; - width: 300px; -} -.agent_reporting { - margin: 5px; - padding: 5px; -} -.report_table, -.agent_reporting { - border: #ccc outset 3px; -} -.img_help { - cursor: help; -} -#loading { - position: fixed; - width: 200px; - margin-left: 30%; - text-align: center; - top: 50%; - background-color: #999999; - padding: 20px; -} -/* IE 7 Hack */ -#editor { - *margin-top: 10px; -} -/* big_data is used in tactical and logon_ok */ -.big_data { - text-decoration: none; - font: bold 2em Arial, Sans-serif; -} - -.med_data { - text-decoration: none; - font: bold 1.5em Arial, Sans-serif; -} - -.notify { - background-color: #f7ffa5; - text-align: center; - font-weight: bold; - padding: 8px; - margin: 0px 0px 0px 0px; - z-index: -1; -} - -.notify a { - color: #003a3a; - text-decoration: underline; -} - -.listing { - border-collapse: collapse; -} -.listing td { - border-bottom: 1px solid #cccccc; - border-top: 1px solid #cccccc; -} -ul { - list-style-type: none; - padding-left: 0; - margin-left: 0; -} -span.actions { - margin-left: 30px; -} -.actions { - min-width: 200px; -} -code, -pre { - font-family: courier, serif; -} -select#template, -select#action { - width: 250px; -} -#label-checkbox-matches_value, -#label-checkbox-copy_modules, -#label-checkbox-copy_alerts { - display: inline; - font-weight: normal; -} -input[type="image"] { - border: 0px; - background-color: transparent; -} -table#simple select#id_module_type, -table#alert_search select#id_agent, -table#alert_search select#id_group, -table#network_component select#type { - width: 200px; -} -table#simple select#select_snmp_oid, -table#simple select#id_plugin, -table#network_component select#id_plugin { - width: 270px; -} -table#simple select#prediction_id_group, -table#simple select#prediction_id_agent, -table#simple select#prediction_module { - width: 50%; - display: block; -} -table#simple input#text-plugin_parameter, -table#simple input#text-snmp_oid, -table#source_table select, -table#destiny_table select, -table#target_table select, -table#filter_compound_table select, -table#filter_compound_table #text-search, -table#delete_table select { - width: 100%; -} -table#simple select#network_component_group, -table#simple select#network_component { - width: 90%; -} -table#simple span#component_group, -table#simple span#component { - width: 45%; - font-style: italic; -} -table#simple label { - display: inline; - font-weight: normal; - font-style: italic; -} -.clickable { - cursor: pointer; -} -table#agent_list tr, -table.alert_list tr { - vertical-align: top; -} -.toggle { - border-collapse: collapse; -} -.toggle td { - border-left: 1px solid #d3d3d3; -} - -ul.actions_list { - list-style-image: url(../../images/arrow.png); - list-style-position: inside; - margin-top: 0; -} -div.loading { - background-color: #fff1a8; - margin-left: auto; - margin-right: auto; - padding: 5px; - text-align: center; - font-style: italic; - width: 95%; -} -div.loading img { - float: right; -} -/* Tablesorter jQuery pager */ -div.pager { - margin-left: 10px; - margin-top: 5px; -} -div.pager img { - position: relative; - top: 4px; - padding-left: 5px; -} -div.pager input { - padding-left: 5px; -} -.pagedisplay { - border: 0; - width: 35px; -} -/* Steps style */ -ol.steps { - margin-bottom: 15px; - padding: 0; - list-style-type: none; - list-style-position: outside; -} -ol.steps li { - float: left; - background-color: #efefef; - padding: 5px; - margin-left: 5px; - width: 150px; -} -ol.steps li a { - color: #111; -} -ol.steps li.visited a { - color: #999; -} -ol.steps li span { - font-weight: normal; - display: block; -} -ol.steps li span { - color: #777; -} -ol.steps li.visited span { - color: #999; -} -ol.steps li.current { - border-left: 5px solid #778866; - margin-left: 0; - font-weight: bold; - background-color: #e9f3d2; -} -ol.steps li.visited { - color: #999; -} - -fieldset { - background-color: #f9faf9; - border: 1px solid #e2e2e2; - padding: 0.5em; - margin-bottom: 20px; - position: relative; -} -fieldset legend { - font-size: 1.1em; - font-weight: bold; - #color: #3f4e2f; - line-height: 20px; - color: #3f3f3f; - #top: -2em; -} - -fieldset .databox { - border: 0px solid; -} - -fieldset.databox { - padding: 14px; -} - -fieldset legend span, -span#latest_value { - font-style: italic; -} -span#latest_value span#value { - font-style: normal; -} -form#filter_form { - margin-bottom: 15px; -} -ul.action_list { - margin: 0; - list-style: none inside circle; -} -ul.action_list li div { - margin-left: 15px; -} -span.action_name { - float: none; -} -div.actions_container { - overflow: auto; - width: 100%; - max-height: 200px; -} -div.actions_container label { - display: inline; - font-weight: normal; - font-style: italic; -} -a.add_action { - clear: both; - display: block; -} - -/* timeEntry styles */ -.timeEntry_control { - vertical-align: middle; - margin-left: 2px; -} -div#steps_clean { - clear: both; -} -div#event_control { - clear: right; -} - -/* Autocomplete styles */ -.ac_results { - padding: 0px; - border: 1px solid black; - background-color: white; - overflow: hidden; - z-index: 99999; -} - -.ac_results ul { - width: 100%; - list-style-position: outside; - list-style: none; - padding: 0; - margin: 0; - text-align: left; -} - -.ac_results li { - margin: 0px; - padding: 2px 5px; - cursor: default; - display: block; - /* - if width will be 100% horizontal scrollbar will apear - when scroll mode will be used - */ - /*width: 100%;*/ - font: menu; - font-size: 12px; - /* - it is very important, if line-height not setted or setted - in relative units scroll will be broken in firefox - */ - line-height: 16px; -} - -.ac_loading { - background: white url("../images/loading.gif") right center no-repeat; -} - -.ac_over { - background-color: #efefef; -} -span.ac_extra_field, -span.ac_extra_field strong { - font-style: italic; - font-size: 9px; -} - -div#pandora_logo_header { - /* Put here your company logo (139x60 pixels) like this: */ - /* background: url(../../images/MiniLogoArtica.jpg); */ - background: url(../../images/pandora_logo_head.png); - background-position: 0% 0%; - width: 139px; - height: 60px; - float: left; -} - -#header_table img { - margin-top: 0px; -} - -.autorefresh_disabled { - cursor: not-allowed; -} - -a.autorefresh { - padding-right: 8px; -} - -#refrcounter { - color: white; -} - -#combo_refr select { - margin-right: 8px; -} - -.disabled_module { - color: #aaa; -} -div.warn { - background: url(../../images/info.png) no-repeat; - margin-top: 7px; - padding: 2px 1px 6px 25px; -} - -.submenu_not_selected { - font-weight: normal; -} - -/* Submenus havent borders */ -.submenu_not_selected, -.submenu_selected, -.submenu2 { - border: 0px; - min-height: 35px; -} - -/* Pandora width style theme */ - -div#container { - width: 100%; -} -div#page { - width: auto; -} -div#main { - max-width: 93%; - min-width: 93%; -} - -ol.steps { - margin-bottom: 70px; -} -div#steps_clean { - display: none; -} - -#menu_tab_frame, -#menu_tab_frame_view { - width: 100%; - padding-right: 0px; - margin-left: 0px; - margin-bottom: 20px; - height: 31px; -} -div#events_list { - float: left; - width: 100%; -} -span#logo_text1 { - font: bolder 3em Arial, Sans-serif; - letter-spacing: -2px; - color: #eee; -} -span#logo_text2 { - font: 3em Arial, Sans-serif; - letter-spacing: -2px; - color: #aaa; -} -div#logo_text3 { - text-align: right; - font: 2em Arial, Sans-serif; - letter-spacing: 6px; - color: #aaa; - font-weight: bold; - margin-top: 0px; - margin-left: 4px; - padding-top: 0px; -} -.pagination { - margin-top: 15px; - margin-bottom: 5px; -} -.pagination * { - margin-left: 0px; - margin-right: 0px; - vertical-align: middle; -} - -/*CALENDAR TOOLTIP STYLE*/ -/* Calendar background */ -table.scw { +/* menu.css */ +.operation, +#menu_full { background-color: #80ab51; - border: 0; - border-radius: 4px; } -/* Week number heading */ -td.scwWeekNumberHead { - color: #111; +.operation .selected { + background-color: #d9fb86; } -td.scwWeek { - color: #111; +.operation li.selected { + box-shadow: inset 4px 0 #80ab51; } - -Today selector td.scwFoot { - background-color: #daedae; - color: #111; -} - -td.scwFootDisabled { - background-color: #000; - color: #ffffff; -} - -tfoot.scwFoot { - color: #111; -} - -.scwFoot :hover { - color: #3f3f3f; -} - -table.scwCells { - background-color: #fff; - color: #3c3c3c; -} - -table.scwCells:hover { - background-color: #fff; -} - -td.scwCellsExMonth { - background-color: #eee; - color: #3c3c3c; -} - -td.scwCellsWeekend { - background-color: #3c3c3c; - color: #fff; - border: 0; -} - -td.scwInputDate { - background-color: #777; - color: #ffffff; - border: 0; -} - -td.scwFoot { - background-color: #fff; - color: #3c3c3c; - border: 0; -} - -/* Cells divs to set individual styles with the table objects */ -div.cellBold { - width: 100%; - height: 100%; - font-weight: bold; -} - -div.cellRight { - width: 100%; - height: 100%; - text-align: right; -} - -div.cellCenter { - width: 100%; - height: 100%; - text-align: center; -} - -div.cellWhite { - width: 100%; - height: 100%; - background: #fff; - color: #111; -} - -div.cellNormal { - width: 100%; - height: 100%; - background: #6eb432; - color: #fff; -} - -div.cellCritical { - width: 100%; - height: 100%; - background: #f85858; - color: #fff; -} - -div.cellWarning { - width: 100%; - height: 100%; - background: #ffea59; - color: #111; -} - -div.cellUnknown { - width: 100%; - height: 100%; - background: #aaaaaa; - color: #ffffff; -} - -div.cellNotInit { - width: 100%; - height: 100%; - background: #4a83f3; - color: #ffffff; -} - -div.cellAlert { - width: 100%; - height: 100%; - background: #ff8800; - color: #111; -} - -div.cellBorder1 { - width: 100%; - height: 100%; - border: 1px solid #666; -} - -div.cellBig { - width: 100%; - height: 100%; - font-size: 18px; -} - -.info_box { - background: #f9faf9; - margin-top: 10px; - margin-bottom: 10px; - padding: 0px 5px 5px 10px; - border-color: #e2e2e2; - border-style: solid; - border-width: 1px; - width: 100%; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - border-radius: 4px; -} - -.info_box .title * { - font-size: 10pt; - font-weight: bolder; -} - -.info_box .icon { - width: 30px; - text-align: center; -} - -/* Standard styles for status colos (groups, events, backgrounds...) */ - -.opacity_cell { - filter: alpha(opacity=80); - -moz-opacity: 0.8; - opacity: 0.8; - -khtml-opacity: 0.8; -} - -tr.group_view_data, -.group_view_data { - color: #3f3f3f; -} - -tr.group_view_crit, -.group_view_crit { - background-color: #e63c52; - color: #fff; -} - -tr.group_view_norm, -.group_view_norm, -tr.group_view_normal, -.group_view_normal { - #background-color: #ffffff; -} -tr.group_view_ok, -.group_view_ok { - background-color: #82b92e; - color: #fff; -} - -tr.group_view_not_init, -.group_view_not_init, -tr.group_view_not_init, -.group_view_not_init { - background-color: #5bb6e5; - color: #fff; -} - -tr.group_view_warn, -.group_view_warn, -tr.group_view_warn.a, -a.group_view_warn, -tr.a.group_view_warn { - background-color: #f3b200; - color: #3f3f3f; -} - -a.group_view_warn { - color: #f3b200; -} - -tr.group_view_alrm, -.group_view_alrm { - background-color: #ffa631; - color: #fff; -} - -tr.group_view_unk, -.group_view_unk { - background-color: #b2b2b2; - color: #fff; -} - -/* classes for event priorities. Sits now in functions.php */ -.datos_green, -.datos_greenf9, -.datos_green a, -.datos_greenf9 a, -.datos_green * { - background-color: #82b92e; - color: #fff; -} -.datos_red, -.datos_redf9, -.datos_red a, -.datos_redf9 a, -.datos_red * { - background-color: #e63c52; - color: #fff; -} - -.datos_yellow, -.datos_yellowf9, -.datos_yellow * { - background-color: #f3b200; - color: #111; -} - -a.datos_blue, -.datos_bluef9, -.datos_blue, -.datos_blue * { - background-color: #4ca8e0; - color: #fff; -} - -.datos_grey, -.datos_greyf9, -.datos_grey * { - background-color: #999999; - color: #fff; -} - -.datos_pink, -.datos_pinkf9, -.datos_pink * { - background-color: #fdc4ca; - color: #111; -} - -.datos_brown, -.datos_brownf9, -.datos_brown * { - background-color: #a67c52; - color: #fff; -} - -.datos_orange, -.datos_orangef9, -.datos_orange * { - background-color: #f7931e; - color: #111; -} - -td.datos_greyf9, -td.datos_bluef9, -td.datos_greenf9, -td.datos_redf9, -td.datos_yellowf9, -td.datos_pinkf9, -td.datos_brownf9, -td.datos_orangef9 { - padding: 5px 5px 5px 5px; -} - -.menu li.selected { - font-weight: bold; -} - -ul.operation li a:hover { - #font-weight: bold; -} - -.submenu_text { - color: #fff; -} - -.submenu_not_selected { - color: #fff; -} - .operation .menu_icon:hover { background-color: #d9fb86; } -.operation .submenu_text:hover { - color: #585858; -} -.operation .submenu_not_selected:hover { - background-color: #d9fb86; - color: #585858; -} -.operation .submenu_selected:hover { - background-color: #d9fb86; - color: #585858; -} + .operation .sub_subMenu:hover { background-color: #d9fb86; color: #585858; } -.operation .selected .submenu_not_selected * { - color: #fff; + +.godmode .selected { + background-color: #a77853; } -.operation .selected .submenu_not_selected *:hover { - color: #585858; -} -.operation { - background-color: #80ab51; -} -.operation .selected { - background-color: #d9fb86; -} -.operation li.selected { - box-shadow: inset 4px 0 #80ab51; -} -.operation .selected .submenu_text_middle { - color: #585858; -} -.operation .submenu_selected .selected .submenu_text { - color: #585858; -} -.operation .submenu_selected .selected { - color: #585858; +.godmode li.selected { + box-shadow: inset 4px 0 #e79b5d; } .godmode .menu_icon:hover { background-color: #a77853; } -.godmode .submenu_text:hover { - color: #3f3f3f; -} -.godmode .submenu_not_selected:hover { - background-color: #a77853; - color: #2f2f2f; -} + +.godmode .submenu_not_selected:hover, .godmode .submenu_selected:hover { - background-color: #a77853; - color: #2f2f2f; + background-color: #a77853 !important; } + .godmode .sub_subMenu:hover { background-color: #a77853; color: #2f2f2f; } -.godmode .selected .submenu_not_selected * { - color: #fff; -} - -.godmode .selected .submenu_not_selected *:hover { - color: #2f2f2f; -} -.godmode { - background-color: #e79b5d; -} -.godmode .selected { - background-color: #a77853; -} -.godmode li.selected { - box-shadow: inset 4px 0 #e79b5d; -} -.godmode .selected .submenu_text_middle { - color: #2f2f2f; -} -.godmode .submenu_selected .selected .submenu_text { - color: #2f2f2f; -} -.godmode .submenu_selected .selected { - color: #2f2f2f; -} - -li.links a:hover { - #font-weight: bold; -} - -.is_submenu2 li { - background-color: #ff0000; -} - -.is_submenu2 { - background-color: #222222; -} - -.menu li, -.menu .li.not_selected { - border-radius: 0px 0px 0px 0px; - display: block; - min-height: 35px; - border-bottom: 0px none #424242; - vertical-align: middle; -} - -#menu_tab li.separator { - /* Empty */ -} - -.operation { - border-top-right-radius: 5px; - border-right-style: solid; - border-right-width: 0px; -} - -input#text-id_parent.ac_input, -input, -textarea, -select { - background-color: #ffffff; - border: 1px solid #cbcbcb; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - border-radius: 3px; -} - -span#plugin_description { - font-size: 9px; -} - -/*FOR TINYMCE*/ -#tinymce { - text-align: left; -} - -.visual_font_size_4pt, -.visual_font_size_4pt > em, -.visual_font_size_4pt > strong, -.visual_font_size_4pt > strong > span, -.visual_font_size_4pt > span, -.visual_font_size_4pt > strong > em, -.visual_font_size_4pt > em > strong, -.visual_font_size_4pt em span, -.visual_font_size_4pt span em { - font-size: 4pt; - line-height: 4pt; -} - -.visual_font_size_6pt, -.visual_font_size_6pt > em, -.visual_font_size_6pt > strong, -.visual_font_size_6pt > strong > span, -.visual_font_size_6pt > span, -.visual_font_size_6pt > strong > em, -.visual_font_size_6pt > em > strong, -.visual_font_size_6pt em span, -.visual_font_size_6pt span em { - font-size: 6pt; - line-height: 6pt; -} - -.visual_font_size_8pt, -.visual_font_size_8pt > em, -.visual_font_size_8pt > strong, -.visual_font_size_8pt > strong > span, -.visual_font_size_8pt > span, -.visual_font_size_8pt > strong > em, -.visual_font_size_8pt > em > strong, -.visual_font_size_8pt em span, -.visual_font_size_8pt span em { - font-size: 8pt; - line-height: 8pt; -} - -.visual_font_size_10pt, -.visual_font_size_10pt > em, -.visual_font_size_10pt > strong, -.visual_font_size_10pt > strong > em, -.visual_font_size_10pt > em > strong, -.visual_font_size_10pt em span, -.visual_font_size_10pt span em { - font-size: 10pt; - line-height: 10pt; -} - -.visual_font_size_12pt, -.visual_font_size_12pt > em, -.visual_font_size_12pt > strong, -.visual_font_size_12pt > strong > em, -.visual_font_size_12pt > em > strong, -.visual_font_size_12pt em span, -.visual_font_size_12pt span em { - font-size: 12pt; - line-height: 12pt; -} - -.visual_font_size_14pt, -.visual_font_size_14pt > em, -.visual_font_size_14pt > strong, -.visual_font_size_14pt > strong > span, -.visual_font_size_14pt > span, -.visual_font_size_14pt > strong > em, -.visual_font_size_14pt > em > strong, -.visual_font_size_14pt em span, -.visual_font_size_14pt span em { - font-size: 14pt; - line-height: 14pt; -} - -.visual_font_size_18pt, -.visual_font_size_18pt > em, -.visual_font_size_18pt > strong, -.visual_font_size_18pt > strong > span, -.visual_font_size_18pt > span, -.visual_font_size_18pt > strong > em, -.visual_font_size_18pt > em > strong, -.visual_font_size_18pt em span, -.visual_font_size_18pt span em { - font-size: 18pt; - line-height: 18pt; -} - -.visual_font_size_24pt, -.visual_font_size_24pt > em, -.visual_font_size_24pt > strong, -.visual_font_size_24pt > strong > span, -.visual_font_size_24pt > span, -.visual_font_size_24pt > strong > em, -.visual_font_size_24pt > em > strong, -.visual_font_size_24pt em span, -.visual_font_size_24pt span em { - font-size: 24pt; - line-height: 24pt; -} - -.visual_font_size_28pt, -.visual_font_size_28pt > em, -.visual_font_size_28pt > strong, -.visual_font_size_28pt > strong > span, -.visual_font_size_28pt > span, -.visual_font_size_28pt > strong > em, -.visual_font_size_28pt > em > strong, -.visual_font_size_28pt em span, -.visual_font_size_28pt span em { - font-size: 28pt; - line-height: 28pt; -} - -.visual_font_size_36pt, -.visual_font_size_36pt > em, -.visual_font_size_36pt > strong, -.visual_font_size_36pt > strong > span, -.visual_font_size_36pt > span, -.visual_font_size_36pt > strong > em, -.visual_font_size_36pt > em > strong, -.visual_font_size_36pt em span, -.visual_font_size_36pt span em { - font-size: 36pt; - line-height: 36pt; -} - -.visual_font_size_48pt, -.visual_font_size_48pt > em, -.visual_font_size_48pt > strong, -.visual_font_size_48pt > strong > span, -.visual_font_size_48pt > span, -.visual_font_size_48pt > strong > em, -.visual_font_size_48pt > em > strong, -.visual_font_size_48pt em span, -.visual_font_size_48pt span em { - font-size: 48pt; - line-height: 48pt; -} - -.visual_font_size_60pt, -.visual_font_size_60pt > em, -.visual_font_size_60pt > strong, -.visual_font_size_60pt > strong > span, -.visual_font_size_60pt > span, -.visual_font_size_60pt > strong > em, -.visual_font_size_60pt > em > strong, -.visual_font_size_60pt em span, -.visual_font_size_60pt span em { - font-size: 60pt; - line-height: 60pt; -} - -.visual_font_size_72pt, -.visual_font_size_72pt > em, -.visual_font_size_72pt > strong, -.visual_font_size_72pt > strong > span, -.visual_font_size_72pt > span, -.visual_font_size_72pt > strong > em, -.visual_font_size_72pt > em > strong, -.visual_font_size_72pt em span, -.visual_font_size_72pt span em { - font-size: 72pt; - line-height: 72pt; -} - -.visual_font_size_84pt, -.visual_font_size_84pt > em, -.visual_font_size_84pt > strong, -.visual_font_size_84pt > strong > span, -.visual_font_size_84pt > span, -.visual_font_size_84pt > strong > em, -.visual_font_size_84pt > em > strong, -.visual_font_size_84pt em span, -.visual_font_size_84pt span em { - font-size: 84pt; - line-height: 84pt; -} - -.visual_font_size_96pt, -.visual_font_size_96pt > em, -.visual_font_size_96pt > strong, -.visual_font_size_96pt > strong > span, -.visual_font_size_96pt > span, -.visual_font_size_96pt > strong > em, -.visual_font_size_96pt > em > strong, -.visual_font_size_96pt em span, -.visual_font_size_96pt span em { - font-size: 96pt; - line-height: 96pt; -} - -.visual_font_size_116pt, -.visual_font_size_116pt > em, -.visual_font_size_116pt > strong, -.visual_font_size_116pt > strong > span, -.visual_font_size_116pt > span, -.visual_font_size_116pt > strong > em, -.visual_font_size_116pt > em > strong, -.visual_font_size_116pt em span, -.visual_font_size_116pt span em { - font-size: 116pt; - line-height: 116pt; -} - -.visual_font_size_128pt, -.visual_font_size_128pt > em, -.visual_font_size_128pt > strong, -.visual_font_size_128pt > strong > span, -.visual_font_size_128pt > span, -.visual_font_size_128pt > strong > em, -.visual_font_size_128pt > em > strong, -.visual_font_size_128pt em span, -.visual_font_size_128pt span em { - font-size: 128pt; - line-height: 128pt; -} - -.visual_font_size_140pt, -.visual_font_size_140pt > em, -.visual_font_size_140pt > strong, -.visual_font_size_140pt > strong > span, -.visual_font_size_140pt > span, -.visual_font_size_140pt > strong > em, -.visual_font_size_140pt > em > strong, -.visual_font_size_140pt em span, -.visual_font_size_140pt span em { - font-size: 140pt; - line-height: 140pt; -} - -.visual_font_size_154pt, -.visual_font_size_154pt > em, -.visual_font_size_154pt > strong, -.visual_font_size_154pt > strong > span, -.visual_font_size_154pt > span, -.visual_font_size_154pt > strong > em, -.visual_font_size_154pt > em > strong, -.visual_font_size_154pt em span, -.visual_font_size_154pt span em { - font-size: 154pt; - line-height: 154pt; -} - -.visual_font_size_196pt, -.visual_font_size_196pt > em, -.visual_font_size_196pt > strong, -.visual_font_size_196pt > strong > span, -.visual_font_size_196pt > span, -.visual_font_size_196pt > strong > em, -.visual_font_size_196pt > em > strong, -.visual_font_size_196pt em span, -.visual_font_size_196pt span em { - font-size: 196pt; - line-height: 196pt; -} - -.resize_visual_font_size_8pt, -.resize_visual_font_size_8pt > em, -.resize_visual_font_size_8pt > strong, -.resize_visual_font_size_8pt > strong > span, -.resize_visual_font_size_8pt > span, -.resize_visual_font_size_8pt > strong > em, -.resize_visual_font_size_8pt > em > strong, -.visual_font_size_8pt em span, -.visual_font_size_8pt span em { - font-size: 4pt; - line-height: 4pt; -} -.resize_visual_font_size_14pt, -.resize_visual_font_size_14pt > em, -.resize_visual_font_size_14pt > strong, -.resize_visual_font_size_14pt > strong > span, -.resize_visual_font_size_14pt > span, -.resize_visual_font_size_14pt > strong > em, -.resize_visual_font_size_14pt > em > strong, -.visual_font_size_14pt em span, -.visual_font_size_14pt span em { - font-size: 7pt; - line-height: 7pt; -} -.resize_visual_font_size_24pt, -.resize_visual_font_size_24pt > em, -.resize_visual_font_size_24pt > strong, -.resize_visual_font_size_24pt > strong > span, -.resize_visual_font_size_24pt > span, -.resize_visual_font_size_24pt > strong > em, -.resize_visual_font_size_24pt > em > strong, -.visual_font_size_14pt em span, -.visual_font_size_14pt span em { - font-size: 12pt; - line-height: 12pt; -} -.resize_visual_font_size_36pt, -.resize_visual_font_size_36pt > em, -.resize_visual_font_size_36pt > strong, -.resize_visual_font_size_36pt > strong > span, -.resize_visual_font_size_36pt > span, -.resize_visual_font_size_36pt > strong > em, -.resize_visual_font_size_36pt > em > strong, -.visual_font_size_36pt em span, -.visual_font_size_36pt span em { - font-size: 18pt; - line-height: 18pt; -} -.resize_visual_font_size_72pt, -.resize_visual_font_size_72pt > em, -.resize_visual_font_size_72pt > strong, -.resize_visual_font_size_72pt > strong > span, -.resize_visual_font_size_72pt > span, -.resize_visual_font_size_72pt > strong > em, -.resize_visual_font_size_72pt > em > strong, -.visual_font_size_72pt em span, -.visual_font_size_72pt span em { - font-size: 36pt; - line-height: 36pt; -} -/*SIDEBAR*/ -.menu_sidebar { - color: #111; - background: #3f3f3f; - - margin-left: 10px; - padding-left: 0px; - padding-right: 0px; - padding-top: 10px; - text-align: left; - font-family: arial, sans-serif, verdana; - font-size: 10px; - border: 1px solid #000; - position: absolute; - margin: 0; - width: 400px; - height: 260px; - - -moz-box-shadow: 0px 4px 4px #010e1b; - -webkit-box-shadow: 0px 4px 4px #010e1b; - box-shadow: 0px 4px 4px #010e1b; - - filter: alpha(opacity=97); - -moz-opacity: 0.97; - opacity: 0.97; -} - -.menu_sidebar_radius_left { - -moz-border-top-left-radius: 8px; - -webkit-border-top-left-radius: 8px; - border-top-left-radius: 8px; - - -moz-border-bottom-left-radius: 8px; - -webkit-border-bottom-left-radius: 8px; - border-bottom-left-radius: 8px; - - border-right: 0px solid #000; -} - -.menu_sidebar_radius_right { - -moz-border-top-right-radius: 8px; - -webkit-border-top-right-radius: 8px; - border-top-right-radius: 8px; - -moz-border-bottom-right-radius: 8px; - -webkit-border-bottom-right-radius: 8px; - border-bottom-right-radius: 8px; -} - -.menu_sidebar_outer { - margin-left: 3px; - background: #ececec; - width: 100%; - text-align: center; - -moz-border-radius: 6px; - -webkit-border-radius: 6px; - border-radius: 6px; - padding: 8px; -} - -/*Groupsview*/ - -.groupsview { - border-spacing: 0px 4px; -} - -.groupsview tr { - background-color: #666; -} - -.groupsview th { - font-size: 12px; - padding: 5px; -} - -.groupsview td.first, -.groupsview th.first { - -moz-border-top-left-radius: 10px; - -webkit-border-top-left-radius: 10px; - border-top-left-radius: 10px; - - -moz-border-bottom-left-radius: 10px; - -webkit-border-bottom-left-radius: 10px; - border-bottom-left-radius: 10px; -} - -.groupsview td.last, -.groupsview th.last { - -moz-border-top-right-radius: 10px; - -webkit-border-top-right-radius: 10px; - border-top-right-radius: 10px; - -moz-border-bottom-right-radius: 10px; - -webkit-border-bottom-right-radius: 10px; - border-bottom-right-radius: 10px; -} - -a.tip { - display: inline; - cursor: help; -} - -a.tip > img { - margin-left: 2px; - margin-right: 2px; -} - -input.search_input { - background: white url("../../images/input_zoom.png") no-repeat right; - padding: 0px; - padding-left: 5px; - margin: 0; - width: 80%; - height: 19px; - margin-bottom: 5px; - margin-left: 2px; - padding-right: 25px; - color: #999; -} - -.vertical_fields td input, -.vertical_fields td select { - margin-top: 8px; -} - -a[id^="tgl_ctrl_"] > img, -a[id^="tgl_ctrl_"] > b > img { - vertical-align: middle; -} - -.noshadow { - -moz-box-shadow: 0px; - -webkit-box-shadow: 0px; - box-shadow: 0px; -} - -/* Images forced title */ - -div.forced_title_layer { - display: block; - text-decoration: none; - position: absolute; - z-index: 100000; - border: 1px solid #708090; - background-color: #666; - color: #fff; - padding: 4px 5px; - font-weight: bold; - font-size: small; - font-size: 11px; - /* IE 8 */ - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=9)"; - /* Netscape */ - -moz-opacity: 0.9; - opacity: 0.9; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - border-radius: 3px; -} - -/* Graphs styles */ - -div.legend > div { - pointer-events: none; /* Allow to click the graphs below */ - opacity: 0.65; -} - -div.nodata_text { - padding: 5px 12px 0px 68px; - font-weight: bold; - color: #c1c1c1; - text-transform: uppercase; - display: table-cell; - vertical-align: middle; - text-align: left; -} - -div.nodata_container { - width: 150px; - height: 100px; - background-repeat: no-repeat; - background-position: center; - margin: auto auto; - display: table; -} - -#snmp_data { - width: 40%; - position: absolute; - top: 0; - right: 20px; - - #background-color: #fff; - #padding: 10px; -} - -#rmf_data { - width: 40%; - height: 80%; - position: absolute; - top: 0; - right: 20px; - overflow: auto; - - #background-color: #fff; - #padding: 10px; -} - -/* Subtab styles */ - -ul.subsubmenu { - border-bottom-right-radius: 5px; - border-bottom-left-radius: 5px; - -moz-border-bottom-right-radius: 5px; - -moz-border-bottom-left-radius: 5px; - -webkit-border-bottom-right-radius: 5px; - -webkit-border-bottom-left-radius: 5px; - - background: #ececec; -} - -ul.subsubmenu li { - background-color: #ececec; - font-weight: bold; - text-decoration: none; - font-size: 14px; - border-color: #e2e2e2; - border-style: solid; - border-width: 1px; -} - -ul.subsubmenu li a { - padding: 0px 10px 5px; -} - -div#agent_wizard_subtabs { - position: absolute; - margin-left: 0px; - display: none; - padding-bottom: 3px; - z-index: 1000; -} - -.agent_wizard_tab:hover { - cursor: default; -} - -#container_servicemap_legend { - position: absolute; - width: 200px; - background: #fff; - margin-top: 10px; - right: 2px; - border: 1px solid #e2e2e2; - border-radius: 5px; - padding: 10px; - opacity: 0.9; -} - -#container_servicemap_legend table { - text-align: left; -} - -.legend_square { - width: 20px; - padding-left: 20px; - padding-right: 10px; -} - -.legend_square_simple { - padding-left: 0px; - padding-right: 10px; - padding-bottom: 3px; -} -.legend_square div, -.legend_square_simple div { - width: 20px; - height: 20px; - border-radius: 3px; -} - -.legend_basic { - background: #f4f4f4; - margin-top: 10px; - border-radius: 5px; - padding: 10px; -} - -.agents_modules_table th { - background: #3f3f3f; -} - -.agents_modules_table th * { - color: #ffffff; -} - -/* - * LOAD_ENTERPRISE.PHP - */ -#code_license_dialog { - padding: 50px; - padding-top: 10px; -} -#code_license_dialog #logo { - margin-bottom: 20px; - text-align: center; -} -#code_license_dialog, -#code_license_dialog * { - font-size: 14px; -} -#code_license_dialog ul { - padding-left: 30px; - list-style-image: url("../../images/input_tick.png"); -} -#code_license_dialog li { - margin-bottom: 12px; -} - -#code_license_dialog #code { - font-weight: bolder; - font-size: 20px; - border: 1px solid #dddddd; - padding: 5px; - text-align: center; - -moz-border-radius: 8px; - -webkit-border-radius: 8px; - border-radius: 8px; -} - -#code_license_dialog a { - text-decoration: underline; -} - -/* GRAPHS CSS */ - -.parent_graph { - position: relative; -} - -.menu_graph, -.timestamp_graph { - position: absolute; -} - -.menu_graph { - -moz-border-top-right-radius: 6px; - -webkit-border-top-right-radius: 6px; - border-top-right-radius: 6px; - -moz-border-top-left-radius: 6px; - -webkit-border-top-left-radius: 6px; - border-top-left-radius: 6px; -} - -.legend_graph { - margin: 0px; - padding: 0px; - text-align: left; -} - -.legendColorBox * { - font-size: 0px; - padding: 0px 4px; - overflow: visible; -} - -/* GIS CSS */ - -.olLayerDiv { - z-index: 102; -} - -/* Alert view */ - -table.alert_days th, -table.alert_time th { - height: 30px; - vertical-align: middle; -} - -table.alert_escalation th img { - width: 18px; -} - -td.used_field { - #border: solid #6eb432; - background: #6eb432; - color: #ffffff; - font-weight: bold; -} - -td.overrided_field { - color: #666; -} - -td.unused_field { - color: #888; -} - -td.empty_field { - background: url("../../images/long_arrow.png") no-repeat 100% center; -} - -#table_macros textarea { - width: 96%; -} - -/* Policies styles */ - -table#policy_modules td * { - display: inline; -} - -.context_help_title { - font-weight: bolder; - text-align: left; -} -.context_help_body { - text-align: left; -} - -#left_column_logon_ok { - width: 750px; - float: left; -} - -#news_board { - min-width: 530px; -} - -#right_column_logon_ok { - width: 350px; - float: right; - margin-right: 20px; -} - -#clippy_head_title { - font-weight: bold; - background: #80ab51; - color: #ffffff; - margin-top: -15px; - margin-left: -15px; - margin-right: -15px; - padding: 5px; - margin-bottom: 10px; - border-top-left-radius: 2px; - border-top-right-radius: 2px; -} - -#dialog-double_auth-container { - width: 100%; - text-align: center; - vertical-align: middle; -} - -.center_align { - text-align: center; -} - -.left_align { - text-align: left; -} - -.status_tactical { - width: 100%; - margin-left: auto; - margin-right: auto; - background-color: #fff; - padding: 10px; - border: 1px solid #e2e2e2; - margin-top: 5%; - text-align: left; -} - -.status_tactical img { - border: 3px solid #000; - border-radius: 100px; -} - -#sumary { - color: #fff; - margin: 15px; - padding: 10px 30px; - font-size: 20px; - font-weight: bold; - height: 66px; - width: 191px; - border-radius: 2px; -} - -.databox.data td { - border-bottom: 1px solid #e2e2e2; -} - -.databox .search { - margin-top: 0px; -} - -.databox.data td.progress_bar img { - border: 3px solid #000; - border-radius: 100px; -} - -.databox td { - padding-left: 9px; - padding-right: 9px; - padding-top: 7px; - padding-bottom: 7px; -} -.databox.pies fieldset.tactical_set { - width: 70%; - height: 285px; -} - -.difference { - border-left-width: 2px; - border-left-style: solid; - border-right-width: 2px; - border-right-style: solid; - border-color: #e2e2e2; -} - -#title_menu { - color: #fff; - float: right; - width: 70%; - letter-spacing: 0pt; - font-size: 8pt; - white-space: pre-wrap; -} - -.no_hidden_menu { - background-position: 11% 50%; -} - -#menu_tab li.nomn, -#menu_tab li.nomn_high { - background-color: #ececec; - padding-right: 3px; - padding-left: 3px; - font-weight: bold; - text-decoration: none; - font-size: 14px; - border-color: #e2e2e2; - border-style: solid; - border-width: 1px; - margin-top: -10px; -} - -#menu_tab li.nomn_high, -#menu_tab li.nomn_high span { - color: #fff; - background-color: #fff; -} - -#menu_tab li.nomn img, -#menu_tab li img { - margin-top: 3px; - margin-left: 3px; -} - -#menu_tab li.tab_operation a, -#menu_tab a.tab_operation { - background: none; -} - -.subsubmenu { - position: absolute; - float: right; - z-index: 9999; - display: none; - margin-top: 6px; - left: 0px; -} -.subsubmenu li { - margin-top: 0px; -} - -.agents_modules_table { - border: 1px solid #e2e2e2; - border-spacing: 0px; -} -.agents_modules_table td { - border: 1px solid #e2e2e2; -} -.agents_modules_table th { - border: 1px solid #e2e2e2; -} - -.databox.filters, -.databox.data, -.databox.profile_list { - margin-bottom: 20px; -} - -.databox.filters td { - padding: 10px; - padding-left: 20px; -} -.databox.profile_list td { - padding: 4px 1px; - padding-left: 5px; - border-bottom: 1px solid #e2e2e2; -} -.databox.profile_list a.tip > img { - margin: 0px; -} - -.databox.filters td > img, -.databox.filters td > div > a > img, -.databox.filters td > span > img, -.databox.filters td > span > a > img, -.databox.filters td > a > img { - vertical-align: middle; - margin-left: 5px; -} -.databox.data td > img, -.databox.data th > img, -.databox.data td > div > a > img, -.databox.data td > span > img, -.databox.data td > span > a > img, -.databox.data td > a > img, -.databox.data td > form > a > img { - vertical-align: middle; -} - -.databox.filters td > a > img { - vertical-align: middle; -} - -.databox.data td > input[type="checkbox"] { - margin: 0px; -} - -.databox_color td { - padding-left: 10px; -} - -.databox.agente td > div > canvas { - width: 100%; - text-align: left; -} -.databox.agente td > div.graph { - width: 100%; - text-align: left; -} - -.godmode, -.menu_icon ul li { - background-color: #222; -} -.operation .menu_icon ul li { - background-color: #333; -} - -.godmode { - border-top: 4px solid; - padding-bottom: 4px; - border-bottom-right-radius: 5px; - border-right-style: solid; - border-right-width: 0px; -} +/* General styles */ .green_title { background-color: #80ab51; - font-weight: normal; - text-align: center; } -.dashboard { - top: 23px; +/* Tabs */ +#menu_tab li.nomn_high, +#menu_tab li.nomn_high span { + box-shadow: inset 0px 4px #80ab51; } -.dashboard li a { - width: 158px; -} - -.text_subDashboard { - float: left; - margin-top: 5%; - margin-left: 3%; -} - -/* The items with the class 'spinner' will rotate */ -/* Not supported on IE9 and below */ -.spinner { - -webkit-animation: spinner 2s infinite linear; - animation: spinner 2s infinite linear; -} - -@-webkit-keyframes spinner { - 0% { - -ms-transform: rotate(0deg); /* IE */ - -moz-transform: rotate(0deg); /* FF */ - -o-transform: rotate(0deg); /* Opera */ - -webkit-transform: rotate(0deg); /* Safari and Chrome */ - transform: rotate(0deg); - } - 100% { - -ms-transform: rotate(359deg); /* IE */ - -moz-transform: rotate(359deg); /* FF */ - -o-transform: rotate(359deg); /* Opera */ - -webkit-transform: rotate(359deg); /* Safari and Chrome */ - transform: rotate(359deg); - } -} - -@keyframes spinner { - 0% { - -ms-transform: rotate(0deg); /* IE */ - -moz-transform: rotate(0deg); /* FF */ - -o-transform: rotate(0deg); /* Opera */ - -webkit-transform: rotate(0deg); /* Safari and Chrome */ - transform: rotate(0deg); - } - 100% { - -ms-transform: rotate(359deg); /* IE */ - -moz-transform: rotate(359deg); /* FF */ - -o-transform: rotate(359deg); /* Opera */ - -webkit-transform: rotate(359deg); /* Safari and Chrome */ - transform: rotate(359deg); - } -} - -#alert_messages { - -moz-border-bottom-right-radius: 5px; - -webkit-border-bottom-left-radius: 5px; - border-bottom-right-radius: 5px; - border-bottom-left-radius: 5px; - z-index: 3; - position: fixed; - width: 750px; - max-width: 750px; - min-width: 750px; - top: 20%; - background: white; -} -.modalheader { - text-align: center; - width: 100%; - height: 37px; - left: 0px; - background-color: #82b92e; -} -.modalheadertext { - color: white; - position: relative; - font-family: Nunito; - font-size: 13pt; - top: 8px; -} -.modalclosex { - cursor: pointer; - display: inline; - float: right; - margin-right: 10px; - margin-top: 10px; -} -.modalcontent { - color: black; - background: white; -} -.modalcontentimg { - float: left; - margin-left: 30px; - margin-top: 30px; - margin-bottom: 30px; -} -.modalcontenttext { - float: left; - text-align: justify; - color: black; - font-size: 9.5pt; - line-height: 13pt; - margin-top: 30px; - width: 430px; - margin-left: 30px; -} -.modalokbutton { - cursor: pointer; - text-align: center; - margin-right: 45px; - float: right; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - margin-bottom: 30px; - border-radius: 3px; - width: 90px; - height: 30px; - background-color: white; - border: 1px solid #82b92e; -} -.modalokbuttontext { - color: #82b92e; - font-family: Nunito; - font-size: 10pt; - position: relative; - top: 6px; -} -.modalgobutton { - cursor: pointer; - text-align: center; - margin-right: 15px; - margin-bottom: 30px; - float: right; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - border-radius: 3px; - width: 240px; - height: 30px; - background-color: white; - border: 1px solid #82b92e; -} -.modalgobuttontext { - color: #82b92e; - font-family: Nunito; - font-size: 10pt; - position: relative; - top: 6px; -} - -#opacidad { - opacity: 0.5; - z-index: 1; - width: 100%; - height: 100%; - position: absolute; - left: 0px; - top: 0px; -} - -.textodialogo { - margin-left: 0px; - color: #333; - padding: 20px; - font-size: 9pt; -} - -.cargatextodialogo { - max-width: 58.5%; - width: 58.5%; - min-width: 58.5%; - float: left; - margin-left: 0px; - font-size: 18pt; - padding: 20px; - text-align: center; -} - -.cargatextodialogo p, -.cargatextodialogo b, -.cargatextodialogo a { - font-size: 18pt; -} - -#toolbox > input { - border-width: 0px 1px 0px 0px; - border-color: lightgray; -} - -#toolbox > input.service_min { - border-width: 0px 0px 0px 0px; -} - -#toolbox > input.grid_min { - border-width: 0px 0px 0px 0px; -} - -#tinymce { - padding-top: 20px; -} - -.rowPair:hover, -.rowOdd:hover { - background-color: #eee; -} -.databox.data > tbody > tr:hover { - background-color: #eee; -} -.checkselected { - background-color: #eee; +#menu_tab_frame, +#menu_tab_frame_view, +#menu_tab_frame_view_bc { + border-bottom: 2px solid #80ab51; } diff --git a/pandora_console/index.php b/pandora_console/index.php index 58c5998b87..ab41aded18 100755 --- a/pandora_console/index.php +++ b/pandora_console/index.php @@ -1214,7 +1214,6 @@ echo "\n<!-- Page generated in $run_time seconds -->\n"; // Values from PHP to be recovered from JAVASCRIPT require 'include/php_to_js_values.php'; -// if ($config['style'] !== 'pandora') { ?> <script type="text/javascript" language="javascript"> From 51d7104de79d370a462b4452b8ae7b2d15b10a2f Mon Sep 17 00:00:00 2001 From: alejandro-campos <alejandro.campos@artica.es> Date: Tue, 2 Jul 2019 18:09:52 +0200 Subject: [PATCH 29/83] fix item name macros when using report templates --- pandora_console/include/functions_agents.php | 2 +- .../include/functions_reporting.php | 51 ++++++++++++++++--- 2 files changed, 44 insertions(+), 9 deletions(-) diff --git a/pandora_console/include/functions_agents.php b/pandora_console/include/functions_agents.php index affa4269d4..1ed3c028bd 100644 --- a/pandora_console/include/functions_agents.php +++ b/pandora_console/include/functions_agents.php @@ -1531,7 +1531,7 @@ function agents_get_alias($id_agent, $case='none') return $cache[$case][$id_agent]; } - if ($config['dbconnection_cache'] == null && is_metaconsole()) { + if (is_metaconsole()) { $alias = (string) db_get_value('alias', 'tmetaconsole_agent', 'id_tagente', (int) $id_agent); } else { $alias = (string) db_get_value('alias', 'tagente', 'id_agente', (int) $id_agent); diff --git a/pandora_console/include/functions_reporting.php b/pandora_console/include/functions_reporting.php index 00860ac116..46359c1471 100755 --- a/pandora_console/include/functions_reporting.php +++ b/pandora_console/include/functions_reporting.php @@ -11488,17 +11488,32 @@ function reporting_label_macro($item, $label) } if (preg_match('/_agentdescription_/', $label)) { - $agent_name = agents_get_description($item['id_agent']); + if (!is_metaconsole()) { + $agent_name = agents_get_description($item['id_agent']); + } else { + $agent_name = $item['agent_description']; + } + $label = str_replace('_agentdescription_', $agent_name, $label); } if (preg_match('/_agentgroup_/', $label)) { - $agent_name = groups_get_name(agents_get_agent_group($item['id_agent']), true); + if (!is_metaconsole()) { + $agent_name = groups_get_name(agents_get_agent_group($item['id_agent']), true); + } else { + $agent_name = $item['agent_group']; + } + $label = str_replace('_agentgroup_', $agent_name, $label); } if (preg_match('/_address_/', $label)) { - $agent_name = agents_get_address($item['id_agent']); + if (!is_metaconsole()) { + $agent_name = agents_get_address($item['id_agent']); + } else { + $agent_name = $item['agent_address']; + } + $label = str_replace('_address_', $agent_name, $label); } break; @@ -11537,7 +11552,11 @@ function reporting_label_macro($item, $label) if (count($item['agents']) > 1) { $agent_name = ''; } else { - $agent_name = agents_get_description($item['id_agent']); + if (!is_metaconsole()) { + $agent_name = agents_get_description($item['id_agent']); + } else { + $agent_name = $item['agent_description']; + } } $label = str_replace('_agentdescription_', $agent_name, $label); @@ -11547,7 +11566,11 @@ function reporting_label_macro($item, $label) if (count($item['agents']) > 1) { $agent_name = ''; } else { - $agent_name = groups_get_name(agents_get_agent_group($item['id_agent']), true); + if (!is_metaconsole()) { + $agent_name = groups_get_name(agents_get_agent_group($item['id_agent']), true); + } else { + $agent_name = $item['agent_group']; + } } $label = str_replace('_agentgroup_', $agent_name, $label); @@ -11557,7 +11580,11 @@ function reporting_label_macro($item, $label) if (count($item['agents']) > 1) { $agent_name = ''; } else { - $agent_name = agents_get_address($item['id_agent']); + if (!is_metaconsole()) { + $agent_name = agents_get_address($item['id_agent']); + } else { + $agent_name = $item['agent_address']; + } } $label = str_replace('_address_', $agent_name, $label); @@ -11567,7 +11594,11 @@ function reporting_label_macro($item, $label) if ($item['modules'] > 1) { $module_name = $item['modules'].__(' modules'); } else { - $module_name = modules_get_agentmodule_name($item['id_agent_module']); + if (!is_metaconsole()) { + $module_name = modules_get_agentmodule_name($item['id_agent_module']); + } else { + $module_name = $item['module_name']; + } } $label = str_replace('_module_', $module_name, $label); @@ -11577,7 +11608,11 @@ function reporting_label_macro($item, $label) if ($item['modules'] > 1) { $module_description = ''; } else { - $module_description = modules_get_agentmodule_descripcion($item['id_agent_module']); + if (!is_metaconsole()) { + $module_description = modules_get_agentmodule_descripcion($item['id_agent_module']); + } else { + $module_description = $item['module_description']; + } } $label = str_replace('_moduledescription_', $module_description, $label); From 3b68964f27a37de0137f95358a8fa17c6f2a1b76 Mon Sep 17 00:00:00 2001 From: artica <artica.devel@gmail.com> Date: Wed, 3 Jul 2019 00:01:12 +0200 Subject: [PATCH 30/83] 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 460dd6b7f9..109bc572a4 100644 --- a/pandora_agents/unix/DEBIAN/control +++ b/pandora_agents/unix/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-agent-unix -Version: 7.0NG.736-190702 +Version: 7.0NG.736-190703 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 90ce64b6d8..5f46072be1 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.736-190702" +pandora_version="7.0NG.736-190703" 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 8e46849482..fd04540106 100755 --- a/pandora_agents/unix/pandora_agent +++ b/pandora_agents/unix/pandora_agent @@ -42,7 +42,7 @@ my $Sem = undef; my $ThreadSem = undef; use constant AGENT_VERSION => '7.0NG.736'; -use constant AGENT_BUILD => '190702'; +use constant AGENT_BUILD => '190703'; # 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 62c86be6c3..f9c083395b 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.736 -%define release 190702 +%define release 190703 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 5c6cebed00..22d9a60423 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.736 -%define release 190702 +%define release 190703 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 30e9725bda..d1d92af45b 100755 --- a/pandora_agents/unix/pandora_agent_installer +++ b/pandora_agents/unix/pandora_agent_installer @@ -10,7 +10,7 @@ # ********************************************************************** PI_VERSION="7.0NG.736" -PI_BUILD="190702" +PI_BUILD="190703" OS_NAME=`uname -s` FORCE=0 diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi index d202a71b65..072442eca6 100644 --- a/pandora_agents/win32/installer/pandora.mpi +++ b/pandora_agents/win32/installer/pandora.mpi @@ -186,7 +186,7 @@ UpgradeApplicationID {} Version -{190702} +{190703} ViewReadme {Yes} diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc index 658a85c414..b9a8154b96 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.736(Build 190702)") +#define PANDORA_VERSION ("7.0NG.736(Build 190703)") string pandora_path; string pandora_dir; diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc index a572727e12..4e27f4fd19 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.736(Build 190702))" + VALUE "ProductVersion", "(7.0NG.736(Build 190703))" VALUE "FileVersion", "1.0.0.0" END END diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control index a3e4c8a1ba..a1f366f752 100644 --- a/pandora_console/DEBIAN/control +++ b/pandora_console/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-console -Version: 7.0NG.736-190702 +Version: 7.0NG.736-190703 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 110cc566c1..2e12856839 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.736-190702" +pandora_version="7.0NG.736-190703" package_pear=0 package_pandora=1 diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php index f8ea00a12d..b738586dd4 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 = 'PC190702'; +$build_version = 'PC190703'; $pandora_version = 'v7.0NG.736'; // Do not overwrite default timezone set if defined. diff --git a/pandora_console/install.php b/pandora_console/install.php index 7d57a69f04..e38e5e42e3 100644 --- a/pandora_console/install.php +++ b/pandora_console/install.php @@ -129,7 +129,7 @@ <div style='height: 10px'> <?php $version = '7.0NG.736'; - $build = '190702'; + $build = '190703'; $banner = "v$version Build $build"; error_reporting(0); diff --git a/pandora_console/pandora_console.redhat.spec b/pandora_console/pandora_console.redhat.spec index de7f488439..fb85742ba5 100644 --- a/pandora_console/pandora_console.redhat.spec +++ b/pandora_console/pandora_console.redhat.spec @@ -3,7 +3,7 @@ # %define name pandorafms_console %define version 7.0NG.736 -%define release 190702 +%define release 190703 # User and Group under which Apache is running %define httpd_name httpd diff --git a/pandora_console/pandora_console.rhel7.spec b/pandora_console/pandora_console.rhel7.spec index 176fbd8516..33e40e0760 100644 --- a/pandora_console/pandora_console.rhel7.spec +++ b/pandora_console/pandora_console.rhel7.spec @@ -3,7 +3,7 @@ # %define name pandorafms_console %define version 7.0NG.736 -%define release 190702 +%define release 190703 # User and Group under which Apache is running %define httpd_name httpd diff --git a/pandora_console/pandora_console.spec b/pandora_console/pandora_console.spec index bca3a6cbf9..7764799354 100644 --- a/pandora_console/pandora_console.spec +++ b/pandora_console/pandora_console.spec @@ -3,7 +3,7 @@ # %define name pandorafms_console %define version 7.0NG.736 -%define release 190702 +%define release 190703 %define httpd_name httpd # User and Group under which Apache is running %define httpd_name apache2 diff --git a/pandora_server/DEBIAN/control b/pandora_server/DEBIAN/control index 0c854c2f61..fc7cfac1aa 100644 --- a/pandora_server/DEBIAN/control +++ b/pandora_server/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-server -Version: 7.0NG.736-190702 +Version: 7.0NG.736-190703 Architecture: all Priority: optional Section: admin diff --git a/pandora_server/DEBIAN/make_deb_package.sh b/pandora_server/DEBIAN/make_deb_package.sh index eb73b7b9b4..6fa9f19eba 100644 --- a/pandora_server/DEBIAN/make_deb_package.sh +++ b/pandora_server/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.736-190702" +pandora_version="7.0NG.736-190703" package_cpan=0 package_pandora=1 diff --git a/pandora_server/lib/PandoraFMS/Config.pm b/pandora_server/lib/PandoraFMS/Config.pm index c29d7dba62..4b43f35b36 100644 --- a/pandora_server/lib/PandoraFMS/Config.pm +++ b/pandora_server/lib/PandoraFMS/Config.pm @@ -45,7 +45,7 @@ our @EXPORT = qw( # version: Defines actual version of Pandora Server for this module only my $pandora_version = "7.0NG.736"; -my $pandora_build = "190702"; +my $pandora_build = "190703"; our $VERSION = $pandora_version." ".$pandora_build; # Setup hash diff --git a/pandora_server/lib/PandoraFMS/PluginTools.pm b/pandora_server/lib/PandoraFMS/PluginTools.pm index 3417209015..3d613f8b6b 100644 --- a/pandora_server/lib/PandoraFMS/PluginTools.pm +++ b/pandora_server/lib/PandoraFMS/PluginTools.pm @@ -32,7 +32,7 @@ our @ISA = qw(Exporter); # version: Defines actual version of Pandora Server for this module only my $pandora_version = "7.0NG.736"; -my $pandora_build = "190702"; +my $pandora_build = "190703"; our $VERSION = $pandora_version." ".$pandora_build; our %EXPORT_TAGS = ( 'all' => [ qw() ] ); diff --git a/pandora_server/pandora_server.redhat.spec b/pandora_server/pandora_server.redhat.spec index b0bb8af72a..f6c06186e1 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.736 -%define release 190702 +%define release 190703 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec index 4f438c4752..6e1d85582a 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.736 -%define release 190702 +%define release 190703 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer index 748bd88761..1957c78f86 100755 --- a/pandora_server/pandora_server_installer +++ b/pandora_server/pandora_server_installer @@ -9,7 +9,7 @@ # ********************************************************************** PI_VERSION="7.0NG.736" -PI_BUILD="190702" +PI_BUILD="190703" MODE=$1 if [ $# -gt 1 ]; then diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl index 25dc343eb2..8e415f4a52 100644 --- a/pandora_server/util/pandora_db.pl +++ b/pandora_server/util/pandora_db.pl @@ -34,7 +34,7 @@ use PandoraFMS::Config; use PandoraFMS::DB; # version: define current version -my $version = "7.0NG.736 PS190702"; +my $version = "7.0NG.736 PS190703"; # Pandora server configuration my %conf; diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl index 3357cf0837..07d06cc368 100644 --- 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.736 PS190702"; +my $version = "7.0NG.736 PS190703"; # save program name for logging my $progname = basename($0); From c7e410b16daff3720d9fab29477c952a4d3abef6 Mon Sep 17 00:00:00 2001 From: Tatiana Llorente <tatiana.llorente@artica.es> Date: Wed, 3 Jul 2019 11:08:17 +0200 Subject: [PATCH 31/83] Added discovery submenus to main menu - #4203 --- pandora_console/godmode/menu.php | 20 +++++++++++++++++--- pandora_console/include/functions_menu.php | 3 +++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/pandora_console/godmode/menu.php b/pandora_console/godmode/menu.php index 14caf1b9cb..09a2aff770 100644 --- a/pandora_console/godmode/menu.php +++ b/pandora_console/godmode/menu.php @@ -24,9 +24,23 @@ $menu_godmode['class'] = 'godmode'; if (check_acl($config['id_user'], 0, 'PM')) { $sub = []; - $sub['godmode/servers/discovery']['text'] = __('Discovery'); - $sub['godmode/servers/discovery']['id'] = 'Discovery'; - $sub['godmode/servers/discovery']['subsecs'] = ['godmode/servers/discovery']; + $sub['godmode/servers/discovery&wiz=main']['text'] = __('Discovery Main'); + $sub['godmode/servers/discovery&wiz=main']['id'] = 'Discovery'; + + $sub['godmode/servers/discovery&wiz=tasklist']['text'] = __('Task list'); + $sub['godmode/servers/discovery&wiz=tasklist']['id'] = 'tasklist'; + + $sub['godmode/servers/discovery&wiz=app']['text'] = __('Applications'); + $sub['godmode/servers/discovery&wiz=app']['id'] = 'app'; + + $sub['godmode/servers/discovery&wiz=cloud']['text'] = __('Cloud'); + $sub['godmode/servers/discovery&wiz=cloud']['id'] = 'cloud'; + + $sub['godmode/servers/discovery&wiz=ctask']['text'] = __('Console task'); + $sub['godmode/servers/discovery&wiz=ctask']['id'] = 'ctask'; + + $sub['godmode/servers/discovery&wiz=hd']['text'] = __('Host & devices'); + $sub['godmode/servers/discovery&wiz=hd']['id'] = 'hd'; // Add to menu. $menu_godmode['discovery']['text'] = __('Discovery'); diff --git a/pandora_console/include/functions_menu.php b/pandora_console/include/functions_menu.php index 3f8a8cd33b..98191d231f 100644 --- a/pandora_console/include/functions_menu.php +++ b/pandora_console/include/functions_menu.php @@ -52,6 +52,9 @@ function menu_print_menu(&$menu) $sec2 = (string) get_parameter('sec2'); if ($sec2 == 'operation/agentes/ver_agente') { $sec2 = 'godmode/agentes/configurar_agente'; + } else if ($sec2 == 'godmode/servers/discovery') { + $wiz = (string) get_parameter('wiz'); + $sec2 = 'godmode/servers/discovery&wiz='.$wiz; } else { $sec2 = (string) get_parameter('sec2'); } From 18d8f90f90503b8a5e672be57c4bad1a1561a139 Mon Sep 17 00:00:00 2001 From: fbsanchez <fborja.sanchez@artica.es> Date: Wed, 3 Jul 2019 16:04:40 +0200 Subject: [PATCH 32/83] Credential store upgrade Azure --- pandora_console/godmode/groups/credential_store.php | 4 ++-- pandora_console/include/functions_credential_store.php | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pandora_console/godmode/groups/credential_store.php b/pandora_console/godmode/groups/credential_store.php index 9a822dc986..8c9540d581 100644 --- a/pandora_console/godmode/groups/credential_store.php +++ b/pandora_console/godmode/groups/credential_store.php @@ -534,8 +534,8 @@ echo '</div>'; $('#div-extra_1').hide(); $('#div-extra_2').hide(); } else if ($('#product :selected').val() == "AZURE") { - $('#div-username label').text('<?php echo __('Account ID'); ?>'); - $('#div-password label').text('<?php echo __('Password'); ?>'); + $('#div-username label').text('<?php echo __('Client ID'); ?>'); + $('#div-password label').text('<?php echo __('Application secret'); ?>'); $('#div-extra_1 label').text('<?php echo __('Tenant or domain name'); ?>'); $('#div-extra_2 label').text('<?php echo __('Subscription id'); ?>'); $('#div-extra_1').show(); diff --git a/pandora_console/include/functions_credential_store.php b/pandora_console/include/functions_credential_store.php index cf09e6d67b..0293cf9721 100644 --- a/pandora_console/include/functions_credential_store.php +++ b/pandora_console/include/functions_credential_store.php @@ -292,8 +292,8 @@ function print_inputs($values=null) 'script' => 'calculate_inputs()', 'fields' => [ // 'CUSTOM' => __('Custom'), - 'AWS' => __('Aws'), - // 'AZURE' => __('Azure'), + 'AWS' => __('Aws'), + 'AZURE' => __('Azure'), // 'GOOGLE' => __('Google'), ], 'selected' => $values['product'], @@ -319,7 +319,7 @@ function print_inputs($values=null) case 'AZURE': $user_label = __('Account ID'); - $pass_label = __('Password'); + $pass_label = __('Application secret'); $extra_1_label = __('Tenant or domain name'); $extra_2_label = __('Subscription id'); break; From 07edee619a92b7178006b90ab80c9ce4a7cebdc4 Mon Sep 17 00:00:00 2001 From: fbsanchez <fborja.sanchez@artica.es> Date: Wed, 3 Jul 2019 16:38:26 +0200 Subject: [PATCH 33/83] CS filtering and constant --- pandora_console/include/constants.php | 1 + pandora_console/include/functions_credential_store.php | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/pandora_console/include/constants.php b/pandora_console/include/constants.php index 69e867bb40..c5cce5d347 100644 --- a/pandora_console/include/constants.php +++ b/pandora_console/include/constants.php @@ -602,6 +602,7 @@ define('DISCOVERY_SCRIPT_IPAM_RECON', 3); define('DISCOVERY_SCRIPT_IPMI_RECON', 4); // Discovery task descriptions. +define('CLOUDWIZARD_AZURE_DESCRIPTION', 'Discovery.Cloud.Azure.Compute'); define('CLOUDWIZARD_AWS_DESCRIPTION', 'Discovery.Cloud.AWS.EC2'); define('CLOUDWIZARD_VMWARE_DESCRIPTION', 'Discovery.App.VMware'); diff --git a/pandora_console/include/functions_credential_store.php b/pandora_console/include/functions_credential_store.php index 0293cf9721..20b643d0b8 100644 --- a/pandora_console/include/functions_credential_store.php +++ b/pandora_console/include/functions_credential_store.php @@ -72,6 +72,10 @@ function credentials_get_all( throw new Exception('[credential_get_all] Fields must be an array or "count".'); } + if (isset($filter['product']) && !empty($filter['product'])) { + $sql_filters[] = sprintf(' AND cs.product = "%s"', $filter['product']); + } + if (isset($filter['free_search']) && !empty($filter['free_search'])) { $sql_filters[] = vsprintf( ' AND (lower(cs.username) like lower("%%%s%%") @@ -163,7 +167,7 @@ function credentials_get_all( %s %s', join(',', $fields), - join(',', $sql_filters), + join(' ', $sql_filters), $order_by, $pagination ); From 2ad44fcf90274718c24ba956cbd2bea2ff3bee01 Mon Sep 17 00:00:00 2001 From: "marcos.alconada" <marcos.alconada@artica.es> Date: Wed, 3 Jul 2019 17:07:31 +0200 Subject: [PATCH 34/83] final merge 3360 ticket --- pandora_console/include/functions_agents.php | 8 +++++++- pandora_console/include/functions_reporting.php | 7 ++++--- pandora_console/include/functions_reporting_html.php | 3 ++- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/pandora_console/include/functions_agents.php b/pandora_console/include/functions_agents.php index affa4269d4..5ca9ae3e23 100644 --- a/pandora_console/include/functions_agents.php +++ b/pandora_console/include/functions_agents.php @@ -1554,7 +1554,13 @@ function agents_get_alias($id_agent, $case='none') function agents_get_alias_by_name($name, $case='none') { - $alias = (string) db_get_value('alias', 'tagente', 'nombre', $name); + if (is_metaconsole()) { + $table = 'tmetaconsole_agent'; + } else { + $table = 'tagente'; + } + + $alias = (string) db_get_value('alias', $table, 'nombre', $name); switch ($case) { case 'upper': diff --git a/pandora_console/include/functions_reporting.php b/pandora_console/include/functions_reporting.php index 4261518b68..3a62fab322 100755 --- a/pandora_console/include/functions_reporting.php +++ b/pandora_console/include/functions_reporting.php @@ -6969,6 +6969,7 @@ function reporting_general($report, $content) $mod_name = modules_get_agentmodule_name($row['id_agent_module']); $ag_name = modules_get_agentmodule_agent_alias($row['id_agent_module']); + $name_agent = modules_get_agentmodule_agent_name($row['id_agent_module']); $type_mod = modules_get_last_value($row['id_agent_module']); $is_string[$index] = modules_is_string($row['id_agent_module']); $unit = db_get_value( @@ -7043,12 +7044,12 @@ function reporting_general($report, $content) } if ($data_res[$index] === false) { - $return['data'][$ag_name][$mod_name] = null; + $return['data'][$name_agent][$mod_name] = null; } else { if (!is_numeric($data_res[$index])) { - $return['data'][$ag_name][$mod_name] = $data_res[$index]; + $return['data'][$name_agent][$mod_name] = $data_res[$index]; } else { - $return['data'][$ag_name][$mod_name] = format_for_graph($data_res[$index], 2).' '.$unit; + $return['data'][$name_agent][$mod_name] = format_for_graph($data_res[$index], 2).' '.$unit; } } break; diff --git a/pandora_console/include/functions_reporting_html.php b/pandora_console/include/functions_reporting_html.php index c8d5b3e29e..9e6da3a07f 100644 --- a/pandora_console/include/functions_reporting_html.php +++ b/pandora_console/include/functions_reporting_html.php @@ -3496,7 +3496,8 @@ function reporting_html_general($table, $item, $pdf=0) $table1->head = array_merge([__('Agent')], $list_modules); foreach ($item['data'] as $agent => $modules) { $row = []; - $row['agent'] = $agent; + $alias = agents_get_alias_by_name($agent); + $row['agent'] = $alias; $table1->style['agent'] = 'text-align: center;'; foreach ($list_modules as $name) { $table1->style[$name] = 'text-align: center;'; From 22734a4ea29d4289b42403a726bec14ad2438269 Mon Sep 17 00:00:00 2001 From: Daniel Barbero Martin <daniel.barbero@artica.es> Date: Wed, 3 Jul 2019 17:51:47 +0200 Subject: [PATCH 35/83] WIP failover --- pandora_console/extras/mr/30.sql | 2 + .../agentes/module_manager_editor_common.php | 146 +++++++++++------- pandora_console/include/ajax/module.php | 17 +- pandora_console/include/functions_modules.php | 9 +- .../include/functions_networkmap.php | 20 ++- .../include/functions_reporting.php | 108 ++++++++----- .../include/functions_reporting_html.php | 2 +- pandora_console/pandoradb.sql | 1 + .../lib/PandoraFMS/DiscoveryServer.pm | 2 +- .../util/recon_scripts/snmp-recon.pl | 2 +- 10 files changed, 200 insertions(+), 109 deletions(-) diff --git a/pandora_console/extras/mr/30.sql b/pandora_console/extras/mr/30.sql index 0e37d30c35..2de6e9cc19 100644 --- a/pandora_console/extras/mr/30.sql +++ b/pandora_console/extras/mr/30.sql @@ -9,4 +9,6 @@ ALTER TABLE `treport_content` ADD COLUMN `failover_type` tinyint(1) DEFAULT '0'; ALTER TABLE `treport_content_template` ADD COLUMN `failover_mode` tinyint(1) DEFAULT '1'; ALTER TABLE `treport_content_template` ADD COLUMN `failover_type` tinyint(1) DEFAULT '1'; +ALTER TABLE `tmodule_relationship` ADD COLUMN `type` ENUM('direct', 'failover') DEFAULT 'direct'; + COMMIT; \ No newline at end of file diff --git a/pandora_console/godmode/agentes/module_manager_editor_common.php b/pandora_console/godmode/agentes/module_manager_editor_common.php index fbdd620f77..f34013944b 100644 --- a/pandora_console/godmode/agentes/module_manager_editor_common.php +++ b/pandora_console/godmode/agentes/module_manager_editor_common.php @@ -1101,9 +1101,8 @@ $macro_count++; html_print_input_hidden('module_macro_count', $macro_count); -/* - Advanced form part */ -// Add relationships +// Advanced form part. +// Add relationships. $table_new_relations = new stdClass(); $table_new_relations->id = 'module_new_relations'; $table_new_relations->width = '100%'; @@ -1114,7 +1113,8 @@ $table_new_relations->style[0] = 'width: 10%; font-weight: bold;'; $table_new_relations->style[1] = 'width: 25%; text-align: center;'; $table_new_relations->style[2] = 'width: 10%; font-weight: bold;'; $table_new_relations->style[3] = 'width: 25%; text-align: center;'; -$table_new_relations->style[4] = 'width: 30%; text-align: center;'; +$table_new_relations->style[4] = 'width: 10%; font-weight: bold;'; +$table_new_relations->style[5] = 'width: 25%; text-align: center;'; $table_new_relations->data[0][0] = __('Agent'); $params = []; @@ -1128,10 +1128,35 @@ $params['javascript_function_action_after_select_js_call'] = 'change_modules_aut $table_new_relations->data[0][1] = ui_print_agent_autocomplete_input($params); $table_new_relations->data[0][2] = __('Module'); $table_new_relations->data[0][3] = "<div id='module_autocomplete'></div>"; -$table_new_relations->data[0][4] = html_print_button(__('Add relationship'), 'add_relation', false, 'javascript: add_new_relation();', 'class="sub add"', true); -$table_new_relations->data[0][4] .= " <div id='add_relation_status' style='display: inline;'></div>"; -// Relationship list +$array_rel_type = []; +$array_rel_type['direct'] = __('Direct'); +$array_rel_type['failover'] = __('Failover'); +$table_new_relations->data[0][4] = __('Rel. type'); +$table_new_relations->data[0][5] = html_print_select( + $array_rel_type, + 'relation_type', + '', + '', + '', + 0, + true, + false, + true, + '' +); + +$table_new_relations->data[0][6] = html_print_button( + __('Add relationship'), + 'add_relation', + false, + 'javascript: add_new_relation();', + 'class="sub add"', + true +); +$table_new_relations->data[0][6] .= " <div id='add_relation_status' style='display: inline;'></div>"; + +// Relationship list. $table_relations = new stdClass(); $table_relations->id = 'module_relations'; $table_relations->width = '100%'; @@ -1141,19 +1166,26 @@ $table_relations->data = []; $table_relations->rowstyle = []; $table_relations->rowstyle[-1] = 'display: none;'; $table_relations->style = []; -$table_relations->style[2] = 'width: 10%; text-align: center;'; $table_relations->style[3] = 'width: 10%; text-align: center;'; +$table_relations->style[4] = 'width: 10%; text-align: center;'; $table_relations->head[0] = __('Agent'); $table_relations->head[1] = __('Module'); -$table_relations->head[2] = __('Changes').ui_print_help_tip(__('Activate this to prevent the relation from being updated or deleted'), true); -$table_relations->head[3] = __('Delete'); +$table_relations->head[2] = __('Type'); +$table_relations->head[3] = __('Changes').ui_print_help_tip( + __('Activate this to prevent the relation from being updated or deleted'), + true +); +$table_relations->head[4] = __('Delete'); -// Create an invisible row to use their html to add new rows +// Create an invisible row to use their html to add new rows. $table_relations->data[-1][0] = ''; $table_relations->data[-1][1] = ''; -$table_relations->data[-1][2] = '<a id="disable_updates_button" class="alpha50" href="">'.html_print_image('images/lock.png', true).'</a>'; -$table_relations->data[-1][3] = '<a id="delete_relation_button" href="">'.html_print_image('images/cross.png', true).'</a>'; +$table_relations->data[-1][2] = ''; +$table_relations->data[-1][3] = '<a id="disable_updates_button" class="alpha50" href="">'; +$table_relations->data[-1][3] .= html_print_image('images/lock.png', true).'</a>'; +$table_relations->data[-1][4] = '<a id="delete_relation_button" href="">'; +$table_relations->data[-1][4] .= html_print_image('images/cross.png', true).'</a>'; $module_relations = modules_get_relations(['id_module' => $id_agent_module]); if (!$module_relations) { @@ -1164,10 +1196,14 @@ $relations_count = 0; foreach ($module_relations as $key => $module_relation) { if ($module_relation['module_a'] == $id_agent_module) { $module_id = $module_relation['module_b']; - $agent_id = modules_give_agent_id_from_module_id($module_relation['module_b']); + $agent_id = modules_give_agent_id_from_module_id( + $module_relation['module_b'] + ); } else { $module_id = $module_relation['module_a']; - $agent_id = modules_give_agent_id_from_module_id($module_relation['module_a']); + $agent_id = modules_give_agent_id_from_module_id( + $module_relation['module_a'] + ); } $agent_name = ui_print_agent_name($agent_id, true); @@ -1183,14 +1219,16 @@ foreach ($module_relations as $key => $module_relation) { $disabled_update_class = 'alpha50'; } - // Agent name + // Agent name. $table_relations->data[$relations_count][0] = $agent_name; - // Module name + // Module name. $table_relations->data[$relations_count][1] = "<a href='index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&id_agente=".$agent_id.'&tab=module&edit_module=1&id_agent_module='.$module_id."'>".ui_print_truncate_text($module_name, 'module_medium', true, true, true, '[…]').'</a>'; - // Lock relationship updates - $table_relations->data[$relations_count][2] = '<a id="disable_updates_button" class="'.$disabled_update_class.'"href="javascript: change_lock_relation('.$relations_count.', '.$module_relation['id'].');">'.html_print_image('images/lock.png', true).'</a>'; - // Delete relationship - $table_relations->data[$relations_count][3] = '<a id="delete_relation_button" href="javascript: delete_relation('.$relations_count.', '.$module_relation['id'].');">'.html_print_image('images/cross.png', true).'</a>'; + // Type. + $table_relations->data[$relations_count][2] = ($module_relation['type'] === 'direct') ? __('Direct') : __('Failover'); + // Lock relationship updates. + $table_relations->data[$relations_count][3] = '<a id="disable_updates_button" class="'.$disabled_update_class.'"href="javascript: change_lock_relation('.$relations_count.', '.$module_relation['id'].');">'.html_print_image('images/lock.png', true).'</a>'; + // Delete relationship. + $table_relations->data[$relations_count][4] = '<a id="delete_relation_button" href="javascript: delete_relation('.$relations_count.', '.$module_relation['id'].');">'.html_print_image('images/cross.png', true).'</a>'; $relations_count++; } @@ -1198,7 +1236,6 @@ html_print_input_hidden('module_relations_count', $relations_count); ui_require_jquery_file('json'); - ?> <script type="text/javascript"> @@ -1343,8 +1380,6 @@ $(document).ready (function () { 'width=800,height=600' ); } - - } if(type_name_selected == 'web_data' || type_name_selected == 'web_proc' || @@ -1365,8 +1400,6 @@ $(document).ready (function () { 'width=800,height=600' ); } - - } } @@ -1386,7 +1419,7 @@ $(document).ready (function () { $('#minmax_warning').hide(); $('#svg_dinamic').hide(); } - + if (type_name_selected.match(/async/) == null) { $('#ff_timeout').hide(); $('#ff_timeout_disable').show(); @@ -1396,16 +1429,16 @@ $(document).ready (function () { $('#ff_timeout_disable').hide(); } }); - + $("#id_module_type").trigger('change'); - + // Prevent the form submission when the user hits the enter button from the relationship autocomplete inputs $("#text-autocomplete_agent_name").keydown(function(event) { if(event.keyCode == 13) { // key code 13 is the enter button event.preventDefault(); } }); - + //validate post_process. Change ',' by '.' $("#submit-updbutton").click (function () { validate_post_process(); @@ -1512,7 +1545,6 @@ function advanced_option_dynamic() { } else { $('.hide_dinamic').show(); - } } @@ -1524,11 +1556,9 @@ function change_modules_autocomplete_input () { var module_autocomplete = $("#module_autocomplete"); var load_icon = '<?php html_print_image('images/spinner.gif', false); ?>'; var error_icon = '<?php html_print_image('images/error_red.png', false); ?>'; - if (!module_autocomplete.hasClass('working')) { module_autocomplete.addClass('working'); module_autocomplete.html(load_icon); - $.ajax({ type: "POST", url: "ajax.php", @@ -1563,22 +1593,26 @@ function change_modules_autocomplete_input () { // Add a new relation function add_new_relation () { - var module_a_id = parseInt($("#hidden-id_agent_module").val()); - var module_b_id = parseInt($("#hidden-autocomplete_module_name_hidden").val()); + var module_a_id = parseInt( + $("#hidden-id_agent_module").val() + ); + var module_b_id = parseInt( + $("#hidden-autocomplete_module_name_hidden").val() + ); var module_b_name = $("#text-autocomplete_module_name").val(); var agent_b_name = $("#text-autocomplete_agent_name").val(); + var relation_type = $("#relation_type").val(); var hiddenRow = $("#module_relations--1"); var button = $("#button-add_relation"); var iconPlaceholder = $("#add_relation_status"); var load_icon = '<?php html_print_image('images/spinner.gif', false, ['style' => 'vertical-align:middle;']); ?>'; var suc_icon = '<?php html_print_image('images/ok.png', false, ['style' => 'vertical-align:middle;']); ?>'; var error_icon = '<?php html_print_image('images/error_red.png', false, ['style' => 'vertical-align:middle;']); ?>'; - - + if (!button.hasClass('working')) { button.addClass('working'); iconPlaceholder.html(load_icon); - + $.ajax({ type: "POST", url: "ajax.php", @@ -1588,7 +1622,8 @@ function add_new_relation () { add_module_relation: true, id_module_a: module_a_id, id_module_b: module_b_id, - name_module_b: module_b_name + name_module_b: module_b_name, + relation_type: relation_type }, success: function (data) { button.removeClass('working'); @@ -1599,29 +1634,30 @@ function add_new_relation () { else { iconPlaceholder.html(suc_icon); setTimeout( function() { iconPlaceholder.html(''); }, 2000); - + // Add the new row var relationsCount = parseInt($("#hidden-module_relations_count").val()); - + var rowClass = "datos"; if (relationsCount % 2 != 0) { rowClass = "datos2"; } - + var rowHTML = '<tr id="module_relations-' + relationsCount + '" class="' + rowClass + '">' + - '<td id="module_relations-' + relationsCount + '-0"><b>' + agent_b_name + '</b></td>' + - '<td id="module_relations-' + relationsCount + '-1">' + module_b_name + '</td>' + - '<td id="module_relations-' + relationsCount + '-2" style="width: 10%; text-align: center;">' + - '<a id="disable_updates_button" class="alpha50" href="javascript: change_lock_relation(' + relationsCount + ', ' + data + ');">' + - '<?php echo html_print_image('images/lock.png', true); ?>' + - '</a>' + - '</td>' + - '<td id="module_relations-' + relationsCount + '-3" style="width: 10%; text-align: center;">' + - '<a id="delete_relation_button" href="javascript: delete_relation(' + relationsCount + ', ' + data + ');">' + - '<?php echo html_print_image('images/cross.png', true); ?>' + - '</a>' + - '</td>' + - '</tr>'; + '<td id="module_relations-' + relationsCount + '-0"><b>' + agent_b_name + '</b></td>' + + '<td id="module_relations-' + relationsCount + '-1">' + module_b_name + '</td>' + + '<td id="module_relations-' + relationsCount + '-2">' + relation_type + '</td>' + + '<td id="module_relations-' + relationsCount + '-3" style="width: 10%; text-align: center;">' + + '<a id="disable_updates_button" class="alpha50" href="javascript: change_lock_relation(' + relationsCount + ', ' + data + ');">' + + '<?php echo html_print_image('images/lock.png', true); ?>' + + '</a>' + + '</td>' + + '<td id="module_relations-' + relationsCount + '-4" style="width: 10%; text-align: center;">' + + '<a id="delete_relation_button" href="javascript: delete_relation(' + relationsCount + ', ' + data + ');">' + + '<?php echo html_print_image('images/cross.png', true); ?>' + + '</a>' + + '</td>' + + '</tr>'; $("#module_relations").find("tbody").append(rowHTML); $("#hidden-module_relations_count").val(relationsCount + 1); diff --git a/pandora_console/include/ajax/module.php b/pandora_console/include/ajax/module.php index 64192fdedb..09934f7baf 100755 --- a/pandora_console/include/ajax/module.php +++ b/pandora_console/include/ajax/module.php @@ -472,11 +472,17 @@ if (check_login()) { $result = false; $id_module_a = (int) get_parameter('id_module_a'); $id_module_b = (int) get_parameter('id_module_b'); + $type = (string) get_parameter('relation_type'); if ($id_module_a < 1) { $name_module_a = get_parameter('name_module_a', ''); if ($name_module_a) { - $id_module_a = (int) db_get_value('id_agente_modulo', 'tagente_modulo', 'nombre', $name_module_a); + $id_module_a = (int) db_get_value( + 'id_agente_modulo', + 'tagente_modulo', + 'nombre', + $name_module_a + ); } else { echo json_encode($result); return; @@ -486,7 +492,12 @@ if (check_login()) { if ($id_module_b < 1) { $name_module_b = get_parameter('name_module_b', ''); if ($name_module_b) { - $id_module_b = (int) db_get_value('id_agente_modulo', 'tagente_modulo', 'nombre', $name_module_b); + $id_module_b = (int) db_get_value( + 'id_agente_modulo', + 'tagente_modulo', + 'nombre', + $name_module_b + ); } else { echo json_encode($result); return; @@ -494,7 +505,7 @@ if (check_login()) { } if ($id_module_a > 0 && $id_module_b > 0) { - $result = modules_add_relation($id_module_a, $id_module_b); + $result = modules_add_relation($id_module_a, $id_module_b, $type); } echo json_encode($result); diff --git a/pandora_console/include/functions_modules.php b/pandora_console/include/functions_modules.php index 0335e851c9..26c38149d5 100755 --- a/pandora_console/include/functions_modules.php +++ b/pandora_console/include/functions_modules.php @@ -2596,7 +2596,7 @@ function modules_get_relations($params=[]) } $sql = 'SELECT DISTINCT tmr.id, tmr.module_a, tmr.module_b, - tmr.disable_update + tmr.disable_update, tmr.type FROM tmodule_relationship tmr, tagente_modulo tam, tagente ta, @@ -2699,11 +2699,13 @@ function modules_relation_exists($id_module, $id_module_other=false) /** * Change the 'disabled_update' value of a relation row. * - * @param int Relation id. + * @param integer $id_module_a Id agent module a. + * @param integer $id_module_b Id agent module b. + * @param string $type Type direct or failover. * * @return boolean True if the 'disabled_update' changes to 1, false otherwise. */ -function modules_add_relation($id_module_a, $id_module_b) +function modules_add_relation($id_module_a, $id_module_b, $type='direct') { $result = false; @@ -2711,6 +2713,7 @@ function modules_add_relation($id_module_a, $id_module_b) $values = [ 'module_a' => $id_module_a, 'module_b' => $id_module_b, + 'type' => $type, ]; $result = db_process_sql_insert('tmodule_relationship', $values); } diff --git a/pandora_console/include/functions_networkmap.php b/pandora_console/include/functions_networkmap.php index ceaabaaadf..e4fb19e814 100644 --- a/pandora_console/include/functions_networkmap.php +++ b/pandora_console/include/functions_networkmap.php @@ -450,14 +450,26 @@ function networkmap_generate_dot( $nodes[$node_count] = $module; } } else { - $have_relations_a = db_get_value('id', 'tmodule_relationship', 'module_a', $module['id_agente_modulo']); - $have_relations_b = db_get_value('id', 'tmodule_relationship', 'module_b', $module['id_agente_modulo']); + $sql_a = sprintf( + 'SELECT id + FROM tmodule_relationship + WHERE module_a = %d AND type = "direct"', + $module['id_agente_modulo'] + ); + $sql_b = sprintf( + 'SELECT id + FROM tmodule_relationship + WHERE module_b = %d AND type = "direct"', + $module['id_agente_modulo'] + ); + $have_relations_a = db_get_value_sql($sql_a); + $have_relations_b = db_get_value_sql($sql_b); if ($have_relations_a || $have_relations_b) { - // Save node parent information to define edges later + // Save node parent information to define edges later. $parents[$node_count] = $module['parent'] = $agent['id_node']; - // Add node + // Add node. $nodes[$node_count] = $module; } } diff --git a/pandora_console/include/functions_reporting.php b/pandora_console/include/functions_reporting.php index 62da376a69..410925fd98 100755 --- a/pandora_console/include/functions_reporting.php +++ b/pandora_console/include/functions_reporting.php @@ -6463,13 +6463,32 @@ function reporting_availability_graph($report, $content, $pdf=false) } } - if (isset($sla['id_agent_module_failover']) === true - && $sla['id_agent_module_failover'] != 0 - ) { + if ($content['failover_mode']) { $sla_failover = []; $sla_failover['primary'] = $sla; - $sla_failover['failover'] = $sla; - $sla_failover['failover']['id_agent_module'] = $sla['id_agent_module_failover']; + if (isset($sla['id_agent_module_failover']) === true + && $sla['id_agent_module_failover'] != 0 + ) { + $sla_failover['failover'] = $sla; + $sla_failover['failover']['id_agent_module'] = $sla['id_agent_module_failover']; + } else { + $sql_relations = sprintf( + 'SELECT module_b + FROM tmodule_relationship + WHERE module_a = %d + AND type = "failover"', + $sla['id_agent_module'] + ); + $relations = db_get_all_rows_sql($sql_relations); + if (isset($relations) === true + && is_array($relations) === true + ) { + foreach ($relations as $key => $value) { + $sla_failover['failover_'.$key] = $sla; + $sla_failover['failover_'.$key]['id_agent_module'] = $value['module_b']; + } + } + } // For graph slice for module-interval, if not slice=0. $module_interval = modules_get_interval($sla['id_agent_module']); @@ -6491,7 +6510,8 @@ function reporting_availability_graph($report, $content, $pdf=false) $content, $report['datetime'], $return, - $k_sla + $k_sla, + $pdf ); } @@ -6502,40 +6522,42 @@ function reporting_availability_graph($report, $content, $pdf=false) && is_array($data_combined) === true && count($data_combined) > 0 ) { - $data_a = []; - $data_a = array_map( - function ($primary, $failover) { - $return_map = []; - if ($primary['date_from'] === $failover['date_from'] - && $primary['date_to'] === $failover['date_to'] - ) { - if ($primary['sla_fixed'] !== 100 - && $primary['sla_fixed'] < $failover['sla_fixed'] + $count_failover = count($data_combined); + + $data_a = $data_combined[0]; + for ($i = 1; $count_failover > $i; $i++) { + $data_a = array_map( + function ($primary, $failover) { + $return_map = []; + if ($primary['date_from'] === $failover['date_from'] + && $primary['date_to'] === $failover['date_to'] ) { - $primary['time_total'] = $failover['time_total']; - $primary['time_ok'] = $failover['time_ok']; - $primary['time_error'] = $failover['time_error']; - $primary['time_unknown'] = $failover['time_unknown']; - $primary['time_not_init'] = $failover['time_not_init']; - $primary['time_downtime'] = $failover['time_downtime']; - $primary['time_out'] = $failover['time_out']; - $primary['checks_total'] = $failover['checks_total']; - $primary['checks_ok'] = $failover['checks_ok']; - $primary['checks_error'] = $failover['checks_error']; - $primary['checks_unknown'] = $failover['checks_unknown']; - $primary['checks_not_init'] = $failover['checks_not_init']; - $primary['SLA'] = $failover['SLA']; - $primary['sla_fixed'] = $failover['sla_fixed']; + if ($primary['time_ok'] < $failover['time_ok']) { + $primary['time_total'] = $failover['time_total']; + $primary['time_ok'] = $failover['time_ok']; + $primary['time_error'] = $failover['time_error']; + $primary['time_unknown'] = $failover['time_unknown']; + $primary['time_not_init'] = $failover['time_not_init']; + $primary['time_downtime'] = $failover['time_downtime']; + $primary['time_out'] = $failover['time_out']; + $primary['checks_total'] = $failover['checks_total']; + $primary['checks_ok'] = $failover['checks_ok']; + $primary['checks_error'] = $failover['checks_error']; + $primary['checks_unknown'] = $failover['checks_unknown']; + $primary['checks_not_init'] = $failover['checks_not_init']; + $primary['SLA'] = $failover['SLA']; + $primary['sla_fixed'] = $failover['sla_fixed']; + } + + $return_map = $primary; } - $return_map = $primary; - } - - return $return_map; - }, - $data_combined[0], - $data_combined[1] - ); + return $return_map; + }, + $data_a, + $data_combined[($i)] + ); + } $return = prepare_data_for_paint( $sla, @@ -6543,7 +6565,8 @@ function reporting_availability_graph($report, $content, $pdf=false) $content, $report['datetime'], $return, - 'result' + 'result', + $pdf ); } } else { @@ -6558,7 +6581,8 @@ function reporting_availability_graph($report, $content, $pdf=false) $sla_array, $content, $report['datetime'], - $return + $return, + $pdf ); } @@ -6790,6 +6814,7 @@ function reporting_get_planned_downtimes_sla($id_agent_module, $datetime, $perio * @param integer $datetime Date. * @param array $return Array return. * @param string $failover Type primary, failover, Result. + * @param boolean $pdf Chart pdf mode. * * @return array Return modify. */ @@ -6799,7 +6824,8 @@ function prepare_data_for_paint( $content, $datetime, $return, - $failover='' + $failover='', + $pdf=false ) { $data = []; $alias_agent = modules_get_agentmodule_agent_alias( @@ -6956,7 +6982,7 @@ function prepare_data_for_paint( 100, $height, $urlImage, - $ttl, + ($pdf) ? 2 : 0, $array_result, false ); diff --git a/pandora_console/include/functions_reporting_html.php b/pandora_console/include/functions_reporting_html.php index e0cc6ff5ad..f576f6ec87 100644 --- a/pandora_console/include/functions_reporting_html.php +++ b/pandora_console/include/functions_reporting_html.php @@ -3325,7 +3325,7 @@ function reporting_html_availability_graph($table, $item, $pdf=0) $title .= '<br />'.$chart['module']; break; - case 'failover': + case (preg_match('/failover.*/', $item['data'][$k_chart]['failover']) ? true : false): $title = '<b>'.__('Failover').'</b>'; $title .= '<br />'.$chart['agent']; $title .= '<br />'.$chart['module']; diff --git a/pandora_console/pandoradb.sql b/pandora_console/pandoradb.sql index 2776a42978..8b2123c66c 100644 --- a/pandora_console/pandoradb.sql +++ b/pandora_console/pandoradb.sql @@ -820,6 +820,7 @@ CREATE TABLE IF NOT EXISTS `tmodule_relationship` ( `module_a` int(10) unsigned NOT NULL, `module_b` int(10) unsigned NOT NULL, `disable_update` tinyint(1) unsigned NOT NULL default '0', + `type` ENUM('direct', 'failover') DEFAULT 'direct', PRIMARY KEY (`id`), FOREIGN KEY (`module_a`) REFERENCES tagente_modulo(`id_agente_modulo`) ON DELETE CASCADE, diff --git a/pandora_server/lib/PandoraFMS/DiscoveryServer.pm b/pandora_server/lib/PandoraFMS/DiscoveryServer.pm index 80fcbef8d3..51761f5e27 100644 --- a/pandora_server/lib/PandoraFMS/DiscoveryServer.pm +++ b/pandora_server/lib/PandoraFMS/DiscoveryServer.pm @@ -490,7 +490,7 @@ sub PandoraFMS::Recon::Base::connect_agents($$$$$) { } # Connect the modules if they are not already connected. - my $connection_id = get_db_value($self->{'dbh'}, 'SELECT id FROM tmodule_relationship WHERE (module_a = ? AND module_b = ?) OR (module_b = ? AND module_a = ?)', $module_id_1, $module_id_2, $module_id_1, $module_id_2); + my $connection_id = get_db_value($self->{'dbh'}, 'SELECT id FROM tmodule_relationship WHERE (module_a = ? AND module_b = ? AND `type` = "direct") OR (module_b = ? AND module_a = ? AND `type` = "direct")', $module_id_1, $module_id_2, $module_id_1, $module_id_2); if (! defined($connection_id)) { db_do($self->{'dbh'}, 'INSERT INTO tmodule_relationship (`module_a`, `module_b`, `id_rt`) VALUES(?, ?, ?)', $module_id_1, $module_id_2, $self->{'task_id'}); } diff --git a/pandora_server/util/recon_scripts/snmp-recon.pl b/pandora_server/util/recon_scripts/snmp-recon.pl index 6bf2d6b709..c7009fd75a 100755 --- a/pandora_server/util/recon_scripts/snmp-recon.pl +++ b/pandora_server/util/recon_scripts/snmp-recon.pl @@ -1005,7 +1005,7 @@ sub connect_pandora_agents($$$$) { } # Connect the modules if they are not already connected. - my $connection_id = get_db_value($DBH, 'SELECT id FROM tmodule_relationship WHERE (module_a = ? AND module_b = ?) OR (module_b = ? AND module_a = ?)', $module_id_1, $module_id_2, $module_id_1, $module_id_2); + my $connection_id = get_db_value($DBH, 'SELECT id FROM tmodule_relationship WHERE (module_a = ? AND module_b = ? AND `type` = "direct") OR (module_b = ? AND module_a = ? AND `type` = "direct")', $module_id_1, $module_id_2, $module_id_1, $module_id_2); if (! defined($connection_id)) { db_do($DBH, 'INSERT INTO tmodule_relationship (`module_a`, `module_b`, `id_rt`) VALUES(?, ?, ?)', $module_id_1, $module_id_2, $TASK_ID); } From f4b8b39704dc85744197773f3e963704b23a4912 Mon Sep 17 00:00:00 2001 From: artica <artica.devel@gmail.com> Date: Thu, 4 Jul 2019 00:01:09 +0200 Subject: [PATCH 36/83] 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 109bc572a4..4ca43080d4 100644 --- a/pandora_agents/unix/DEBIAN/control +++ b/pandora_agents/unix/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-agent-unix -Version: 7.0NG.736-190703 +Version: 7.0NG.736-190704 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 5f46072be1..4d2eb2ad36 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.736-190703" +pandora_version="7.0NG.736-190704" 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 fd04540106..c4b8c9a482 100755 --- a/pandora_agents/unix/pandora_agent +++ b/pandora_agents/unix/pandora_agent @@ -42,7 +42,7 @@ my $Sem = undef; my $ThreadSem = undef; use constant AGENT_VERSION => '7.0NG.736'; -use constant AGENT_BUILD => '190703'; +use constant AGENT_BUILD => '190704'; # 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 f9c083395b..9ee7dfac59 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.736 -%define release 190703 +%define release 190704 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 22d9a60423..0adace638a 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.736 -%define release 190703 +%define release 190704 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 d1d92af45b..1650743680 100755 --- a/pandora_agents/unix/pandora_agent_installer +++ b/pandora_agents/unix/pandora_agent_installer @@ -10,7 +10,7 @@ # ********************************************************************** PI_VERSION="7.0NG.736" -PI_BUILD="190703" +PI_BUILD="190704" OS_NAME=`uname -s` FORCE=0 diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi index 072442eca6..6e9c24fdbf 100644 --- a/pandora_agents/win32/installer/pandora.mpi +++ b/pandora_agents/win32/installer/pandora.mpi @@ -186,7 +186,7 @@ UpgradeApplicationID {} Version -{190703} +{190704} ViewReadme {Yes} diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc index b9a8154b96..61557bc15a 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.736(Build 190703)") +#define PANDORA_VERSION ("7.0NG.736(Build 190704)") string pandora_path; string pandora_dir; diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc index 4e27f4fd19..6a19940b9b 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.736(Build 190703))" + VALUE "ProductVersion", "(7.0NG.736(Build 190704))" VALUE "FileVersion", "1.0.0.0" END END diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control index a1f366f752..2f4cba40c0 100644 --- a/pandora_console/DEBIAN/control +++ b/pandora_console/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-console -Version: 7.0NG.736-190703 +Version: 7.0NG.736-190704 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 2e12856839..9e607576dc 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.736-190703" +pandora_version="7.0NG.736-190704" package_pear=0 package_pandora=1 diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php index b738586dd4..4868483266 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 = 'PC190703'; +$build_version = 'PC190704'; $pandora_version = 'v7.0NG.736'; // Do not overwrite default timezone set if defined. diff --git a/pandora_console/install.php b/pandora_console/install.php index e38e5e42e3..56db55110d 100644 --- a/pandora_console/install.php +++ b/pandora_console/install.php @@ -129,7 +129,7 @@ <div style='height: 10px'> <?php $version = '7.0NG.736'; - $build = '190703'; + $build = '190704'; $banner = "v$version Build $build"; error_reporting(0); diff --git a/pandora_console/pandora_console.redhat.spec b/pandora_console/pandora_console.redhat.spec index fb85742ba5..ff81470ae0 100644 --- a/pandora_console/pandora_console.redhat.spec +++ b/pandora_console/pandora_console.redhat.spec @@ -3,7 +3,7 @@ # %define name pandorafms_console %define version 7.0NG.736 -%define release 190703 +%define release 190704 # User and Group under which Apache is running %define httpd_name httpd diff --git a/pandora_console/pandora_console.rhel7.spec b/pandora_console/pandora_console.rhel7.spec index 33e40e0760..c09eda58ab 100644 --- a/pandora_console/pandora_console.rhel7.spec +++ b/pandora_console/pandora_console.rhel7.spec @@ -3,7 +3,7 @@ # %define name pandorafms_console %define version 7.0NG.736 -%define release 190703 +%define release 190704 # User and Group under which Apache is running %define httpd_name httpd diff --git a/pandora_console/pandora_console.spec b/pandora_console/pandora_console.spec index 7764799354..28a95eacbd 100644 --- a/pandora_console/pandora_console.spec +++ b/pandora_console/pandora_console.spec @@ -3,7 +3,7 @@ # %define name pandorafms_console %define version 7.0NG.736 -%define release 190703 +%define release 190704 %define httpd_name httpd # User and Group under which Apache is running %define httpd_name apache2 diff --git a/pandora_server/DEBIAN/control b/pandora_server/DEBIAN/control index fc7cfac1aa..2a05b4dae3 100644 --- a/pandora_server/DEBIAN/control +++ b/pandora_server/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-server -Version: 7.0NG.736-190703 +Version: 7.0NG.736-190704 Architecture: all Priority: optional Section: admin diff --git a/pandora_server/DEBIAN/make_deb_package.sh b/pandora_server/DEBIAN/make_deb_package.sh index 6fa9f19eba..a9a826bd85 100644 --- a/pandora_server/DEBIAN/make_deb_package.sh +++ b/pandora_server/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.736-190703" +pandora_version="7.0NG.736-190704" package_cpan=0 package_pandora=1 diff --git a/pandora_server/lib/PandoraFMS/Config.pm b/pandora_server/lib/PandoraFMS/Config.pm index 4b43f35b36..c8f661a379 100644 --- a/pandora_server/lib/PandoraFMS/Config.pm +++ b/pandora_server/lib/PandoraFMS/Config.pm @@ -45,7 +45,7 @@ our @EXPORT = qw( # version: Defines actual version of Pandora Server for this module only my $pandora_version = "7.0NG.736"; -my $pandora_build = "190703"; +my $pandora_build = "190704"; our $VERSION = $pandora_version." ".$pandora_build; # Setup hash diff --git a/pandora_server/lib/PandoraFMS/PluginTools.pm b/pandora_server/lib/PandoraFMS/PluginTools.pm index 3d613f8b6b..f3c5fab2e4 100644 --- a/pandora_server/lib/PandoraFMS/PluginTools.pm +++ b/pandora_server/lib/PandoraFMS/PluginTools.pm @@ -32,7 +32,7 @@ our @ISA = qw(Exporter); # version: Defines actual version of Pandora Server for this module only my $pandora_version = "7.0NG.736"; -my $pandora_build = "190703"; +my $pandora_build = "190704"; our $VERSION = $pandora_version." ".$pandora_build; our %EXPORT_TAGS = ( 'all' => [ qw() ] ); diff --git a/pandora_server/pandora_server.redhat.spec b/pandora_server/pandora_server.redhat.spec index f6c06186e1..bd2c15d77d 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.736 -%define release 190703 +%define release 190704 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec index 6e1d85582a..ce2fc59451 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.736 -%define release 190703 +%define release 190704 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer index 1957c78f86..1de14abf9f 100755 --- a/pandora_server/pandora_server_installer +++ b/pandora_server/pandora_server_installer @@ -9,7 +9,7 @@ # ********************************************************************** PI_VERSION="7.0NG.736" -PI_BUILD="190703" +PI_BUILD="190704" MODE=$1 if [ $# -gt 1 ]; then diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl index 8e415f4a52..9fa9ef2dfc 100644 --- a/pandora_server/util/pandora_db.pl +++ b/pandora_server/util/pandora_db.pl @@ -34,7 +34,7 @@ use PandoraFMS::Config; use PandoraFMS::DB; # version: define current version -my $version = "7.0NG.736 PS190703"; +my $version = "7.0NG.736 PS190704"; # Pandora server configuration my %conf; diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl index 07d06cc368..5eae88d3e8 100644 --- 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.736 PS190703"; +my $version = "7.0NG.736 PS190704"; # save program name for logging my $progname = basename($0); From c25b7155faffceb9819304d2879ae36e2d9958ff Mon Sep 17 00:00:00 2001 From: Daniel Barbero Martin <daniel.barbero@artica.es> Date: Thu, 4 Jul 2019 11:17:12 +0200 Subject: [PATCH 37/83] WIP failover --- .../include/functions_reporting_html.php | 170 +++++++++--------- 1 file changed, 87 insertions(+), 83 deletions(-) diff --git a/pandora_console/include/functions_reporting_html.php b/pandora_console/include/functions_reporting_html.php index f576f6ec87..ecb57d97e4 100644 --- a/pandora_console/include/functions_reporting_html.php +++ b/pandora_console/include/functions_reporting_html.php @@ -3252,59 +3252,42 @@ function reporting_html_availability_graph($table, $item, $pdf=0) $tables_chart = ''; - foreach ($item['charts'] as $k_chart => $chart) { - $checks_resume = ''; - $sla_value = ''; - if (reporting_sla_is_not_init_from_array($chart)) { - $color = COL_NOTINIT; - $sla_value = __('Not init'); - } else if (reporting_sla_is_ignored_from_array($chart)) { - $color = COL_IGNORED; - $sla_value = __('No data'); - } else { - switch ($chart['sla_status']) { - case REPORT_STATUS_ERR: - $color = COL_CRITICAL; - break; + if (isset($item['failed']) === true && empty($item['failed']) === false) { + $tables_chart .= $item['failed']; + } else { + foreach ($item['charts'] as $k_chart => $chart) { + $checks_resume = ''; + $sla_value = ''; + if (reporting_sla_is_not_init_from_array($chart)) { + $color = COL_NOTINIT; + $sla_value = __('Not init'); + } else if (reporting_sla_is_ignored_from_array($chart)) { + $color = COL_IGNORED; + $sla_value = __('No data'); + } else { + switch ($chart['sla_status']) { + case REPORT_STATUS_ERR: + $color = COL_CRITICAL; + break; - case REPORT_STATUS_OK: - $color = COL_NORMAL; - break; + case REPORT_STATUS_OK: + $color = COL_NORMAL; + break; - default: - $color = COL_UNKNOWN; - break; + default: + $color = COL_UNKNOWN; + break; + } + + $sla_value = sla_truncate( + $chart['sla_value'], + $config['graph_precision'] + ).'%'; + $checks_resume = '('.$chart['checks_ok'].'/'.$chart['checks_total'].')'; } - $sla_value = sla_truncate( - $chart['sla_value'], - $config['graph_precision'] - ).'%'; - $checks_resume = '('.$chart['checks_ok'].'/'.$chart['checks_total'].')'; - } - - // Check failover availability report. - if ($item['data'][$k_chart]['failover'] === '') { - $table1 = new stdClass(); - $table1->width = '99%'; - $table1->data = []; - $table1->size = []; - $table1->size[0] = '10%'; - $table1->size[1] = '80%'; - $table1->size[2] = '5%'; - $table1->size[3] = '5%'; - $table1->data[0][0] = $chart['agent'].'<br />'.$chart['module']; - $table1->data[0][1] = $chart['chart']; - $table1->data[0][2] = "<span style = 'font: bold 2em Arial, Sans-serif; color: ".$color."'>".$sla_value.'</span>'; - $table1->data[0][3] = $checks_resume; - $tables_chart .= html_print_table( - $table1, - true - ); - } else { - if ($item['data'][$k_chart]['failover'] === 'primary' - || $item['failover_type'] == REPORT_FAILOVER_TYPE_SIMPLE - ) { + // Check failover availability report. + if ($item['data'][$k_chart]['failover'] === '') { $table1 = new stdClass(); $table1->width = '99%'; $table1->data = []; @@ -3313,44 +3296,65 @@ function reporting_html_availability_graph($table, $item, $pdf=0) $table1->size[1] = '80%'; $table1->size[2] = '5%'; $table1->size[3] = '5%'; - } - - $title = ''; - $checks_resume_text = $checks_resume; - $sla_value_text = "<span style = 'font: bold 2em Arial, Sans-serif; color: ".$color."'>".$sla_value.'</span>'; - switch ($item['data'][$k_chart]['failover']) { - case 'primary': - $title = '<b>'.__('Primary').'</b>'; - $title .= '<br />'.$chart['agent']; - $title .= '<br />'.$chart['module']; - break; - - case (preg_match('/failover.*/', $item['data'][$k_chart]['failover']) ? true : false): - $title = '<b>'.__('Failover').'</b>'; - $title .= '<br />'.$chart['agent']; - $title .= '<br />'.$chart['module']; - break; - - case 'result': - default: - $title = '<b>'.__('Result').'</b>'; - $sla_value_text = "<span style = 'font: bold 3em Arial, Sans-serif; color: ".$color."'>".$sla_value.'</span>'; - $checks_resume_text = '<span style = "font-size: 12pt;">'; - $checks_resume_text .= $checks_resume; - $checks_resume_text .= '</span>'; - break; - } - - $table1->data[$item['data'][$k_chart]['failover']][0] = $title; - $table1->data[$item['data'][$k_chart]['failover']][1] = $chart['chart']; - $table1->data[$item['data'][$k_chart]['failover']][2] = $sla_value_text; - $table1->data[$item['data'][$k_chart]['failover']][3] = $checks_resume_text; - - if ($item['data'][$k_chart]['failover'] === 'result') { + $table1->data[0][0] = $chart['agent'].'<br />'.$chart['module']; + $table1->data[0][1] = $chart['chart']; + $table1->data[0][2] = "<span style = 'font: bold 2em Arial, Sans-serif; color: ".$color."'>".$sla_value.'</span>'; + $table1->data[0][3] = $checks_resume; $tables_chart .= html_print_table( $table1, true ); + } else { + if ($item['data'][$k_chart]['failover'] === 'primary' + || $item['failover_type'] == REPORT_FAILOVER_TYPE_SIMPLE + ) { + $table1 = new stdClass(); + $table1->width = '99%'; + $table1->data = []; + $table1->size = []; + $table1->size[0] = '10%'; + $table1->size[1] = '80%'; + $table1->size[2] = '5%'; + $table1->size[3] = '5%'; + } + + $title = ''; + $checks_resume_text = $checks_resume; + $sla_value_text = "<span style = 'font: bold 2em Arial, Sans-serif; color: ".$color."'>".$sla_value.'</span>'; + switch ($item['data'][$k_chart]['failover']) { + case 'primary': + $title = '<b>'.__('Primary').'</b>'; + $title .= '<br />'.$chart['agent']; + $title .= '<br />'.$chart['module']; + break; + + case (preg_match('/failover.*/', $item['data'][$k_chart]['failover']) ? true : false): + $title = '<b>'.__('Failover').'</b>'; + $title .= '<br />'.$chart['agent']; + $title .= '<br />'.$chart['module']; + break; + + case 'result': + default: + $title = '<b>'.__('Result').'</b>'; + $sla_value_text = "<span style = 'font: bold 3em Arial, Sans-serif; color: ".$color."'>".$sla_value.'</span>'; + $checks_resume_text = '<span style = "font-size: 12pt;">'; + $checks_resume_text .= $checks_resume; + $checks_resume_text .= '</span>'; + break; + } + + $table1->data[$item['data'][$k_chart]['failover']][0] = $title; + $table1->data[$item['data'][$k_chart]['failover']][1] = $chart['chart']; + $table1->data[$item['data'][$k_chart]['failover']][2] = $sla_value_text; + $table1->data[$item['data'][$k_chart]['failover']][3] = $checks_resume_text; + + if ($item['data'][$k_chart]['failover'] === 'result') { + $tables_chart .= html_print_table( + $table1, + true + ); + } } } } From 000cdfdcfd5c382cba5c58cc71a25d61eb4cf549 Mon Sep 17 00:00:00 2001 From: Daniel Barbero Martin <daniel.barbero@artica.es> Date: Thu, 4 Jul 2019 12:09:08 +0200 Subject: [PATCH 38/83] WIP failover --- pandora_console/extras/mr/30.sql | 1 - pandora_console/extras/pandoradb_migrate_6.0_to_7.0.mysql.sql | 2 +- pandora_console/include/ajax/reporting.ajax.php | 2 -- pandora_console/pandoradb.sql | 1 - 4 files changed, 1 insertion(+), 5 deletions(-) diff --git a/pandora_console/extras/mr/30.sql b/pandora_console/extras/mr/30.sql index 2de6e9cc19..eeb3b8d797 100644 --- a/pandora_console/extras/mr/30.sql +++ b/pandora_console/extras/mr/30.sql @@ -1,7 +1,6 @@ START TRANSACTION; ALTER TABLE `treport_content_sla_combined` ADD `id_agent_module_failover` int(10) unsigned NOT NULL; -ALTER TABLE `treport_content_sla_combined` ADD `id_server_failover` int(10) unsigned NOT NULL; ALTER TABLE `treport_content` ADD COLUMN `failover_mode` tinyint(1) DEFAULT '0'; ALTER TABLE `treport_content` ADD COLUMN `failover_type` tinyint(1) DEFAULT '0'; 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 4404ee826d..60e19998e8 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 @@ -1451,6 +1451,7 @@ ALTER TABLE `treport_content` ADD COLUMN `failover_type` tinyint(1) DEFAULT '0'; -- Table `tmodule_relationship` -- --------------------------------------------------------------------- ALTER TABLE tmodule_relationship ADD COLUMN `id_server` varchar(100) NOT NULL DEFAULT ''; +ALTER TABLE `tmodule_relationship` ADD COLUMN `type` ENUM('direct', 'failover') DEFAULT 'direct'; -- --------------------------------------------------------------------- -- Table `tpolicy_module` @@ -2218,4 +2219,3 @@ CREATE TABLE IF NOT EXISTS `tcredential_store` ( -- Table `treport_content_sla_combined` -- --------------------------------------------------------------------- ALTER TABLE `treport_content_sla_combined` ADD `id_agent_module_failover` int(10) unsigned NOT NULL; -ALTER TABLE `treport_content_sla_combined` ADD `id_server_failover` int(10) unsigned NOT NULL; diff --git a/pandora_console/include/ajax/reporting.ajax.php b/pandora_console/include/ajax/reporting.ajax.php index fa87ad72e0..dec331b6ef 100755 --- a/pandora_console/include/ajax/reporting.ajax.php +++ b/pandora_console/include/ajax/reporting.ajax.php @@ -66,7 +66,6 @@ if ($add_sla) { $sla_min = get_parameter('sla_min', 0); $server_id = (int) get_parameter('server_id', 0); $id_module_failover = (int) get_parameter('id_module_failover', 0); - $id_server_failover = (int) get_parameter('id_server_failover', 0); $id_service = (int) get_parameter('id_service'); if (empty($id_module) && !empty($id_service)) { @@ -94,7 +93,6 @@ if ($add_sla) { 'sla_min' => $sla_min, 'sla_limit' => $sla_limit, 'server_name' => $connection['server_name'], - 'id_server_failover' => $id_server_failover, ] ); diff --git a/pandora_console/pandoradb.sql b/pandora_console/pandoradb.sql index 8b2123c66c..95d6caadfd 100644 --- a/pandora_console/pandoradb.sql +++ b/pandora_console/pandoradb.sql @@ -1468,7 +1468,6 @@ CREATE TABLE IF NOT EXISTS `treport_content_sla_combined` ( `id_report_content` INTEGER UNSIGNED NOT NULL, `id_agent_module` int(10) unsigned NOT NULL, `id_agent_module_failover` int(10) unsigned NOT NULL, - `id_server_failover` int(10) unsigned NOT NULL default 0, `sla_max` double(18,2) NOT NULL default 0, `sla_min` double(18,2) NOT NULL default 0, `sla_limit` double(18,2) NOT NULL default 0, From a10945d2096489a560ae78487753809e6653026f Mon Sep 17 00:00:00 2001 From: alejandro-campos <alejandro.campos@artica.es> Date: Thu, 4 Jul 2019 18:33:12 +0200 Subject: [PATCH 39/83] fix bug in api function that removes an agent from a policy --- pandora_console/include/functions_api.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/pandora_console/include/functions_api.php b/pandora_console/include/functions_api.php index 0569319a29..899add9ec0 100644 --- a/pandora_console/include/functions_api.php +++ b/pandora_console/include/functions_api.php @@ -15059,17 +15059,18 @@ function remove_agent_from_policy($id_policy, $use_agent_name, $params) if (is_metaconsole()) { if ($use_agent_name === false) { $id_node = $params[1]; - $id_agent = db_get_value_filter('id_agente', 'tmetaconsole_agent', ['id_tagente' => $params[0], 'id_tmetaconsole_setup' => $id_node]); + $id_agent = $params[0]; } else { - $id_agent = db_get_value_filter('id_agente', 'tmetaconsole_agent', ['nombre' => $params[0]]); + $id_node = db_get_value_filter('id_tmetaconsole_setup', 'tmetaconsole_agent', ['nombre' => $params[0]]); + $id_agent = db_get_value_filter('id_tagente', 'tmetaconsole_agent', ['nombre' => $params[0]]); } - $agent = db_get_row_filter('tmetaconsole_agent', ['id_agente' => $id_agent]); + $agent = db_get_row_filter('tmetaconsole_agent', ['id_tagente' => $id_agent, 'id_tmetaconsole_setup' => $id_node]); } $policy = policies_get_policy($id_policy, false, false); - $policy_agent = db_get_row_filter('tpolicy_agents', ['id_policy' => $id_policy, 'id_agent' => $id_agent]); + $policy_agent = (is_metaconsole()) ? db_get_row_filter('tpolicy_agents', ['id_policy' => $id_policy, 'id_agent' => $id_agent, 'id_node' => $id_node]) : db_get_row_filter('tpolicy_agents', ['id_policy' => $id_policy, 'id_agent' => $id_agent]); if (empty($policy)) { returnError('error_policy', __('This policy does not exist.')); From 0e3fd848f7e1e5a66ba670058c278ef4d1bcea85 Mon Sep 17 00:00:00 2001 From: fbsanchez <fborja.sanchez@artica.es> Date: Thu, 4 Jul 2019 19:34:03 +0200 Subject: [PATCH 40/83] minor fixes and visual change in azure credentials --- pandora_console/include/constants.php | 1 + pandora_console/include/functions_credential_store.php | 4 ++-- pandora_console/operation/agentes/ver_agente.php | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/pandora_console/include/constants.php b/pandora_console/include/constants.php index c5cce5d347..7e44f1c080 100644 --- a/pandora_console/include/constants.php +++ b/pandora_console/include/constants.php @@ -590,6 +590,7 @@ define('DISCOVERY_APP_MYSQL', 4); define('DISCOVERY_APP_ORACLE', 5); define('DISCOVERY_CLOUD_AWS_EC2', 6); define('DISCOVERY_CLOUD_AWS_RDS', 7); +define('DISCOVERY_CLOUD_AZURE_COMPUTE', 8); // Discovery types matching definition. diff --git a/pandora_console/include/functions_credential_store.php b/pandora_console/include/functions_credential_store.php index 20b643d0b8..eaf756f7b1 100644 --- a/pandora_console/include/functions_credential_store.php +++ b/pandora_console/include/functions_credential_store.php @@ -362,7 +362,7 @@ function print_inputs($values=null) 'label' => $extra_1_label, 'name' => 'extra_1', 'input_class' => 'flex-row', - 'type' => 'password', + 'type' => 'text', 'value' => $values['extra_1'], 'return' => true, ] @@ -375,7 +375,7 @@ function print_inputs($values=null) 'label' => $extra_2_label, 'name' => 'extra_2', 'input_class' => 'flex-row', - 'type' => 'password', + 'type' => 'text', 'value' => $values['extra_2'], 'return' => true, 'display' => $extra2, diff --git a/pandora_console/operation/agentes/ver_agente.php b/pandora_console/operation/agentes/ver_agente.php index b9b2a2128d..b625595930 100644 --- a/pandora_console/operation/agentes/ver_agente.php +++ b/pandora_console/operation/agentes/ver_agente.php @@ -70,7 +70,7 @@ if (is_ajax()) { if ($id_agente > 0) { $last_contact = db_get_value_sql( sprintf( - 'SELECT intervalo - (UNIX_TIMESTAMP() - UNIX_TIMESTAMP(IF(ultimo_contacto > ultimo_contacto_remoto, ultimo_contacto, ultimo_contacto_remoto))) + 'SELECT format(intervalo,2) - (UNIX_TIMESTAMP() - UNIX_TIMESTAMP(IF(ultimo_contacto > ultimo_contacto_remoto, ultimo_contacto, ultimo_contacto_remoto))) as "val" FROM `tagente` WHERE id_agente = %d ', $id_agente From 8229f634e0e85e5a7b00218cf119236050faf7a4 Mon Sep 17 00:00:00 2001 From: artica <artica.devel@gmail.com> Date: Fri, 5 Jul 2019 00:01:09 +0200 Subject: [PATCH 41/83] 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 4ca43080d4..531a41e5b3 100644 --- a/pandora_agents/unix/DEBIAN/control +++ b/pandora_agents/unix/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-agent-unix -Version: 7.0NG.736-190704 +Version: 7.0NG.736-190705 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 4d2eb2ad36..98fdaa992f 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.736-190704" +pandora_version="7.0NG.736-190705" 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 c4b8c9a482..1e03cfa248 100755 --- a/pandora_agents/unix/pandora_agent +++ b/pandora_agents/unix/pandora_agent @@ -42,7 +42,7 @@ my $Sem = undef; my $ThreadSem = undef; use constant AGENT_VERSION => '7.0NG.736'; -use constant AGENT_BUILD => '190704'; +use constant AGENT_BUILD => '190705'; # 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 9ee7dfac59..1e03c24394 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.736 -%define release 190704 +%define release 190705 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 0adace638a..ac8a594450 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.736 -%define release 190704 +%define release 190705 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 1650743680..1fc0ed921c 100755 --- a/pandora_agents/unix/pandora_agent_installer +++ b/pandora_agents/unix/pandora_agent_installer @@ -10,7 +10,7 @@ # ********************************************************************** PI_VERSION="7.0NG.736" -PI_BUILD="190704" +PI_BUILD="190705" OS_NAME=`uname -s` FORCE=0 diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi index 6e9c24fdbf..32836deca7 100644 --- a/pandora_agents/win32/installer/pandora.mpi +++ b/pandora_agents/win32/installer/pandora.mpi @@ -186,7 +186,7 @@ UpgradeApplicationID {} Version -{190704} +{190705} ViewReadme {Yes} diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc index 61557bc15a..02d9a63209 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.736(Build 190704)") +#define PANDORA_VERSION ("7.0NG.736(Build 190705)") string pandora_path; string pandora_dir; diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc index 6a19940b9b..8ecffd52ee 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.736(Build 190704))" + VALUE "ProductVersion", "(7.0NG.736(Build 190705))" VALUE "FileVersion", "1.0.0.0" END END diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control index 2f4cba40c0..5e6512722a 100644 --- a/pandora_console/DEBIAN/control +++ b/pandora_console/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-console -Version: 7.0NG.736-190704 +Version: 7.0NG.736-190705 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 9e607576dc..d6f3b6da50 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.736-190704" +pandora_version="7.0NG.736-190705" package_pear=0 package_pandora=1 diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php index 4868483266..62812d314c 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 = 'PC190704'; +$build_version = 'PC190705'; $pandora_version = 'v7.0NG.736'; // Do not overwrite default timezone set if defined. diff --git a/pandora_console/install.php b/pandora_console/install.php index 56db55110d..00e176f42c 100644 --- a/pandora_console/install.php +++ b/pandora_console/install.php @@ -129,7 +129,7 @@ <div style='height: 10px'> <?php $version = '7.0NG.736'; - $build = '190704'; + $build = '190705'; $banner = "v$version Build $build"; error_reporting(0); diff --git a/pandora_console/pandora_console.redhat.spec b/pandora_console/pandora_console.redhat.spec index ff81470ae0..d3011eb849 100644 --- a/pandora_console/pandora_console.redhat.spec +++ b/pandora_console/pandora_console.redhat.spec @@ -3,7 +3,7 @@ # %define name pandorafms_console %define version 7.0NG.736 -%define release 190704 +%define release 190705 # User and Group under which Apache is running %define httpd_name httpd diff --git a/pandora_console/pandora_console.rhel7.spec b/pandora_console/pandora_console.rhel7.spec index c09eda58ab..e841ce2f51 100644 --- a/pandora_console/pandora_console.rhel7.spec +++ b/pandora_console/pandora_console.rhel7.spec @@ -3,7 +3,7 @@ # %define name pandorafms_console %define version 7.0NG.736 -%define release 190704 +%define release 190705 # User and Group under which Apache is running %define httpd_name httpd diff --git a/pandora_console/pandora_console.spec b/pandora_console/pandora_console.spec index 28a95eacbd..1ee39cb54d 100644 --- a/pandora_console/pandora_console.spec +++ b/pandora_console/pandora_console.spec @@ -3,7 +3,7 @@ # %define name pandorafms_console %define version 7.0NG.736 -%define release 190704 +%define release 190705 %define httpd_name httpd # User and Group under which Apache is running %define httpd_name apache2 diff --git a/pandora_server/DEBIAN/control b/pandora_server/DEBIAN/control index 2a05b4dae3..8f86f67614 100644 --- a/pandora_server/DEBIAN/control +++ b/pandora_server/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-server -Version: 7.0NG.736-190704 +Version: 7.0NG.736-190705 Architecture: all Priority: optional Section: admin diff --git a/pandora_server/DEBIAN/make_deb_package.sh b/pandora_server/DEBIAN/make_deb_package.sh index a9a826bd85..8a1a1c87fd 100644 --- a/pandora_server/DEBIAN/make_deb_package.sh +++ b/pandora_server/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.736-190704" +pandora_version="7.0NG.736-190705" package_cpan=0 package_pandora=1 diff --git a/pandora_server/lib/PandoraFMS/Config.pm b/pandora_server/lib/PandoraFMS/Config.pm index c8f661a379..c46b9e894f 100644 --- a/pandora_server/lib/PandoraFMS/Config.pm +++ b/pandora_server/lib/PandoraFMS/Config.pm @@ -45,7 +45,7 @@ our @EXPORT = qw( # version: Defines actual version of Pandora Server for this module only my $pandora_version = "7.0NG.736"; -my $pandora_build = "190704"; +my $pandora_build = "190705"; our $VERSION = $pandora_version." ".$pandora_build; # Setup hash diff --git a/pandora_server/lib/PandoraFMS/PluginTools.pm b/pandora_server/lib/PandoraFMS/PluginTools.pm index f3c5fab2e4..2291610e57 100644 --- a/pandora_server/lib/PandoraFMS/PluginTools.pm +++ b/pandora_server/lib/PandoraFMS/PluginTools.pm @@ -32,7 +32,7 @@ our @ISA = qw(Exporter); # version: Defines actual version of Pandora Server for this module only my $pandora_version = "7.0NG.736"; -my $pandora_build = "190704"; +my $pandora_build = "190705"; our $VERSION = $pandora_version." ".$pandora_build; our %EXPORT_TAGS = ( 'all' => [ qw() ] ); diff --git a/pandora_server/pandora_server.redhat.spec b/pandora_server/pandora_server.redhat.spec index bd2c15d77d..b2e81b4c72 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.736 -%define release 190704 +%define release 190705 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec index ce2fc59451..a31db9b0c4 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.736 -%define release 190704 +%define release 190705 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer index 1de14abf9f..39391e9339 100755 --- a/pandora_server/pandora_server_installer +++ b/pandora_server/pandora_server_installer @@ -9,7 +9,7 @@ # ********************************************************************** PI_VERSION="7.0NG.736" -PI_BUILD="190704" +PI_BUILD="190705" MODE=$1 if [ $# -gt 1 ]; then diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl index 9fa9ef2dfc..fa0822b985 100644 --- a/pandora_server/util/pandora_db.pl +++ b/pandora_server/util/pandora_db.pl @@ -34,7 +34,7 @@ use PandoraFMS::Config; use PandoraFMS::DB; # version: define current version -my $version = "7.0NG.736 PS190704"; +my $version = "7.0NG.736 PS190705"; # Pandora server configuration my %conf; diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl index 5eae88d3e8..be30e449dc 100644 --- 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.736 PS190704"; +my $version = "7.0NG.736 PS190705"; # save program name for logging my $progname = basename($0); From 7175d716f032dde6da6178afa70c317025244c7c Mon Sep 17 00:00:00 2001 From: Daniel Barbero <daniel.barbero@artica.es> Date: Fri, 5 Jul 2019 10:32:10 +0200 Subject: [PATCH 42/83] fixed translate --- .../godmode/reporting/reporting_builder.item_editor.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandora_console/godmode/reporting/reporting_builder.item_editor.php b/pandora_console/godmode/reporting/reporting_builder.item_editor.php index b269b153d5..ff8ca88e40 100755 --- a/pandora_console/godmode/reporting/reporting_builder.item_editor.php +++ b/pandora_console/godmode/reporting/reporting_builder.item_editor.php @@ -2617,7 +2617,7 @@ $class = 'databox filters'; <td style="font-weight:bold;"> <?php echo __('Failover mode').ui_print_help_tip( - __('XXX.'), + __('SLA calculation must be performed taking into account the failover modules assigned to the primary module'), true ); ?> From 6e7dfb38fd0482db0314b0cd230ee0f4173f0fc3 Mon Sep 17 00:00:00 2001 From: Daniel Barbero <daniel.barbero@artica.es> Date: Fri, 5 Jul 2019 13:46:48 +0200 Subject: [PATCH 43/83] fixed error network component plugin --- .../manage_network_components_form_plugin.php | 63 +++++++++++----- .../include/javascript/pandora_modules.js | 74 ++++++++++++++----- 2 files changed, 100 insertions(+), 37 deletions(-) diff --git a/pandora_console/godmode/modules/manage_network_components_form_plugin.php b/pandora_console/godmode/modules/manage_network_components_form_plugin.php index 19d3c45e8f..94ce00892e 100755 --- a/pandora_console/godmode/modules/manage_network_components_form_plugin.php +++ b/pandora_console/godmode/modules/manage_network_components_form_plugin.php @@ -1,17 +1,32 @@ <?php +/** + * Extension to manage a list of gateways and the node address where they should + * point to. + * + * @category Network components Plugins + * @package Pandora FMS + * @subpackage Community + * @version 1.0.0 + * @license See below + * + * ______ ___ _______ _______ ________ + * | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __| + * | __/| _ | | _ || _ | _| _ | | ___| |__ | + * |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______| + * + * ============================================================================ + * Copyright (c) 2005-2019 Artica Soluciones Tecnologicas + * Please see http://pandorafms.org for full contribution list + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation for version 2. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * ============================================================================ + */ -// Pandora FMS - http://pandorafms.com -// ================================================== -// Copyright (c) 2005-2010 Artica Soluciones Tecnologicas -// Please see http://pandorafms.org for full contribution list -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License -// as published by the Free Software Foundation for version 2. -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// Load global variables global $config; check_login(); @@ -29,7 +44,7 @@ $data[1] = html_print_select_from_sql( false, false ); -// Store the macros in base64 into a hidden control to move between pages +// Store the macros in base64 into a hidden control to move between pages. $data[1] .= html_print_input_hidden('macros', base64_encode($macros), true); $data[2] = __('Post process'); $data[3] = html_print_extended_select_for_post_process( @@ -46,7 +61,7 @@ $data[3] = html_print_extended_select_for_post_process( push_table_row($data, 'plugin_1'); -// A hidden "model row" to clone it from javascript to add fields dynamicly +// A hidden "model row" to clone it from javascript to add fields dynamicly. $data = []; $data[0] = 'macro_desc'; $data[0] .= ui_print_help_tip('macro_help', true); @@ -56,7 +71,7 @@ $table->rowstyle['macro_field'] = 'display:none'; push_table_row($data, 'macro_field'); -// If there are $macros, we create the form fields +// If there are $macros, we create the form fields. if (!empty($macros)) { $macros = json_decode($macros, true); @@ -68,9 +83,23 @@ if (!empty($macros)) { } if ($m['hide'] == 1) { - $data[1] = html_print_input_text($m['macro'], $m['value'], '', 100, 1024, true); + $data[1] = html_print_input_text( + $m['macro'], + io_output_password($m['value']), + '', + 100, + 1024, + true + ); } else { - $data[1] = html_print_input_text($m['macro'], io_output_password($m['value']), '', 100, 1024, true); + $data[1] = html_print_input_text( + $m['macro'], + $m['value'], + '', + 100, + 1024, + true + ); } $table->colspan['macro'.$m['macro']][1] = 3; diff --git a/pandora_console/include/javascript/pandora_modules.js b/pandora_console/include/javascript/pandora_modules.js index 049bb9e96b..1d5c804289 100644 --- a/pandora_console/include/javascript/pandora_modules.js +++ b/pandora_console/include/javascript/pandora_modules.js @@ -791,7 +791,7 @@ function new_macro(prefix, callback) { } } -function add_macro_field(macro, row_model_id) { +function add_macro_field(macro, row_model_id, type_copy) { var macro_desc = macro["desc"]; // Change the carriage returns by html returns <br> in help var macro_help = macro["help"].replace(/
/g, "<br>"); @@ -850,16 +850,31 @@ function add_macro_field(macro, row_model_id) { } // Change the text box id and value - $("#" + row_id) - .children() - .eq(1) - .attr("id", "text-" + macro_macro); - $("#" + row_id) - .children() - .eq(1) - .attr("name", macro_macro); + if (type_copy == "td") { + $("#" + row_id) + .children() + .eq(1) + .children() + .eq(0) + .attr("id", "text-" + macro_macro); + $("#" + row_id) + .children() + .eq(1) + .children() + .eq(0) + .attr("name", macro_macro); + } else { + $("#" + row_id) + .children() + .eq(1) + .attr("id", "text-" + macro_macro); + $("#" + row_id) + .children() + .eq(1) + .attr("name", macro_macro); + } - macro_field_hide = false; + var macro_field_hide = false; if (typeof macro["hide"] == "string") { if (macro["hide"].length == 0) { macro_field_hide = false; @@ -872,16 +887,35 @@ function add_macro_field(macro, row_model_id) { } } - if (macro_field_hide) { - $("#" + row_id) - .children() - .eq(1) - .attr("type", "password"); + if (type_copy == "td") { + if (macro_field_hide) { + $("#" + row_id) + .children() + .eq(1) + .children() + .eq(0) + .attr("type", "password"); + } else { + $("#" + row_id) + .children() + .eq(1) + .children() + .eq(0) + .val(macro_value); + } + } else { + if (macro_field_hide) { + $("#" + row_id) + .children() + .eq(1) + .attr("type", "password"); + } else { + $("#" + row_id) + .children() + .eq(1) + .val(macro_value); + } } - $("#" + row_id) - .children() - .eq(1) - .val(macro_value); $("#" + row_id).show(); } @@ -908,7 +942,7 @@ function load_plugin_macros_fields(row_model_id) { $("#hidden-macros").val(data["base64"]); jQuery.each(data["array"], function(i, macro) { if (macro["desc"] != "") { - add_macro_field(macro, row_model_id); + add_macro_field(macro, row_model_id, "td"); } }); //Plugin text can be larger From d1bc6cc2ffd83b98fe40b71032a056f92464b20d Mon Sep 17 00:00:00 2001 From: Tatiana Llorente <tatiana.llorente@artica.es> Date: Fri, 5 Jul 2019 13:59:48 +0200 Subject: [PATCH 44/83] Created green theme - #4194 --- .../include/graphs/functions_d3.php | 2 +- .../include/styles/pandora_black.css | 38 ++++ .../include/styles/pandora_green_old.css | 185 +++++++++++++----- 3 files changed, 173 insertions(+), 52 deletions(-) diff --git a/pandora_console/include/graphs/functions_d3.php b/pandora_console/include/graphs/functions_d3.php index e3962bf729..fea1273015 100644 --- a/pandora_console/include/graphs/functions_d3.php +++ b/pandora_console/include/graphs/functions_d3.php @@ -770,7 +770,7 @@ function print_donut_narrow_graph( default: $textColor = '#000'; - $strokeColor = 'transparent'; + $strokeColor = '#fff'; break; } diff --git a/pandora_console/include/styles/pandora_black.css b/pandora_console/include/styles/pandora_black.css index 2fcee7b2ae..a94dcf468c 100644 --- a/pandora_console/include/styles/pandora_black.css +++ b/pandora_console/include/styles/pandora_black.css @@ -130,6 +130,15 @@ textarea:disabled { filter: brightness(2.5) contrast(3.5); } +/* events.css */ +table.table_modal_alternate tr:nth-child(odd) td { + background-color: #222; +} + +table.table_modal_alternate tr:nth-child(even) td { + background-color: #111; +} + /* tables.css */ .info_table { background-color: #222; @@ -281,3 +290,32 @@ div#foot { .ui-widget-content a { color: #fff; } + +.ui-state-default, +.ui-widget-content .ui-state-default, +.ui-widget-header .ui-state-default { + background-color: #222; + color: #fff; +} + +.ui-state-active, +.ui-widget-content .ui-state-active, +.ui-widget-header .ui-state-active { + background-color: #111; + color: #fff; +} + +.ui-state-default a, +.ui-state-default a:link, +.ui-state-default a:visited, +a.ui-button, +a:link.ui-button, +a:visited.ui-button, +.ui-button { + color: #fff; +} + +ul.ui-tabs-nav.ui-corner-all.ui-helper-reset.ui-helper-clearfix.ui-widget-header + img { + filter: brightness(2); +} diff --git a/pandora_console/include/styles/pandora_green_old.css b/pandora_console/include/styles/pandora_green_old.css index cb04b54d57..239ecee786 100644 --- a/pandora_console/include/styles/pandora_green_old.css +++ b/pandora_console/include/styles/pandora_green_old.css @@ -21,70 +21,153 @@ Description: The default Pandora FMS theme layout // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -/* header */ -div#head { - background-color: #80ab51; - color: white; - background-image: url(../../images/header.jpg); -} - /* menu.css */ .operation, -#menu_full { - background-color: #80ab51; -} - -.operation .selected { - background-color: #d9fb86; -} - -.operation li.selected { - box-shadow: inset 4px 0 #80ab51; -} -.operation .menu_icon:hover { - background-color: #d9fb86; -} - -.operation .sub_subMenu:hover { - background-color: #d9fb86; - color: #585858; -} - -.godmode .selected { - background-color: #a77853; -} - -.godmode li.selected { - box-shadow: inset 4px 0 #e79b5d; -} - -.godmode .menu_icon:hover { - background-color: #a77853; +#menu_full, +.godmode, +.operation .menu_icon ul.submenu > li, +.godmode .menu_icon ul.submenu > li, +.sub_subMenu { + background-color: #fff; } +.operation .selected, +.operation .menu_icon:hover, +.godmode .selected, +.godmode .menu_icon:hover, .godmode .submenu_not_selected:hover, -.godmode .submenu_selected:hover { - background-color: #a77853 !important; +.godmode .submenu_selected:hover, +.operation .sub_subMenu:hover, +.operation .menu_icon ul.submenu > li:hover, +.godmode .menu_icon ul.submenu > li:hover { + background-color: #343434 !important; + color: #fff; } -.godmode .sub_subMenu:hover { - background-color: #a77853; - color: #2f2f2f; +ul.subsubmenu li { + background-color: #82b92e; } -/* General styles */ -.green_title { - background-color: #80ab51; +.godmode { + border-top: 1px solid #f1f1f1; +} + +.menu li ul { + border: 1px solid #f1f1f1; +} + +#title_menu, +.submenu_text { + color: #9c9c9c; +} + +.button_collapse, +div#foot { + background-color: #82b92e; +} + +/* footer */ +div#foot a, +div#foot span { + color: #fff; } /* Tabs */ -#menu_tab li.nomn_high, -#menu_tab li.nomn_high span { - box-shadow: inset 0px 4px #80ab51; -} - #menu_tab_frame, #menu_tab_frame_view, #menu_tab_frame_view_bc { - border-bottom: 2px solid #80ab51; + background-color: #82b92e; +} + +#menu_tab li.nomn_high, +#menu_tab li.nomn_high span { + box-shadow: inset 0px 4px #fff; + background-color: transparent; +} +#menu_tab li:hover { + box-shadow: inset 0px 4px #fff; + background-color: #ffffff38; +} + +#menu_tab_left li a, +#menu_tab_left li span { + color: #fff; +} + +#menu_tab li.nomn img, +#menu_tab li img { + filter: brightness(4.5); +} + +/* General styles */ +div#page { + background: #ecfad6; +} + +#top_btn { + background-color: #343434; +} + +#top_btn:hover { + background-color: transparent; +} + +.breadcrumb_link.selected, +.breadcrumb_active { + color: #ecfad6; +} + +.sort_arrow img { + filter: brightness(2.5) contrast(3.5); +} + +/* tables.css */ +.info_table tr:first-child > th { + background-color: #343434; + color: #fff; +} + +.info_table > tbody > tr > th, +.info_table > thead > tr > th, +.info_table > thead > tr > th a, +.info_table > thead > tr > th > span { + color: #fff; +} + +/* agent view*/ +.agent_details_header, +.white_table tr:first-child > th, +.white_table_graph_header { + background-color: #343434; + color: #fff; + border-top-left-radius: 5px; + border-top-right-radius: 5px; +} + +.white_table thead tr:first-child > th { + border-radius: 0; +} + +.white_table thead tr:first-child > th:first-child { + border-top-left-radius: 4px; +} + +.white_table thead tr:first-child > th:last-child { + border-top-right-radius: 4px; +} + +.buttons_agent_view a img { + background-color: #fff; +} + +.breadcrumbs_container, +.breadcrumb_link, +div.agent_details_agent_alias * { + color: #fff; +} + +/* jquery custom */ +.ui-dialog, +.ui-widget-content { + background-color: #ecfad6; } From 745ab711de469133d45b32ef9f1cdc8b92be4016 Mon Sep 17 00:00:00 2001 From: Tatiana Llorente <tatiana.llorente@artica.es> Date: Fri, 5 Jul 2019 14:02:59 +0200 Subject: [PATCH 45/83] Created green theme - #4194 --- pandora_console/include/styles/pandora_green_old.css | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pandora_console/include/styles/pandora_green_old.css b/pandora_console/include/styles/pandora_green_old.css index 239ecee786..a9fbdf7f80 100644 --- a/pandora_console/include/styles/pandora_green_old.css +++ b/pandora_console/include/styles/pandora_green_old.css @@ -1,7 +1,7 @@ /* Author: The Pandora FMS team -Name: GreenOld theme +Name: Green old theme Description: The default Pandora FMS theme layout // Pandora FMS - http://pandorafms.com @@ -100,6 +100,8 @@ div#foot span { } /* General styles */ + +body, div#page { background: #ecfad6; } From 8242bf34b813c07dd179be5685d01ee2d6289863 Mon Sep 17 00:00:00 2001 From: Alejandro Fraguas <alejandro.fraguas@artica.es> Date: Fri, 5 Jul 2019 14:55:22 +0200 Subject: [PATCH 46/83] Revert "Merge branch 'ent-3693-pete-php-pantalla-en-blanco-con-auth-saml' into 'develop'" This reverts merge request !2562 --- pandora_console/general/noaccesssaml.php | 164 ---------------------- pandora_console/include/auth/saml.php | 166 ----------------------- pandora_console/index.php | 11 +- 3 files changed, 3 insertions(+), 338 deletions(-) delete mode 100644 pandora_console/general/noaccesssaml.php delete mode 100755 pandora_console/include/auth/saml.php diff --git a/pandora_console/general/noaccesssaml.php b/pandora_console/general/noaccesssaml.php deleted file mode 100644 index e357e040dc..0000000000 --- a/pandora_console/general/noaccesssaml.php +++ /dev/null @@ -1,164 +0,0 @@ -<html> -<head> - -<style> - -#alert_messages_na{ - z-index:2; - position: absolute; - left: 50%; - top: 50%; - transform: translate(-50%, -50%); - -webkit-transform: translate(-50%, -50%); - width:650px; - height: 400px; - background:white; - background-image:url('images/imagen-no-acceso.jpg'); - background-repeat:no-repeat; - justify-content: center; - display: flex; - flex-direction: column; - box-shadow:4px 5px 10px 3px rgba(0, 0, 0, 0.4); -} - -.modalheade{ - text-align:center; - width:100%; - position:absolute; - top:0; -} -.modalheadertex{ - color:#000; - font-family:Nunito; - line-height: 40px; - font-size: 23pt; - margin-bottom:30px; -} -.modalclose{ - cursor:pointer; - display:inline; - float:right; - margin-right:10px; - margin-top:10px; -} -.modalconten{ - color:black; - width:300px; - margin-left: 30px; -} -.modalcontenttex{ - text-align:left; - color:black; - font-size: 11pt; - line-height:13pt; - margin-bottom:30px; -} -.modalokbutto{ - cursor:pointer; - text-align:center; - display: inline-block; - padding: 6px 45px; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - border-radius: 3px; - background-color:white; - border: 1px solid #82b92e; -} -.modalokbuttontex{ - color:#82b92e; - font-family:Nunito; - font-size:13pt; -} -.modalgobutto{ - cursor:pointer; - text-align:center; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - border-radius: 3px; - background-color:white; - border: 1px solid #82b92e; -} -.modalgobuttontex{ -color:#82b92e; -font-family:Nunito; -font-size:10pt; -} - - -#opacidad{ - position:fixed; - background:black; - opacity:0.6; - z-index:-1; - left:0px; - top:0px; - width:100%; - height:100%; -} -/* -.textodialog{ - margin-left: 0px; - color:#333; - padding:20px; - font-size:9pt; -} - -.cargatextodialog{ - max-width:58.5%; - width:58.5%; - min-width:58.5%; - float:left; - margin-left: 0px; - font-size:18pt; - padding:20px; - text-align:center; -} - -.cargatextodialog p, .cargatextodialog b, .cargatextodialog a{ - font-size:18pt; -} -*/ -</style> -</head> -<body> - - <div id="alert_messages_na"> - - <div class='modalheade'> - <img class='modalclose cerrar' src='<?php echo $config['homeurl']; ?>images/input_cross.png'> - </div> - - <div class='modalconten'> - <div class='modalheadertex'> - <?php echo __("You don't have access to this page"); ?> - </div> - - <div class='modalcontenttex'> - <?php - echo __('Access to this page is restricted to authorized users SAML only, please contact system administrator if you need assistance.'); - echo '<br/> <br/>'; - echo __('Please make sure you have SAML authentication properly configured. For more information the error to access this page are recorded in security logs of %s System Database', get_product_name()); - ?> - - </div> - - <div class='modalokbutto cerrar'> - <span class='modalokbuttontex'>OK</span> - </div> - </div> - </div> - - <div id="opacidad"></div> - -</body> -</html> - -<script> - - $(".cerrar").click(function(){ - window.location="."; - }); - - $('div#page').css('background-color','#d3d3d3'); - -</script> diff --git a/pandora_console/include/auth/saml.php b/pandora_console/include/auth/saml.php deleted file mode 100755 index 6ffbc8cf4b..0000000000 --- a/pandora_console/include/auth/saml.php +++ /dev/null @@ -1,166 +0,0 @@ -<?php -// ______ __ _______ _______ _______ -// | __ \.---.-.-----.--| |.-----.----.---.-. | ___| | | __| -// | __/| _ | | _ || _ | _| _ | | ___| |__ | -// |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______| -// -// ============================================================================ -// Copyright (c) 2007-2010 Artica Soluciones Tecnologicas, http://www.artica.es -// This code is NOT free software. This code is NOT licenced under GPL2 licence -// You cannnot redistribute it without written permission of copyright holder. -// ============================================================================ -global $config; - -if (!file_exists($config['saml_path'].'simplesamlphp/lib/_autoload.php')) { - return false; -} - - -/** - * Authenticate in saml system (red.es) - * - * @param string Login - * @param string Password - * - * @return boolean True if the login succeeds, false otherwise - */ -function saml_process_user_login() -{ - global $config; - - // SAML authentication attributes - $as = new SimpleSAML_Auth_Simple('PandoraFMS'); - $as->requireAuth(); - $session = SimpleSAML_Session::getSessionFromRequest(); - $session->cleanup(); - $attributes = $as->getAttributes(); - - if (empty($attributes)) { - return false; - } - - $id_user = $attributes[SAML_MAIL_IN_PANDORA][0]; - $email = $attributes[SAML_MAIL_IN_PANDORA][0]; - $group_name = $attributes[SAML_GROUP_IN_PANDORA][0]; - $profiles_and_tags = $attributes[SAML_ROLE_AND_TAG]; - - $profile_names = []; - $tag_names = []; - // Manages array with tags and roles to separate them - foreach ($profiles_and_tags as $profile_or_tag) { - $is_profile_or_tag = explode(SAML_DEFAULT_PROFILES_AND_TAGS_FORM, $profile_or_tag); - $is_profile_or_tag2 = explode(':', $is_profile_or_tag[1]); - if ($is_profile_or_tag2[0] == 'role') { - $profile_names[] = $is_profile_or_tag2[1]; - } else if ($is_profile_or_tag2[0] == 'tag') { - $tag_names[] = $is_profile_or_tag2[1]; - } - } - - // Connect to Pandora db - $connection = mysql_connect_db( - $config['pandora_server'], - $config['pandora_dbname'], - $config['pandora_user'], - $config['pandora_pass'] - ); - - if ($connection === false) { - return false; - } - - // Get the red.es user id - $rows = db_get_all_rows_sql( - "SELECT * FROM tusuario - WHERE id_user = '".$id_user."'", - false, - false, - $connection - ); - - // Checks group id, profiles id and tags id - $group_id = ''; - $profile_id = []; - $tag_id = ''; - $tags_to_profile = ''; - if ($group_name != '') { - $group_id = db_get_all_rows_sql("SELECT id_grupo FROM tgrupo WHERE nombre = '".$group_name."'"); - $group_id = $group_id[0]['id_grupo']; - if (empty($group_id)) { - $config['auth_error'] = 'Group not found in database'; - db_pandora_audit('Logon Failed', 'Group '.$group_name.' not found in database', $_SERVER['REMOTE_ADDR']); - return false; - } - } - - if (!empty($profile_names)) { - foreach ($profile_names as $profile_name) { - $profile_id[] = db_get_row_sql("SELECT id_perfil FROM tperfil WHERE name = '".io_safe_input($profile_name)."'"); - } - } - - if (!empty($tag_names)) { - $i = 0; - foreach ($tag_names as $tag_name) { - $tag_id = db_get_row_sql("SELECT id_tag FROM ttag WHERE name = '".io_safe_input($tag_name)."'"); - if ($i == 0) { - $tags_to_profile = (String) $tag_id['id_tag']; - } else { - $tags_to_profile .= ','.(String) $tag_id['id_tag']; - } - - $i++; - } - } - - // If user does not exist in Pandora - if (empty($rows)) { - if ($id_user != '') { - $values_user = []; - $values_user['id_user'] = $id_user; - $values_user['email'] = $email; - $result_insert_user = db_process_sql_insert('tusuario', $values_user); - - // Separates user insert of profile insert - $values_user_profile = []; - $values_user_profile['id_usuario'] = $id_user; - $values_user_profile['id_grupo'] = $group_id; - $values_user_profile['tags'] = $tags_to_profile; - foreach ($profile_id as $id) { - $values_user_profile['id_perfil'] = $id['id_perfil']; - $result_insert_user_profile = db_process_sql_insert('tusuario_perfil', $values_user_profile); - } - - if (!$result_insert_user_profile) { - $config['auth_error'] = 'Login error'; - return false; - } - - return $id_user; - } else { - return false; - } - } else { - $user = $rows[0]; - // To update the profiles, delete the old and insert the new - $have_profiles = db_get_all_rows_sql("SELECT id_up FROM tusuario_perfil WHERE id_usuario = '".$user['id_user']."'"); - if ($have_profiles) { - $delete_old_profiles = db_process_sql("DELETE FROM tusuario_perfil WHERE id_usuario = '".$user['id_user']."'"); - } - - $values_user_profile = []; - $values_user_profile['id_usuario'] = $user['id_user']; - $values_user_profile['id_grupo'] = $group_id; - $values_user_profile['tags'] = $tags_to_profile; - foreach ($profile_id as $id) { - $values_user_profile['id_perfil'] = $id['id_perfil']; - $result_insert_user_profile = db_process_sql_insert('tusuario_perfil', $values_user_profile); - } - - return $user['id_user']; - } - - $config['auth_error'] = 'User not found in database or incorrect password'; - - return false; -} diff --git a/pandora_console/index.php b/pandora_console/index.php index a543829bb7..3c95074171 100755 --- a/pandora_console/index.php +++ b/pandora_console/index.php @@ -359,17 +359,12 @@ if (! isset($config['id_user'])) { $nick_in_db = $_SESSION['prepared_login_da']['id_user']; $expired_pass = false; } else if (($config['auth'] == 'saml') && ($login_button_saml)) { - if (!include_once 'include/auth/saml.php') { - include_once 'general/noaccesssaml.php'; - } else { - $saml_user_id = saml_process_user_login(); - } + include_once ENTERPRISE_DIR.'/include/auth/saml.php'; + + $saml_user_id = saml_process_user_login(); $nick_in_db = $saml_user_id; - if (!$nick_in_db) { - include_once 'general/noaccesssaml.php'; - include_once $config['saml_path'].'simplesamlphp/lib/_autoload.php'; $as = new SimpleSAML_Auth_Simple('PandoraFMS'); $as->logout(); From d0f3a6bc0b9418c16efe8567392a81906a488b56 Mon Sep 17 00:00:00 2001 From: artica <artica.devel@gmail.com> Date: Sat, 6 Jul 2019 00:01:19 +0200 Subject: [PATCH 47/83] 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 531a41e5b3..9fb3888b56 100644 --- a/pandora_agents/unix/DEBIAN/control +++ b/pandora_agents/unix/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-agent-unix -Version: 7.0NG.736-190705 +Version: 7.0NG.736-190706 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 98fdaa992f..0db060be9d 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.736-190705" +pandora_version="7.0NG.736-190706" 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 1e03cfa248..b995494f84 100755 --- a/pandora_agents/unix/pandora_agent +++ b/pandora_agents/unix/pandora_agent @@ -42,7 +42,7 @@ my $Sem = undef; my $ThreadSem = undef; use constant AGENT_VERSION => '7.0NG.736'; -use constant AGENT_BUILD => '190705'; +use constant AGENT_BUILD => '190706'; # 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 1e03c24394..341958f85b 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.736 -%define release 190705 +%define release 190706 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 ac8a594450..b16873ba8e 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.736 -%define release 190705 +%define release 190706 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 1fc0ed921c..a460425043 100755 --- a/pandora_agents/unix/pandora_agent_installer +++ b/pandora_agents/unix/pandora_agent_installer @@ -10,7 +10,7 @@ # ********************************************************************** PI_VERSION="7.0NG.736" -PI_BUILD="190705" +PI_BUILD="190706" OS_NAME=`uname -s` FORCE=0 diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi index 32836deca7..4fd63586fb 100644 --- a/pandora_agents/win32/installer/pandora.mpi +++ b/pandora_agents/win32/installer/pandora.mpi @@ -186,7 +186,7 @@ UpgradeApplicationID {} Version -{190705} +{190706} ViewReadme {Yes} diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc index 02d9a63209..49771beaf4 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.736(Build 190705)") +#define PANDORA_VERSION ("7.0NG.736(Build 190706)") string pandora_path; string pandora_dir; diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc index 8ecffd52ee..756617327c 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.736(Build 190705))" + VALUE "ProductVersion", "(7.0NG.736(Build 190706))" VALUE "FileVersion", "1.0.0.0" END END diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control index 5e6512722a..6a48453fd6 100644 --- a/pandora_console/DEBIAN/control +++ b/pandora_console/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-console -Version: 7.0NG.736-190705 +Version: 7.0NG.736-190706 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 d6f3b6da50..1d03b25f1e 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.736-190705" +pandora_version="7.0NG.736-190706" package_pear=0 package_pandora=1 diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php index 62812d314c..a6c55e0755 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 = 'PC190705'; +$build_version = 'PC190706'; $pandora_version = 'v7.0NG.736'; // Do not overwrite default timezone set if defined. diff --git a/pandora_console/install.php b/pandora_console/install.php index 00e176f42c..f485cb3000 100644 --- a/pandora_console/install.php +++ b/pandora_console/install.php @@ -129,7 +129,7 @@ <div style='height: 10px'> <?php $version = '7.0NG.736'; - $build = '190705'; + $build = '190706'; $banner = "v$version Build $build"; error_reporting(0); diff --git a/pandora_console/pandora_console.redhat.spec b/pandora_console/pandora_console.redhat.spec index d3011eb849..28a96e4524 100644 --- a/pandora_console/pandora_console.redhat.spec +++ b/pandora_console/pandora_console.redhat.spec @@ -3,7 +3,7 @@ # %define name pandorafms_console %define version 7.0NG.736 -%define release 190705 +%define release 190706 # User and Group under which Apache is running %define httpd_name httpd diff --git a/pandora_console/pandora_console.rhel7.spec b/pandora_console/pandora_console.rhel7.spec index e841ce2f51..d44dc538ca 100644 --- a/pandora_console/pandora_console.rhel7.spec +++ b/pandora_console/pandora_console.rhel7.spec @@ -3,7 +3,7 @@ # %define name pandorafms_console %define version 7.0NG.736 -%define release 190705 +%define release 190706 # User and Group under which Apache is running %define httpd_name httpd diff --git a/pandora_console/pandora_console.spec b/pandora_console/pandora_console.spec index 1ee39cb54d..8fb2815e92 100644 --- a/pandora_console/pandora_console.spec +++ b/pandora_console/pandora_console.spec @@ -3,7 +3,7 @@ # %define name pandorafms_console %define version 7.0NG.736 -%define release 190705 +%define release 190706 %define httpd_name httpd # User and Group under which Apache is running %define httpd_name apache2 diff --git a/pandora_server/DEBIAN/control b/pandora_server/DEBIAN/control index 8f86f67614..7ecc116949 100644 --- a/pandora_server/DEBIAN/control +++ b/pandora_server/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-server -Version: 7.0NG.736-190705 +Version: 7.0NG.736-190706 Architecture: all Priority: optional Section: admin diff --git a/pandora_server/DEBIAN/make_deb_package.sh b/pandora_server/DEBIAN/make_deb_package.sh index 8a1a1c87fd..3663215aa1 100644 --- a/pandora_server/DEBIAN/make_deb_package.sh +++ b/pandora_server/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.736-190705" +pandora_version="7.0NG.736-190706" package_cpan=0 package_pandora=1 diff --git a/pandora_server/lib/PandoraFMS/Config.pm b/pandora_server/lib/PandoraFMS/Config.pm index c46b9e894f..a0152cc83e 100644 --- a/pandora_server/lib/PandoraFMS/Config.pm +++ b/pandora_server/lib/PandoraFMS/Config.pm @@ -45,7 +45,7 @@ our @EXPORT = qw( # version: Defines actual version of Pandora Server for this module only my $pandora_version = "7.0NG.736"; -my $pandora_build = "190705"; +my $pandora_build = "190706"; our $VERSION = $pandora_version." ".$pandora_build; # Setup hash diff --git a/pandora_server/lib/PandoraFMS/PluginTools.pm b/pandora_server/lib/PandoraFMS/PluginTools.pm index 2291610e57..6a09b7f52d 100644 --- a/pandora_server/lib/PandoraFMS/PluginTools.pm +++ b/pandora_server/lib/PandoraFMS/PluginTools.pm @@ -32,7 +32,7 @@ our @ISA = qw(Exporter); # version: Defines actual version of Pandora Server for this module only my $pandora_version = "7.0NG.736"; -my $pandora_build = "190705"; +my $pandora_build = "190706"; our $VERSION = $pandora_version." ".$pandora_build; our %EXPORT_TAGS = ( 'all' => [ qw() ] ); diff --git a/pandora_server/pandora_server.redhat.spec b/pandora_server/pandora_server.redhat.spec index b2e81b4c72..850f36ace4 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.736 -%define release 190705 +%define release 190706 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec index a31db9b0c4..930f8a681c 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.736 -%define release 190705 +%define release 190706 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer index 39391e9339..e30946b9ac 100755 --- a/pandora_server/pandora_server_installer +++ b/pandora_server/pandora_server_installer @@ -9,7 +9,7 @@ # ********************************************************************** PI_VERSION="7.0NG.736" -PI_BUILD="190705" +PI_BUILD="190706" MODE=$1 if [ $# -gt 1 ]; then diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl index fa0822b985..48f2961049 100644 --- a/pandora_server/util/pandora_db.pl +++ b/pandora_server/util/pandora_db.pl @@ -34,7 +34,7 @@ use PandoraFMS::Config; use PandoraFMS::DB; # version: define current version -my $version = "7.0NG.736 PS190705"; +my $version = "7.0NG.736 PS190706"; # Pandora server configuration my %conf; diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl index be30e449dc..3142d7a0d9 100644 --- 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.736 PS190705"; +my $version = "7.0NG.736 PS190706"; # save program name for logging my $progname = basename($0); From 90497410c75182d01021607f7f9fa426c25f2bfb Mon Sep 17 00:00:00 2001 From: artica <artica.devel@gmail.com> Date: Sun, 7 Jul 2019 00:01:07 +0200 Subject: [PATCH 48/83] 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 9fb3888b56..c701f2c1d8 100644 --- a/pandora_agents/unix/DEBIAN/control +++ b/pandora_agents/unix/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-agent-unix -Version: 7.0NG.736-190706 +Version: 7.0NG.736-190707 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 0db060be9d..9a728d043f 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.736-190706" +pandora_version="7.0NG.736-190707" 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 b995494f84..e0b5740813 100755 --- a/pandora_agents/unix/pandora_agent +++ b/pandora_agents/unix/pandora_agent @@ -42,7 +42,7 @@ my $Sem = undef; my $ThreadSem = undef; use constant AGENT_VERSION => '7.0NG.736'; -use constant AGENT_BUILD => '190706'; +use constant AGENT_BUILD => '190707'; # 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 341958f85b..4551d4f7ad 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.736 -%define release 190706 +%define release 190707 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 b16873ba8e..d32371885f 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.736 -%define release 190706 +%define release 190707 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 a460425043..85834b9b10 100755 --- a/pandora_agents/unix/pandora_agent_installer +++ b/pandora_agents/unix/pandora_agent_installer @@ -10,7 +10,7 @@ # ********************************************************************** PI_VERSION="7.0NG.736" -PI_BUILD="190706" +PI_BUILD="190707" OS_NAME=`uname -s` FORCE=0 diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi index 4fd63586fb..a4faf508be 100644 --- a/pandora_agents/win32/installer/pandora.mpi +++ b/pandora_agents/win32/installer/pandora.mpi @@ -186,7 +186,7 @@ UpgradeApplicationID {} Version -{190706} +{190707} ViewReadme {Yes} diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc index 49771beaf4..ae897511c6 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.736(Build 190706)") +#define PANDORA_VERSION ("7.0NG.736(Build 190707)") string pandora_path; string pandora_dir; diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc index 756617327c..41ccc44a4d 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.736(Build 190706))" + VALUE "ProductVersion", "(7.0NG.736(Build 190707))" VALUE "FileVersion", "1.0.0.0" END END diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control index 6a48453fd6..d3d25c2b86 100644 --- a/pandora_console/DEBIAN/control +++ b/pandora_console/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-console -Version: 7.0NG.736-190706 +Version: 7.0NG.736-190707 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 1d03b25f1e..352bd78c5b 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.736-190706" +pandora_version="7.0NG.736-190707" package_pear=0 package_pandora=1 diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php index a6c55e0755..ea494ea2cf 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 = 'PC190706'; +$build_version = 'PC190707'; $pandora_version = 'v7.0NG.736'; // Do not overwrite default timezone set if defined. diff --git a/pandora_console/install.php b/pandora_console/install.php index f485cb3000..ec9f8406d9 100644 --- a/pandora_console/install.php +++ b/pandora_console/install.php @@ -129,7 +129,7 @@ <div style='height: 10px'> <?php $version = '7.0NG.736'; - $build = '190706'; + $build = '190707'; $banner = "v$version Build $build"; error_reporting(0); diff --git a/pandora_console/pandora_console.redhat.spec b/pandora_console/pandora_console.redhat.spec index 28a96e4524..958156159b 100644 --- a/pandora_console/pandora_console.redhat.spec +++ b/pandora_console/pandora_console.redhat.spec @@ -3,7 +3,7 @@ # %define name pandorafms_console %define version 7.0NG.736 -%define release 190706 +%define release 190707 # User and Group under which Apache is running %define httpd_name httpd diff --git a/pandora_console/pandora_console.rhel7.spec b/pandora_console/pandora_console.rhel7.spec index d44dc538ca..d8b66e3648 100644 --- a/pandora_console/pandora_console.rhel7.spec +++ b/pandora_console/pandora_console.rhel7.spec @@ -3,7 +3,7 @@ # %define name pandorafms_console %define version 7.0NG.736 -%define release 190706 +%define release 190707 # User and Group under which Apache is running %define httpd_name httpd diff --git a/pandora_console/pandora_console.spec b/pandora_console/pandora_console.spec index 8fb2815e92..cb42983702 100644 --- a/pandora_console/pandora_console.spec +++ b/pandora_console/pandora_console.spec @@ -3,7 +3,7 @@ # %define name pandorafms_console %define version 7.0NG.736 -%define release 190706 +%define release 190707 %define httpd_name httpd # User and Group under which Apache is running %define httpd_name apache2 diff --git a/pandora_server/DEBIAN/control b/pandora_server/DEBIAN/control index 7ecc116949..3b5d219e67 100644 --- a/pandora_server/DEBIAN/control +++ b/pandora_server/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-server -Version: 7.0NG.736-190706 +Version: 7.0NG.736-190707 Architecture: all Priority: optional Section: admin diff --git a/pandora_server/DEBIAN/make_deb_package.sh b/pandora_server/DEBIAN/make_deb_package.sh index 3663215aa1..6e1912c27c 100644 --- a/pandora_server/DEBIAN/make_deb_package.sh +++ b/pandora_server/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.736-190706" +pandora_version="7.0NG.736-190707" package_cpan=0 package_pandora=1 diff --git a/pandora_server/lib/PandoraFMS/Config.pm b/pandora_server/lib/PandoraFMS/Config.pm index a0152cc83e..357ab0c1a4 100644 --- a/pandora_server/lib/PandoraFMS/Config.pm +++ b/pandora_server/lib/PandoraFMS/Config.pm @@ -45,7 +45,7 @@ our @EXPORT = qw( # version: Defines actual version of Pandora Server for this module only my $pandora_version = "7.0NG.736"; -my $pandora_build = "190706"; +my $pandora_build = "190707"; our $VERSION = $pandora_version." ".$pandora_build; # Setup hash diff --git a/pandora_server/lib/PandoraFMS/PluginTools.pm b/pandora_server/lib/PandoraFMS/PluginTools.pm index 6a09b7f52d..6270239337 100644 --- a/pandora_server/lib/PandoraFMS/PluginTools.pm +++ b/pandora_server/lib/PandoraFMS/PluginTools.pm @@ -32,7 +32,7 @@ our @ISA = qw(Exporter); # version: Defines actual version of Pandora Server for this module only my $pandora_version = "7.0NG.736"; -my $pandora_build = "190706"; +my $pandora_build = "190707"; our $VERSION = $pandora_version." ".$pandora_build; our %EXPORT_TAGS = ( 'all' => [ qw() ] ); diff --git a/pandora_server/pandora_server.redhat.spec b/pandora_server/pandora_server.redhat.spec index 850f36ace4..22fe1af31e 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.736 -%define release 190706 +%define release 190707 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec index 930f8a681c..5cbc0ddc69 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.736 -%define release 190706 +%define release 190707 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer index e30946b9ac..e61d88feae 100755 --- a/pandora_server/pandora_server_installer +++ b/pandora_server/pandora_server_installer @@ -9,7 +9,7 @@ # ********************************************************************** PI_VERSION="7.0NG.736" -PI_BUILD="190706" +PI_BUILD="190707" MODE=$1 if [ $# -gt 1 ]; then diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl index 48f2961049..e1b88ef2aa 100644 --- a/pandora_server/util/pandora_db.pl +++ b/pandora_server/util/pandora_db.pl @@ -34,7 +34,7 @@ use PandoraFMS::Config; use PandoraFMS::DB; # version: define current version -my $version = "7.0NG.736 PS190706"; +my $version = "7.0NG.736 PS190707"; # Pandora server configuration my %conf; diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl index 3142d7a0d9..11a293b4eb 100644 --- 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.736 PS190706"; +my $version = "7.0NG.736 PS190707"; # save program name for logging my $progname = basename($0); From 034181037dff514a7de7c97bbf84237aeda52ba1 Mon Sep 17 00:00:00 2001 From: artica <artica.devel@gmail.com> Date: Mon, 8 Jul 2019 00:01:17 +0200 Subject: [PATCH 49/83] 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 c701f2c1d8..02a7bdab5f 100644 --- a/pandora_agents/unix/DEBIAN/control +++ b/pandora_agents/unix/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-agent-unix -Version: 7.0NG.736-190707 +Version: 7.0NG.736-190708 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 9a728d043f..cc8929763d 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.736-190707" +pandora_version="7.0NG.736-190708" 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 e0b5740813..399559f00b 100755 --- a/pandora_agents/unix/pandora_agent +++ b/pandora_agents/unix/pandora_agent @@ -42,7 +42,7 @@ my $Sem = undef; my $ThreadSem = undef; use constant AGENT_VERSION => '7.0NG.736'; -use constant AGENT_BUILD => '190707'; +use constant AGENT_BUILD => '190708'; # 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 4551d4f7ad..977af1104f 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.736 -%define release 190707 +%define release 190708 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 d32371885f..84eac835d9 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.736 -%define release 190707 +%define release 190708 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 85834b9b10..02c3728350 100755 --- a/pandora_agents/unix/pandora_agent_installer +++ b/pandora_agents/unix/pandora_agent_installer @@ -10,7 +10,7 @@ # ********************************************************************** PI_VERSION="7.0NG.736" -PI_BUILD="190707" +PI_BUILD="190708" OS_NAME=`uname -s` FORCE=0 diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi index a4faf508be..ce66038ef5 100644 --- a/pandora_agents/win32/installer/pandora.mpi +++ b/pandora_agents/win32/installer/pandora.mpi @@ -186,7 +186,7 @@ UpgradeApplicationID {} Version -{190707} +{190708} ViewReadme {Yes} diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc index ae897511c6..41ae8eb267 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.736(Build 190707)") +#define PANDORA_VERSION ("7.0NG.736(Build 190708)") string pandora_path; string pandora_dir; diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc index 41ccc44a4d..696d6c34e3 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.736(Build 190707))" + VALUE "ProductVersion", "(7.0NG.736(Build 190708))" VALUE "FileVersion", "1.0.0.0" END END diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control index d3d25c2b86..062c14afdc 100644 --- a/pandora_console/DEBIAN/control +++ b/pandora_console/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-console -Version: 7.0NG.736-190707 +Version: 7.0NG.736-190708 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 352bd78c5b..56d98823ac 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.736-190707" +pandora_version="7.0NG.736-190708" package_pear=0 package_pandora=1 diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php index ea494ea2cf..3adcf1f113 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 = 'PC190707'; +$build_version = 'PC190708'; $pandora_version = 'v7.0NG.736'; // Do not overwrite default timezone set if defined. diff --git a/pandora_console/install.php b/pandora_console/install.php index ec9f8406d9..e22cf98add 100644 --- a/pandora_console/install.php +++ b/pandora_console/install.php @@ -129,7 +129,7 @@ <div style='height: 10px'> <?php $version = '7.0NG.736'; - $build = '190707'; + $build = '190708'; $banner = "v$version Build $build"; error_reporting(0); diff --git a/pandora_console/pandora_console.redhat.spec b/pandora_console/pandora_console.redhat.spec index 958156159b..4b5ba54d58 100644 --- a/pandora_console/pandora_console.redhat.spec +++ b/pandora_console/pandora_console.redhat.spec @@ -3,7 +3,7 @@ # %define name pandorafms_console %define version 7.0NG.736 -%define release 190707 +%define release 190708 # User and Group under which Apache is running %define httpd_name httpd diff --git a/pandora_console/pandora_console.rhel7.spec b/pandora_console/pandora_console.rhel7.spec index d8b66e3648..7b8be55c9a 100644 --- a/pandora_console/pandora_console.rhel7.spec +++ b/pandora_console/pandora_console.rhel7.spec @@ -3,7 +3,7 @@ # %define name pandorafms_console %define version 7.0NG.736 -%define release 190707 +%define release 190708 # User and Group under which Apache is running %define httpd_name httpd diff --git a/pandora_console/pandora_console.spec b/pandora_console/pandora_console.spec index cb42983702..cb245a98b6 100644 --- a/pandora_console/pandora_console.spec +++ b/pandora_console/pandora_console.spec @@ -3,7 +3,7 @@ # %define name pandorafms_console %define version 7.0NG.736 -%define release 190707 +%define release 190708 %define httpd_name httpd # User and Group under which Apache is running %define httpd_name apache2 diff --git a/pandora_server/DEBIAN/control b/pandora_server/DEBIAN/control index 3b5d219e67..3a2b2d11f1 100644 --- a/pandora_server/DEBIAN/control +++ b/pandora_server/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-server -Version: 7.0NG.736-190707 +Version: 7.0NG.736-190708 Architecture: all Priority: optional Section: admin diff --git a/pandora_server/DEBIAN/make_deb_package.sh b/pandora_server/DEBIAN/make_deb_package.sh index 6e1912c27c..fa5303f620 100644 --- a/pandora_server/DEBIAN/make_deb_package.sh +++ b/pandora_server/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.736-190707" +pandora_version="7.0NG.736-190708" package_cpan=0 package_pandora=1 diff --git a/pandora_server/lib/PandoraFMS/Config.pm b/pandora_server/lib/PandoraFMS/Config.pm index 357ab0c1a4..1d73d1ab8b 100644 --- a/pandora_server/lib/PandoraFMS/Config.pm +++ b/pandora_server/lib/PandoraFMS/Config.pm @@ -45,7 +45,7 @@ our @EXPORT = qw( # version: Defines actual version of Pandora Server for this module only my $pandora_version = "7.0NG.736"; -my $pandora_build = "190707"; +my $pandora_build = "190708"; our $VERSION = $pandora_version." ".$pandora_build; # Setup hash diff --git a/pandora_server/lib/PandoraFMS/PluginTools.pm b/pandora_server/lib/PandoraFMS/PluginTools.pm index 6270239337..80f94f0543 100644 --- a/pandora_server/lib/PandoraFMS/PluginTools.pm +++ b/pandora_server/lib/PandoraFMS/PluginTools.pm @@ -32,7 +32,7 @@ our @ISA = qw(Exporter); # version: Defines actual version of Pandora Server for this module only my $pandora_version = "7.0NG.736"; -my $pandora_build = "190707"; +my $pandora_build = "190708"; our $VERSION = $pandora_version." ".$pandora_build; our %EXPORT_TAGS = ( 'all' => [ qw() ] ); diff --git a/pandora_server/pandora_server.redhat.spec b/pandora_server/pandora_server.redhat.spec index 22fe1af31e..9eca22a68f 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.736 -%define release 190707 +%define release 190708 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec index 5cbc0ddc69..92935fbd0d 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.736 -%define release 190707 +%define release 190708 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer index e61d88feae..1ddc84c2c9 100755 --- a/pandora_server/pandora_server_installer +++ b/pandora_server/pandora_server_installer @@ -9,7 +9,7 @@ # ********************************************************************** PI_VERSION="7.0NG.736" -PI_BUILD="190707" +PI_BUILD="190708" MODE=$1 if [ $# -gt 1 ]; then diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl index e1b88ef2aa..f4c3a443df 100644 --- a/pandora_server/util/pandora_db.pl +++ b/pandora_server/util/pandora_db.pl @@ -34,7 +34,7 @@ use PandoraFMS::Config; use PandoraFMS::DB; # version: define current version -my $version = "7.0NG.736 PS190707"; +my $version = "7.0NG.736 PS190708"; # Pandora server configuration my %conf; diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl index 11a293b4eb..cf5bf608e3 100644 --- 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.736 PS190707"; +my $version = "7.0NG.736 PS190708"; # save program name for logging my $progname = basename($0); From b6d551d5837be53af4a829282abe7f8ac79d9867 Mon Sep 17 00:00:00 2001 From: Tatiana Llorente <tatiana.llorente@artica.es> Date: Mon, 8 Jul 2019 10:08:04 +0200 Subject: [PATCH 50/83] Changed images with white background - #4194 --- .../images/wizard/netscan_green.png | Bin 15485 -> 3424 bytes .../include/styles/pandora_black.css | 143 +++++++++--------- 2 files changed, 71 insertions(+), 72 deletions(-) diff --git a/pandora_console/images/wizard/netscan_green.png b/pandora_console/images/wizard/netscan_green.png index faeae9b04208888f9b7fdb70a185494bf45cd862..c602e96ac58a079b2154a8f044b5ac1c1527361a 100644 GIT binary patch literal 3424 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 literal 15485 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 diff --git a/pandora_console/include/styles/pandora_black.css b/pandora_console/include/styles/pandora_black.css index a94dcf468c..2db907831a 100644 --- a/pandora_console/include/styles/pandora_black.css +++ b/pandora_console/include/styles/pandora_black.css @@ -21,6 +21,7 @@ Description: The default Pandora FMS theme layout // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ +/* General styles */ body, div#page, #menu_tab_frame, @@ -28,7 +29,6 @@ div#page, #menu_tab_frame_view_bc, input.search_input, .filters input, -input:-internal-autofill-selected, input#text-id_parent.ac_input, input, textarea, @@ -55,48 +55,6 @@ table.databox, color: #fff; } -/* Tabs icons change color */ -#menu_tab li.nomn img, -#menu_tab li img { - filter: invert(100%); -} - -/* White text */ -a, -#menu_tab_left li a, -#menu_tab_left li span, -fieldset legend, -.tactical_set legend, -#user-notifications-wrappe, -#user_form *, -h1, -h2, -h3, -h4, -.info_table > tbody > tr > th, -.info_table > thead > tr > th, -.info_table > thead > tr > th a, -.info_table > thead > tr > th > span, -form.discovery label, -.edit_user_labels, -.input_label, -.pagination, -tr.group_view_data, -.group_view_data { - color: #fff; -} - -/* Overwrite inline styles */ -.textodialogo td { - color: #fff !important; -} - -/* snmp */ -#snmp_browser { - background-color: #222 !important; -} - -/* General styles */ .box-shadow { box-shadow: none; } @@ -130,6 +88,76 @@ textarea:disabled { filter: brightness(2.5) contrast(3.5); } +/* White text */ +a, +#menu_tab_left li a, +#menu_tab_left li span, +fieldset legend, +.tactical_set legend, +#user-notifications-wrappe, +#user_form *, +h1, +h2, +h3, +h4, +.info_table > tbody > tr > th, +.info_table > thead > tr > th, +.info_table > thead > tr > th a, +.info_table > thead > tr > th > span, +form.discovery label, +.edit_user_labels, +.input_label, +.pagination, +tr.group_view_data, +.group_view_data { + color: #fff; +} + +/* Tabs icons change color */ +#menu_tab li.nomn img, +#menu_tab li img { + filter: invert(100%); +} + +/* menu.css */ +.operation { + background-color: #252525; +} + +.godmode, +#menu_full { + background-color: #1a1a1a; +} + +.button_collapse { + background-color: #444; +} + +.operation .selected, +.godmode .selected, +.menu_icon:hover { + background-color: #080808; +} + +.sub_subMenu { + background-color: #343434; +} + +/* footer */ +div#foot { + background: #222; +} + +/* Overwrite inline styles */ +.textodialogo td { + color: #fff !important; +} + +/* snmp */ +#snmp_browser { + background-color: #222 !important; +} + /* events.css */ table.table_modal_alternate tr:nth-child(odd) td { background-color: #222; @@ -252,35 +280,6 @@ table#diagnostic_info tbody td div { filter: brightness(2.5); } -/* menu.css */ -.operation { - background-color: #252525; -} - -.godmode, -#menu_full { - background-color: #1a1a1a; -} - -.button_collapse { - background-color: #444; -} - -.operation .selected, -.godmode .selected, -.menu_icon:hover { - background-color: #080808; -} - -.sub_subMenu { - background-color: #343434; -} - -/* footer */ -div#foot { - background: #222; -} - /* jquery custom */ .ui-dialog, .ui-widget-content { From 8ea9b673264fead2bb266fb34febd065774c36a0 Mon Sep 17 00:00:00 2001 From: Daniel Barbero <daniel.barbero@artica.es> Date: Mon, 8 Jul 2019 10:20:43 +0200 Subject: [PATCH 51/83] fixed graph in mobile view metaconsole --- .../mobile/operation/module_graph.php | 35 +++++++++++++++++-- pandora_console/mobile/operation/modules.php | 16 ++++++++- 2 files changed, 47 insertions(+), 4 deletions(-) diff --git a/pandora_console/mobile/operation/module_graph.php b/pandora_console/mobile/operation/module_graph.php index 3a6668b0bc..2d057fb8fb 100644 --- a/pandora_console/mobile/operation/module_graph.php +++ b/pandora_console/mobile/operation/module_graph.php @@ -47,6 +47,8 @@ class ModuleGraph private $module = null; + private $server_id = ''; + function __construct() { @@ -68,6 +70,8 @@ class ModuleGraph $this->id = (int) $system->getRequest('id', 0); $this->id_agent = (int) $system->getRequest('id_agent', 0); + $this->server_id = $system->getRequest('server_id', ''); + $this->module = modules_get_agentmodule($this->id); $this->graph_type = return_graphtype($this->module['id_tipo_modulo']); @@ -124,6 +128,16 @@ class ModuleGraph switch ($parameter2) { case 'get_graph': $this->getFilters(); + if ($system->getConfig('metaconsole')) { + $server_data = metaconsole_get_connection_by_id( + $this->server_id + ); + // Establishes connection. + if (metaconsole_load_external_db($server_data) !== NOERR) { + return false; + } + } + $correct = 0; $graph = ''; $correct = 1; @@ -197,6 +211,10 @@ class ModuleGraph break; } + if ($system->getConfig('metaconsole')) { + metaconsole_restore_db(); + } + $graph = ob_get_clean().$graph; echo json_encode(['correct' => $correct, 'graph' => $graph]); @@ -252,7 +270,7 @@ class ModuleGraph - $(".ui-collapsible").height() - 55; var width = $(document).width() - 25; - ajax_get_graph($("#id_module").val(), heigth, width); + ajax_get_graph($("#id_module").val(), heigth, width, $("#server_id").val()); } load_graph(); @@ -264,7 +282,7 @@ class ModuleGraph }); }); - function ajax_get_graph(id, heigth_graph, width_graph) { + function ajax_get_graph(id, heigth_graph, width_graph, server_id) { postvars = {}; postvars["action"] = "ajax"; postvars["parameter1"] = "module_graph"; @@ -284,6 +302,8 @@ class ModuleGraph postvars["id"] = id; + postvars["server_id"] = server_id; + $.ajax ({ type: "POST", url: "index.php", @@ -360,9 +380,18 @@ class ModuleGraph ] ) ); + $ui->contentAddHtml( + $ui->getInput( + [ + 'id' => 'server_id', + 'value' => $this->server_id, + 'type' => 'hidden', + ] + ) + ); $title = sprintf(__('Options for %s : %s'), $agent_alias, $this->module['nombre']); $ui->contentBeginCollapsible($title); - $ui->beginForm('index.php?page=module_graph&id='.$this->id); + $ui->beginForm('index.php?page=module_graph&id='.$this->id.'&server_id='.$this->server_id); $options = [ 'name' => 'draw_alerts', 'value' => 1, diff --git a/pandora_console/mobile/operation/modules.php b/pandora_console/mobile/operation/modules.php index 8b9bd18804..5b32c358ad 100644 --- a/pandora_console/mobile/operation/modules.php +++ b/pandora_console/mobile/operation/modules.php @@ -485,6 +485,8 @@ class Modules $temp_modules = db_get_all_rows_sql($sql_select.$sql.$sql_limit); foreach ($temp_modules as $result_element_key => $result_element_value) { + $result_element_value['server_id'] = $server['id']; + $result_element_value['server_name'] = $server['server_name']; array_push($modules_db, $result_element_value); } @@ -684,7 +686,19 @@ class Modules $row[7] = ui_get_snapshot_image($link, $is_snapshot).' '; } else { - $row[7] = $row[__('Data')] = '<span style="white-space: nowrap;">'.'<span style="display: none;" class="show_collapside">'.$row[__('Status')].' </span>'.'<a data-ajax="false" class="ui-link" '.'href="index.php?page=module_graph&id='.$module['id_agente_modulo'].'&id_agent='.$this->id_agent.'">'.$output.'</a>'.'</span>'; + if ($system->getConfig('metaconsole')) { + $row[__('Data')] = '<span style="white-space: nowrap;">'; + $row[__('Data')] .= '<span style="display: none;" class="show_collapside">'; + $row[__('Data')] .= $row[__('Status')].' </span>'; + $row[__('Data')] .= '<a data-ajax="false" class="ui-link" '; + $row[__('Data')] .= 'href="index.php?page=module_graph&id='.$module['id_agente_modulo']; + $row[__('Data')] .= '&server_id='.$module['server_id']; + $row[__('Data')] .= '&id_agent='.$this->id_agent.'">'; + $row[__('Data')] .= $output.'</a></span>'; + $row[7] = $row[__('Data')]; + } else { + $row[7] = $row[__('Data')] = '<span style="white-space: nowrap;">'.'<span style="display: none;" class="show_collapside">'.$row[__('Status')].' </span>'.'<a data-ajax="false" class="ui-link" '.'href="index.php?page=module_graph&id='.$module['id_agente_modulo'].'&id_agent='.$this->id_agent.'">'.$output.'</a>'.'</span>'; + } } if (!$ajax) { From 0cccafc7bed19abcb209e0505d4266562769ff4d Mon Sep 17 00:00:00 2001 From: Tatiana Llorente <tatiana.llorente@artica.es> Date: Mon, 8 Jul 2019 10:37:34 +0200 Subject: [PATCH 52/83] Heartbeat gifs with black background - #4194 --- .../images/heartbeat_green_black.gif | Bin 0 -> 18665 bytes pandora_console/images/heartbeat_red_black.gif | Bin 0 -> 16734 bytes pandora_console/include/functions_agents.php | 15 +++++++++++++-- 3 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 pandora_console/images/heartbeat_green_black.gif create mode 100644 pandora_console/images/heartbeat_red_black.gif diff --git a/pandora_console/images/heartbeat_green_black.gif b/pandora_console/images/heartbeat_green_black.gif new file mode 100644 index 0000000000000000000000000000000000000000..b365cade3f406e3492b7cd532805da83f862cdbd GIT binary patch literal 18665 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 literal 0 HcmV?d00001 diff --git a/pandora_console/images/heartbeat_red_black.gif b/pandora_console/images/heartbeat_red_black.gif new file mode 100644 index 0000000000000000000000000000000000000000..90fed812db59640d17311708a2f774a82f643ea3 GIT binary patch literal 16734 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 literal 0 HcmV?d00001 diff --git a/pandora_console/include/functions_agents.php b/pandora_console/include/functions_agents.php index affa4269d4..69759c1f5e 100644 --- a/pandora_console/include/functions_agents.php +++ b/pandora_console/include/functions_agents.php @@ -3385,11 +3385,22 @@ function agents_get_image_status($status) */ function agents_get_status_animation($up=true) { + global $config; + + // Gif with black background or white background + if ($config['style'] === 'pandora_black') { + $heartbeat_green = 'images/heartbeat_green_black.gif'; + $heartbeat_red = 'images/heartbeat_red_black.gif'; + } else { + $heartbeat_green = 'images/heartbeat_green.gif'; + $heartbeat_red = 'images/heartbeat_red.gif'; + } + switch ($up) { case true: default: return html_print_image( - 'images/heartbeat_green.gif', + $heartbeat_green, true, [ 'width' => '170', @@ -3399,7 +3410,7 @@ function agents_get_status_animation($up=true) case false: return html_print_image( - 'images/heartbeat_red.gif', + $heartbeat_red, true, [ 'width' => '170', From f444f639bd02c118d28f71b74c97104d1d02294f Mon Sep 17 00:00:00 2001 From: Kike <enrique.martin@artica.es> Date: Mon, 8 Jul 2019 12:17:48 +0200 Subject: [PATCH 53/83] New SMPP client --- pandora_server/util/pandora_smpp.pl | 152 ++++++++++++++++++++++++++++ 1 file changed, 152 insertions(+) create mode 100755 pandora_server/util/pandora_smpp.pl diff --git a/pandora_server/util/pandora_smpp.pl b/pandora_server/util/pandora_smpp.pl new file mode 100755 index 0000000000..af85d496f5 --- /dev/null +++ b/pandora_server/util/pandora_smpp.pl @@ -0,0 +1,152 @@ +#!/usr/bin/perl + +use strict; +use warnings; + +use Net::SMPP; + +use lib '/usr/lib/perl5'; +use PandoraFMS::PluginTools qw(read_configuration); + +my $HELP =<<EO_H; + + +####################### +Pandora FMS SMPP client +####################### + +Usage: + +$0 -server <smsc_server:port> -user <user_id> -password <user_password> -source <source_number> -destination <destination_numbers> -message <short_message> [OPTIONS] + +- <destination_numbers> Comma separated list of destination numbers (+123456789,+234567891,...) + +OPTIONS: + +-service_type <value> Default: '' +-source_addr_ton <value> Default: 0x00 +-source_addr_npi <value> Default: 0x00 +-dest_addr_ton <value> Default: 0x00 +-dest_addr_npi <value> Default: 0x00 +-esm_class <value> Default: 0x00 +-protocol_id <value> Default: 0x00 +-priority_flag <value> Default: 0x00 +-schedule_delivery_time <value> Default: '' +-validity_period <value> Default: '' +-registered_delivery <value> Default: 0x00 +-replace_if_present_flag <value> Default: 0x00 +-data_coding <value> Default: 0x00 +-sm_default_msg_id <value> Default: 0x00 +-system_type <value> Default: '' +-interface_version <value> Default: 0x34 +-addr_ton <value> Default: 0x00 +-addr_npi <value> Default: 0x00 +-address_range <value> Default: '' + +Example: + +$0 -server 192.168.1.50:2775 -user myuser -password mypassword -source +123456789 -destination +234567891 -message "Content of SMS message" + +EO_H + +my $config; +$config = read_configuration($config); + +if (!$config->{'server'}){ + print "Parameter -server is mandatory."; + print $HELP; + exit; +} +if (!$config->{'user'}){ + print "Parameter -user is mandatory."; + print $HELP; + exit; +} +if (!$config->{'password'}){ + print "Parameter -password is mandatory."; + print $HELP; + exit; +} +if (!$config->{'source'}){ + print "Parameter -source is mandatory."; + print $HELP; + exit; +} +if (!$config->{'destination'}){ + print "Parameter -destination is mandatory."; + print $HELP; + exit; +} +if (!$config->{'message'}){ + print "Parameter -message is mandatory."; + print $HELP; + exit; +} + +my ($smsc_server, $smsc_port) = split /:/, $config->{'server'}; + +my @destination_numbers = $config->{'destination'}; + +if (!$smsc_port){ + $smsc_port = 2775; +} + +$config->{'service_type'} = '' if (!$config->{'service_type'}); +$config->{'source_addr_ton'} = '0x00' if (!$config->{'source_addr_ton'}); +$config->{'source_addr_npi'} = '0x00' if (!$config->{'source_addr_npi'}); +$config->{'dest_addr_ton'} = '0x00' if (!$config->{'dest_addr_ton'}); +$config->{'dest_addr_npi'} = '0x00' if (!$config->{'dest_addr_npi'}); +$config->{'esm_class'} = '0x00' if (!$config->{'esm_class'}); +$config->{'protocol_id'} = '0x00' if (!$config->{'protocol_id'}); +$config->{'priority_flag'} = '0x00' if (!$config->{'priority_flag'}); +$config->{'schedule_delivery_time'} = '' if (!$config->{'schedule_delivery_time'}); +$config->{'validity_period'} = '' if (!$config->{'validity_period'}); +$config->{'registered_delivery'} = '0x00' if (!$config->{'registered_delivery'}); +$config->{'replace_if_present_flag'} = '0x00' if (!$config->{'replace_if_present_flag'}); +$config->{'data_coding'} = '0x00' if (!$config->{'data_coding'}); +$config->{'sm_default_msg_id'} = '0x00' if (!$config->{'sm_default_msg_id'}); +$config->{'system_type'} = '' if (!$config->{'system_type'}); +$config->{'interface_version'} = '0x34' if (!$config->{'interface_version'}); +$config->{'addr_ton'} = '0x00' if (!$config->{'addr_ton'}); +$config->{'addr_npi'} = '0x00' if (!$config->{'addr_npi'}); +$config->{'address_range'} = '' if (!$config->{'address_range'}); + +my $smpp = Net::SMPP->new_transmitter( + $smsc_server, + port => $smsc_port, + system_id => $config->{'user'}, + password => $config->{'password'}, + system_type => $config->{'system_type'}, + interface_version => $config->{'interface_version'}, + addr_ton => $config->{'addr_ton'}, + addr_npi => $config->{'addr_npi'}, + address_range => $config->{'address_range'} +) or die "Unable to connect to [$smsc_server] on port [$smsc_port] with user [" . $config->{'user'} . "]\n"; + +foreach my $destination_number (@destination_numbers){ + my $resp_pdu = $smpp->submit_sm( + source_addr => $config->{'source'}, + destination_addr => $destination_number, + short_message => $config->{'message'}, + service_type => $config->{'service_type'}, + source_addr_ton => $config->{'source_addr_ton'}, + source_addr_npi => $config->{'source_addr_npi'}, + dest_addr_ton => $config->{'dest_addr_ton'}, + dest_addr_npi => $config->{'dest_addr_npi'}, + esm_class => $config->{'esm_class'}, + protocol_id => $config->{'protocol_id'}, + priority_flag => $config->{'priority_flag'}, + schedule_delivery_time => $config->{'schedule_delivery_time'}, + validity_period => $config->{'validity_period'}, + registered_delivery => $config->{'registered_delivery'}, + replace_if_present_flag => $config->{'replace_if_present_flag'}, + data_coding => $config->{'data_coding'}, + sm_default_msg_id => $config->{'sm_default_msg_id'} + ); + + if ($resp_pdu->{message_id}){ + print "SUCCESS: Message sent to [$destination_number]\n"; + }else{ + print "ERROR: Unable to send message to [$destination_number] - Response error: " . $resp_pdu->explain_status() . "\n"; + } +} \ No newline at end of file From b70c904ec3cb79dd31e9fa723d24099e1e04becd Mon Sep 17 00:00:00 2001 From: Daniel Barbero <daniel.barbero@artica.es> Date: Mon, 8 Jul 2019 13:40:52 +0200 Subject: [PATCH 54/83] fixed minor error network components --- pandora_console/include/javascript/pandora_modules.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandora_console/include/javascript/pandora_modules.js b/pandora_console/include/javascript/pandora_modules.js index 1d5c804289..2795df7bdb 100644 --- a/pandora_console/include/javascript/pandora_modules.js +++ b/pandora_console/include/javascript/pandora_modules.js @@ -536,7 +536,7 @@ function configure_modules_form() { var obj = jQuery.parseJSON(data["macros"]); $.each(obj, function(k, macro) { - add_macro_field(macro, "simple-macro"); + add_macro_field(macro, "simple-macro", "td"); }); } From d5362c1d5dfe04abe5a85fc95d79dd2b175c138d Mon Sep 17 00:00:00 2001 From: alejandro-campos <alejandro.campos@artica.es> Date: Mon, 8 Jul 2019 16:07:22 +0200 Subject: [PATCH 55/83] fix bug: label macros not being replaced in view report --- .../include/functions_reporting.php | 779 +++++++++--------- 1 file changed, 399 insertions(+), 380 deletions(-) diff --git a/pandora_console/include/functions_reporting.php b/pandora_console/include/functions_reporting.php index 46359c1471..aac7e2104d 100755 --- a/pandora_console/include/functions_reporting.php +++ b/pandora_console/include/functions_reporting.php @@ -190,13 +190,13 @@ function reporting_make_reporting_data( ); $sql_tags_join = 'INNER JOIN tagente ON tagente.id_agente = t1.id_agente - INNER JOIN ttag_module ON ttag_module.id_agente_modulo = t1.id_agente_modulo - LEFT JOIN tagent_secondary_group tasg ON tagente.id_agente = tasg.id_agent'; + INNER JOIN ttag_module ON ttag_module.id_agente_modulo = t1.id_agente_modulo + LEFT JOIN tagent_secondary_group tasg ON tagente.id_agente = tasg.id_agent'; $sql = sprintf( 'SELECT count(*) FROM tagente_modulo t1 - %s WHERE t1.delete_pending = 0 AND t1.id_agente_modulo = '.$content['id_agent_module'].' - AND t1.id_agente = '.$content['id_agent'].' %s', + %s WHERE t1.delete_pending = 0 AND t1.id_agente_modulo = '.$content['id_agent_module'].' + AND t1.id_agente = '.$content['id_agent'].' %s', $sql_tags_join, $where_tags ); @@ -284,6 +284,25 @@ function reporting_make_reporting_data( if (!metaconsole_load_external_db($connection)) { continue; } + + $items_label['agent_description'] = agents_get_description($content['id_agent']); + $items_label['agent_group'] = agents_get_agent_group($content['id_agent']); + $items_label['agent_address'] = agents_get_address($content['id_agent']); + + $modules = agents_get_modules( + $agent_value, + [ + 'id_agente_modulo', + 'nombre', + 'descripcion', + ], + [ + 'id_agente_modulo' => $content['id_agent_module'], + ] + ); + + $items_label['module_name'] = $modules[$content['id_agent_module']]['nombre']; + $items_label['module_description'] = $modules[$content['id_agent_module']]['descripcion']; } if (is_array($content['id_agent']) && count($content['id_agent']) != 1) { @@ -294,12 +313,12 @@ function reporting_make_reporting_data( $content['style']['name_label'] = str_replace('_module_', count($content['id_agent_module']).__(' modules'), $content['style']['name_label']); } - $content['name'] = reporting_label_macro($items_label, $content['style']['name_label']); - if ($metaconsole_on) { // Restore db connection. metaconsole_restore_db(); } + + $content['name'] = reporting_label_macro($items_label, $content['style']['name_label']); } switch (reporting_get_type($content)) { @@ -1359,8 +1378,8 @@ function reporting_event_top_n( // Get all the related data. $sql = sprintf( 'SELECT id_agent_module, server_name - FROM treport_content_item - WHERE id_report_content = %d', + FROM treport_content_item + WHERE id_report_content = %d', $content['id_rc'] ); @@ -2323,9 +2342,9 @@ function reporting_exception( // Get all the related data. $sql = sprintf( ' - SELECT id_agent_module, server_name, operation - FROM treport_content_item - WHERE id_report_content = %d', + SELECT id_agent_module, server_name, operation + FROM treport_content_item + WHERE id_report_content = %d', $content['id_rc'] ); @@ -3091,10 +3110,10 @@ function reporting_database_serialized($report, $content) // This query gets information from the default and the historic database $result = db_get_all_rows_sql( 'SELECT * - FROM tagente_datos - WHERE id_agente_modulo = '.$content['id_agent_module'].' - AND utimestamp > '.$datelimit.' - AND utimestamp <= '.$report['datetime'], + FROM tagente_datos + WHERE id_agente_modulo = '.$content['id_agent_module'].' + AND utimestamp > '.$datelimit.' + AND utimestamp <= '.$report['datetime'], $search_in_history_db ); @@ -3103,10 +3122,10 @@ function reporting_database_serialized($report, $content) // This query gets information from the default and the historic database $result = db_get_all_rows_sql( 'SELECT * - FROM tagente_datos_string - WHERE id_agente_modulo = '.$content['id_agent_module'].' - AND utimestamp > '.$datelimit.' - AND utimestamp <= '.$report['datetime'], + FROM tagente_datos_string + WHERE id_agente_modulo = '.$content['id_agent_module'].' + AND utimestamp > '.$datelimit.' + AND utimestamp <= '.$report['datetime'], $search_in_history_db ); } @@ -3211,9 +3230,9 @@ function reporting_group_configuration($report, $content) } } else { $sql = ' - SELECT * - FROM tagente - WHERE id_grupo='.$content['id_group']; + SELECT * + FROM tagente + WHERE id_grupo='.$content['id_group']; } $agents_list = db_get_all_rows_sql($sql); @@ -3472,25 +3491,25 @@ function reporting_alert_report_group($report, $content) if ($content['id_group'] == 0) { $agent_modules = db_get_all_rows_sql( ' - SELECT distinct(id_agent_module) - FROM talert_template_modules - WHERE disabled = 0 - AND id_agent_module IN ( - SELECT id_agente_modulo - FROM tagente_modulo)' + SELECT distinct(id_agent_module) + FROM talert_template_modules + WHERE disabled = 0 + AND id_agent_module IN ( + SELECT id_agente_modulo + FROM tagente_modulo)' ); } else { $agent_modules = db_get_all_rows_sql( ' - SELECT distinct(id_agent_module) - FROM talert_template_modules - WHERE disabled = 0 - AND id_agent_module IN ( - SELECT id_agente_modulo - FROM tagente_modulo - WHERE id_agente IN ( - SELECT id_agente - FROM tagente WHERE id_grupo = '.$content['id_group'].'))' + SELECT distinct(id_agent_module) + FROM talert_template_modules + WHERE disabled = 0 + AND id_agent_module IN ( + SELECT id_agente_modulo + FROM tagente_modulo + WHERE id_agente IN ( + SELECT id_agente + FROM tagente WHERE id_grupo = '.$content['id_group'].'))' ); } @@ -4109,8 +4128,8 @@ function reporting_netflow( // Get item filters. $filter = db_get_row_sql( "SELECT * - FROM tnetflow_filter - WHERE id_sg = '".(int) $content['text']."'", + FROM tnetflow_filter + WHERE id_sg = '".(int) $content['text']."'", false, true ); @@ -4294,9 +4313,9 @@ function reporting_agent_configuration($report, $content) } $sql = ' - SELECT * - FROM tagente - WHERE id_agente='.$content['id_agent']; + SELECT * + FROM tagente + WHERE id_agente='.$content['id_agent']; $agent_data = db_get_row_sql($sql); $agent_configuration = []; @@ -4316,9 +4335,9 @@ function reporting_agent_configuration($report, $content) if (!empty($modules)) { foreach ($modules as $id_agent_module => $module) { $sql = " - SELECT * - FROM tagente_modulo - WHERE id_agente_modulo = $id_agent_module"; + SELECT * + FROM tagente_modulo + WHERE id_agente_modulo = $id_agent_module"; $module_db = db_get_row_sql($sql); $data_module = []; @@ -4364,12 +4383,12 @@ function reporting_agent_configuration($report, $content) $data_module['status_icon'] = ui_print_status_image($status, $title, true); $data_module['status'] = $title; $sql_tag = " - SELECT name - FROM ttag - WHERE id_tag IN ( - SELECT id_tag - FROM ttag_module - WHERE id_agente_modulo = $id_agent_module)"; + SELECT name + FROM ttag + WHERE id_tag IN ( + SELECT id_tag + FROM ttag_module + WHERE id_agente_modulo = $id_agent_module)"; $tags = db_get_all_rows_sql($sql_tag); if ($tags === false) { $data_module['tags'] = []; @@ -4537,41 +4556,41 @@ function reporting_value($report, $content, $type, $pdf=false) } } else { $value = ' - <table border="0" style="margin:0 auto;text-align:center;"> - <tr> - <td width="400px;" height="20%;">'; + <table border="0" style="margin:0 auto;text-align:center;"> + <tr> + <td width="400px;" height="20%;">'; if ($content['visual_format'] == 1 || $content['visual_format'] == 2 || $content['visual_format'] == 3) { $value .= ' - <table style="width:90%;margin:0 auto;background-color:#eee;border: solid lightgray 1px;"> - <tr> - <th style="padding:5px;background-color:#82b92e;"> - '.__('Agent').' - </th> - <th style="padding:5px;background-color:#82b92e;"> - '.__('Module').' - </th> - <th style="padding:5px;background-color:#82b92e;"> - '.__('Maximum').' - </th> - <tr> - <td style="padding:5px;"> - '.$agent_name.' - </td> - <td style="padding:5px;"> - '.$module_name.' - </td> - <td style="padding:5px;"> - '.format_for_graph(reporting_get_agentmodule_data_max($content['id_agent_module'], $content['period'], $report['datetime']), $config['graph_precision']).' '.$unit.' - </td> - </tr> - </table>'; + <table style="width:90%;margin:0 auto;background-color:#eee;border: solid lightgray 1px;"> + <tr> + <th style="padding:5px;background-color:#82b92e;"> + '.__('Agent').' + </th> + <th style="padding:5px;background-color:#82b92e;"> + '.__('Module').' + </th> + <th style="padding:5px;background-color:#82b92e;"> + '.__('Maximum').' + </th> + <tr> + <td style="padding:5px;"> + '.$agent_name.' + </td> + <td style="padding:5px;"> + '.$module_name.' + </td> + <td style="padding:5px;"> + '.format_for_graph(reporting_get_agentmodule_data_max($content['id_agent_module'], $content['period'], $report['datetime']), $config['graph_precision']).' '.$unit.' + </td> + </tr> + </table>'; } $value .= ' - </td> - <td rowspan="2" width="150px"> - </td> - <td rowspan="2">'; + </td> + <td rowspan="2" width="150px"> + </td> + <td rowspan="2">'; if ($content['visual_format'] == 2 || $content['visual_format'] == 3) { $params['force_interval'] = 'max_only'; @@ -4580,23 +4599,23 @@ function reporting_value($report, $content, $type, $pdf=false) $value .= ' - </td> - </tr> - <tr> - <td>'; + </td> + </tr> + <tr> + <td>'; if ($content['visual_format'] == 1 || $content['visual_format'] == 3) { $value .= ' - <table style="width:90%;margin:0 auto;margin-top:30px;background-color:#eee;border: solid lightgray 1px;"> - <tr> - <th style="padding:5px;background-color:#82b92e;"> - '.__('Lapse').' - </th> - <th style="padding:5px;background-color:#82b92e;"> - '.__('Maximum').' - </th> - </tr> - <tr>'; + <table style="width:90%;margin:0 auto;margin-top:30px;background-color:#eee;border: solid lightgray 1px;"> + <tr> + <th style="padding:5px;background-color:#82b92e;"> + '.__('Lapse').' + </th> + <th style="padding:5px;background-color:#82b92e;"> + '.__('Maximum').' + </th> + </tr> + <tr>'; $time_begin = db_get_row_sql('select utimestamp from tagente_datos where id_agente_modulo ='.$content['id_agent_module'], true); $date_reference = getdate(); @@ -4670,16 +4689,16 @@ function reporting_value($report, $content, $type, $pdf=false) </td> <td style="padding:5px;"> '.format_for_graph(reporting_get_agentmodule_data_min($content['id_agent_module'], $content['period'], $report['datetime']), $config['graph_precision']).' '.$unit.' - </td> - </tr> - </table>'; + </td> + </tr> + </table>'; } $value .= ' - </td> - <td rowspan="2" width="150px"> - </td> - <td rowspan="2">'; + </td> + <td rowspan="2" width="150px"> + </td> + <td rowspan="2">'; if ($content['visual_format'] == 2 || $content['visual_format'] == 3) { $params['force_interval'] = 'min_only'; @@ -4694,16 +4713,16 @@ function reporting_value($report, $content, $type, $pdf=false) if ($content['visual_format'] == 1 || $content['visual_format'] == 3) { $value .= ' - <table style="width:90%;margin:0 auto;margin-top:30px;background-color:#eee;border: solid lightgray 1px;"> - <tr> - <th style="padding:5px;background-color:#82b92e;"> - '.__('Lapse').' - </th> - <th style="padding:5px;background-color:#82b92e;"> - '.__('Minimum').' - </th> - </tr> - <tr>'; + <table style="width:90%;margin:0 auto;margin-top:30px;background-color:#eee;border: solid lightgray 1px;"> + <tr> + <th style="padding:5px;background-color:#82b92e;"> + '.__('Lapse').' + </th> + <th style="padding:5px;background-color:#82b92e;"> + '.__('Minimum').' + </th> + </tr> + <tr>'; $time_begin = db_get_row_sql('select utimestamp from tagente_datos where id_agente_modulo ='.$content['id_agent_module']); $date_reference = getdate(); @@ -4728,7 +4747,7 @@ function reporting_value($report, $content, $type, $pdf=false) } $value .= ' - + </td> </tr> </table>'; @@ -4757,60 +4776,60 @@ function reporting_value($report, $content, $type, $pdf=false) if ($content['visual_format'] == 1 || $content['visual_format'] == 2 || $content['visual_format'] == 3) { $value .= ' - <table style="width:90%;margin:0 auto;background-color:#eee;border: solid lightgray 1px;"> - <tr> - <th style="padding:5px;background-color:#82b92e;"> - '.__('Agent').' - </th> - <th style="padding:5px;background-color:#82b92e;"> - '.__('Module').' - </th> - <th style="padding:5px;background-color:#82b92e;"> - '.__('Average').' - </th> - <tr> - <td style="padding:5px;"> - '.$agent_name.' - </td> - <td style="padding:5px;"> - '.$module_name.' - </td> - <td style="padding:5px;"> - '.format_for_graph(reporting_get_agentmodule_data_average($content['id_agent_module'], $content['period'], $report['datetime']), $config['graph_precision']).' '.$unit.' - </td> - </tr> - </table>'; + <table style="width:90%;margin:0 auto;background-color:#eee;border: solid lightgray 1px;"> + <tr> + <th style="padding:5px;background-color:#82b92e;"> + '.__('Agent').' + </th> + <th style="padding:5px;background-color:#82b92e;"> + '.__('Module').' + </th> + <th style="padding:5px;background-color:#82b92e;"> + '.__('Average').' + </th> + <tr> + <td style="padding:5px;"> + '.$agent_name.' + </td> + <td style="padding:5px;"> + '.$module_name.' + </td> + <td style="padding:5px;"> + '.format_for_graph(reporting_get_agentmodule_data_average($content['id_agent_module'], $content['period'], $report['datetime']), $config['graph_precision']).' '.$unit.' + </td> + </tr> + </table>'; } $value .= ' - </td> - <td rowspan="2" width="150px"> - </td> - <td rowspan="2">'; + </td> + <td rowspan="2" width="150px"> + </td> + <td rowspan="2">'; if ($content['visual_format'] == 2 || $content['visual_format'] == 3) { $params['force_interval'] = 'avg_only'; $value .= grafico_modulo_sparse($params); } $value .= ' - - </td> - </tr> - <tr> - <td>'; + + </td> + </tr> + <tr> + <td>'; if ($content['visual_format'] == 1 || $content['visual_format'] == 3) { $value .= ' - <table style="width:90%;margin:0 auto;margin-top:30px;background-color:#eee;border: solid lightgray 1px;"> - <tr> - <th style="padding:5px;background-color:#82b92e;"> - '.__('Lapse').' - </th> - <th style="padding:5px;background-color:#82b92e;"> - '.__('Average').' - </th> - </tr> - <tr>'; + <table style="width:90%;margin:0 auto;margin-top:30px;background-color:#eee;border: solid lightgray 1px;"> + <tr> + <th style="padding:5px;background-color:#82b92e;"> + '.__('Lapse').' + </th> + <th style="padding:5px;background-color:#82b92e;"> + '.__('Average').' + </th> + </tr> + <tr>'; $time_begin = db_get_row_sql('select utimestamp from tagente_datos where id_agente_modulo ='.$content['id_agent_module']); $date_reference = getdate(); @@ -4835,7 +4854,7 @@ function reporting_value($report, $content, $type, $pdf=false) } $value .= ' - + </td> </tr> </table>'; @@ -6146,10 +6165,10 @@ function reporting_availability($report, $content, $date=false, $time=false) if (empty($content['subitems'])) { $sql = sprintf( ' - SELECT id_agent_module, - server_name, operation - FROM treport_content_item - WHERE id_report_content = %d', + SELECT id_agent_module, + server_name, operation + FROM treport_content_item + WHERE id_report_content = %d', $content['id_rc'] ); @@ -6823,13 +6842,13 @@ function reporting_increment($report, $content) if (is_metaconsole()) { $sql1 = 'SELECT datos FROM tagente_datos WHERE id_agente_modulo = '.$id_agent_module.' - AND utimestamp <= '.(time() - $period).' ORDER BY utimestamp DESC'; + AND utimestamp <= '.(time() - $period).' ORDER BY utimestamp DESC'; $sql2 = 'SELECT datos FROM tagente_datos WHERE id_agente_modulo = '.$id_agent_module.' ORDER BY utimestamp DESC'; $servers = db_get_all_rows_sql( 'SELECT * - FROM tmetaconsole_setup - WHERE disabled = 0' + FROM tmetaconsole_setup + WHERE disabled = 0' ); if ($servers === false) { @@ -6853,7 +6872,7 @@ function reporting_increment($report, $content) } else { $old_data = db_get_value_sql( 'SELECT datos FROM tagente_datos WHERE id_agente_modulo = '.$id_agent_module.' - AND utimestamp <= '.(time() - $period).' ORDER BY utimestamp DESC' + AND utimestamp <= '.(time() - $period).' ORDER BY utimestamp DESC' ); $last_data = db_get_value_sql('SELECT datos FROM tagente_datos WHERE id_agente_modulo = '.$id_agent_module.' ORDER BY utimestamp DESC'); @@ -7276,8 +7295,8 @@ function reporting_custom_graph( if (is_metaconsole()) { $module_source = db_get_all_rows_sql( 'SELECT id_agent_module, id_server - FROM tgraph_source - WHERE id_graph = '.$content['id_gs'] + FROM tgraph_source + WHERE id_graph = '.$content['id_gs'] ); if (isset($module_source) && is_array($module_source)) { @@ -8015,10 +8034,10 @@ function reporting_get_group_stats($id_group=0, $access='AR') foreach ($id_group as $group) { $group_stat = db_get_all_rows_sql( "SELECT * - FROM tgroup_stat, tgrupo - WHERE tgrupo.id_grupo = tgroup_stat.id_group - AND tgroup_stat.id_group = $group - ORDER BY nombre" + FROM tgroup_stat, tgrupo + WHERE tgrupo.id_grupo = tgroup_stat.id_group + AND tgroup_stat.id_group = $group + ORDER BY nombre" ); $data['monitor_checks'] += $group_stat[0]['modules']; @@ -8246,10 +8265,10 @@ function reporting_get_group_stats_resume($id_group=0, $access='AR') foreach ($id_group as $group) { $group_stat = db_get_all_rows_sql( "SELECT * - FROM tgroup_stat, tgrupo - WHERE tgrupo.id_grupo = tgroup_stat.id_group - AND tgroup_stat.id_group = $group - ORDER BY nombre" + FROM tgroup_stat, tgrupo + WHERE tgrupo.id_grupo = tgroup_stat.id_group + AND tgroup_stat.id_group = $group + ORDER BY nombre" ); $data['monitor_checks'] += $group_stat[0]['modules']; @@ -8284,8 +8303,8 @@ function reporting_get_group_stats_resume($id_group=0, $access='AR') $tags = db_get_value('tags', 'tusuario_perfil', 'id_usuario', $config['id_user']); if ($tags) { $tags_sql = " AND tae.id_agente_modulo IN ( SELECT id_agente_modulo - FROM ttag_module - WHERE id_tag IN ($tags) ) "; + FROM ttag_module + WHERE id_tag IN ($tags) ) "; } else { $tags_sql = ''; } @@ -8296,27 +8315,27 @@ function reporting_get_group_stats_resume($id_group=0, $access='AR') // for stats modules $sql = "SELECT tg.id_grupo as id, tg.nombre as name, - SUM(tae.estado=0) as monitor_ok, - SUM(tae.estado=1) as monitor_critical, - SUM(tae.estado=2) as monitor_warning, - SUM(tae.estado=3) as monitor_unknown, - SUM(tae.estado=4) as monitor_not_init, - COUNT(tae.estado) as monitor_total + SUM(tae.estado=0) as monitor_ok, + SUM(tae.estado=1) as monitor_critical, + SUM(tae.estado=2) as monitor_warning, + SUM(tae.estado=3) as monitor_unknown, + SUM(tae.estado=4) as monitor_not_init, + COUNT(tae.estado) as monitor_total - FROM - tagente_estado tae, - tagente ta, - tagente_modulo tam, - tgrupo tg + FROM + tagente_estado tae, + tagente ta, + tagente_modulo tam, + tgrupo tg - WHERE 1=1 - AND tae.id_agente = ta.id_agente - AND tae.id_agente_modulo = tam.id_agente_modulo - AND ta.id_grupo = tg.id_grupo - AND tam.disabled = 0 - AND ta.disabled = 0 - AND ta.id_grupo IN ($id_group) $tags_sql - GROUP BY tg.id_grupo;"; + WHERE 1=1 + AND tae.id_agente = ta.id_agente + AND tae.id_agente_modulo = tam.id_agente_modulo + AND ta.id_grupo = tg.id_grupo + AND tam.disabled = 0 + AND ta.disabled = 0 + AND ta.id_grupo IN ($id_group) $tags_sql + GROUP BY tg.id_grupo;"; $data_array = db_get_all_rows_sql($sql); $data = $data_array[0]; @@ -8329,27 +8348,27 @@ function reporting_get_group_stats_resume($id_group=0, $access='AR') // for stats agents $sql = "SELECT tae.id_agente id_agente, tg.id_grupo id_grupo, - SUM(tae.estado=0) as monitor_agent_ok, - SUM(tae.estado=1) as monitor_agent_critical, - SUM(tae.estado=2) as monitor_agent_warning, - SUM(tae.estado=3) as monitor_agent_unknown, - SUM(tae.estado=4) as monitor_agent_not_init, - COUNT(tae.estado) as monitor_agent_total + SUM(tae.estado=0) as monitor_agent_ok, + SUM(tae.estado=1) as monitor_agent_critical, + SUM(tae.estado=2) as monitor_agent_warning, + SUM(tae.estado=3) as monitor_agent_unknown, + SUM(tae.estado=4) as monitor_agent_not_init, + COUNT(tae.estado) as monitor_agent_total - FROM - tagente_estado tae, - tagente ta, - tagente_modulo tam, - tgrupo tg - - WHERE 1=1 - AND tae.id_agente = ta.id_agente - AND tae.id_agente_modulo = tam.id_agente_modulo - AND ta.id_grupo = tg.id_grupo - AND tam.disabled = 0 - AND ta.disabled = 0 - AND ta.id_grupo IN ($id_group) $tags_sql - GROUP BY tae.id_agente;"; + FROM + tagente_estado tae, + tagente ta, + tagente_modulo tam, + tgrupo tg + + WHERE 1=1 + AND tae.id_agente = ta.id_agente + AND tae.id_agente_modulo = tam.id_agente_modulo + AND ta.id_grupo = tg.id_grupo + AND tam.disabled = 0 + AND ta.disabled = 0 + AND ta.id_grupo IN ($id_group) $tags_sql + GROUP BY tae.id_agente;"; $data_array_2 = db_get_all_rows_sql($sql); if (is_array($data_array_2) || is_object($data_array_2)) { @@ -8460,22 +8479,22 @@ function reporting_get_stats_indicators($data, $width=280, $height=20, $html=tru if ($html) { $tdata[0] = '<fieldset class="databox tactical_set"> - <legend>'.__('Server health').ui_print_help_tip(sprintf(__('%d Downed servers'), $servers['down']), true).'</legend>'.progress_bar($servers['health'], $width, $height, '', 0).'</fieldset>'; + <legend>'.__('Server health').ui_print_help_tip(sprintf(__('%d Downed servers'), $servers['down']), true).'</legend>'.progress_bar($servers['health'], $width, $height, '', 0).'</fieldset>'; $table_ind->rowclass[] = ''; $table_ind->data[] = $tdata; $tdata[0] = '<fieldset class="databox tactical_set"> - <legend>'.__('Monitor health').ui_print_help_tip(sprintf(__('%d Not Normal monitors'), $data['monitor_not_normal']), true).'</legend>'.progress_bar($data['monitor_health'], $width, $height, $data['monitor_health'].'% '.__('of monitors up'), 0).'</fieldset>'; + <legend>'.__('Monitor health').ui_print_help_tip(sprintf(__('%d Not Normal monitors'), $data['monitor_not_normal']), true).'</legend>'.progress_bar($data['monitor_health'], $width, $height, $data['monitor_health'].'% '.__('of monitors up'), 0).'</fieldset>'; $table_ind->rowclass[] = ''; $table_ind->data[] = $tdata; $tdata[0] = '<fieldset class="databox tactical_set"> - <legend>'.__('Module sanity').ui_print_help_tip(sprintf(__('%d Not inited monitors'), $data['monitor_not_init']), true).'</legend>'.progress_bar($data['module_sanity'], $width, $height, $data['module_sanity'].'% '.__('of total modules inited'), 0).'</fieldset>'; + <legend>'.__('Module sanity').ui_print_help_tip(sprintf(__('%d Not inited monitors'), $data['monitor_not_init']), true).'</legend>'.progress_bar($data['module_sanity'], $width, $height, $data['module_sanity'].'% '.__('of total modules inited'), 0).'</fieldset>'; $table_ind->rowclass[] = ''; $table_ind->data[] = $tdata; $tdata[0] = '<fieldset class="databox tactical_set"> - <legend>'.__('Alert level').ui_print_help_tip(sprintf(__('%d Fired alerts'), $data['monitor_alerts_fired']), true).'</legend>'.progress_bar($data['alert_level'], $width, $height, $data['alert_level'].'% '.__('of defined alerts not fired'), 0).'</fieldset>'; + <legend>'.__('Alert level').ui_print_help_tip(sprintf(__('%d Fired alerts'), $data['monitor_alerts_fired']), true).'</legend>'.progress_bar($data['alert_level'], $width, $height, $data['alert_level'].'% '.__('of defined alerts not fired'), 0).'</fieldset>'; $table_ind->rowclass[] = ''; $table_ind->data[] = $tdata; @@ -8558,7 +8577,7 @@ function reporting_get_stats_alerts($data, $links=false) if (!is_metaconsole()) { $output = '<fieldset class="databox tactical_set"> - <legend>'.__('Defined and fired alerts').'</legend>'.html_print_table($table_al, true).'</fieldset>'; + <legend>'.__('Defined and fired alerts').'</legend>'.html_print_table($table_al, true).'</fieldset>'; } else { // Remove the defined alerts cause with the new cache table is difficult to retrieve them unset($table_al->data[0][0], $table_al->data[0][1]); @@ -8566,7 +8585,7 @@ function reporting_get_stats_alerts($data, $links=false) $table_al->class = 'tactical_view'; $table_al->style = []; $output = '<fieldset class="tactical_set"> - <legend>'.__('Fired alerts').'</legend>'.html_print_table($table_al, true).'</fieldset>'; + <legend>'.__('Fired alerts').'</legend>'.html_print_table($table_al, true).'</fieldset>'; } return $output; @@ -8642,14 +8661,14 @@ function reporting_get_stats_modules_status($data, $graph_width=250, $graph_heig if (!is_metaconsole()) { $output = ' - <fieldset class="databox tactical_set"> - <legend>'.__('Monitors by status').'</legend>'.html_print_table($table_mbs, true).'</fieldset>'; + <fieldset class="databox tactical_set"> + <legend>'.__('Monitors by status').'</legend>'.html_print_table($table_mbs, true).'</fieldset>'; } else { $table_mbs->class = 'tactical_view'; $table_mbs->style = []; $output = ' - <fieldset class="tactical_set"> - <legend>'.__('Monitors by status').'</legend>'.html_print_table($table_mbs, true).'</fieldset>'; + <fieldset class="tactical_set"> + <legend>'.__('Monitors by status').'</legend>'.html_print_table($table_mbs, true).'</fieldset>'; } return $output; @@ -8715,7 +8734,7 @@ function reporting_get_stats_agents_monitors($data) $table_am->data[] = $tdata; $output = '<fieldset class="databox tactical_set"> - <legend>'.__('Total agents and monitors').'</legend>'.html_print_table($table_am, true).'</fieldset>'; + <legend>'.__('Total agents and monitors').'</legend>'.html_print_table($table_am, true).'</fieldset>'; return $output; } @@ -8746,7 +8765,7 @@ function reporting_get_stats_users($data) $table_us->data[] = $tdata; $output = '<fieldset class="databox tactical_set"> - <legend>'.__('Users').'</legend>'.html_print_table($table_us, true).'</fieldset>'; + <legend>'.__('Users').'</legend>'.html_print_table($table_us, true).'</fieldset>'; return $output; } @@ -8781,8 +8800,8 @@ function reporting_get_agentmodule_data_average($id_agent_module, $period=0, $da // Get module data $interval_data = db_get_all_rows_sql( 'SELECT * - FROM tagente_datos - WHERE id_agente_modulo = '.(int) $id_agent_module.' AND utimestamp > '.(int) $datelimit.' AND utimestamp < '.(int) $date.' ORDER BY utimestamp ASC', + FROM tagente_datos + WHERE id_agente_modulo = '.(int) $id_agent_module.' AND utimestamp > '.(int) $datelimit.' AND utimestamp < '.(int) $date.' ORDER BY utimestamp ASC', $search_in_history_db ); if ($interval_data === false) { @@ -8907,8 +8926,8 @@ function reporting_get_agentmodule_mttr($id_agent_module, $period=0, $date=0) $module = db_get_row_sql( 'SELECT max_critical, min_critical, id_tipo_modulo - FROM tagente_modulo - WHERE id_agente_modulo = '.(int) $id_agent_module + FROM tagente_modulo + WHERE id_agente_modulo = '.(int) $id_agent_module ); if ($module === false) { return false; @@ -8929,7 +8948,7 @@ function reporting_get_agentmodule_mttr($id_agent_module, $period=0, $date=0) // Get module data $interval_data = db_get_all_rows_sql( 'SELECT * FROM tagente_datos - WHERE id_agente_modulo = '.(int) $id_agent_module.' AND utimestamp > '.(int) $datelimit.' AND utimestamp < '.(int) $date.' ORDER BY utimestamp ASC', + WHERE id_agente_modulo = '.(int) $id_agent_module.' AND utimestamp > '.(int) $datelimit.' AND utimestamp < '.(int) $date.' ORDER BY utimestamp ASC', $search_in_history_db ); if ($interval_data === false) { @@ -9053,8 +9072,8 @@ function reporting_get_agentmodule_mtbf($id_agent_module, $period=0, $date=0) $module = db_get_row_sql( 'SELECT max_critical, min_critical, id_tipo_modulo - FROM tagente_modulo - WHERE id_agente_modulo = '.(int) $id_agent_module + FROM tagente_modulo + WHERE id_agente_modulo = '.(int) $id_agent_module ); if ($module === false) { return false; @@ -9075,7 +9094,7 @@ function reporting_get_agentmodule_mtbf($id_agent_module, $period=0, $date=0) // Get module data $interval_data = db_get_all_rows_sql( 'SELECT * FROM tagente_datos - WHERE id_agente_modulo = '.(int) $id_agent_module.' AND utimestamp > '.(int) $datelimit.' AND utimestamp < '.(int) $date.' ORDER BY utimestamp ASC', + WHERE id_agente_modulo = '.(int) $id_agent_module.' AND utimestamp > '.(int) $datelimit.' AND utimestamp < '.(int) $date.' ORDER BY utimestamp ASC', $search_in_history_db ); if ($interval_data === false) { @@ -9195,8 +9214,8 @@ function reporting_get_agentmodule_tto($id_agent_module, $period=0, $date=0) $module = db_get_row_sql( 'SELECT max_critical, min_critical, id_tipo_modulo - FROM tagente_modulo - WHERE id_agente_modulo = '.(int) $id_agent_module + FROM tagente_modulo + WHERE id_agente_modulo = '.(int) $id_agent_module ); if ($module === false) { return false; @@ -9217,7 +9236,7 @@ function reporting_get_agentmodule_tto($id_agent_module, $period=0, $date=0) // Get module data $interval_data = db_get_all_rows_sql( 'SELECT * FROM tagente_datos - WHERE id_agente_modulo = '.(int) $id_agent_module.' AND utimestamp > '.(int) $datelimit.' AND utimestamp < '.(int) $date.' ORDER BY utimestamp ASC', + WHERE id_agente_modulo = '.(int) $id_agent_module.' AND utimestamp > '.(int) $datelimit.' AND utimestamp < '.(int) $date.' ORDER BY utimestamp ASC', $search_in_history_db ); if ($interval_data === false) { @@ -9304,8 +9323,8 @@ function reporting_get_agentmodule_ttr($id_agent_module, $period=0, $date=0) $module = db_get_row_sql( 'SELECT max_critical, min_critical, id_tipo_modulo - FROM tagente_modulo - WHERE id_agente_modulo = '.(int) $id_agent_module + FROM tagente_modulo + WHERE id_agente_modulo = '.(int) $id_agent_module ); if ($module === false) { return false; @@ -9326,7 +9345,7 @@ function reporting_get_agentmodule_ttr($id_agent_module, $period=0, $date=0) // Get module data $interval_data = db_get_all_rows_sql( 'SELECT * FROM tagente_datos - WHERE id_agente_modulo = '.(int) $id_agent_module.' AND utimestamp > '.(int) $datelimit.' AND utimestamp < '.(int) $date.' ORDER BY utimestamp ASC', + WHERE id_agente_modulo = '.(int) $id_agent_module.' AND utimestamp > '.(int) $datelimit.' AND utimestamp < '.(int) $date.' ORDER BY utimestamp ASC', $search_in_history_db ); if ($interval_data === false) { @@ -9775,9 +9794,9 @@ function reporting_get_agentmodule_sla( // Get interval data $sql = sprintf( 'SELECT * - FROM tagente_datos - WHERE id_agente_modulo = %d - AND utimestamp > %d AND utimestamp <= %d', + FROM tagente_datos + WHERE id_agente_modulo = %d + AND utimestamp > %d AND utimestamp <= %d', $id_agent_module, $datelimit, $date @@ -9996,43 +10015,43 @@ function reporting_get_planned_downtimes_intervals($id_agent_module, $start_date } $sql_downtime = ' - SELECT DISTINCT(tpdr.id), - tpdr.name, - '.$tpdr_description.", - tpdr.date_from, - tpdr.date_to, - tpdr.executed, - tpdr.id_group, - tpdr.only_alerts, - tpdr.monday, - tpdr.tuesday, - tpdr.wednesday, - tpdr.thursday, - tpdr.friday, - tpdr.saturday, - tpdr.sunday, - tpdr.periodically_time_from, - tpdr.periodically_time_to, - tpdr.periodically_day_from, - tpdr.periodically_day_to, - tpdr.type_downtime, - tpdr.type_execution, - tpdr.type_periodicity, - tpdr.id_user - FROM ( - SELECT tpd.* - FROM tplanned_downtime tpd, tplanned_downtime_agents tpda, tagente_modulo tam - WHERE tpd.id = tpda.id_downtime - AND tpda.all_modules = 1 - AND tpda.id_agent = tam.id_agente - AND tam.id_agente_modulo = $id_agent_module - UNION ALL - SELECT tpd.* - FROM tplanned_downtime tpd, tplanned_downtime_modules tpdm - WHERE tpd.id = tpdm.id_downtime - AND tpdm.id_agent_module = $id_agent_module - ) tpdr - ORDER BY tpdr.id"; + SELECT DISTINCT(tpdr.id), + tpdr.name, + '.$tpdr_description.", + tpdr.date_from, + tpdr.date_to, + tpdr.executed, + tpdr.id_group, + tpdr.only_alerts, + tpdr.monday, + tpdr.tuesday, + tpdr.wednesday, + tpdr.thursday, + tpdr.friday, + tpdr.saturday, + tpdr.sunday, + tpdr.periodically_time_from, + tpdr.periodically_time_to, + tpdr.periodically_day_from, + tpdr.periodically_day_to, + tpdr.type_downtime, + tpdr.type_execution, + tpdr.type_periodicity, + tpdr.id_user + FROM ( + SELECT tpd.* + FROM tplanned_downtime tpd, tplanned_downtime_agents tpda, tagente_modulo tam + WHERE tpd.id = tpda.id_downtime + AND tpda.all_modules = 1 + AND tpda.id_agent = tam.id_agente + AND tam.id_agente_modulo = $id_agent_module + UNION ALL + SELECT tpd.* + FROM tplanned_downtime tpd, tplanned_downtime_modules tpdm + WHERE tpd.id = tpdm.id_downtime + AND tpdm.id_agent_module = $id_agent_module + ) tpdr + ORDER BY tpdr.id"; $downtimes = db_get_all_rows_sql($sql_downtime); @@ -10241,8 +10260,8 @@ function reporting_get_agentmodule_data_max($id_agent_module, $period=0, $date=0 // Get module data $interval_data = db_get_all_rows_sql( 'SELECT * - FROM tagente_datos - WHERE id_agente_modulo = '.(int) $id_agent_module.' AND utimestamp > '.(int) $datelimit.' AND utimestamp < '.(int) $date.' ORDER BY utimestamp ASC', + FROM tagente_datos + WHERE id_agente_modulo = '.(int) $id_agent_module.' AND utimestamp > '.(int) $datelimit.' AND utimestamp < '.(int) $date.' ORDER BY utimestamp ASC', $search_in_history_db ); @@ -10347,8 +10366,8 @@ function reporting_get_agentmodule_data_min($id_agent_module, $period=0, $date=0 // Get module data $interval_data = db_get_all_rows_sql( 'SELECT * - FROM tagente_datos - WHERE id_agente_modulo = '.(int) $id_agent_module.' AND utimestamp > '.(int) $datelimit.' AND utimestamp < '.(int) $date.' ORDER BY utimestamp ASC', + FROM tagente_datos + WHERE id_agente_modulo = '.(int) $id_agent_module.' AND utimestamp > '.(int) $datelimit.' AND utimestamp < '.(int) $date.' ORDER BY utimestamp ASC', $search_in_history_db ); if ($interval_data === false) { @@ -10473,11 +10492,11 @@ function reporting_get_agentmodule_data_sum( // Get module data $interval_data = db_get_all_rows_sql( ' - SELECT * FROM tagente_datos - WHERE id_agente_modulo = '.(int) $id_agent_module.' - AND utimestamp > '.(int) $datelimit.' - AND utimestamp < '.(int) $date.' - ORDER BY utimestamp ASC', + SELECT * FROM tagente_datos + WHERE id_agente_modulo = '.(int) $id_agent_module.' + AND utimestamp > '.(int) $datelimit.' + AND utimestamp < '.(int) $date.' + ORDER BY utimestamp ASC', $search_in_history_db ); } else { @@ -10572,24 +10591,24 @@ function reporting_get_planned_downtimes($start_date, $end_date, $id_agent_modul // is inside the planned downtime execution. // The start and end time is very important. $periodically_monthly_w = "type_periodicity = 'monthly' - AND (((periodically_day_from > '$start_day' - OR (periodically_day_from = '$start_day' - AND periodically_time_from >= '$start_time')) - AND (periodically_day_to < '$end_day' - OR (periodically_day_to = '$end_day' - AND periodically_time_to <= '$end_time'))) - OR ((periodically_day_from < '$start_day' - OR (periodically_day_from = '$start_day' - AND periodically_time_from <= '$start_time')) - AND (periodically_day_to > '$start_day' - OR (periodically_day_to = '$start_day' - AND periodically_time_to >= '$start_time'))) - OR ((periodically_day_from < '$end_day' - OR (periodically_day_from = '$end_day' - AND periodically_time_from <= '$end_time')) - AND (periodically_day_to > '$end_day' - OR (periodically_day_to = '$end_day' - AND periodically_time_to >= '$end_time'))))"; + AND (((periodically_day_from > '$start_day' + OR (periodically_day_from = '$start_day' + AND periodically_time_from >= '$start_time')) + AND (periodically_day_to < '$end_day' + OR (periodically_day_to = '$end_day' + AND periodically_time_to <= '$end_time'))) + OR ((periodically_day_from < '$start_day' + OR (periodically_day_from = '$start_day' + AND periodically_time_from <= '$start_time')) + AND (periodically_day_to > '$start_day' + OR (periodically_day_to = '$start_day' + AND periodically_time_to >= '$start_time'))) + OR ((periodically_day_from < '$end_day' + OR (periodically_day_from = '$end_day' + AND periodically_time_from <= '$end_time')) + AND (periodically_day_to > '$end_day' + OR (periodically_day_to = '$end_day' + AND periodically_time_to >= '$end_time'))))"; } $periodically_weekly_days = []; @@ -10609,13 +10628,13 @@ function reporting_get_planned_downtimes($start_date, $end_date, $id_agent_modul // the start or end time of the date range. $weekday_actual = strtolower(date('l', $start_date)); $periodically_weekly_days[] = "($weekday_actual = 1 - AND ((periodically_time_from > '$start_time' AND periodically_time_to < '$end_time') - OR (periodically_time_from = '$start_time' - OR (periodically_time_from < '$start_time' - AND periodically_time_to >= '$start_time')) - OR (periodically_time_from = '$end_time' - OR (periodically_time_from < '$end_time' - AND periodically_time_to >= '$end_time'))))"; + AND ((periodically_time_from > '$start_time' AND periodically_time_to < '$end_time') + OR (periodically_time_from = '$start_time' + OR (periodically_time_from < '$start_time' + AND periodically_time_to >= '$start_time')) + OR (periodically_time_from = '$end_time' + OR (periodically_time_from < '$end_time' + AND periodically_time_to >= '$end_time'))))"; } else { while ($date_aux <= $end_date && $i < 7) { $weekday_actual = strtolower(date('l', $date_aux)); @@ -10660,68 +10679,68 @@ function reporting_get_planned_downtimes($start_date, $end_date, $id_agent_modul } $sql_downtime = ' - SELECT - DISTINCT(tpdr.id), - tpdr.name, - '.$tpdr_description.", - tpdr.date_from, - tpdr.date_to, - tpdr.executed, - tpdr.id_group, - tpdr.only_alerts, - tpdr.monday, - tpdr.tuesday, - tpdr.wednesday, - tpdr.thursday, - tpdr.friday, - tpdr.saturday, - tpdr.sunday, - tpdr.periodically_time_from, - tpdr.periodically_time_to, - tpdr.periodically_day_from, - tpdr.periodically_day_to, - tpdr.type_downtime, - tpdr.type_execution, - tpdr.type_periodicity, - tpdr.id_user - FROM ( - SELECT tpd.* - FROM tplanned_downtime tpd, tplanned_downtime_agents tpda, tagente_modulo tam - WHERE (tpd.id = tpda.id_downtime - AND tpda.all_modules = 1 - AND tpda.id_agent = tam.id_agente - AND tam.id_agente_modulo IN ($id_agent_modules_str)) - AND ((type_execution = 'periodically' - AND $periodically_condition) - OR (type_execution = 'once' - AND ((date_from >= '$start_date' AND date_to <= '$end_date') - OR (date_from <= '$start_date' AND date_to >= '$end_date') - OR (date_from <= '$start_date' AND date_to >= '$start_date') - OR (date_from <= '$end_date' AND date_to >= '$end_date')))) - UNION ALL - SELECT tpd.* - FROM tplanned_downtime tpd, tplanned_downtime_modules tpdm - WHERE (tpd.id = tpdm.id_downtime - AND tpdm.id_agent_module IN ($id_agent_modules_str)) - AND ((type_execution = 'periodically' - AND $periodically_condition) - OR (type_execution = 'once' - AND ((date_from >= '$start_date' AND date_to <= '$end_date') - OR (date_from <= '$start_date' AND date_to >= '$end_date') - OR (date_from <= '$start_date' AND date_to >= '$start_date') - OR (date_from <= '$end_date' AND date_to >= '$end_date')))) - ) tpdr - ORDER BY tpdr.id"; + SELECT + DISTINCT(tpdr.id), + tpdr.name, + '.$tpdr_description.", + tpdr.date_from, + tpdr.date_to, + tpdr.executed, + tpdr.id_group, + tpdr.only_alerts, + tpdr.monday, + tpdr.tuesday, + tpdr.wednesday, + tpdr.thursday, + tpdr.friday, + tpdr.saturday, + tpdr.sunday, + tpdr.periodically_time_from, + tpdr.periodically_time_to, + tpdr.periodically_day_from, + tpdr.periodically_day_to, + tpdr.type_downtime, + tpdr.type_execution, + tpdr.type_periodicity, + tpdr.id_user + FROM ( + SELECT tpd.* + FROM tplanned_downtime tpd, tplanned_downtime_agents tpda, tagente_modulo tam + WHERE (tpd.id = tpda.id_downtime + AND tpda.all_modules = 1 + AND tpda.id_agent = tam.id_agente + AND tam.id_agente_modulo IN ($id_agent_modules_str)) + AND ((type_execution = 'periodically' + AND $periodically_condition) + OR (type_execution = 'once' + AND ((date_from >= '$start_date' AND date_to <= '$end_date') + OR (date_from <= '$start_date' AND date_to >= '$end_date') + OR (date_from <= '$start_date' AND date_to >= '$start_date') + OR (date_from <= '$end_date' AND date_to >= '$end_date')))) + UNION ALL + SELECT tpd.* + FROM tplanned_downtime tpd, tplanned_downtime_modules tpdm + WHERE (tpd.id = tpdm.id_downtime + AND tpdm.id_agent_module IN ($id_agent_modules_str)) + AND ((type_execution = 'periodically' + AND $periodically_condition) + OR (type_execution = 'once' + AND ((date_from >= '$start_date' AND date_to <= '$end_date') + OR (date_from <= '$start_date' AND date_to >= '$end_date') + OR (date_from <= '$start_date' AND date_to >= '$start_date') + OR (date_from <= '$end_date' AND date_to >= '$end_date')))) + ) tpdr + ORDER BY tpdr.id"; } else { $sql_downtime = "SELECT * - FROM tplanned_downtime tpd, tplanned_downtime_modules tpdm - WHERE (type_execution = 'periodically' - AND $periodically_condition) - OR (type_execution = 'once' - AND ((date_from >= '$start_date' AND date_to <= '$end_date') - OR (date_from <= '$start_date' AND date_to >= '$end_date') - OR (date_from <= '$start_date' AND date_to >= '$start_date') - OR (date_from <= '$end_date' AND date_to >= '$end_date')))"; + FROM tplanned_downtime tpd, tplanned_downtime_modules tpdm + WHERE (type_execution = 'periodically' + AND $periodically_condition) + OR (type_execution = 'once' + AND ((date_from >= '$start_date' AND date_to <= '$end_date') + OR (date_from <= '$start_date' AND date_to >= '$end_date') + OR (date_from <= '$start_date' AND date_to >= '$start_date') + OR (date_from <= '$end_date' AND date_to >= '$end_date')))"; } $downtimes = db_get_all_rows_sql($sql_downtime); @@ -10789,10 +10808,10 @@ function reporting_get_agentmodule_sla_day($id_agent_module, $period=0, $min_val // Get interval data $sql = sprintf( 'SELECT * - FROM tagente_datos - WHERE id_agente_modulo = %d - AND utimestamp > %d - AND utimestamp <= %d', + FROM tagente_datos + WHERE id_agente_modulo = %d + AND utimestamp > %d + AND utimestamp <= %d', $id_agent_module, $datelimit, $date @@ -11117,7 +11136,7 @@ function reporting_get_stats_servers() $table_srv->data[] = $tdata; $output = '<fieldset class="databox tactical_set"> - <legend>'.__('Server performance').'</legend>'.html_print_table($table_srv, true).'</fieldset>'; + <legend>'.__('Server performance').'</legend>'.html_print_table($table_srv, true).'</fieldset>'; $output .= '<script type="text/javascript">'; $output .= '$(document).ready(function () {'; From 09e5feef05591868fa7039539df4b7677576c4b7 Mon Sep 17 00:00:00 2001 From: "marcos.alconada" <marcos.alconada@artica.es> Date: Mon, 8 Jul 2019 17:02:28 +0200 Subject: [PATCH 56/83] add message no acces saml without saml.php file --- pandora_console/general/noaccesssaml.php | 164 +++++++++++++++++++++++ pandora_console/index.php | 9 +- 2 files changed, 170 insertions(+), 3 deletions(-) create mode 100644 pandora_console/general/noaccesssaml.php diff --git a/pandora_console/general/noaccesssaml.php b/pandora_console/general/noaccesssaml.php new file mode 100644 index 0000000000..e357e040dc --- /dev/null +++ b/pandora_console/general/noaccesssaml.php @@ -0,0 +1,164 @@ +<html> +<head> + +<style> + +#alert_messages_na{ + z-index:2; + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + -webkit-transform: translate(-50%, -50%); + width:650px; + height: 400px; + background:white; + background-image:url('images/imagen-no-acceso.jpg'); + background-repeat:no-repeat; + justify-content: center; + display: flex; + flex-direction: column; + box-shadow:4px 5px 10px 3px rgba(0, 0, 0, 0.4); +} + +.modalheade{ + text-align:center; + width:100%; + position:absolute; + top:0; +} +.modalheadertex{ + color:#000; + font-family:Nunito; + line-height: 40px; + font-size: 23pt; + margin-bottom:30px; +} +.modalclose{ + cursor:pointer; + display:inline; + float:right; + margin-right:10px; + margin-top:10px; +} +.modalconten{ + color:black; + width:300px; + margin-left: 30px; +} +.modalcontenttex{ + text-align:left; + color:black; + font-size: 11pt; + line-height:13pt; + margin-bottom:30px; +} +.modalokbutto{ + cursor:pointer; + text-align:center; + display: inline-block; + padding: 6px 45px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + background-color:white; + border: 1px solid #82b92e; +} +.modalokbuttontex{ + color:#82b92e; + font-family:Nunito; + font-size:13pt; +} +.modalgobutto{ + cursor:pointer; + text-align:center; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + background-color:white; + border: 1px solid #82b92e; +} +.modalgobuttontex{ +color:#82b92e; +font-family:Nunito; +font-size:10pt; +} + + +#opacidad{ + position:fixed; + background:black; + opacity:0.6; + z-index:-1; + left:0px; + top:0px; + width:100%; + height:100%; +} +/* +.textodialog{ + margin-left: 0px; + color:#333; + padding:20px; + font-size:9pt; +} + +.cargatextodialog{ + max-width:58.5%; + width:58.5%; + min-width:58.5%; + float:left; + margin-left: 0px; + font-size:18pt; + padding:20px; + text-align:center; +} + +.cargatextodialog p, .cargatextodialog b, .cargatextodialog a{ + font-size:18pt; +} +*/ +</style> +</head> +<body> + + <div id="alert_messages_na"> + + <div class='modalheade'> + <img class='modalclose cerrar' src='<?php echo $config['homeurl']; ?>images/input_cross.png'> + </div> + + <div class='modalconten'> + <div class='modalheadertex'> + <?php echo __("You don't have access to this page"); ?> + </div> + + <div class='modalcontenttex'> + <?php + echo __('Access to this page is restricted to authorized users SAML only, please contact system administrator if you need assistance.'); + echo '<br/> <br/>'; + echo __('Please make sure you have SAML authentication properly configured. For more information the error to access this page are recorded in security logs of %s System Database', get_product_name()); + ?> + + </div> + + <div class='modalokbutto cerrar'> + <span class='modalokbuttontex'>OK</span> + </div> + </div> + </div> + + <div id="opacidad"></div> + +</body> +</html> + +<script> + + $(".cerrar").click(function(){ + window.location="."; + }); + + $('div#page').css('background-color','#d3d3d3'); + +</script> diff --git a/pandora_console/index.php b/pandora_console/index.php index 3c95074171..320a33da3b 100755 --- a/pandora_console/index.php +++ b/pandora_console/index.php @@ -359,12 +359,15 @@ if (! isset($config['id_user'])) { $nick_in_db = $_SESSION['prepared_login_da']['id_user']; $expired_pass = false; } else if (($config['auth'] == 'saml') && ($login_button_saml)) { - include_once ENTERPRISE_DIR.'/include/auth/saml.php'; - - $saml_user_id = saml_process_user_login(); + if (!include_once 'include/auth/saml.php') { + include_once 'general/noaccesssaml.php'; + } else { + $saml_user_id = saml_process_user_login(); + } $nick_in_db = $saml_user_id; if (!$nick_in_db) { + include_once 'general/noaccesssaml.php'; include_once $config['saml_path'].'simplesamlphp/lib/_autoload.php'; $as = new SimpleSAML_Auth_Simple('PandoraFMS'); $as->logout(); From 127f67f2ac92f616fc07b5d3bacdf093d7df51ab Mon Sep 17 00:00:00 2001 From: Daniel Barbero <daniel.barbero@artica.es> Date: Mon, 8 Jul 2019 19:33:54 +0200 Subject: [PATCH 57/83] fixed error in network component --- .../godmode/agentes/configurar_agente.php | 14 +++-------- .../include/javascript/pandora_modules.js | 23 +++++++++++++------ 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/pandora_console/godmode/agentes/configurar_agente.php b/pandora_console/godmode/agentes/configurar_agente.php index d5f6f1fcfd..842f6c3d46 100644 --- a/pandora_console/godmode/agentes/configurar_agente.php +++ b/pandora_console/godmode/agentes/configurar_agente.php @@ -1276,18 +1276,10 @@ if ($update_module || $create_module) { $m_hide = $m['hide']; } - if ($update_module) { - if ($m_hide == '1') { - $macros[$k]['value'] = io_input_password(get_parameter($m['macro'], '')); - } else { - $macros[$k]['value'] = get_parameter($m['macro'], ''); - } + if ($m_hide == '1') { + $macros[$k]['value'] = io_input_password(get_parameter($m['macro'], '')); } else { - if ($m_hide == '1') { - $macros[$k]['value'] = io_input_password($macros_names[$k]); - } else { - $macros[$k]['value'] = $macros_names[$k]; - } + $macros[$k]['value'] = get_parameter($m['macro'], ''); } } diff --git a/pandora_console/include/javascript/pandora_modules.js b/pandora_console/include/javascript/pandora_modules.js index 2795df7bdb..d04c3d2bd6 100644 --- a/pandora_console/include/javascript/pandora_modules.js +++ b/pandora_console/include/javascript/pandora_modules.js @@ -536,7 +536,7 @@ function configure_modules_form() { var obj = jQuery.parseJSON(data["macros"]); $.each(obj, function(k, macro) { - add_macro_field(macro, "simple-macro", "td"); + add_macro_field(macro, "simple-macro", "td", k); }); } @@ -791,7 +791,7 @@ function new_macro(prefix, callback) { } } -function add_macro_field(macro, row_model_id, type_copy) { +function add_macro_field(macro, row_model_id, type_copy, k) { var macro_desc = macro["desc"]; // Change the carriage returns by html returns <br> in help var macro_help = macro["help"].replace(/
/g, "<br>"); @@ -799,7 +799,6 @@ function add_macro_field(macro, row_model_id, type_copy) { var macro_value = $("<div />") .html(macro["value"]) .text(); - var macro_hide = macro["hide"]; macro_value.type = "password"; @@ -809,6 +808,7 @@ function add_macro_field(macro, row_model_id, type_copy) { // Change attributes to be unique and with identificable class $macro_field.attr("id", row_id); + $macro_field.attr("class", "macro_field"); // Get the number of fields already printed @@ -828,6 +828,19 @@ function add_macro_field(macro, row_model_id, type_copy) { ); } + // Only for create module type plugin need rename + // td id "simple-macro_field" + k + "-1" is horrible. + if (k) { + $("#" + row_model_id + "_field" + k + "_ td:eq(0)").attr( + "id", + "simple-macro_field" + k + "-0" + ); + $("#" + row_model_id + "_field" + k + "_ td:eq(1)").attr( + "id", + "simple-macro_field" + k + "-1" + ); + } + // Change the label if (macro_help == "") { $("#" + row_id) @@ -855,13 +868,11 @@ function add_macro_field(macro, row_model_id, type_copy) { .children() .eq(1) .children() - .eq(0) .attr("id", "text-" + macro_macro); $("#" + row_id) .children() .eq(1) .children() - .eq(0) .attr("name", macro_macro); } else { $("#" + row_id) @@ -893,14 +904,12 @@ function add_macro_field(macro, row_model_id, type_copy) { .children() .eq(1) .children() - .eq(0) .attr("type", "password"); } else { $("#" + row_id) .children() .eq(1) .children() - .eq(0) .val(macro_value); } } else { From 729fb32ffb2c19ec1b3686e7b3672d05d0856980 Mon Sep 17 00:00:00 2001 From: artica <artica.devel@gmail.com> Date: Tue, 9 Jul 2019 00:01:10 +0200 Subject: [PATCH 58/83] 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 02a7bdab5f..6f8d1f824d 100644 --- a/pandora_agents/unix/DEBIAN/control +++ b/pandora_agents/unix/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-agent-unix -Version: 7.0NG.736-190708 +Version: 7.0NG.736-190709 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 cc8929763d..1234a20b06 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.736-190708" +pandora_version="7.0NG.736-190709" 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 399559f00b..5be1d49311 100755 --- a/pandora_agents/unix/pandora_agent +++ b/pandora_agents/unix/pandora_agent @@ -42,7 +42,7 @@ my $Sem = undef; my $ThreadSem = undef; use constant AGENT_VERSION => '7.0NG.736'; -use constant AGENT_BUILD => '190708'; +use constant AGENT_BUILD => '190709'; # 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 977af1104f..23d3afc120 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.736 -%define release 190708 +%define release 190709 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 84eac835d9..7320e5a83d 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.736 -%define release 190708 +%define release 190709 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 02c3728350..ae6028674d 100755 --- a/pandora_agents/unix/pandora_agent_installer +++ b/pandora_agents/unix/pandora_agent_installer @@ -10,7 +10,7 @@ # ********************************************************************** PI_VERSION="7.0NG.736" -PI_BUILD="190708" +PI_BUILD="190709" OS_NAME=`uname -s` FORCE=0 diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi index ce66038ef5..7f4138dd8a 100644 --- a/pandora_agents/win32/installer/pandora.mpi +++ b/pandora_agents/win32/installer/pandora.mpi @@ -186,7 +186,7 @@ UpgradeApplicationID {} Version -{190708} +{190709} ViewReadme {Yes} diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc index 41ae8eb267..dc6658a299 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.736(Build 190708)") +#define PANDORA_VERSION ("7.0NG.736(Build 190709)") string pandora_path; string pandora_dir; diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc index 696d6c34e3..7589ae4e1f 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.736(Build 190708))" + VALUE "ProductVersion", "(7.0NG.736(Build 190709))" VALUE "FileVersion", "1.0.0.0" END END diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control index 062c14afdc..09c13f639d 100644 --- a/pandora_console/DEBIAN/control +++ b/pandora_console/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-console -Version: 7.0NG.736-190708 +Version: 7.0NG.736-190709 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 56d98823ac..1e2e36c157 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.736-190708" +pandora_version="7.0NG.736-190709" package_pear=0 package_pandora=1 diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php index 3adcf1f113..57121de09a 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 = 'PC190708'; +$build_version = 'PC190709'; $pandora_version = 'v7.0NG.736'; // Do not overwrite default timezone set if defined. diff --git a/pandora_console/install.php b/pandora_console/install.php index e22cf98add..1f7283c155 100644 --- a/pandora_console/install.php +++ b/pandora_console/install.php @@ -129,7 +129,7 @@ <div style='height: 10px'> <?php $version = '7.0NG.736'; - $build = '190708'; + $build = '190709'; $banner = "v$version Build $build"; error_reporting(0); diff --git a/pandora_console/pandora_console.redhat.spec b/pandora_console/pandora_console.redhat.spec index 4b5ba54d58..4d769141e2 100644 --- a/pandora_console/pandora_console.redhat.spec +++ b/pandora_console/pandora_console.redhat.spec @@ -3,7 +3,7 @@ # %define name pandorafms_console %define version 7.0NG.736 -%define release 190708 +%define release 190709 # User and Group under which Apache is running %define httpd_name httpd diff --git a/pandora_console/pandora_console.rhel7.spec b/pandora_console/pandora_console.rhel7.spec index 7b8be55c9a..e8179bd043 100644 --- a/pandora_console/pandora_console.rhel7.spec +++ b/pandora_console/pandora_console.rhel7.spec @@ -3,7 +3,7 @@ # %define name pandorafms_console %define version 7.0NG.736 -%define release 190708 +%define release 190709 # User and Group under which Apache is running %define httpd_name httpd diff --git a/pandora_console/pandora_console.spec b/pandora_console/pandora_console.spec index cb245a98b6..4c96b354d5 100644 --- a/pandora_console/pandora_console.spec +++ b/pandora_console/pandora_console.spec @@ -3,7 +3,7 @@ # %define name pandorafms_console %define version 7.0NG.736 -%define release 190708 +%define release 190709 %define httpd_name httpd # User and Group under which Apache is running %define httpd_name apache2 diff --git a/pandora_server/DEBIAN/control b/pandora_server/DEBIAN/control index 3a2b2d11f1..e0e43f69bf 100644 --- a/pandora_server/DEBIAN/control +++ b/pandora_server/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-server -Version: 7.0NG.736-190708 +Version: 7.0NG.736-190709 Architecture: all Priority: optional Section: admin diff --git a/pandora_server/DEBIAN/make_deb_package.sh b/pandora_server/DEBIAN/make_deb_package.sh index fa5303f620..7d8b03492a 100644 --- a/pandora_server/DEBIAN/make_deb_package.sh +++ b/pandora_server/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.736-190708" +pandora_version="7.0NG.736-190709" package_cpan=0 package_pandora=1 diff --git a/pandora_server/lib/PandoraFMS/Config.pm b/pandora_server/lib/PandoraFMS/Config.pm index 1d73d1ab8b..017d5a0308 100644 --- a/pandora_server/lib/PandoraFMS/Config.pm +++ b/pandora_server/lib/PandoraFMS/Config.pm @@ -45,7 +45,7 @@ our @EXPORT = qw( # version: Defines actual version of Pandora Server for this module only my $pandora_version = "7.0NG.736"; -my $pandora_build = "190708"; +my $pandora_build = "190709"; our $VERSION = $pandora_version." ".$pandora_build; # Setup hash diff --git a/pandora_server/lib/PandoraFMS/PluginTools.pm b/pandora_server/lib/PandoraFMS/PluginTools.pm index 80f94f0543..60d445306a 100644 --- a/pandora_server/lib/PandoraFMS/PluginTools.pm +++ b/pandora_server/lib/PandoraFMS/PluginTools.pm @@ -32,7 +32,7 @@ our @ISA = qw(Exporter); # version: Defines actual version of Pandora Server for this module only my $pandora_version = "7.0NG.736"; -my $pandora_build = "190708"; +my $pandora_build = "190709"; our $VERSION = $pandora_version." ".$pandora_build; our %EXPORT_TAGS = ( 'all' => [ qw() ] ); diff --git a/pandora_server/pandora_server.redhat.spec b/pandora_server/pandora_server.redhat.spec index 9eca22a68f..da6d2103e1 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.736 -%define release 190708 +%define release 190709 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec index 92935fbd0d..222a596040 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.736 -%define release 190708 +%define release 190709 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer index 1ddc84c2c9..0c14c07255 100755 --- a/pandora_server/pandora_server_installer +++ b/pandora_server/pandora_server_installer @@ -9,7 +9,7 @@ # ********************************************************************** PI_VERSION="7.0NG.736" -PI_BUILD="190708" +PI_BUILD="190709" MODE=$1 if [ $# -gt 1 ]; then diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl index f4c3a443df..dd4417cb0b 100644 --- a/pandora_server/util/pandora_db.pl +++ b/pandora_server/util/pandora_db.pl @@ -34,7 +34,7 @@ use PandoraFMS::Config; use PandoraFMS::DB; # version: define current version -my $version = "7.0NG.736 PS190708"; +my $version = "7.0NG.736 PS190709"; # Pandora server configuration my %conf; diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl index cf5bf608e3..6b2567e178 100644 --- 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.736 PS190708"; +my $version = "7.0NG.736 PS190709"; # save program name for logging my $progname = basename($0); From 0f280494a00a8e5cb6be01459d0a46a618b09a3d Mon Sep 17 00:00:00 2001 From: Tatiana Llorente <tatiana.llorente@artica.es> Date: Tue, 9 Jul 2019 09:33:49 +0200 Subject: [PATCH 59/83] Changed images for divs to show preview in visual styles - #4195 --- .../godmode/setup/setup_visuals.php | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/pandora_console/godmode/setup/setup_visuals.php b/pandora_console/godmode/setup/setup_visuals.php index 8b0b2d5486..6e73913b56 100755 --- a/pandora_console/godmode/setup/setup_visuals.php +++ b/pandora_console/godmode/setup/setup_visuals.php @@ -159,6 +159,16 @@ $table_styles->data[$row][1] = html_print_select( $table_styles->data[$row][1] .= ' '.html_print_button(__('View'), 'status_set_preview', false, '', 'class="sub camera logo_preview"', true); $row++; +// Divs to show icon status Colours (Default) +$icon_unknown_ball = ui_print_status_image(STATUS_AGENT_UNKNOWN_BALL, '', true); +$icon_unknown = ui_print_status_image(STATUS_AGENT_UNKNOWN, '', true); +$icon_ok_ball = ui_print_status_image(STATUS_AGENT_OK_BALL, '', true); +$icon_ok = ui_print_status_image(STATUS_AGENT_OK, '', true); +$icon_warning_ball = ui_print_status_image(STATUS_AGENT_WARNING_BALL, '', true); +$icon_warning = ui_print_status_image(STATUS_AGENT_WARNING, '', true); +$icon_bad_ball = ui_print_status_image(STATUS_AGENT_CRITICAL_BALL, '', true); +$icon_bad = ui_print_status_image(STATUS_AGENT_CRITICAL, '', true); +// End - Divs to show icon status Colours (Default) $table_styles->data[$row][0] = __('Login background').ui_print_help_tip(__('You can place your custom images into the folder images/backgrounds/'), true); $backgrounds_list_jpg = list_files('images/backgrounds', 'jpg', 1, 0); $backgrounds_list_gif = list_files('images/backgrounds', 'gif', 1, 0); @@ -1635,6 +1645,17 @@ $("#button-status_set_preview").click (function (e) { $icon_bad_ball = $("<img src=\"" + icon_path + "agent_critical_ball.png\">"); $icon_bad = $("<img src=\"" + icon_path + "agent_critical.png\">"); + if(icon_dir == 'default'){ + $icon_unknown_ball = '<?php echo $icon_unknown_ball; ?>'; + $icon_unknown = '<?php echo $icon_unknown; ?>'; + $icon_ok_ball = '<?php echo $icon_ok_ball; ?>'; + $icon_ok = '<?php echo $icon_ok; ?>'; + $icon_warning_ball = '<?php echo $icon_warning_ball; ?>'; + $icon_warning = '<?php echo $icon_warning; ?>'; + $icon_bad_ball = '<?php echo $icon_bad_ball; ?>'; + $icon_bad = '<?php echo $icon_bad; ?>'; + } + try { $dialog .hide() From bd80e013f56330d91e33cdc3cd19b4425cca8582 Mon Sep 17 00:00:00 2001 From: fbsanchez <fborja.sanchez@artica.es> Date: Tue, 9 Jul 2019 12:02:07 +0200 Subject: [PATCH 60/83] minor fix to avoid log messages --- pandora_console/include/load_session.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandora_console/include/load_session.php b/pandora_console/include/load_session.php index 99bae81244..8b243d808a 100644 --- a/pandora_console/include/load_session.php +++ b/pandora_console/include/load_session.php @@ -94,7 +94,7 @@ function pandora_session_write($session_id, $data) if (is_ajax()) { // Avoid session upadte while processing ajax responses - notifications. if (get_parameter('check_new_notifications', false)) { - return false; + return true; } } From 0cabc4d4dac8ac6895b18208ae5cf0177ceeb287 Mon Sep 17 00:00:00 2001 From: fbsanchez <fborja.sanchez@artica.es> Date: Tue, 9 Jul 2019 12:02:29 +0200 Subject: [PATCH 61/83] Azure discovery task form completed --- .../wizards/DiscoveryTaskList.class.php | 112 +++++++++++------- .../include/functions_snmp_browser.php | 2 - 2 files changed, 70 insertions(+), 44 deletions(-) diff --git a/pandora_console/godmode/wizards/DiscoveryTaskList.class.php b/pandora_console/godmode/wizards/DiscoveryTaskList.class.php index e018ec3d30..586f24335b 100644 --- a/pandora_console/godmode/wizards/DiscoveryTaskList.class.php +++ b/pandora_console/godmode/wizards/DiscoveryTaskList.class.php @@ -501,41 +501,60 @@ class DiscoveryTaskList extends Wizard $data[5] = __('Pending'); } - if ($task['id_recon_script'] == 0) { - // Internal discovery task. - switch ($task['type']) { - case DISCOVERY_CLOUD_AWS_RDS: - // Discovery Applications MySQL. - $data[6] = html_print_image( - 'images/network.png', - true, - ['title' => __('Discovery Cloud RDS')] - ).' '; - $data[6] .= __('Discovery.Cloud.Aws.RDS'); - break; + switch ($task['type']) { + case DISCOVERY_CLOUD_AZURE_COMPUTE: + // Discovery Applications MySQL. + $data[6] = html_print_image( + 'images/plugin.png', + true, + ['title' => __('Discovery Cloud Azure Compute')] + ).' '; + $data[6] .= __('Cloud.Azure.Compute'); + break; - case DISCOVERY_APP_MYSQL: - // Discovery Applications MySQL. - $data[6] = html_print_image( - 'images/network.png', - true, - ['title' => __('Discovery Applications MySQL')] - ).' '; - $data[6] .= __('Discovery.App.MySQL'); - break; + case DISCOVERY_CLOUD_AWS_EC2: + // Discovery Applications MySQL. + $data[6] = html_print_image( + 'images/plugin.png', + true, + ['title' => __('Discovery Cloud AWS EC2')] + ).' '; + $data[6] .= __('Cloud.AWS.EC2'); + break; - case DISCOVERY_APP_ORACLE: - // Discovery Applications Oracle. - $data[6] = html_print_image( - 'images/network.png', - true, - ['title' => __('Discovery Applications Oracle')] - ).' '; - $data[6] .= __('Discovery.App.Oracle'); - break; + case DISCOVERY_CLOUD_AWS_RDS: + // Discovery Cloud RDS. + $data[6] = html_print_image( + 'images/network.png', + true, + ['title' => __('Discovery Cloud RDS')] + ).' '; + $data[6] .= __('Discovery.Cloud.Aws.RDS'); + break; - case DISCOVERY_HOSTDEVICES: - default: + case DISCOVERY_APP_MYSQL: + // Discovery Applications MySQL. + $data[6] = html_print_image( + 'images/network.png', + true, + ['title' => __('Discovery Applications MySQL')] + ).' '; + $data[6] .= __('Discovery.App.MySQL'); + break; + + case DISCOVERY_APP_ORACLE: + // Discovery Applications Oracle. + $data[6] = html_print_image( + 'images/network.png', + true, + ['title' => __('Discovery Applications Oracle')] + ).' '; + $data[6] .= __('Discovery.App.Oracle'); + break; + + case DISCOVERY_HOSTDEVICES: + default: + if ($task['id_recon_script'] == 0) { // Discovery NetScan. $data[6] = html_print_image( 'images/network.png', @@ -550,15 +569,15 @@ class DiscoveryTaskList extends Wizard } else { $data[6] .= __('Discovery.NetScan'); } - break; - } - } else { - // APP recon task. - $data[6] = html_print_image( - 'images/plugin.png', - true - ).' '; - $data[6] .= $recon_script_name; + } else { + // APP or external script recon task. + $data[6] = html_print_image( + 'images/plugin.png', + true + ).' '; + $data[6] .= $recon_script_name; + } + break; } if ($task['status'] <= 0 || $task['status'] > 100) { @@ -699,7 +718,16 @@ class DiscoveryTaskList extends Wizard if ($script !== false) { switch ($script['type']) { case DISCOVERY_SCRIPT_CLOUD_AWS: - return 'wiz=cloud&mode=amazonws&ki='.$task['auth_strings'].'&page=1'; + switch ($task['type']) { + case DISCOVERY_CLOUD_AWS_EC2: + return 'wiz=cloud&mode=amazonws&ki='.$task['auth_strings'].'&page=1'; + + case DISCOVERY_CLOUD_AZURE_COMPUTE: + return 'wiz=cloud&mode=azure&ki='.$task['auth_strings'].'&sub=compute&page=0'; + + default: + return 'wiz=cloud'; + } case DISCOVERY_SCRIPT_APP_VMWARE: return 'wiz=app&mode=vmware&page=0'; diff --git a/pandora_console/include/functions_snmp_browser.php b/pandora_console/include/functions_snmp_browser.php index dded175af5..5b485d9e54 100644 --- a/pandora_console/include/functions_snmp_browser.php +++ b/pandora_console/include/functions_snmp_browser.php @@ -96,7 +96,6 @@ function snmp_browser_get_html_tree( foreach ($tree['__LEAVES__'] as $level => $sub_level) { // Id used to expand leafs. $sub_id = time().rand(0, getrandmax()); - // Display the branch. $output .= '<li id="li_'.$sub_id.'" style="margin: 0; padding: 0;">'; @@ -225,7 +224,6 @@ function snmp_browser_print_tree( $last_array, $sufix, $checked, - $return, $descriptive_ids, $previous_id ); From ab3cfd4cc97f3b2ef8f0552b5571f9b84a2a74ca Mon Sep 17 00:00:00 2001 From: Daniel Barbero <daniel.barbero@artica.es> Date: Tue, 9 Jul 2019 14:08:06 +0200 Subject: [PATCH 62/83] new tocken user edit newslatter info --- .../godmode/users/configure_user.php | 34 ++++++++++++++----- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/pandora_console/godmode/users/configure_user.php b/pandora_console/godmode/users/configure_user.php index 47788284fe..662df7ecee 100644 --- a/pandora_console/godmode/users/configure_user.php +++ b/pandora_console/godmode/users/configure_user.php @@ -137,6 +137,8 @@ if ($new_user && $config['admin_can_add_user']) { $user_info['not_login'] = false; $user_info['strict_acl'] = false; $user_info['session_time'] = 0; + $user_info['middlename'] = 0; + if ($isFunctionSkins !== ENTERPRISE_NOT_HOOK) { $user_info['id_skin'] = ''; } @@ -218,6 +220,7 @@ if ($create_user) { } $values['not_login'] = (bool) get_parameter('not_login', false); + $values['middlename'] = get_parameter('middlename', 0); $values['strict_acl'] = (bool) get_parameter('strict_acl', false); $values['session_time'] = (int) get_parameter('session_time', 0); @@ -317,12 +320,13 @@ if ($update_user) { $values['timezone'] = (string) get_parameter('timezone'); $values['default_event_filter'] = (int) get_parameter('default_event_filter'); $values['default_custom_view'] = (int) get_parameter('default_custom_view'); - // eHorus user level conf + + // eHorus user level conf. $values['ehorus_user_level_enabled'] = (bool) get_parameter('ehorus_user_level_enabled', false); $values['ehorus_user_level_user'] = (string) get_parameter('ehorus_user_level_user'); $values['ehorus_user_level_pass'] = (string) get_parameter('ehorus_user_level_pass'); - + $values['middlename'] = get_parameter('middlename', 0); $dashboard = get_parameter('dashboard', ''); $visual_console = get_parameter('visual_console', ''); @@ -869,13 +873,27 @@ foreach ($event_filter_data as $filter) { $table->data[16][0] = __('Default event filter'); $table->data[16][1] = html_print_select($event_filter, 'default_event_filter', $user_info['default_event_filter'], '', '', __('None'), true, false, false); +$table->data[17][0] = __('Disabled newsletter'); +if ($user_info['middlename'] >= 0) { + $middlename = false; +} else { + $middlename = true; +} + +$table->data[17][1] = html_print_checkbox( + 'middlename', + -1, + $middlename, + true +); + if ($config['ehorus_user_level_conf']) { - $table->data[17][0] = __('eHorus user acces enabled'); - $table->data[17][1] = html_print_checkbox('ehorus_user_level_enabled', 1, $user_info['ehorus_user_level_enabled'], true); - $table->data[18][0] = __('eHorus user'); - $table->data[19][0] = __('eHorus password'); - $table->data[18][1] = html_print_input_text('ehorus_user_level_user', $user_info['ehorus_user_level_user'], '', 15, 45, true); - $table->data[19][1] = html_print_input_password('ehorus_user_level_pass', io_output_password($user_info['ehorus_user_level_pass']), '', 15, 45, true); + $table->data[18][0] = __('eHorus user acces enabled'); + $table->data[18][1] = html_print_checkbox('ehorus_user_level_enabled', 1, $user_info['ehorus_user_level_enabled'], true); + $table->data[19][0] = __('eHorus user'); + $table->data[20][0] = __('eHorus password'); + $table->data[19][1] = html_print_input_text('ehorus_user_level_user', $user_info['ehorus_user_level_user'], '', 15, 45, true); + $table->data[20][1] = html_print_input_password('ehorus_user_level_pass', io_output_password($user_info['ehorus_user_level_pass']), '', 15, 45, true); } From d05dd7ecbc801f5c15eae822a0e6b3263f61dfc8 Mon Sep 17 00:00:00 2001 From: Daniel Barbero <daniel.barbero@artica.es> Date: Tue, 9 Jul 2019 14:56:42 +0200 Subject: [PATCH 63/83] fixed minor error --- pandora_console/include/functions_reporting.php | 1 + 1 file changed, 1 insertion(+) diff --git a/pandora_console/include/functions_reporting.php b/pandora_console/include/functions_reporting.php index 410925fd98..c56c2b85fe 100755 --- a/pandora_console/include/functions_reporting.php +++ b/pandora_console/include/functions_reporting.php @@ -6582,6 +6582,7 @@ function reporting_availability_graph($report, $content, $pdf=false) $content, $report['datetime'], $return, + '', $pdf ); } From eaf29b798a4e8a669c7f0f38902692d37b6d363c Mon Sep 17 00:00:00 2001 From: Tatiana Llorente <tatiana.llorente@artica.es> Date: Tue, 9 Jul 2019 15:03:38 +0200 Subject: [PATCH 64/83] Fixed minor visual bugs in black theme- #4194 --- pandora_console/extensions/module_groups.php | 10 ++- .../agentes/module_manager_editor_common.php | 9 ++- .../include/functions_reporting_html.php | 8 ++- .../include/styles/pandora_black.css | 69 ++++++++++++++++++- pandora_console/operation/search_main.php | 2 +- 5 files changed, 92 insertions(+), 6 deletions(-) diff --git a/pandora_console/extensions/module_groups.php b/pandora_console/extensions/module_groups.php index d9843f9860..8b5075f77c 100644 --- a/pandora_console/extensions/module_groups.php +++ b/pandora_console/extensions/module_groups.php @@ -270,6 +270,12 @@ function mainModuleGroups() $table->style[0] = 'color: #ffffff; background-color: #373737; font-weight: bolder; min-width: 230px;'; $table->width = '100%'; + if ($config['style'] === 'pandora_black') { + $background_color = '#333'; + } else { + $background_color = '#fff'; + } + $head[0] = __('Groups'); $headstyle[0] = 'width: 20%; font-weight: bolder;'; foreach ($array_module_group as $key => $value) { @@ -314,7 +320,7 @@ function mainModuleGroups() $data[$i][$j] .= $array_data[$key][$k]['total_count']; $data[$i][$j] .= '</a></div>'; } else { - $data[$i][$j] = "<div style='background:white;".$cell_style."'>"; + $data[$i][$j] = "<div style='background:".$background_color.';'.$cell_style."'>"; $data[$i][$j] .= 0; $data[$i][$j] .= '</div>'; } @@ -323,7 +329,7 @@ function mainModuleGroups() } } else { foreach ($value['gm'] as $k => $v) { - $data[$i][$j] = "<div style='background:white; min-width: 60px;max-width:5%;overflow:hidden; margin-left: auto; margin-right: auto; text-align: center; padding: 5px;padding-bottom:10px;font-size: 18px;line-height:25px;'>"; + $data[$i][$j] = "<div style='background:".$background_color."; min-width: 60px;max-width:5%;overflow:hidden; margin-left: auto; margin-right: auto; text-align: center; padding: 5px;padding-bottom:10px;font-size: 18px;line-height:25px;'>"; $data[$i][$j] .= 0; $data[$i][$j] .= '</div>'; $j++; diff --git a/pandora_console/godmode/agentes/module_manager_editor_common.php b/pandora_console/godmode/agentes/module_manager_editor_common.php index fbdd620f77..cc674f3837 100644 --- a/pandora_console/godmode/agentes/module_manager_editor_common.php +++ b/pandora_console/godmode/agentes/module_manager_editor_common.php @@ -78,6 +78,13 @@ function push_table_advanced($row, $id=false) function add_component_selection($id_network_component_type) { global $table_simple; + global $config; + + if ($config['style'] === 'pandora_black') { + $background_row = 'background-color: #444'; + } else { + $background_row = 'background-color: #cfcfcf'; + } $data = []; $data[0] = __('Using module component').' '; @@ -116,7 +123,7 @@ function add_component_selection($id_network_component_type) $data[1] .= '</span>'; $table_simple->colspan['module_component'][1] = 3; - $table_simple->rowstyle['module_component'] = 'background-color: #cfcfcf'; + $table_simple->rowstyle['module_component'] = $background_row; prepend_table_simple($data, 'module_component'); } diff --git a/pandora_console/include/functions_reporting_html.php b/pandora_console/include/functions_reporting_html.php index c8d5b3e29e..c6524b4ec3 100644 --- a/pandora_console/include/functions_reporting_html.php +++ b/pandora_console/include/functions_reporting_html.php @@ -107,9 +107,15 @@ function html_do_report_info($report) { global $config; + if ($config['style'] === 'pandora_black') { + $background_color = '#222'; + } else { + $background_color = '#f5f5f5'; + } + $date_today = date($config['date_format']); - $html = '<div style="border: 1px dashed #999; padding: 10px 15px; background: #f5f5f5;margin-top:20px;margin-bottom:20px;"><table> + $html = '<div style="border: 1px dashed #999; padding: 10px 15px; background: '.$background_color.';margin-top:20px;margin-bottom:20px;"><table> <tr> <td><b>'.__('Generated').': </b></td><td>'.$date_today.'</td> </tr> diff --git a/pandora_console/include/styles/pandora_black.css b/pandora_console/include/styles/pandora_black.css index 2db907831a..1913f9025d 100644 --- a/pandora_console/include/styles/pandora_black.css +++ b/pandora_console/include/styles/pandora_black.css @@ -55,6 +55,11 @@ table.databox, color: #fff; } +input[readonly] { + background-color: #444 !important; + color: #a2a2a2 !important; +} + .box-shadow { box-shadow: none; } @@ -88,6 +93,37 @@ textarea:disabled { filter: brightness(2.5) contrast(3.5); } +table.widget_list tr.datos, +table.widget_list tr.datos2, +table.widget_list td.datos, +table.widget_list td.datos2 { + background-color: inherit; +} + +/* messages */ +.container { + background-color: #222; +} + +.p-slider { + background-color: #888; +} + +ol.steps li.current { + border-left: 5px solid #82b92e; + background-color: #545454; +} + +ol.steps li { + background-color: #999; +} + +ol.steps li.visited, +ol.steps li.visited span, +ol.steps li.visited a { + color: #eaeaea; +} + /* White text */ a, #menu_tab_left li a, @@ -109,7 +145,9 @@ form.discovery label, .input_label, .pagination, tr.group_view_data, -.group_view_data { +.group_view_data, +ol.steps li span, +ol.steps li a { color: #fff; } @@ -198,6 +236,13 @@ table.table_modal_alternate tr:nth-child(even) td { color: #fff; } +.info_table .datos3, +.datos3, +.info_table .datos4, +.datos4 { + background-color: #444; +} + .action_buttons a[href] img, .action_buttons input[type="image"], .action_button_img { @@ -318,3 +363,25 @@ ul.ui-tabs-nav.ui-corner-all.ui-helper-reset.ui-helper-clearfix.ui-widget-header img { filter: brightness(2); } + +/* notifications */ +#notification-wrapper::before { + border-bottom-color: #111; +} + +#notification-wrapper { + background: #111; +} + +.notification-item { + background: #222; +} + +.notification-subtitle { + color: #fff; +} + +/* update_manager.css */ +div#box_online * { + color: #000; +} diff --git a/pandora_console/operation/search_main.php b/pandora_console/operation/search_main.php index ffc9d93f74..3a0880e348 100644 --- a/pandora_console/operation/search_main.php +++ b/pandora_console/operation/search_main.php @@ -22,7 +22,7 @@ $searchReports = check_acl($config['id_user'], 0, 'RR'); $searchUsers = check_acl($config['id_user'], 0, 'UM'); $searchHelps = true; -echo '<br><div style="margin:auto; width:90%; padding: 10px; background: #fff">'; +echo '<br><div style="margin:auto; width:90%; padding: 10px;">'; $anyfound = false; From ca3b893073db33d06b250250ea6614b34e893392 Mon Sep 17 00:00:00 2001 From: fbsanchez <fborja.sanchez@artica.es> Date: Tue, 9 Jul 2019 16:08:29 +0200 Subject: [PATCH 65/83] Discovery Cloud Azure --- .../lib/PandoraFMS/DiscoveryServer.pm | 58 ++----------------- pandora_server/lib/PandoraFMS/Tools.pm | 20 +++++++ 2 files changed, 26 insertions(+), 52 deletions(-) diff --git a/pandora_server/lib/PandoraFMS/DiscoveryServer.pm b/pandora_server/lib/PandoraFMS/DiscoveryServer.pm index 80fcbef8d3..8993826931 100644 --- a/pandora_server/lib/PandoraFMS/DiscoveryServer.pm +++ b/pandora_server/lib/PandoraFMS/DiscoveryServer.pm @@ -56,15 +56,7 @@ my $TaskSem :shared; use constant { OS_OTHER => 10, OS_ROUTER => 17, - OS_SWITCH => 18, - DISCOVERY_HOSTDEVICES => 0, - DISCOVERY_HOSTDEVICES_CUSTOM => 1, - DISCOVERY_CLOUD_AWS => 2, - DISCOVERY_APP_VMWARE => 3, - DISCOVERY_APP_MYSQL => 4, - DISCOVERY_APP_ORACLE => 5, - DISCOVERY_CLOUD_AWS_EC2 => 6, - DISCOVERY_CLOUD_AWS_RDS => 7 + OS_SWITCH => 18 }; ######################################################################################## @@ -196,49 +188,11 @@ sub data_consumer ($$) { my $main_event = pandora_event($pa_config, "[Discovery] Execution summary",$task->{'id_group'}, 0, 0, 0, 0, 'system', 0, $dbh); my %cnf_extra; - if ($task->{'type'} == DISCOVERY_CLOUD_AWS_EC2 - || $task->{'type'} == DISCOVERY_CLOUD_AWS_RDS) { - # auth_strings stores the crential identifier to be used. - my $key = pandora_get_credential($dbh, $task->{'auth_strings'}); - - if (ref($key) eq "HASH") { - $cnf_extra{'aws_access_key_id'} = $key->{'username'}; - $cnf_extra{'aws_secret_access_key'} = $key->{'password'}; - } else { - # Invalid credential. - return; - } - - $cnf_extra{'cloud_util_path'} = pandora_get_config_value($dbh, 'cloud_util_path'); - - # Pass credentials by file due Perl limitations. We cannot update ENV here. - $cnf_extra{'creds_file'} = $pa_config->{'temporal'} . '/tmp_discovery.' . md5($task->{'id_rt'} . $task->{'name'} . time()); - eval { - open(my $__file_cfg, '> '. $cnf_extra{'creds_file'}) or die($!); - print $__file_cfg $cnf_extra{'aws_access_key_id'} . "\n"; - print $__file_cfg $cnf_extra{'aws_secret_access_key'} . "\n"; - close($__file_cfg); - set_file_permissions( - $pa_config, - $cnf_extra{'creds_file'}, - "0600" - ); - }; - if ($@) { - logger( - $pa_config, - 'Cannot instantiate configuration file for task: ' . safe_output($task->{'name'}), - 5 - ); - # A server restart will override ENV definition (see run) - logger( - $pa_config, - 'Cannot execute Discovery task: ' . safe_output($task->{'name'}) . '. Please restart the server.', - 1 - ); - # Skip this task. - return; - } + + my $r = enterprise_hook('discovery_generate_extra_cnf',[$pa_config, $dbh, $task, \%cnf_extra]); + if (isset($r) && $r eq 'ERR') { + # Could not generate extra cnf, skip this task. + return; } my $recon = new PandoraFMS::Recon::Base( diff --git a/pandora_server/lib/PandoraFMS/Tools.pm b/pandora_server/lib/PandoraFMS/Tools.pm index 6271698c03..4a96c5851d 100755 --- a/pandora_server/lib/PandoraFMS/Tools.pm +++ b/pandora_server/lib/PandoraFMS/Tools.pm @@ -72,6 +72,15 @@ our @EXPORT = qw( MIGRATIONSERVER METACONSOLE_LICENSE OFFLINE_LICENSE + DISCOVERY_HOSTDEVICES + DISCOVERY_HOSTDEVICES_CUSTOM + DISCOVERY_CLOUD_AWS + DISCOVERY_APP_VMWARE + DISCOVERY_APP_MYSQL + DISCOVERY_APP_ORACLE + DISCOVERY_CLOUD_AWS_EC2 + DISCOVERY_CLOUD_AWS_RDS + DISCOVERY_CLOUD_AZURE_COMPUTE $DEVNULL $OS $OS_VERSION @@ -172,6 +181,17 @@ use constant OFFLINE_LICENSE => 0x02; use constant RECOVERED_ALERT => 0; use constant FIRED_ALERT => 1; +# Discovery task types +use constant DISCOVERY_HOSTDEVICES => 0; +use constant DISCOVERY_HOSTDEVICES_CUSTOM => 1; +use constant DISCOVERY_CLOUD_AWS => 2; +use constant DISCOVERY_APP_VMWARE => 3; +use constant DISCOVERY_APP_MYSQL => 4; +use constant DISCOVERY_APP_ORACLE => 5; +use constant DISCOVERY_CLOUD_AWS_EC2 => 6; +use constant DISCOVERY_CLOUD_AWS_RDS => 7; +use constant DISCOVERY_CLOUD_AZURE_COMPUTE => 8; + # Set OS, OS version and /dev/null our $OS = $^O; our $OS_VERSION = "unknown"; From 084d1a229e866ccf72cf75d9d21b51c2122c35c0 Mon Sep 17 00:00:00 2001 From: Tatiana Llorente <tatiana.llorente@artica.es> Date: Tue, 9 Jul 2019 16:41:00 +0200 Subject: [PATCH 66/83] Added success and error messages when change the event owner - #4309 --- pandora_console/include/functions_events.php | 2 ++ .../include/javascript/pandora_events.js | 36 +++++++++++-------- pandora_console/include/styles/events.css | 4 +-- 3 files changed, 24 insertions(+), 18 deletions(-) diff --git a/pandora_console/include/functions_events.php b/pandora_console/include/functions_events.php index 5f83669b4b..24efd1215e 100644 --- a/pandora_console/include/functions_events.php +++ b/pandora_console/include/functions_events.php @@ -4398,6 +4398,8 @@ function events_page_general($event) $data[1] = $user_owner; } + $table_general->cellclass[3][1] = 'general_owner'; + $table_general->data[] = $data; $data = []; diff --git a/pandora_console/include/javascript/pandora_events.js b/pandora_console/include/javascript/pandora_events.js index 94dadb6fbb..c459ab0443 100644 --- a/pandora_console/include/javascript/pandora_events.js +++ b/pandora_console/include/javascript/pandora_events.js @@ -475,19 +475,18 @@ function event_change_owner() { var meta = $("#hidden-meta").val(); var history = $("#hidden-history").val(); - var params = []; - params.push("page=include/ajax/events"); - params.push("change_owner=1"); - params.push("event_id=" + event_id); - params.push("new_owner=" + new_owner); - params.push("meta=" + meta); - params.push("history=" + history); - $("#button-owner_button").attr("disabled", "disabled"); $("#response_loading").show(); jQuery.ajax({ - data: params.join("&"), + data: { + page: "include/ajax/events", + change_owner: 1, + event_id: event_id, + new_owner: new_owner, + meta: meta, + history: history + }, type: "POST", url: $("#hidden-ajax_file").val(), async: true, @@ -496,12 +495,19 @@ function event_change_owner() { $("#button-owner_button").removeAttr("disabled"); $("#response_loading").hide(); - show_event_dialog( - event_id, - $("#hidden-group_rep").val(), - "responses", - data - ); + if (data == "owner_ok") { + dt_events.draw(false); + $("#notification_owner_success").show(); + console.log(new_owner); + if (new_owner == -1) { + new_owner = ""; + } + $("#extended_event_general_page table td.general_owner").text( + new_owner + ); + } else { + $("#notification_owner_error").show(); + } } }); diff --git a/pandora_console/include/styles/events.css b/pandora_console/include/styles/events.css index fa1aac2e66..1ed0028dc8 100644 --- a/pandora_console/include/styles/events.css +++ b/pandora_console/include/styles/events.css @@ -271,6 +271,7 @@ ul.ui-tabs-nav.ui-corner-all.ui-helper-reset.ui-helper-clearfix.ui-widget-header margin: 0; margin-bottom: -1px; border: none; + border-bottom: 1px solid #a9a9a9; } ul.ui-tabs-nav.ui-corner-all.ui-helper-reset.ui-helper-clearfix.ui-widget-header @@ -298,9 +299,6 @@ li.ui-tabs-tab.ui-corner-top.ui-state-default.ui-tab { li.ui-tabs-tab.ui-corner-top.ui-state-default.ui-tab.ui-tabs-active.ui-state-active { border-bottom: 1px solid #fff; } -div.extended_event_pages.ui-tabs-panel.ui-corner-bottom.ui-widget-content { - border-top: 1px solid #a9a9a9; -} tr.group { padding: 5px; From 6af6aa179b1b19a1c06e0b8456a36710cf37e4a2 Mon Sep 17 00:00:00 2001 From: Tatiana Llorente <tatiana.llorente@artica.es> Date: Tue, 9 Jul 2019 16:45:00 +0200 Subject: [PATCH 67/83] Changed background in update manager offline - #4194 --- pandora_console/include/styles/pandora_black.css | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/pandora_console/include/styles/pandora_black.css b/pandora_console/include/styles/pandora_black.css index 1913f9025d..4df56da344 100644 --- a/pandora_console/include/styles/pandora_black.css +++ b/pandora_console/include/styles/pandora_black.css @@ -109,6 +109,15 @@ table.widget_list td.datos2 { background-color: #888; } +.fileupload_form { + background-color: #222; +} + +#drop_file { + background-color: #444; + color: #fff; +} + ol.steps li.current { border-left: 5px solid #82b92e; background-color: #545454; From 936a7e839f617e46b7b2964f45d7866d0150ce4d Mon Sep 17 00:00:00 2001 From: Tatiana Llorente <tatiana.llorente@artica.es> Date: Tue, 9 Jul 2019 17:18:37 +0200 Subject: [PATCH 68/83] Added success and error messages when change the event owner - #4309 --- pandora_console/include/javascript/pandora_events.js | 1 - 1 file changed, 1 deletion(-) diff --git a/pandora_console/include/javascript/pandora_events.js b/pandora_console/include/javascript/pandora_events.js index c459ab0443..2ca786326e 100644 --- a/pandora_console/include/javascript/pandora_events.js +++ b/pandora_console/include/javascript/pandora_events.js @@ -498,7 +498,6 @@ function event_change_owner() { if (data == "owner_ok") { dt_events.draw(false); $("#notification_owner_success").show(); - console.log(new_owner); if (new_owner == -1) { new_owner = ""; } From 7fd284f1059d64cfd65e3596daab28a4b7291ff9 Mon Sep 17 00:00:00 2001 From: Tatiana Llorente <tatiana.llorente@artica.es> Date: Tue, 9 Jul 2019 17:36:40 +0200 Subject: [PATCH 69/83] Fixed visual bugs in green and black theme - #4194 --- .../include/styles/pandora_black.css | 6 +++--- .../include/styles/pandora_green_old.css | 18 ++++++++++++++---- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/pandora_console/include/styles/pandora_black.css b/pandora_console/include/styles/pandora_black.css index 4df56da344..030eae88ca 100644 --- a/pandora_console/include/styles/pandora_black.css +++ b/pandora_console/include/styles/pandora_black.css @@ -110,12 +110,12 @@ table.widget_list td.datos2 { } .fileupload_form { - background-color: #222; + background-color: #222 !important; } #drop_file { - background-color: #444; - color: #fff; + background-color: #444 !important; + color: #fff !important; } ol.steps li.current { diff --git a/pandora_console/include/styles/pandora_green_old.css b/pandora_console/include/styles/pandora_green_old.css index a9fbdf7f80..4b5c875f83 100644 --- a/pandora_console/include/styles/pandora_green_old.css +++ b/pandora_console/include/styles/pandora_green_old.css @@ -49,16 +49,20 @@ ul.subsubmenu li { } .godmode { - border-top: 1px solid #f1f1f1; + border-top: 1px solid #ddd; } .menu li ul { - border: 1px solid #f1f1f1; + border: 1px solid #eee; } #title_menu, .submenu_text { - color: #9c9c9c; + color: #666; +} +#title_menu:hover, +.submenu_text:hover { + color: #b9b9b9; } .button_collapse, @@ -100,7 +104,6 @@ div#foot span { } /* General styles */ - body, div#page { background: #ecfad6; @@ -123,6 +126,13 @@ div#page { filter: brightness(2.5) contrast(3.5); } +table.widget_list tr.datos, +table.widget_list tr.datos2, +table.widget_list td.datos, +table.widget_list td.datos2 { + background-color: #ecfad6; +} + /* tables.css */ .info_table tr:first-child > th { background-color: #343434; From 85e40b30dceac6bd0a41c365f3d616daaddf6377 Mon Sep 17 00:00:00 2001 From: fbsanchez <fborja.sanchez@artica.es> Date: Tue, 9 Jul 2019 17:54:23 +0200 Subject: [PATCH 70/83] Fix: user filter load tags --- pandora_console/operation/events/events.php | 85 +++++++++++---------- 1 file changed, 44 insertions(+), 41 deletions(-) diff --git a/pandora_console/operation/events/events.php b/pandora_console/operation/events/events.php index da7123e728..9561872288 100644 --- a/pandora_console/operation/events/events.php +++ b/pandora_console/operation/events/events.php @@ -334,6 +334,50 @@ if (is_ajax()) { exit; } +/* + * Load user default form. + */ + +$user_filter = db_get_row_sql( + sprintf( + 'SELECT f.id_filter, f.id_name + FROM tevent_filter f + INNER JOIN tusuario u + ON u.default_event_filter=f.id_filter + WHERE u.id_user = "%s" ', + $config['id_user'] + ) +); +if ($user_filter !== false) { + $filter = events_get_event_filter($user_filter['id_filter']); + if ($filter !== false) { + $id_group = $filter['id_group']; + $event_type = $filter['event_type']; + $severity = $filter['severity']; + $status = $filter['status']; + $search = $filter['search']; + $text_agent = $filter['text_agent']; + $id_agent = $filter['id_agent']; + $id_agent_module = $filter['id_agent_module']; + $pagination = $filter['pagination']; + $event_view_hr = $filter['event_view_hr']; + $id_user_ack = $filter['id_user_ack']; + $group_rep = $filter['group_rep']; + $tag_with = json_decode(io_safe_output($filter['tag_with'])); + $tag_without = json_decode(io_safe_output($filter['tag_without'])); + + $tag_with_base64 = base64_encode(json_encode($tag_with)); + $tag_without_base64 = base64_encode(json_encode($tag_without)); + + $filter_only_alert = $filter['filter_only_alert']; + $id_group_filter = $filter['id_group_filter']; + $date_from = $filter['date_from']; + $date_to = $filter['date_to']; + $source = $filter['source']; + $id_extra = $filter['id_extra']; + $user_comment = $filter['user_comment']; + } +} // TAGS. // Get the tags where the user have permissions in Events reading tasks. @@ -736,47 +780,6 @@ if (is_metaconsole() !== true) { } } -/* - * Load user default form. - */ - -$user_filter = db_get_row_sql( - sprintf( - 'SELECT f.id_filter, f.id_name - FROM tevent_filter f - INNER JOIN tusuario u - ON u.default_event_filter=f.id_filter - WHERE u.id_user = "%s" ', - $config['id_user'] - ) -); -if ($user_filter !== false) { - $filter = events_get_event_filter($user_filter['id_filter']); - if ($filter !== false) { - $id_group = $filter['id_group']; - $event_type = $filter['event_type']; - $severity = $filter['severity']; - $status = $filter['status']; - $search = $filter['search']; - $text_agent = $filter['text_agent']; - $id_agent = $filter['id_agent']; - $id_agent_module = $filter['id_agent_module']; - $pagination = $filter['pagination']; - $event_view_hr = $filter['event_view_hr']; - $id_user_ack = $filter['id_user_ack']; - $group_rep = $filter['group_rep']; - $tag_with = $filter['tag_with']; - $tag_without = $filter['tag_without']; - $filter_only_alert = $filter['filter_only_alert']; - $id_group_filter = $filter['id_group_filter']; - $date_from = $filter['date_from']; - $date_to = $filter['date_to']; - $source = $filter['source']; - $id_extra = $filter['id_extra']; - $user_comment = $filter['user_comment']; - } -} - /* * Load filter form. */ From 5b6e7d13cd8f528cc7a0aaf295b96ba5a32383ea Mon Sep 17 00:00:00 2001 From: "marcos.alconada" <marcos.alconada@artica.es> Date: Tue, 9 Jul 2019 18:13:46 +0200 Subject: [PATCH 71/83] changed condition for saml no access --- pandora_console/index.php | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/pandora_console/index.php b/pandora_console/index.php index 22a5f46179..5b724c52dc 100755 --- a/pandora_console/index.php +++ b/pandora_console/index.php @@ -359,15 +359,21 @@ if (! isset($config['id_user'])) { $nick_in_db = $_SESSION['prepared_login_da']['id_user']; $expired_pass = false; } else if (($config['auth'] == 'saml') && ($login_button_saml)) { - if (!include_once 'include/auth/saml.php') { + $saml_configured = include_once $config['homedir'].'/'.ENTERPRISE_DIR.'/include/auth/saml.php'; + + if (!$saml_configured) { include_once 'general/noaccesssaml.php'; - } else { - $saml_user_id = saml_process_user_login(); } + $saml_user_id = saml_process_user_login(); + + if (!$saml_user_id) { + include_once 'general/noaccesssaml.php'; + } + + $nick_in_db = $saml_user_id; if (!$nick_in_db) { - include_once 'general/noaccesssaml.php'; include_once $config['saml_path'].'simplesamlphp/lib/_autoload.php'; $as = new SimpleSAML_Auth_Simple($config['saml_source']); $as->logout(); From ca237a0fc4ab24bf0a27e4cfec2232ed87d9138e Mon Sep 17 00:00:00 2001 From: artica <artica.devel@gmail.com> Date: Wed, 10 Jul 2019 00:01:10 +0200 Subject: [PATCH 72/83] 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 6f8d1f824d..940dfe083f 100644 --- a/pandora_agents/unix/DEBIAN/control +++ b/pandora_agents/unix/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-agent-unix -Version: 7.0NG.736-190709 +Version: 7.0NG.736-190710 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 1234a20b06..1ff1a4514b 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.736-190709" +pandora_version="7.0NG.736-190710" 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 5be1d49311..8a6a6c2643 100755 --- a/pandora_agents/unix/pandora_agent +++ b/pandora_agents/unix/pandora_agent @@ -42,7 +42,7 @@ my $Sem = undef; my $ThreadSem = undef; use constant AGENT_VERSION => '7.0NG.736'; -use constant AGENT_BUILD => '190709'; +use constant AGENT_BUILD => '190710'; # 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 23d3afc120..0d413c7fa1 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.736 -%define release 190709 +%define release 190710 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 7320e5a83d..6ce012ae4f 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.736 -%define release 190709 +%define release 190710 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 ae6028674d..8434f711d4 100755 --- a/pandora_agents/unix/pandora_agent_installer +++ b/pandora_agents/unix/pandora_agent_installer @@ -10,7 +10,7 @@ # ********************************************************************** PI_VERSION="7.0NG.736" -PI_BUILD="190709" +PI_BUILD="190710" OS_NAME=`uname -s` FORCE=0 diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi index 7f4138dd8a..f05a229bc3 100644 --- a/pandora_agents/win32/installer/pandora.mpi +++ b/pandora_agents/win32/installer/pandora.mpi @@ -186,7 +186,7 @@ UpgradeApplicationID {} Version -{190709} +{190710} ViewReadme {Yes} diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc index dc6658a299..9790174b11 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.736(Build 190709)") +#define PANDORA_VERSION ("7.0NG.736(Build 190710)") string pandora_path; string pandora_dir; diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc index 7589ae4e1f..4e4ab15cf8 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.736(Build 190709))" + VALUE "ProductVersion", "(7.0NG.736(Build 190710))" VALUE "FileVersion", "1.0.0.0" END END diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control index 09c13f639d..5e26ed9f29 100644 --- a/pandora_console/DEBIAN/control +++ b/pandora_console/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-console -Version: 7.0NG.736-190709 +Version: 7.0NG.736-190710 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 1e2e36c157..038f128c6f 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.736-190709" +pandora_version="7.0NG.736-190710" package_pear=0 package_pandora=1 diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php index 57121de09a..d5255f5809 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 = 'PC190709'; +$build_version = 'PC190710'; $pandora_version = 'v7.0NG.736'; // Do not overwrite default timezone set if defined. diff --git a/pandora_console/install.php b/pandora_console/install.php index 1f7283c155..e59483e657 100644 --- a/pandora_console/install.php +++ b/pandora_console/install.php @@ -129,7 +129,7 @@ <div style='height: 10px'> <?php $version = '7.0NG.736'; - $build = '190709'; + $build = '190710'; $banner = "v$version Build $build"; error_reporting(0); diff --git a/pandora_console/pandora_console.redhat.spec b/pandora_console/pandora_console.redhat.spec index 4d769141e2..8781350751 100644 --- a/pandora_console/pandora_console.redhat.spec +++ b/pandora_console/pandora_console.redhat.spec @@ -3,7 +3,7 @@ # %define name pandorafms_console %define version 7.0NG.736 -%define release 190709 +%define release 190710 # User and Group under which Apache is running %define httpd_name httpd diff --git a/pandora_console/pandora_console.rhel7.spec b/pandora_console/pandora_console.rhel7.spec index e8179bd043..9131d862a5 100644 --- a/pandora_console/pandora_console.rhel7.spec +++ b/pandora_console/pandora_console.rhel7.spec @@ -3,7 +3,7 @@ # %define name pandorafms_console %define version 7.0NG.736 -%define release 190709 +%define release 190710 # User and Group under which Apache is running %define httpd_name httpd diff --git a/pandora_console/pandora_console.spec b/pandora_console/pandora_console.spec index 4c96b354d5..512084db36 100644 --- a/pandora_console/pandora_console.spec +++ b/pandora_console/pandora_console.spec @@ -3,7 +3,7 @@ # %define name pandorafms_console %define version 7.0NG.736 -%define release 190709 +%define release 190710 %define httpd_name httpd # User and Group under which Apache is running %define httpd_name apache2 diff --git a/pandora_server/DEBIAN/control b/pandora_server/DEBIAN/control index e0e43f69bf..057a3d89c8 100644 --- a/pandora_server/DEBIAN/control +++ b/pandora_server/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-server -Version: 7.0NG.736-190709 +Version: 7.0NG.736-190710 Architecture: all Priority: optional Section: admin diff --git a/pandora_server/DEBIAN/make_deb_package.sh b/pandora_server/DEBIAN/make_deb_package.sh index 7d8b03492a..4844017e22 100644 --- a/pandora_server/DEBIAN/make_deb_package.sh +++ b/pandora_server/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.736-190709" +pandora_version="7.0NG.736-190710" package_cpan=0 package_pandora=1 diff --git a/pandora_server/lib/PandoraFMS/Config.pm b/pandora_server/lib/PandoraFMS/Config.pm index 017d5a0308..9fa7b5769a 100644 --- a/pandora_server/lib/PandoraFMS/Config.pm +++ b/pandora_server/lib/PandoraFMS/Config.pm @@ -45,7 +45,7 @@ our @EXPORT = qw( # version: Defines actual version of Pandora Server for this module only my $pandora_version = "7.0NG.736"; -my $pandora_build = "190709"; +my $pandora_build = "190710"; our $VERSION = $pandora_version." ".$pandora_build; # Setup hash diff --git a/pandora_server/lib/PandoraFMS/PluginTools.pm b/pandora_server/lib/PandoraFMS/PluginTools.pm index 60d445306a..671b325a83 100644 --- a/pandora_server/lib/PandoraFMS/PluginTools.pm +++ b/pandora_server/lib/PandoraFMS/PluginTools.pm @@ -32,7 +32,7 @@ our @ISA = qw(Exporter); # version: Defines actual version of Pandora Server for this module only my $pandora_version = "7.0NG.736"; -my $pandora_build = "190709"; +my $pandora_build = "190710"; our $VERSION = $pandora_version." ".$pandora_build; our %EXPORT_TAGS = ( 'all' => [ qw() ] ); diff --git a/pandora_server/pandora_server.redhat.spec b/pandora_server/pandora_server.redhat.spec index da6d2103e1..3687124ebb 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.736 -%define release 190709 +%define release 190710 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec index 222a596040..4ad259da7e 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.736 -%define release 190709 +%define release 190710 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer index 0c14c07255..145ec86518 100755 --- a/pandora_server/pandora_server_installer +++ b/pandora_server/pandora_server_installer @@ -9,7 +9,7 @@ # ********************************************************************** PI_VERSION="7.0NG.736" -PI_BUILD="190709" +PI_BUILD="190710" MODE=$1 if [ $# -gt 1 ]; then diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl index dd4417cb0b..ea5468bf0f 100644 --- a/pandora_server/util/pandora_db.pl +++ b/pandora_server/util/pandora_db.pl @@ -34,7 +34,7 @@ use PandoraFMS::Config; use PandoraFMS::DB; # version: define current version -my $version = "7.0NG.736 PS190709"; +my $version = "7.0NG.736 PS190710"; # Pandora server configuration my %conf; diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl index 6b2567e178..edee1d5175 100644 --- 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.736 PS190709"; +my $version = "7.0NG.736 PS190710"; # save program name for logging my $progname = basename($0); From 8c7745768c86e893d3b665d0eb8732a2441fb02b Mon Sep 17 00:00:00 2001 From: Tatiana Llorente <tatiana.llorente@artica.es> Date: Wed, 10 Jul 2019 11:05:06 +0200 Subject: [PATCH 73/83] Added success and error messages when change the event owner - #4309 --- .../include/javascript/pandora_events.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/pandora_console/include/javascript/pandora_events.js b/pandora_console/include/javascript/pandora_events.js index 2ca786326e..5727e200f5 100644 --- a/pandora_console/include/javascript/pandora_events.js +++ b/pandora_console/include/javascript/pandora_events.js @@ -495,14 +495,22 @@ function event_change_owner() { $("#button-owner_button").removeAttr("disabled"); $("#response_loading").hide(); + if ($("#notification_owner_success").length) { + $("#notification_owner_success").hide(); + } + + if ($("#notification_owner_error").length) { + $("#notification_owner_error").hide(); + } + if (data == "owner_ok") { dt_events.draw(false); $("#notification_owner_success").show(); if (new_owner == -1) { - new_owner = ""; + new_owner = "N/A"; } - $("#extended_event_general_page table td.general_owner").text( - new_owner + $("#extended_event_general_page table td.general_owner").html( + "<i>" + new_owner + "</i>" ); } else { $("#notification_owner_error").show(); From bfb78971495ef29441f491332c2e0cd9c0fdc333 Mon Sep 17 00:00:00 2001 From: Tatiana Llorente <tatiana.llorente@artica.es> Date: Wed, 10 Jul 2019 12:15:41 +0200 Subject: [PATCH 74/83] Added success and error messages when change the event status - #4309 --- pandora_console/include/functions_events.php | 2 + .../include/javascript/pandora_events.js | 53 ++++++++++++------- 2 files changed, 36 insertions(+), 19 deletions(-) diff --git a/pandora_console/include/functions_events.php b/pandora_console/include/functions_events.php index 24efd1215e..e368651a12 100644 --- a/pandora_console/include/functions_events.php +++ b/pandora_console/include/functions_events.php @@ -4467,6 +4467,8 @@ function events_page_general($event) $data[1] = '<i>'.__('N/A').'</i>'; } + $table_general->cellclass[7][1] = 'general_status'; + $table_general->data[] = $data; $data = []; diff --git a/pandora_console/include/javascript/pandora_events.js b/pandora_console/include/javascript/pandora_events.js index 5727e200f5..c50d755fc0 100644 --- a/pandora_console/include/javascript/pandora_events.js +++ b/pandora_console/include/javascript/pandora_events.js @@ -437,19 +437,18 @@ function event_change_status(event_ids) { var meta = $("#hidden-meta").val(); var history = $("#hidden-history").val(); - var params = []; - params.push("page=include/ajax/events"); - params.push("change_status=1"); - params.push("event_ids=" + event_ids); - params.push("new_status=" + new_status); - params.push("meta=" + meta); - params.push("history=" + history); - $("#button-status_button").attr("disabled", "disabled"); $("#response_loading").show(); jQuery.ajax({ - data: params.join("&"), + data: { + page: "include/ajax/events", + change_status: 1, + event_ids: event_ids, + new_status: new_status, + meta: meta, + history: history + }, type: "POST", url: $("#hidden-ajax_file").val(), async: true, @@ -457,12 +456,25 @@ function event_change_status(event_ids) { success: function(data) { $("#button-status_button").removeAttr("disabled"); $("#response_loading").hide(); - show_event_dialog( - event_id, - $("#hidden-group_rep").val(), - "responses", - data - ); + + if ($("#notification_status_success").length) { + $("#notification_status_success").hide(); + } + + if ($("#notification_status_error").length) { + $("#notification_status_error").hide(); + } + console.log(data); + if (data == "status_ok") { + dt_events.draw(false); + $("#notification_status_success").show(); + + $("#extended_event_general_page table td.general_status").text( + new_status + ); + } else { + $("#notification_status_error").show(); + } } }); return false; @@ -507,11 +519,14 @@ function event_change_owner() { dt_events.draw(false); $("#notification_owner_success").show(); if (new_owner == -1) { - new_owner = "N/A"; + $("#extended_event_general_page table td.general_owner").html( + "<i>N/A</i>" + ); + } else { + $("#extended_event_general_page table td.general_owner").text( + new_owner + ); } - $("#extended_event_general_page table td.general_owner").html( - "<i>" + new_owner + "</i>" - ); } else { $("#notification_owner_error").show(); } From 1f8e1439634e9f06a9dae6188d36e627110aacd2 Mon Sep 17 00:00:00 2001 From: Tatiana Llorente <tatiana.llorente@artica.es> Date: Wed, 10 Jul 2019 13:04:06 +0200 Subject: [PATCH 75/83] Fixed bug to change the event status in modal window - #4309 --- pandora_console/include/ajax/events.php | 3 +++ pandora_console/include/javascript/pandora_events.js | 6 +----- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/pandora_console/include/ajax/events.php b/pandora_console/include/ajax/events.php index a7d23ca015..22eb1d7836 100644 --- a/pandora_console/include/ajax/events.php +++ b/pandora_console/include/ajax/events.php @@ -1139,6 +1139,7 @@ if ($get_extended_event) { $dialog_page = get_parameter('dialog_page', 'general'); $filter = get_parameter('filter', []); + $similar_ids = get_parameter('similar_ids', $event_id); $group_rep = $filter['group_rep']; $event_rep = $event['event_rep']; $timestamp_first = $event['min_timestamp']; @@ -1146,6 +1147,8 @@ if ($get_extended_event) { $server_id = $event['server_id']; $comments = $event['comments']; + $event['similar_ids'] = $similar_ids; + if (!isset($comments)) { $comments = $event['user_comment']; } diff --git a/pandora_console/include/javascript/pandora_events.js b/pandora_console/include/javascript/pandora_events.js index c50d755fc0..0fb6c1a6ef 100644 --- a/pandora_console/include/javascript/pandora_events.js +++ b/pandora_console/include/javascript/pandora_events.js @@ -464,14 +464,10 @@ function event_change_status(event_ids) { if ($("#notification_status_error").length) { $("#notification_status_error").hide(); } - console.log(data); + if (data == "status_ok") { dt_events.draw(false); $("#notification_status_success").show(); - - $("#extended_event_general_page table td.general_status").text( - new_status - ); } else { $("#notification_status_error").show(); } From a4518819e41b825985ff682f7c2da2e4eb6d6583 Mon Sep 17 00:00:00 2001 From: "marcos.alconada" <marcos.alconada@artica.es> Date: Wed, 10 Jul 2019 17:58:52 +0200 Subject: [PATCH 76/83] add link and change table --- pandora_console/operation/search_policies.php | 45 +++++++++++++++---- 1 file changed, 36 insertions(+), 9 deletions(-) diff --git a/pandora_console/operation/search_policies.php b/pandora_console/operation/search_policies.php index a71d76a733..6277318f66 100644 --- a/pandora_console/operation/search_policies.php +++ b/pandora_console/operation/search_policies.php @@ -30,26 +30,53 @@ if (!$policies || !$searchpolicies) { $table->align[4] = 'center'; $table->head = []; - $table->head[0] = __('ID').' '.'<a href="index.php?search_category=policies&keywords='.$config['search_keywords'].'&head_search_keywords=abc&offset='.$offset.'&sort_field=id_policie&sort=up">'.html_print_image('images/sort_up.png', true, ['style' => $selectpolicieIDUp]).'</a>'.'<a href="index.php?search_category=policies&keywords='.$config['search_keywords'].'&head_search_keywords=abc&offset='.$offset.'&sort_field=id_policie&sort=down">'.html_print_image('images/sort_down.png', true, ['style' => $selectpolicieIDDown]).'</a>'; - $table->head[1] = __('Name').' '.'<a href="index.php?search_category=policies&keywords='.$config['search_keywords'].'&head_search_keywords=abc&offset='.$offset.'&sort_field=name&sort=up">'.html_print_image('images/sort_up.png', true, ['style' => $selectNameUp]).'</a>'.'<a href="index.php?search_category=policies&keywords='.$config['search_keywords'].'&head_search_keywords=abc&offset='.$offset.'&sort_field=name&sort=down">'.html_print_image('images/sort_down.png', true, ['style' => $selectNameDown]).'</a>'; - $table->head[2] = __('Description').' '.'<a href="index.php?search_category=policies&keywords='.$config['search_keywords'].'&head_search_keywords=abc&offset='.$offset.'&sort_field=description&sort=up">'.html_print_image('images/sort_up.png', true, ['style' => $selectDescriptionUp]).'</a>'.'<a href="index.php?search_category=policies&keywords='.$config['search_keywords'].'&head_search_keywords=abc&offset='.$offset.'&sort_field=description&sort=down">'.html_print_image('images/sort_down.png', true, ['style' => $selectDescriptionDown]).'</a>'; - $table->head[3] = __('Id_group').' '.'<a href="index.php?search_category=policies&keywords='.$config['search_keywords'].'&head_search_keywords=abc&offset='.$offset.'&sort_field=last_contact&sort=up">'.html_print_image('images/sort_up.png', true, ['style' => $selectId_groupUp]).'</a>'.'<a href="index.php?search_category=policies&keywords='.$config['search_keywords'].'&head_search_keywords=abc&offset='.$offset.'&sort_field=last_contact&sort=down">'.html_print_image('images/sort_down.png', true, ['style' => $selectId_groupDown]).'</a>'; - $table->head[4] = __('Status').' '.'<a href="index.php?search_category=policies&keywords='.$config['search_keywords'].'&head_search_keywords=abc&offset='.$offset.'&sort_field=status&sort=up">'.html_print_image('images/sort_up.png', true, ['style' => $selectStatusUp]).'</a>'.'<a href="index.php?search_category=policies&keywords='.$config['search_keywords'].'&head_search_keywords=abc&offset='.$offset.'&sort_field=status&sort=down">'.html_print_image('images/sort_down.png', true, ['style' => $selectstatusDown]).'</a>'; + // $table->head[0] = __('ID').' '.'<a href="index.php?search_category=policies&keywords='.$config['search_keywords'].'&head_search_keywords=abc&offset='.$offset.'&sort_field=id_policie&sort=up">'.html_print_image('images/sort_up.png', true, ['style' => $selectpolicieIDUp]).'</a>'.'<a href="index.php?search_category=policies&keywords='.$config['search_keywords'].'&head_search_keywords=abc&offset='.$offset.'&sort_field=id_policie&sort=down">'.html_print_image('images/sort_down.png', true, ['style' => $selectpolicieIDDown]).'</a>'; + $table->head[0] = __('Name').' '.'<a href="index.php?search_category=policies&keywords='.$config['search_keywords'].'&head_search_keywords=abc&offset='.$offset.'&sort_field=name&sort=up">'.html_print_image('images/sort_up.png', true, ['style' => $selectNameUp]).'</a>'.'<a href="index.php?search_category=policies&keywords='.$config['search_keywords'].'&head_search_keywords=abc&offset='.$offset.'&sort_field=name&sort=down">'.html_print_image('images/sort_down.png', true, ['style' => $selectNameDown]).'</a>'; + $table->head[1] = __('Description').' '.'<a href="index.php?search_category=policies&keywords='.$config['search_keywords'].'&head_search_keywords=abc&offset='.$offset.'&sort_field=description&sort=up">'.html_print_image('images/sort_up.png', true, ['style' => $selectDescriptionUp]).'</a>'.'<a href="index.php?search_category=policies&keywords='.$config['search_keywords'].'&head_search_keywords=abc&offset='.$offset.'&sort_field=description&sort=down">'.html_print_image('images/sort_down.png', true, ['style' => $selectDescriptionDown]).'</a>'; + $table->head[2] = __('Id_group').' '.'<a href="index.php?search_category=policies&keywords='.$config['search_keywords'].'&head_search_keywords=abc&offset='.$offset.'&sort_field=last_contact&sort=up">'.html_print_image('images/sort_up.png', true, ['style' => $selectId_groupUp]).'</a>'.'<a href="index.php?search_category=policies&keywords='.$config['search_keywords'].'&head_search_keywords=abc&offset='.$offset.'&sort_field=last_contact&sort=down">'.html_print_image('images/sort_down.png', true, ['style' => $selectId_groupDown]).'</a>'; + $table->head[3] = __('Status').' '.'<a href="index.php?search_category=policies&keywords='.$config['search_keywords'].'&head_search_keywords=abc&offset='.$offset.'&sort_field=status&sort=up">'.html_print_image('images/sort_up.png', true, ['style' => $selectStatusUp]).'</a>'.'<a href="index.php?search_category=policies&keywords='.$config['search_keywords'].'&head_search_keywords=abc&offset='.$offset.'&sort_field=status&sort=down">'.html_print_image('images/sort_down.png', true, ['style' => $selectstatusDown]).'</a>'; $table->data = []; foreach ($policies as $policie) { $policieIDCell = "<a href='?sec=gmodules&sec2=enterprise/godmode/policies/policies&id=".$policies['id']."'>".$policies['id'].'</a>'; + switch ($policie['status']) { + case POLICY_UPDATED: + $status = html_print_image( + 'images/policies_ok.png', + true, + ['title' => __('Policy updated')] + ); + break; + + case POLICY_PENDING_DATABASE: + $status = html_print_image( + 'images/policies_error_db.png', + true, + ['title' => __('Pending update policy only database')] + ); + break; + + case POLICY_PENDING_ALL: + $status = html_print_image( + 'images/policies_error.png', + true, + ['title' => __('Pending update policy')] + ); + break; + } + + $url = $config['homeurl'].'/index.php?'.'sec=gmodules&'.'sec2=enterprise/godmode/policies/policies&id='.$policie['id'].''; array_push( $table->data, [ - $policie['id'], - $policie['name'], + // $policie['id'], + '<a href= '.$url.'>'.$policie['name'].'', $policie['description'], - $policie['id_group'], - $policie['status'], + ui_print_group_icon($policie['id_group'], true), + $status, ] ); From 45c9db2b69ef02919cc09746faa479f57120815e Mon Sep 17 00:00:00 2001 From: artica <artica.devel@gmail.com> Date: Thu, 11 Jul 2019 00:01:12 +0200 Subject: [PATCH 77/83] 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 940dfe083f..9a0b872a6e 100644 --- a/pandora_agents/unix/DEBIAN/control +++ b/pandora_agents/unix/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-agent-unix -Version: 7.0NG.736-190710 +Version: 7.0NG.736-190711 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 1ff1a4514b..4d84020703 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.736-190710" +pandora_version="7.0NG.736-190711" 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 8a6a6c2643..8a6ac38d5f 100755 --- a/pandora_agents/unix/pandora_agent +++ b/pandora_agents/unix/pandora_agent @@ -42,7 +42,7 @@ my $Sem = undef; my $ThreadSem = undef; use constant AGENT_VERSION => '7.0NG.736'; -use constant AGENT_BUILD => '190710'; +use constant AGENT_BUILD => '190711'; # 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 0d413c7fa1..c9f7f10dc0 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.736 -%define release 190710 +%define release 190711 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 6ce012ae4f..8d1ff4fc15 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.736 -%define release 190710 +%define release 190711 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 8434f711d4..52b49cca0c 100755 --- a/pandora_agents/unix/pandora_agent_installer +++ b/pandora_agents/unix/pandora_agent_installer @@ -10,7 +10,7 @@ # ********************************************************************** PI_VERSION="7.0NG.736" -PI_BUILD="190710" +PI_BUILD="190711" OS_NAME=`uname -s` FORCE=0 diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi index f05a229bc3..efa43a74ee 100644 --- a/pandora_agents/win32/installer/pandora.mpi +++ b/pandora_agents/win32/installer/pandora.mpi @@ -186,7 +186,7 @@ UpgradeApplicationID {} Version -{190710} +{190711} ViewReadme {Yes} diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc index 9790174b11..75fb3cbe98 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.736(Build 190710)") +#define PANDORA_VERSION ("7.0NG.736(Build 190711)") string pandora_path; string pandora_dir; diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc index 4e4ab15cf8..392c639976 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.736(Build 190710))" + VALUE "ProductVersion", "(7.0NG.736(Build 190711))" VALUE "FileVersion", "1.0.0.0" END END diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control index 5e26ed9f29..32efed3e39 100644 --- a/pandora_console/DEBIAN/control +++ b/pandora_console/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-console -Version: 7.0NG.736-190710 +Version: 7.0NG.736-190711 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 038f128c6f..68e0aa147f 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.736-190710" +pandora_version="7.0NG.736-190711" package_pear=0 package_pandora=1 diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php index d5255f5809..f72acc3ef6 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 = 'PC190710'; +$build_version = 'PC190711'; $pandora_version = 'v7.0NG.736'; // Do not overwrite default timezone set if defined. diff --git a/pandora_console/install.php b/pandora_console/install.php index e59483e657..e0c24fd2c6 100644 --- a/pandora_console/install.php +++ b/pandora_console/install.php @@ -129,7 +129,7 @@ <div style='height: 10px'> <?php $version = '7.0NG.736'; - $build = '190710'; + $build = '190711'; $banner = "v$version Build $build"; error_reporting(0); diff --git a/pandora_console/pandora_console.redhat.spec b/pandora_console/pandora_console.redhat.spec index 8781350751..8f3c01ee7a 100644 --- a/pandora_console/pandora_console.redhat.spec +++ b/pandora_console/pandora_console.redhat.spec @@ -3,7 +3,7 @@ # %define name pandorafms_console %define version 7.0NG.736 -%define release 190710 +%define release 190711 # User and Group under which Apache is running %define httpd_name httpd diff --git a/pandora_console/pandora_console.rhel7.spec b/pandora_console/pandora_console.rhel7.spec index 9131d862a5..0b35aa03f8 100644 --- a/pandora_console/pandora_console.rhel7.spec +++ b/pandora_console/pandora_console.rhel7.spec @@ -3,7 +3,7 @@ # %define name pandorafms_console %define version 7.0NG.736 -%define release 190710 +%define release 190711 # User and Group under which Apache is running %define httpd_name httpd diff --git a/pandora_console/pandora_console.spec b/pandora_console/pandora_console.spec index 512084db36..f7db72f440 100644 --- a/pandora_console/pandora_console.spec +++ b/pandora_console/pandora_console.spec @@ -3,7 +3,7 @@ # %define name pandorafms_console %define version 7.0NG.736 -%define release 190710 +%define release 190711 %define httpd_name httpd # User and Group under which Apache is running %define httpd_name apache2 diff --git a/pandora_server/DEBIAN/control b/pandora_server/DEBIAN/control index 057a3d89c8..4b93d0489d 100644 --- a/pandora_server/DEBIAN/control +++ b/pandora_server/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-server -Version: 7.0NG.736-190710 +Version: 7.0NG.736-190711 Architecture: all Priority: optional Section: admin diff --git a/pandora_server/DEBIAN/make_deb_package.sh b/pandora_server/DEBIAN/make_deb_package.sh index 4844017e22..26a19695c2 100644 --- a/pandora_server/DEBIAN/make_deb_package.sh +++ b/pandora_server/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.736-190710" +pandora_version="7.0NG.736-190711" package_cpan=0 package_pandora=1 diff --git a/pandora_server/lib/PandoraFMS/Config.pm b/pandora_server/lib/PandoraFMS/Config.pm index 9fa7b5769a..96a641026a 100644 --- a/pandora_server/lib/PandoraFMS/Config.pm +++ b/pandora_server/lib/PandoraFMS/Config.pm @@ -45,7 +45,7 @@ our @EXPORT = qw( # version: Defines actual version of Pandora Server for this module only my $pandora_version = "7.0NG.736"; -my $pandora_build = "190710"; +my $pandora_build = "190711"; our $VERSION = $pandora_version." ".$pandora_build; # Setup hash diff --git a/pandora_server/lib/PandoraFMS/PluginTools.pm b/pandora_server/lib/PandoraFMS/PluginTools.pm index 671b325a83..0431e76d74 100644 --- a/pandora_server/lib/PandoraFMS/PluginTools.pm +++ b/pandora_server/lib/PandoraFMS/PluginTools.pm @@ -32,7 +32,7 @@ our @ISA = qw(Exporter); # version: Defines actual version of Pandora Server for this module only my $pandora_version = "7.0NG.736"; -my $pandora_build = "190710"; +my $pandora_build = "190711"; our $VERSION = $pandora_version." ".$pandora_build; our %EXPORT_TAGS = ( 'all' => [ qw() ] ); diff --git a/pandora_server/pandora_server.redhat.spec b/pandora_server/pandora_server.redhat.spec index 3687124ebb..230fbad5e8 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.736 -%define release 190710 +%define release 190711 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec index 4ad259da7e..0cee7965f4 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.736 -%define release 190710 +%define release 190711 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer index 145ec86518..48ace9e334 100755 --- a/pandora_server/pandora_server_installer +++ b/pandora_server/pandora_server_installer @@ -9,7 +9,7 @@ # ********************************************************************** PI_VERSION="7.0NG.736" -PI_BUILD="190710" +PI_BUILD="190711" MODE=$1 if [ $# -gt 1 ]; then diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl index ea5468bf0f..f655b5bcb0 100644 --- a/pandora_server/util/pandora_db.pl +++ b/pandora_server/util/pandora_db.pl @@ -34,7 +34,7 @@ use PandoraFMS::Config; use PandoraFMS::DB; # version: define current version -my $version = "7.0NG.736 PS190710"; +my $version = "7.0NG.736 PS190711"; # Pandora server configuration my %conf; diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl index edee1d5175..7172389c25 100644 --- 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.736 PS190710"; +my $version = "7.0NG.736 PS190711"; # save program name for logging my $progname = basename($0); From 467ee5fb8f8760805b4ff8e122bfe49a1bc2df3d Mon Sep 17 00:00:00 2001 From: fbsanchez <fborja.sanchez@artica.es> Date: Thu, 11 Jul 2019 12:01:19 +0200 Subject: [PATCH 78/83] Minor errata fix --- pandora_server/lib/PandoraFMS/DiscoveryServer.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandora_server/lib/PandoraFMS/DiscoveryServer.pm b/pandora_server/lib/PandoraFMS/DiscoveryServer.pm index 8993826931..e70d871042 100644 --- a/pandora_server/lib/PandoraFMS/DiscoveryServer.pm +++ b/pandora_server/lib/PandoraFMS/DiscoveryServer.pm @@ -190,7 +190,7 @@ sub data_consumer ($$) { my %cnf_extra; my $r = enterprise_hook('discovery_generate_extra_cnf',[$pa_config, $dbh, $task, \%cnf_extra]); - if (isset($r) && $r eq 'ERR') { + if (defined($r) && $r eq 'ERR') { # Could not generate extra cnf, skip this task. return; } From bd070b706bad475c94d758091b9785397aca37f4 Mon Sep 17 00:00:00 2001 From: Daniel Barbero Martin <daniel.barbero@artica.es> Date: Thu, 11 Jul 2019 12:45:52 +0200 Subject: [PATCH 79/83] fixed minor error --- pandora_console/general/register.php | 32 +++++++++---------- .../include/class/ConsoleSupervisor.php | 2 +- pandora_console/include/functions_config.php | 8 +++++ pandora_console/operation/users/user_edit.php | 31 +++++++++--------- 4 files changed, 41 insertions(+), 32 deletions(-) diff --git a/pandora_console/general/register.php b/pandora_console/general/register.php index e6a26bb250..b1d58aada4 100644 --- a/pandora_console/general/register.php +++ b/pandora_console/general/register.php @@ -122,7 +122,6 @@ if (is_ajax()) { exit(); } - ui_require_css_file('register'); $initial = isset($config['initial_wizard']) !== true @@ -150,26 +149,27 @@ if ($initial && users_is_admin()) { ); } -if ($registration && users_is_admin()) { - // Prepare registration wizard, not launch. leave control to flow. - registration_wiz_modal( - false, - // Launch only if not being launch from 'initial'. - !$initial, - (($show_newsletter === true) ? 'force_run_newsletter()' : null) - ); -} else { - if ($show_newsletter) { - // Show newsletter wizard for current user. - newsletter_wiz_modal( +if (!$config['disabled_newsletter']) { + if ($registration && users_is_admin()) { + // Prepare registration wizard, not launch. leave control to flow. + registration_wiz_modal( false, - // Launch only if not being call from 'registration'. - !$registration && !$initial + // Launch only if not being launch from 'initial'. + !$initial, + (($show_newsletter === true) ? 'force_run_newsletter()' : null) ); + } else { + if ($show_newsletter) { + // Show newsletter wizard for current user. + newsletter_wiz_modal( + false, + // Launch only if not being call from 'registration'. + !$registration && !$initial + ); + } } } - $newsletter = null; ?> diff --git a/pandora_console/include/class/ConsoleSupervisor.php b/pandora_console/include/class/ConsoleSupervisor.php index af688fb5a0..d03b360c16 100644 --- a/pandora_console/include/class/ConsoleSupervisor.php +++ b/pandora_console/include/class/ConsoleSupervisor.php @@ -1976,7 +1976,7 @@ class ConsoleSupervisor 'id_user', $config['id_user'] ); - if (license_free() === true + if (!$config['disabled_newsletter'] && $newsletter != 1 && $login === false ) { diff --git a/pandora_console/include/functions_config.php b/pandora_console/include/functions_config.php index 0964cf59a3..558260f7a8 100644 --- a/pandora_console/include/functions_config.php +++ b/pandora_console/include/functions_config.php @@ -395,6 +395,10 @@ function config_update_config() $error_update[] = __('Enable Update Manager'); } + if (!config_update_value('disabled_newsletter', get_parameter('disabled_newsletter'))) { + $error_update[] = __('Disabled newsletter'); + } + if (!config_update_value('ipam_ocuppied_critical_treshold', get_parameter('ipam_ocuppied_critical_treshold'))) { $error_update[] = __('Ipam Ocuppied Manager Critical'); } @@ -1723,6 +1727,10 @@ function config_process_config() config_update_value('enable_update_manager', 1); } + if (!isset($config['disabled_newsletter'])) { + config_update_value('disabled_newsletter', 0); + } + if (!isset($config['ipam_ocuppied_critical_treshold'])) { config_update_value('ipam_ocuppied_critical_treshold', 90); } diff --git a/pandora_console/operation/users/user_edit.php b/pandora_console/operation/users/user_edit.php index 9e267c5c2d..b8b42ad945 100644 --- a/pandora_console/operation/users/user_edit.php +++ b/pandora_console/operation/users/user_edit.php @@ -426,24 +426,25 @@ if (check_acl($config['id_user'], 0, 'ER')) { ).'</div>'; } +if (!$config['disabled_newsletter']) { + $newsletter = '<div class="label_select_simple"><p class="edit_user_labels">'.__('Newsletter Subscribed').': </p>'; + if ($user_info['middlename'] > 0) { + $newsletter .= '<span>'.__('Already subscribed to %s newsletter', get_product_name()).'</span>'; + } else { + $newsletter .= '<span><a href="javascript: force_run_newsletter();">'.__('Subscribe to our newsletter').'</a></span></div>'; + $newsletter_reminder = '<div class="label_select_simple"><p class="edit_user_labels">'.__('Newsletter Reminder').': </p>'; + $newsletter_reminder .= html_print_switch( + [ + 'name' => 'newsletter_reminder', + 'value' => $newsletter_reminder_value, + 'disabled' => false, + ] + ); + } -$newsletter = '<div class="label_select_simple"><p class="edit_user_labels">'.__('Newsletter Subscribed').': </p>'; -if ($user_info['middlename'] > 0) { - $newsletter .= '<span>'.__('Already subscribed to %s newsletter', get_product_name()).'</span>'; -} else { - $newsletter .= '<span><a href="javascript: force_run_newsletter();">'.__('Subscribe to our newsletter').'</a></span></div>'; - $newsletter_reminder = '<div class="label_select_simple"><p class="edit_user_labels">'.__('Newsletter Reminder').': </p>'; - $newsletter_reminder .= html_print_switch( - [ - 'name' => 'newsletter_reminder', - 'value' => $newsletter_reminder_value, - 'disabled' => false, - ] - ); + $newsletter_reminder .= '</div>'; } -$newsletter_reminder .= '</div>'; - $autorefresh_list_out = []; From 219852283d50057b9cdf183ebdcab74a1e9df570 Mon Sep 17 00:00:00 2001 From: fbsanchez <fborja.sanchez@artica.es> Date: Thu, 11 Jul 2019 14:53:00 +0200 Subject: [PATCH 80/83] Fix in snmp browser tree --- pandora_console/include/functions_snmp_browser.php | 1 - 1 file changed, 1 deletion(-) diff --git a/pandora_console/include/functions_snmp_browser.php b/pandora_console/include/functions_snmp_browser.php index 5b485d9e54..dc423481f2 100644 --- a/pandora_console/include/functions_snmp_browser.php +++ b/pandora_console/include/functions_snmp_browser.php @@ -173,7 +173,6 @@ function snmp_browser_get_html_tree( $last_array, $sufix, $checked, - $return, $descriptive_ids, $previous_id ); From 1dbf8240c4ba515fd58401f330f1c13029558aaf Mon Sep 17 00:00:00 2001 From: "marcos.alconada" <marcos.alconada@artica.es> Date: Thu, 11 Jul 2019 15:51:35 +0200 Subject: [PATCH 81/83] deelted duplicated count --- pandora_console/operation/search_policies.php | 1 - 1 file changed, 1 deletion(-) diff --git a/pandora_console/operation/search_policies.php b/pandora_console/operation/search_policies.php index 6277318f66..7e31db1220 100644 --- a/pandora_console/operation/search_policies.php +++ b/pandora_console/operation/search_policies.php @@ -84,7 +84,6 @@ if (!$policies || !$searchpolicies) { $totalPolicies = count($policies); echo '<br />'; - ui_pagination($totalPolicies); html_print_table($table); unset($table); ui_pagination($totalPolicies); From 055bafe4d7b68dfe64fd6295004d92bd9ee13c4e Mon Sep 17 00:00:00 2001 From: "marcos.alconada" <marcos.alconada@artica.es> Date: Thu, 11 Jul 2019 17:28:22 +0200 Subject: [PATCH 82/83] changed UM to AW for search policies --- pandora_console/operation/search_main.php | 2 +- pandora_console/operation/search_policies.getdata.php | 2 +- pandora_console/operation/search_policies.php | 2 +- pandora_console/operation/search_results.php | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pandora_console/operation/search_main.php b/pandora_console/operation/search_main.php index c269b6481c..718fd45be5 100644 --- a/pandora_console/operation/search_main.php +++ b/pandora_console/operation/search_main.php @@ -20,7 +20,7 @@ $searchGraphs = check_acl($config['id_user'], 0, 'RR'); $searchMaps = check_acl($config['id_user'], 0, 'RR'); $searchReports = check_acl($config['id_user'], 0, 'RR'); $searchUsers = check_acl($config['id_user'], 0, 'UM'); -$searchPolicies = check_acl($config['id_user'], 0, 'UM'); +$searchPolicies = check_acl($config['id_user'], 0, 'AW'); $searchHelps = true; echo '<br><div style="margin:auto; width:90%; padding: 10px;">'; diff --git a/pandora_console/operation/search_policies.getdata.php b/pandora_console/operation/search_policies.getdata.php index aec8298170..a8c05ea071 100644 --- a/pandora_console/operation/search_policies.getdata.php +++ b/pandora_console/operation/search_policies.getdata.php @@ -16,7 +16,7 @@ global $config; enterprise_include_once('include/functions_policies.php'); -$searchpolicies = check_acl($config['id'], 0, 'UM'); +$searchpolicies = check_acl($config['id'], 0, 'AW'); $selectpolicieIDUp = ''; $selectpolicieIDDown = ''; diff --git a/pandora_console/operation/search_policies.php b/pandora_console/operation/search_policies.php index 7e31db1220..26b3f7737d 100644 --- a/pandora_console/operation/search_policies.php +++ b/pandora_console/operation/search_policies.php @@ -16,7 +16,7 @@ global $config; enterprise_include_once('include/functions_policies.php'); require_once $config['homedir'].'/enterprise/include/functions_groups.php'; -$searchpolicies = check_acl($config['id_user'], 0, 'UM'); +$searchpolicies = check_acl($config['id_user'], 0, 'AW'); if (!$policies || !$searchpolicies) { echo "<br><div class='nf'>".__('Zero results found')."</div>\n"; diff --git a/pandora_console/operation/search_results.php b/pandora_console/operation/search_results.php index 11b4aedec9..803a92cdd1 100644 --- a/pandora_console/operation/search_results.php +++ b/pandora_console/operation/search_results.php @@ -18,7 +18,7 @@ require_once $config['homedir'].'/include/functions_reporting.php'; enterprise_include('operation/reporting/custom_reporting.php'); $searchAgents = $searchAlerts = $searchModules = check_acl($config['id_user'], 0, 'AR'); -$searchUsers = $searchPolicies = check_acl($config['id_user'], 0, 'UM'); +$searchUsers = $searchPolicies = check_acl($config['id_user'], 0, 'AW'); $searchMaps = $searchReports = $searchGraphs = check_acl($config['id_user'], 0, 'IR'); $searchMain = true; $searchHelps = true; From fe981897792312de35a7374200285c8a4c730b15 Mon Sep 17 00:00:00 2001 From: artica <artica.devel@gmail.com> Date: Fri, 12 Jul 2019 00:01:08 +0200 Subject: [PATCH 83/83] 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 9a0b872a6e..b6ecacb2b4 100644 --- a/pandora_agents/unix/DEBIAN/control +++ b/pandora_agents/unix/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-agent-unix -Version: 7.0NG.736-190711 +Version: 7.0NG.736-190712 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 4d84020703..c7f4f3334e 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.736-190711" +pandora_version="7.0NG.736-190712" 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 8a6ac38d5f..1298d9c2f9 100755 --- a/pandora_agents/unix/pandora_agent +++ b/pandora_agents/unix/pandora_agent @@ -42,7 +42,7 @@ my $Sem = undef; my $ThreadSem = undef; use constant AGENT_VERSION => '7.0NG.736'; -use constant AGENT_BUILD => '190711'; +use constant AGENT_BUILD => '190712'; # 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 c9f7f10dc0..5fdc516b68 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.736 -%define release 190711 +%define release 190712 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 8d1ff4fc15..891b2769f1 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.736 -%define release 190711 +%define release 190712 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 52b49cca0c..01d573fb70 100755 --- a/pandora_agents/unix/pandora_agent_installer +++ b/pandora_agents/unix/pandora_agent_installer @@ -10,7 +10,7 @@ # ********************************************************************** PI_VERSION="7.0NG.736" -PI_BUILD="190711" +PI_BUILD="190712" OS_NAME=`uname -s` FORCE=0 diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi index efa43a74ee..d20217c6a0 100644 --- a/pandora_agents/win32/installer/pandora.mpi +++ b/pandora_agents/win32/installer/pandora.mpi @@ -186,7 +186,7 @@ UpgradeApplicationID {} Version -{190711} +{190712} ViewReadme {Yes} diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc index 75fb3cbe98..51c386db55 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.736(Build 190711)") +#define PANDORA_VERSION ("7.0NG.736(Build 190712)") string pandora_path; string pandora_dir; diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc index 392c639976..feb8e814e1 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.736(Build 190711))" + VALUE "ProductVersion", "(7.0NG.736(Build 190712))" VALUE "FileVersion", "1.0.0.0" END END diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control index 32efed3e39..901b426196 100644 --- a/pandora_console/DEBIAN/control +++ b/pandora_console/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-console -Version: 7.0NG.736-190711 +Version: 7.0NG.736-190712 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 68e0aa147f..98935e7bf9 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.736-190711" +pandora_version="7.0NG.736-190712" package_pear=0 package_pandora=1 diff --git a/pandora_console/include/config_process.php b/pandora_console/include/config_process.php index f72acc3ef6..ab7acc743d 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 = 'PC190711'; +$build_version = 'PC190712'; $pandora_version = 'v7.0NG.736'; // Do not overwrite default timezone set if defined. diff --git a/pandora_console/install.php b/pandora_console/install.php index e0c24fd2c6..7b1d4833a6 100644 --- a/pandora_console/install.php +++ b/pandora_console/install.php @@ -129,7 +129,7 @@ <div style='height: 10px'> <?php $version = '7.0NG.736'; - $build = '190711'; + $build = '190712'; $banner = "v$version Build $build"; error_reporting(0); diff --git a/pandora_console/pandora_console.redhat.spec b/pandora_console/pandora_console.redhat.spec index 8f3c01ee7a..e25982eca0 100644 --- a/pandora_console/pandora_console.redhat.spec +++ b/pandora_console/pandora_console.redhat.spec @@ -3,7 +3,7 @@ # %define name pandorafms_console %define version 7.0NG.736 -%define release 190711 +%define release 190712 # User and Group under which Apache is running %define httpd_name httpd diff --git a/pandora_console/pandora_console.rhel7.spec b/pandora_console/pandora_console.rhel7.spec index 0b35aa03f8..86190dc5dc 100644 --- a/pandora_console/pandora_console.rhel7.spec +++ b/pandora_console/pandora_console.rhel7.spec @@ -3,7 +3,7 @@ # %define name pandorafms_console %define version 7.0NG.736 -%define release 190711 +%define release 190712 # User and Group under which Apache is running %define httpd_name httpd diff --git a/pandora_console/pandora_console.spec b/pandora_console/pandora_console.spec index f7db72f440..47a76c7e05 100644 --- a/pandora_console/pandora_console.spec +++ b/pandora_console/pandora_console.spec @@ -3,7 +3,7 @@ # %define name pandorafms_console %define version 7.0NG.736 -%define release 190711 +%define release 190712 %define httpd_name httpd # User and Group under which Apache is running %define httpd_name apache2 diff --git a/pandora_server/DEBIAN/control b/pandora_server/DEBIAN/control index 4b93d0489d..4a356c6403 100644 --- a/pandora_server/DEBIAN/control +++ b/pandora_server/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-server -Version: 7.0NG.736-190711 +Version: 7.0NG.736-190712 Architecture: all Priority: optional Section: admin diff --git a/pandora_server/DEBIAN/make_deb_package.sh b/pandora_server/DEBIAN/make_deb_package.sh index 26a19695c2..5282a8f9eb 100644 --- a/pandora_server/DEBIAN/make_deb_package.sh +++ b/pandora_server/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.736-190711" +pandora_version="7.0NG.736-190712" package_cpan=0 package_pandora=1 diff --git a/pandora_server/lib/PandoraFMS/Config.pm b/pandora_server/lib/PandoraFMS/Config.pm index 96a641026a..0f1a845400 100644 --- a/pandora_server/lib/PandoraFMS/Config.pm +++ b/pandora_server/lib/PandoraFMS/Config.pm @@ -45,7 +45,7 @@ our @EXPORT = qw( # version: Defines actual version of Pandora Server for this module only my $pandora_version = "7.0NG.736"; -my $pandora_build = "190711"; +my $pandora_build = "190712"; our $VERSION = $pandora_version." ".$pandora_build; # Setup hash diff --git a/pandora_server/lib/PandoraFMS/PluginTools.pm b/pandora_server/lib/PandoraFMS/PluginTools.pm index 0431e76d74..de1a363293 100644 --- a/pandora_server/lib/PandoraFMS/PluginTools.pm +++ b/pandora_server/lib/PandoraFMS/PluginTools.pm @@ -32,7 +32,7 @@ our @ISA = qw(Exporter); # version: Defines actual version of Pandora Server for this module only my $pandora_version = "7.0NG.736"; -my $pandora_build = "190711"; +my $pandora_build = "190712"; our $VERSION = $pandora_version." ".$pandora_build; our %EXPORT_TAGS = ( 'all' => [ qw() ] ); diff --git a/pandora_server/pandora_server.redhat.spec b/pandora_server/pandora_server.redhat.spec index 230fbad5e8..388fabbd14 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.736 -%define release 190711 +%define release 190712 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec index 0cee7965f4..20093a9ea4 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.736 -%define release 190711 +%define release 190712 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer index 48ace9e334..48dd2eaa41 100755 --- a/pandora_server/pandora_server_installer +++ b/pandora_server/pandora_server_installer @@ -9,7 +9,7 @@ # ********************************************************************** PI_VERSION="7.0NG.736" -PI_BUILD="190711" +PI_BUILD="190712" MODE=$1 if [ $# -gt 1 ]; then diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl index f655b5bcb0..e040b6ea7e 100644 --- a/pandora_server/util/pandora_db.pl +++ b/pandora_server/util/pandora_db.pl @@ -34,7 +34,7 @@ use PandoraFMS::Config; use PandoraFMS::DB; # version: define current version -my $version = "7.0NG.736 PS190711"; +my $version = "7.0NG.736 PS190712"; # Pandora server configuration my %conf; diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl index 7172389c25..172c7ee278 100644 --- 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.736 PS190711"; +my $version = "7.0NG.736 PS190712"; # save program name for logging my $progname = basename($0);