diff --git a/pandora_agents/unix/DEBIAN/control b/pandora_agents/unix/DEBIAN/control index 43f8a477da..a386a52e45 100644 --- a/pandora_agents/unix/DEBIAN/control +++ b/pandora_agents/unix/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-agent-unix -Version: 7.0NG.731-190219 +Version: 7.0NG.731-190220 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 47e51c22e1..b1c6ee397e 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.731-190219" +pandora_version="7.0NG.731-190220" 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 6d3983758e..3107ac2198 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.731'; -use constant AGENT_BUILD => '190219'; +use constant AGENT_BUILD => '190220'; # 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 076a9ef928..de2c0f3449 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.731 -%define release 190219 +%define release 190220 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 394ac97c05..e046351d49 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.731 -%define release 190219 +%define release 190220 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 c16a74273a..ded90e67b6 100755 --- a/pandora_agents/unix/pandora_agent_installer +++ b/pandora_agents/unix/pandora_agent_installer @@ -10,7 +10,7 @@ # ********************************************************************** PI_VERSION="7.0NG.731" -PI_BUILD="190219" +PI_BUILD="190220" OS_NAME=`uname -s` FORCE=0 diff --git a/pandora_agents/win32/installer/pandora.mpi b/pandora_agents/win32/installer/pandora.mpi index fb99d6c15f..d082626f9d 100644 --- a/pandora_agents/win32/installer/pandora.mpi +++ b/pandora_agents/win32/installer/pandora.mpi @@ -186,7 +186,7 @@ UpgradeApplicationID {} Version -{190219} +{190220} ViewReadme {Yes} diff --git a/pandora_agents/win32/pandora.cc b/pandora_agents/win32/pandora.cc index 2abbc0a7b3..6409b7f2d0 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.731(Build 190219)") +#define PANDORA_VERSION ("7.0NG.731(Build 190220)") string pandora_path; string pandora_dir; diff --git a/pandora_agents/win32/versioninfo.rc b/pandora_agents/win32/versioninfo.rc index bc770967dd..889216ad1a 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.731(Build 190219))" + VALUE "ProductVersion", "(7.0NG.731(Build 190220))" VALUE "FileVersion", "1.0.0.0" END END diff --git a/pandora_console/DEBIAN/control b/pandora_console/DEBIAN/control index a7a372a3dd..9463042f31 100644 --- a/pandora_console/DEBIAN/control +++ b/pandora_console/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-console -Version: 7.0NG.731-190219 +Version: 7.0NG.731-190220 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 fd52973ced..4dff45a12a 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.731-190219" +pandora_version="7.0NG.731-190220" package_pear=0 package_pandora=1 diff --git a/pandora_console/godmode/agentes/agent_manager.php b/pandora_console/godmode/agentes/agent_manager.php index f511304d8a..3368cbe96c 100644 --- a/pandora_console/godmode/agentes/agent_manager.php +++ b/pandora_console/godmode/agentes/agent_manager.php @@ -229,7 +229,7 @@ if (!$new_agent) { $table->data[0][1] .= "  ".html_print_image('images/cross.png', true, ['title' => __('Delete agent')]).''; } -$table->data[1][0] = __('Alias'); +$table->data[1][0] = __('Alias').ui_print_help_tip(__('Characters /,\,|,%,#,&,$ are not allowed'), true).''; $table->data[1][1] = html_print_input_text('alias', $alias, '', 50, 100, true); if ($new_agent) { $table->data[1][1] .= html_print_checkbox('alias_as_name', 1, $config['alias_as_name'], true).__('Use alias as name'); diff --git a/pandora_console/godmode/agentes/configurar_agente.php b/pandora_console/godmode/agentes/configurar_agente.php index 071f6a8ae0..24bb61ccd4 100644 --- a/pandora_console/godmode/agentes/configurar_agente.php +++ b/pandora_console/godmode/agentes/configurar_agente.php @@ -159,7 +159,8 @@ $module_macros = []; // Create agent if ($create_agent) { $mssg_warning = 0; - $alias = (string) get_parameter_post('alias', ''); + $alias = trim (preg_replace('/[\/\\\|%#&$-]/', '', + html_entity_decode( str_replace('`','‘',(string) get_parameter_post ("alias", ""))))); $alias_as_name = (int) get_parameter_post('alias_as_name', 0); $direccion_agente = (string) get_parameter_post('direccion', ''); $unique_ip = (int) get_parameter_post('unique_ip', 0); @@ -764,7 +765,8 @@ if ($update_agent) { $mssg_warning = 0; $id_agente = (int) get_parameter_post('id_agente'); $nombre_agente = str_replace('`', '‘', (string) get_parameter_post('agente', '')); - $alias = str_replace('`', '‘', (string) get_parameter_post('alias', '')); + $alias = trim (preg_replace('/[\/\\\|%#&$-]/', '', + html_entity_decode( str_replace('`','‘',(string) get_parameter_post ("alias", ""))))); $alias_as_name = (int) get_parameter_post('alias_as_name', 0); $direccion_agente = (string) get_parameter_post('direccion', ''); $unique_ip = (int) get_parameter_post('unique_ip', 0); @@ -932,7 +934,7 @@ if ($update_agent) { $result = db_process_sql_update('tagente', $values, ['id_agente' => $id_agente]); - if ($result == false && $update_custom_result == false) { + if ($result === false && $update_custom_result == false) { ui_print_error_message( __('There was a problem updating the agent') ); diff --git a/pandora_console/godmode/reporting/reporting_builder.php b/pandora_console/godmode/reporting/reporting_builder.php index abab21b8fe..7253b931d4 100755 --- a/pandora_console/godmode/reporting/reporting_builder.php +++ b/pandora_console/godmode/reporting/reporting_builder.php @@ -1116,8 +1116,13 @@ switch ($action) { $name_it = (string) get_parameter('name'); $values['name'] = reporting_label_macro($items_label, $name_it); - // Added support for projection graphs, prediction date and SLA reports - // 'top_n_value','top_n' and 'text' fields will be reused for these types of report + /* + Added support for projection graphs, + prediction date and SLA reports + 'top_n_value','top_n' and 'text' + fields will be reused for these types of report + */ + switch ($values['type']) { case 'projection_graph': $values['period'] = get_parameter('period1'); @@ -1127,7 +1132,8 @@ switch ($action) { break; case 'event_report_log': - $agents_to_report = get_parameter('id_agents2'); + + $agents_to_report = get_parameter('id_agents3'); $source = get_parameter('source', ''); $search = get_parameter('search', ''); $log_number = get_parameter('log_number', ''); @@ -1525,7 +1531,7 @@ switch ($action) { break; case 'event_report_log': - $agents_to_report = get_parameter('id_agents2'); + $agents_to_report = get_parameter('id_agents3'); $source = get_parameter('source', ''); $search = get_parameter('search', ''); $log_number = get_parameter('log_number', ''); @@ -1632,17 +1638,6 @@ switch ($action) { $values['server_name'] = get_parameter('combo_server'); } - - if (is_metaconsole()) { - // For SQL Query check if it is setted in the meta - if ($values['type'] == 'sql') { - if (empty($values['server_name'])) { - $good_format = false; - } - } - } - - $values['id_agent'] = get_parameter('id_agent'); $values['id_gs'] = get_parameter('id_custom_graph'); if (($values['type'] == 'alert_report_agent') or ($values['type'] == 'event_report_agent') or ($values['type'] == 'agent_configuration') or ($values['type'] == 'group_configuration')) { diff --git a/pandora_console/godmode/setup/setup_auth.php b/pandora_console/godmode/setup/setup_auth.php index 4d5eeb07ff..3ff5cb305b 100644 --- a/pandora_console/godmode/setup/setup_auth.php +++ b/pandora_console/godmode/setup/setup_auth.php @@ -134,7 +134,8 @@ if (is_ajax()) { set_unless_defined($config['double_auth_enabled'], false); $row = []; $row['name'] = __('Double authentication').ui_print_help_tip(__('If this option is enabled, the users can use double authentication with their accounts'), true); - $row['control'] = html_print_checkbox_toogle_switch('double_auth_enabled', 1, $config['double_auth_enabled'], true); + $row['control'] = html_print_input_hidden('double_auth_enabled', 0); + $row['control'] .= html_print_checkbox_toogle_switch('double_auth_enabled', 1, $config['double_auth_enabled'], true); $table->data['double_auth_enabled'] = $row; // Session timeout diff --git a/pandora_console/include/ajax/events.php b/pandora_console/include/ajax/events.php index 5f6f62568b..4867088c1f 100644 --- a/pandora_console/include/ajax/events.php +++ b/pandora_console/include/ajax/events.php @@ -90,9 +90,9 @@ if ($get_response_params) { } if ($get_response_target) { - $response_id = get_parameter('response_id'); - $event_id = get_parameter('event_id'); - $server_id = get_parameter('server_id', 0); + $response_id = (int) get_parameter('response_id'); + $event_id = (int) get_parameter('event_id'); + $server_id = (int) get_parameter('server_id'); $event_response = db_get_row('tevent_response', 'id', $response_id); @@ -101,7 +101,6 @@ if ($get_response_target) { } echo events_get_response_target($event_id, $response_id, $server_id); - return; } diff --git a/pandora_console/include/chart_generator.php b/pandora_console/include/chart_generator.php index 96124afa4c..e7133fd79e 100644 --- a/pandora_console/include/chart_generator.php +++ b/pandora_console/include/chart_generator.php @@ -88,16 +88,13 @@ if (file_exists('languages/'.$user_language.'.mo')) { $params['menu'] = false; if ((!isset($params['width']) || ($params['width'] <= 0))) { - $params['width'] = 1048; + $params['width'] = 650; } $params_combined = json_decode($_REQUEST['data_combined'], true); $module_list = json_decode($_REQUEST['data_module_list'], true); $type_graph_pdf = $_REQUEST['type_graph_pdf']; - $aux_font_size = $config['font_size']; - $config['font_size'] = ($config['font_size'] + 3); - echo '
'; switch ($type_graph_pdf) { case 'combined': @@ -216,7 +213,6 @@ if (file_exists('languages/'.$user_language.'.mo')) { echo '
'; - $config['font_size'] = $aux_font_size; ?> '; + '; } @@ -2322,10 +2856,31 @@ function reporting_html_text(&$table, $item) } -function reporting_html_availability(&$table, $item) +/** + * Report availability + * + * @param string $table Reference table in pdf a false. + * @param array $item Parameters for item pdf. + * @param boolean $pdf Send pdf. + * + * @return html + */ +function reporting_html_availability($table, $item, $pdf=0) { - $style = db_get_value('style', 'treport_content', 'id_rc', $item['id_rc']); - $style = json_decode(io_safe_output($style), true); + $retun_pdf = ''; + + $style = db_get_value( + 'style', + 'treport_content', + 'id_rc', + $item['id_rc'] + ); + + $style = json_decode( + io_safe_output($style), + true + ); + $same_agent_in_resume = ''; global $config; @@ -2338,7 +2893,7 @@ function reporting_html_availability(&$table, $item) $table1->head = []; $table1->head[0] = __('Agent'); // HACK it is saved in show_graph field. - // Show interfaces instead the modules + // Show interfaces instead the modules. if ($item['kind_availability'] == 'address') { $table1->head[1] = __('IP Address'); } else { @@ -2381,7 +2936,7 @@ function reporting_html_availability(&$table, $item) $table2->head = []; $table2->head[0] = __('Agent'); // HACK it is saved in show_graph field. - // Show interfaces instead the modules + // Show interfaces instead the modules. if ($item['kind_availability'] == 'address') { $table2->head[1] = __('IP Address'); } else { @@ -2392,7 +2947,7 @@ function reporting_html_availability(&$table, $item) $table2->head[3] = __('Checks failed'); $table2->head[4] = __('Checks OK'); $table2->head[5] = __('Checks Uknown'); - // $table2->head[6] = __('% Ok'); + $table2->headstyle = []; $table2->headstyle[0] = 'text-align: left'; $table2->headstyle[1] = 'text-align: left'; @@ -2400,53 +2955,73 @@ function reporting_html_availability(&$table, $item) $table2->headstyle[3] = 'text-align: right'; $table2->headstyle[4] = 'text-align: right'; $table2->headstyle[5] = 'text-align: right'; - // $table2->headstyle[6] = 'text-align: right'; + $table2->style[0] = 'text-align: left'; $table2->style[1] = 'text-align: left'; $table2->style[2] = 'text-align: right'; $table2->style[3] = 'text-align: right'; $table2->style[4] = 'text-align: right'; $table2->style[5] = 'text-align: right'; - // $table2->style[6] = 'text-align: right'; + foreach ($item['data'] as $row) { - $the_first_men_time = get_agent_first_time(io_safe_output($row['agent'])); + $the_first_men_time = get_agent_first_time( + io_safe_output($row['agent']) + ); $table_row = []; $table_row[] = $row['agent']; $table_row[] = $row['availability_item']; if ($row['time_total'] != 0) { - $table_row[] = human_time_description_raw($row['time_total'], true); + $table_row[] = human_time_description_raw( + $row['time_total'], + true + ); } else { $table_row[] = '--'; } if ($row['time_error'] != 0) { - $table_row[] = human_time_description_raw($row['time_error'], true); + $table_row[] = human_time_description_raw( + $row['time_error'], + true + ); } else { $table_row[] = '--'; } if ($row['time_ok'] != 0) { - $table_row[] = human_time_description_raw($row['time_ok'], true); + $table_row[] = human_time_description_raw( + $row['time_ok'], + true + ); } else { $table_row[] = '--'; } if ($row['time_unknown'] != 0) { - $table_row[] = human_time_description_raw($row['time_unknown'], true); + $table_row[] = human_time_description_raw( + $row['time_unknown'], + true + ); } else { $table_row[] = '--'; } if ($row['time_not_init'] != 0) { - $table_row[] = human_time_description_raw($row['time_not_init'], true); + $table_row[] = human_time_description_raw( + $row['time_not_init'], + true + ); } else { $table_row[] = '--'; } if ($row['time_downtime'] != 0) { - $table_row[] = human_time_description_raw($row['time_downtime'], true); + $table_row[] = human_time_description_raw( + $row['time_downtime'], + true + ); } else { $table_row[] = '--'; } @@ -2469,16 +3044,30 @@ function reporting_html_availability(&$table, $item) $table->data['error']['cell'] = __('There are no Agent/Modules defined'); } - $table->colspan[1][0] = 2; - $table->colspan[2][0] = 2; - $data = []; - $data[0] = html_print_table($table1, true); - array_push($table->data, $data); + if ($pdf === 0) { + $table->colspan[1][0] = 2; + $table->colspan[2][0] = 2; + $data = []; + $data[0] = html_print_table($table1, true); + array_push($table->data, $data); + } else { + $table1->title = $item['title']; + $table1->titleclass = 'title_table_pdf'; + $table1->titlestyle = 'text-align:left;'; + $return_pdf .= html_print_table($table1, true); + } if ($item['resume']['resume']) { - $data2 = []; - $data2[0] = html_print_table($table2, true); - array_push($table->data, $data2); + if ($pdf === 0) { + $data2 = []; + $data2[0] = html_print_table($table2, true); + array_push($table->data, $data2); + } else { + $table2->title = $item['title']; + $table2->titleclass = 'title_table_pdf'; + $table2->titlestyle = 'text-align:left;'; + $return_pdf .= html_print_table($table2, true); + } } if ($item['resume']['resume'] && !empty($item['data'])) { @@ -2508,27 +3097,60 @@ function reporting_html_availability(&$table, $item) $table1->data[] = [ 'max_text' => $item['resume']['max_text'], - 'max' => sla_truncate($item['resume']['max'], $config['graph_precision']).'%', + 'max' => sla_truncate( + $item['resume']['max'], + $config['graph_precision'] + ).'%', 'min_text' => $item['resume']['min_text'], - 'min' => sla_truncate($item['resume']['min'], $config['graph_precision']).'%', + 'min' => sla_truncate( + $item['resume']['min'], + $config['graph_precision'] + ).'%', 'avg' => ''.sla_truncate($item['resume']['avg'], $config['graph_precision']).'%', ]; - $table->colspan[3][0] = 3; - $data = []; - $data[0] = html_print_table($table1, true); - array_push($table->data, $data); + if ($pdf === 0) { + $table->colspan[3][0] = 3; + $data = []; + $data[0] = html_print_table( + $table1, + true + ); + array_push($table->data, $data); + } else { + $table1->title = $item['title']; + $table1->titleclass = 'title_table_pdf'; + $table1->titlestyle = 'text-align:left;'; + $return_pdf .= html_print_table( + $table1, + true + ); + } } } + + if ($pdf !== 0) { + return $return_pdf; + } } -function reporting_html_availability_graph(&$table, $item, $pdf=0) +/** + * The availability report shows in detail the reached + * status of a module in a given time interval. + * + * @param string $table Reference table in pdf a false. + * @param array $item Parameters for item pdf. + * @param boolean $pdf Send pdf. + * + * @return html + */ +function reporting_html_availability_graph($table, $item, $pdf=0) { global $config; $metaconsole_on = is_metaconsole(); - if ($metaconsole_on) { + if ($metaconsole_on !== false) { $hack_metaconsole = '../../'; } else { $hack_metaconsole = ''; @@ -2570,7 +3192,10 @@ function reporting_html_availability_graph(&$table, $item, $pdf=0) break; } - $sla_value = sla_truncate($chart['sla_value'], $config['graph_precision']).'%'; + $sla_value = sla_truncate( + $chart['sla_value'], + $config['graph_precision'] + ).'%'; $checks_resume = '('.$chart['checks_ok'].'/'.$chart['checks_total'].')'; } @@ -2578,11 +3203,14 @@ function reporting_html_availability_graph(&$table, $item, $pdf=0) $table1->data[0][1] = $chart['chart']; $table1->data[0][2] = "".$sla_value.''; $table1->data[0][3] = $checks_resume; - $tables_chart .= html_print_table($table1, true); + $tables_chart .= html_print_table( + $table1, + true + ); } if ($item['type'] == 'availability_graph') { - // table_legend_graphs; + // Table_legend_graphs. $table2 = new stdClass(); $table2->width = '99%'; $table2->data = []; @@ -2618,22 +3246,62 @@ function reporting_html_availability_graph(&$table, $item, $pdf=0) $table2->data[0][11] = ''.__('Ignore time').''; } - $table->colspan['charts']['cell'] = 2; - $table->data['charts']['cell'] = $tables_chart; - $table->colspan['legend']['cell'] = 2; - $table->data['legend']['cell'] = html_print_table($table2, true); - - if ($pdf) { - return $tables_chart.'
'.html_print_table($table2, true); + if ($pdf !== 0) { + $tables_chart .= html_print_table( + $table2, + true + ); + return $tables_chart; + } else { + $table->colspan['charts']['cell'] = 2; + $table->data['charts']['cell'] = $tables_chart; + $table->colspan['legend']['cell'] = 2; + $table->data['legend']['cell'] = html_print_table( + $table2, + true + ); } } -function reporting_html_general(&$table, $item) +/** + * Function for first time data agent. + * + * @param string $agent_name Agent name. + * + * @return array + */ +function get_agent_first_time($agent_name) { + $id = agents_get_agent_id($agent_name, true); + + $utimestamp = db_get_all_rows_sql( + 'SELECT utimestamp FROM tagente_datos WHERE id_agente_modulo IN + (SELECT id_agente_modulo FROM tagente_modulo WHERE id_agente = '.$id.') + ORDER BY utimestamp ASC LIMIT 1' + ); + $utimestamp = $utimestamp[0]['utimestamp']; + + return $utimestamp; +} + + +/** + * Function to print to HTML General report. + * + * @param object $table Head table or false if it comes from pdf. + * @param array $item Items data. + * @param boolean $pdf If it comes from pdf. + * + * @return html + */ +function reporting_html_general($table, $item, $pdf=0) +{ + $return_pdf = ''; if (!empty($item['data'])) { $data_in_same_row = $item['show_in_same_row']; switch ($item['subtype']) { + default: case REPORT_GENERAL_NOT_GROUP_BY_AGENT: if (!$data_in_same_row) { $table1 = new stdClass(); @@ -2652,14 +3320,14 @@ function reporting_html_general(&$table, $item) $table1->style[2] = 'text-align: left'; $table1->style[3] = 'text-align: left'; - // Begin - Order by agent + // Begin - Order by agent. foreach ($item['data'] as $key => $row) { $aux[$key] = $row['agent']; } array_multisort($aux, SORT_ASC, $item['data']); - // End - Order by agent + // End - Order by agent. foreach ($item['data'] as $row) { if ($row['id_module_type'] == 6 || $row['id_module_type'] == 9 || $row['id_module_type'] == 18 || $row['id_module_type'] == 2) { $row['formated_value'] = round($row['formated_value'], 0, PHP_ROUND_HALF_DOWN); @@ -2723,7 +3391,6 @@ function reporting_html_general(&$table, $item) } } break; - case REPORT_GENERAL_GROUP_BY_AGENT: $list_modules = []; foreach ($item['data'] as $modules) { @@ -2754,12 +3421,23 @@ function reporting_html_general(&$table, $item) break; } - $table->colspan['data']['cell'] = 3; - $table->cellstyle['data']['cell'] = 'text-align: center;'; - $table->data['data']['cell'] = html_print_table($table1, true); + if ($pdf !== 0) { + $table1->title = $item['title']; + $table1->titleclass = 'title_table_pdf'; + $table1->titlestyle = 'text-align:left;'; + $return_pdf .= html_print_table($table1, true); + } else { + $table->colspan['data']['cell'] = 3; + $table->cellstyle['data']['cell'] = 'text-align: center;'; + $table->data['data']['cell'] = html_print_table($table1, true); + } } else { - $table->colspan['error']['cell'] = 3; - $table->data['error']['cell'] = __('There are no Agent/Modules defined'); + if ($pdf !== 0) { + $return_pdf .= __('There are no Agent/Modules defined'); + } else { + $table->colspan['error']['cell'] = 3; + $table->data['error']['cell'] = __('There are no Agent/Modules defined'); + } } if ($item['resume'] && !empty($item['data'])) { @@ -2789,34 +3467,44 @@ function reporting_html_general(&$table, $item) $table_summary->data[0][3] = $item['max']['agent'].' - '.$item['max']['module']; $table_summary->data[0][4] = $item['max']['formated_value']; - $table->colspan['summary_title']['cell'] = 3; - $table->data['summary_title']['cell'] = ''.__('Summary').''; - $table->colspan['summary_table']['cell'] = 3; - $table->data['summary_table']['cell'] = html_print_table($table_summary, true); + if ($pdf !== 0) { + $return_pdf .= html_print_table($table_summary, true); + } else { + $table->colspan['summary_title']['cell'] = 3; + $table->data['summary_title']['cell'] = ''.__('Summary').''; + $table->colspan['summary_table']['cell'] = 3; + $table->data['summary_table']['cell'] = html_print_table( + $table_summary, + true + ); + } + } + + if ($pdf !== 0) { + return $return_pdf; } } -function get_agent_first_time($agent_name) -{ - $id = agents_get_agent_id($agent_name, true); - - $utimestamp = db_get_all_rows_sql( - 'SELECT utimestamp FROM tagente_datos WHERE id_agente_modulo IN - (SELECT id_agente_modulo FROM tagente_modulo WHERE id_agente = '.$id.') - ORDER BY utimestamp ASC LIMIT 1' - ); - $utimestamp = $utimestamp[0]['utimestamp']; - - return $utimestamp; -} - - -function reporting_html_sql(&$table, $item) +/** + * Function to print to HTML query sql. + * + * @param object $table Head table or false if it comes from pdf. + * @param array $item Items data. + * @param boolean $pdf If it comes from pdf. + * + * @return html + */ +function reporting_html_sql($table, $item, $pdf=0) { + $return_pdf = ''; if (!$item['correct']) { - $table->colspan['error']['cell'] = 3; - $table->data['error']['cell'] = $item['error']; + if ($pdf === 0) { + $table->colspan['error']['cell'] = 3; + $table->data['error']['cell'] = $item['error']; + } else { + $return_pdf .= $item['error']; + } } else { $first = true; @@ -2825,10 +3513,10 @@ function reporting_html_sql(&$table, $item) $table2->width = '100%'; foreach ($item['data'] as $row) { - if ($first) { + if ($first === true) { $first = false; - // Print the header + // Print the header. foreach ($row as $key => $value) { $table2->head[] = $key; } @@ -2837,18 +3525,44 @@ function reporting_html_sql(&$table, $item) $table2->data[] = $row; } - $table->colspan['data']['cell'] = 3; - $table->cellstyle['data']['cell'] = 'text-align: center;'; - $table->data['data']['cell'] = html_print_table($table2, true); + if ($pdf === 0) { + $table->colspan['data']['cell'] = 3; + $table->cellstyle['data']['cell'] = 'text-align: center;'; + $table->data['data']['cell'] = html_print_table( + $table2, + true + ); + } else { + $table2->title = $item['title']; + $table2->titleclass = 'title_table_pdf'; + $table2->titlestyle = 'text-align:left;'; + $return_pdf .= html_print_table( + $table2, + true + ); + } + } + + if ($pdf !== 0) { + return $return_pdf; } } +/** + * Function for stats. + * + * @param array $data Array item. + * @param integer $graph_width Items data. + * @param integer $graph_height If it comes from pdf. + * + * @return html + */ function reporting_get_stats_summary($data, $graph_width, $graph_height) { global $config; - // Alerts table + // Alerts table. $table_sum = html_get_predefined_table(); $tdata = []; @@ -2868,25 +3582,33 @@ function reporting_get_stats_summary($data, $graph_width, $graph_height) $table_sum->cellstyle[count($table_sum->data)][2] = 'text-align: center;'; if ($data['monitor_checks'] > 0) { - // Fixed width non interactive charts + // Fixed width non interactive charts. $status_chart_width = $graph_width; - $tdata[0] = '
'.'
'.graph_agent_status(false, $graph_width, $graph_height, true, true).'
'.'
'; + $tdata[0] = '
'.graph_agent_status(false, $graph_width, $graph_height, true, true).'
'; } else { - $tdata[2] = html_print_image('images/image_problem_area_small.png', true, ['width' => $graph_width]); + $tdata[2] = html_print_image( + 'images/image_problem_area_small.png', + true, + ['width' => $graph_width] + ); } if ($data['monitor_alerts'] > 0) { $tdata[2] = '
'.graph_alert_status($data['monitor_alerts'], $data['monitor_alerts_fired'], $graph_width, $graph_height, true, true).'
'; } else { - $tdata[2] = html_print_image('images/image_problem_area_small.png', true, ['width' => $graph_width]); + $tdata[2] = html_print_image( + 'images/image_problem_area_small.png', + true, + ['width' => $graph_width] + ); } $table_sum->rowclass[] = ''; $table_sum->data[] = $tdata; $output = '
- '.__('Summary').''.html_print_table($table_sum, true).'
'; + '.__('Summary').''.html_print_table($table_sum, true).''; return $output; } @@ -2898,10 +3620,11 @@ function reporting_get_stats_summary($data, $graph_width, $graph_height) * It construct a table object with all the events happened in a group * during a period of time. * - * @param int Group id to get the report. - * @param int Period of time to get the report. - * @param int Beginning date of the report - * @param int Flag to return or echo the report table (echo by default). + * @param integer $id_group Group id to get the report. + * @param integer $period Period of time to get the report. + * @param integer $date Beginning date of the report. + * @param boolean $return Flag to return or echo the + * report table (echo by default). * * @return object A table object */ @@ -2934,7 +3657,7 @@ function reporting_event_reporting($id_group, $period, $date=0, $return=false) } $data[1] = $event['evento']; - $data[2] = $event['id_usuario'] != '0' ? $event['id_usuario'] : ''; + $data[2] = ($event['id_usuario'] != '0') ? $event['id_usuario'] : ''; $data[3] = $event['timestamp']; array_push($table->data, $data); } @@ -2950,8 +3673,9 @@ function reporting_event_reporting($id_group, $period, $date=0, $return=false) /** * Get a table report from a alerts fired array. * - * @param array Alerts fired array. - * @see function get_alerts_fired () + * @param array $alerts_fired Alerts fired array. + * + * @see function get_alerts_fired () * * @return object A table object with a report of the fired alerts. */ @@ -2966,7 +3690,7 @@ function reporting_get_fired_alerts_table($alerts_fired) $alert_module = alerts_get_alert_agent_module($id_alert); $template = alerts_get_alert_template($id_alert); - // Add alerts fired to $agents_fired_alerts indexed by id_agent + // Add alerts fired to $agents_fired_alerts indexed by id_agent. $id_agent = db_get_value( 'id_agente', 'tagente_modulo', @@ -3012,8 +3736,9 @@ function reporting_get_fired_alerts_table($alerts_fired) /** * Get a report table with all the monitors down. * - * @param array An array with all the monitors down - * @see function modules_get_monitors_down() + * @param array $monitors_down An array with all the monitors down. + * + * @see Function modules_get_monitors_down(). * * @return object A table object with a monitors down report. */ @@ -3027,7 +3752,7 @@ function reporting_get_monitors_down_table($monitors_down) $agents = []; if ($monitors_down) { foreach ($monitors_down as $monitor) { - // Add monitors fired to $agents_fired_alerts indexed by id_agent + // Add monitors fired to $agents_fired_alerts indexed by id_agent. $id_agent = $monitor['id_agente']; if (!isset($agents[$id_agent])) { $agents[$id_agent] = []; @@ -3067,8 +3792,8 @@ function reporting_get_monitors_down_table($monitors_down) * * It shows the number of agents and no more things right now. * - * @param int Group to get the report - * @param bool Flag to return or echo the report (by default). + * @param integer $id_group Group to get the report. + * @param boolean $return Flag to return or echo the report (by default). * * @return HTML string with group report */ @@ -3088,9 +3813,10 @@ function reporting_print_group_reporting($id_group, $return=false) /** * Get a report table of the fired alerts group by agents. * - * @param int Agent id to generate the report. - * @param int Period of time of the report. - * @param int Beginning date of the report in UNIX time (current date by default). + * @param integer $id_agent Agent id to generate the report. + * @param integer $period Period of time of the report. + * @param integer $date Beginning date of the report in + * UNIX time (current date by default). * * @return object A table object with the alert reporting.. */ @@ -3123,6 +3849,7 @@ function reporting_get_agent_alerts_table($id_agent, $period=0, $date=0) switch ($template['type']) { case 'regex': + default: if ($template['matches_value']) { $data[2] = '≃ "'.$template['value'].'"'; } else { @@ -3133,23 +3860,19 @@ function reporting_get_agent_alerts_table($id_agent, $period=0, $date=0) case 'equal': case 'not_equal': $data[2] = $template['value']; - break; case 'max-min': $data[2] = __('Min.').': '.$template['min_value'].' '; $data[2] .= __('Max.').': '.$template['max_value'].' '; - break; case 'max': $data[2] = $template['max_value']; - break; case 'min': $data[2] = $template['min_value']; - break; } @@ -3167,9 +3890,10 @@ function reporting_get_agent_alerts_table($id_agent, $period=0, $date=0) /** * Get a report of monitors in an agent. * - * @param int Agent id to get the report - * @param int Period of time of the report. - * @param int Beginning date of the report in UNIX time (current date by default). + * @param integer $id_agent Agent id to get the report. + * @param integer $period Period of time of the report. + * @param integer $date Beginning date of the report in UNIX time + * (current date by default). * * @return object A table object with the report. */ @@ -3187,7 +3911,11 @@ function reporting_get_agent_monitors_table($id_agent, $period=0, $date=0) } foreach ($monitors as $monitor) { - $downs = modules_get_monitor_downs_in_period($monitor['id_agente_modulo'], $period, $date); + $downs = modules_get_monitor_downs_in_period( + $monitor['id_agente_modulo'], + $period, + $date + ); if (! $downs) { continue; } @@ -3199,7 +3927,11 @@ function reporting_get_agent_monitors_table($id_agent, $period=0, $date=0) $data[0] = $monitor['nombre']; } - $data[1] = modules_get_last_down_timestamp_in_period($monitor['id_agente_modulo'], $period, $date); + $data[1] = modules_get_last_down_timestamp_in_period( + $monitor['id_agente_modulo'], + $period, + $date + ); array_push($table->data, $data); } @@ -3210,9 +3942,10 @@ function reporting_get_agent_monitors_table($id_agent, $period=0, $date=0) /** * Get a report of all the modules in an agent. * - * @param int Agent id to get the report. - * @param int Period of time of the report - * @param int Beginning date of the report in UNIX time (current date by default). + * @param integer $id_agent Agent id to get the report. + * @param integer $period Period of time of the report. + * @param integer $date Beginning date of the report in UNIX time + * (current date by default). * * @return object */ @@ -3244,19 +3977,24 @@ function reporting_get_agent_modules_table($id_agent, $period=0, $date=0) /** * Get a detailed report of an agent * - * @param int Agent to get the report. - * @param int Period of time of the desired report. - * @param int Beginning date of the report in UNIX time (current date by default). - * @param bool Flag to return or echo the report (by default). + * @param integer $id_agent Agent to get the report. + * @param integer $period Period of time of the desired report. + * @param integer $date Beginning date of the report in UNIX time + * (current date by default). + * @param boolean $return Flag to return or echo the report (by default). * * @return string */ -function reporting_get_agent_detailed($id_agent, $period=0, $date=0, $return=false) -{ +function reporting_get_agent_detailed( + $id_agent, + $period=0, + $date=0, + $return=false +) { $output = ''; $n_a_string = __('N/A(*)'); - // Show modules in agent + // Show modules in agent. $output .= '
'; $output .= '

'.__('Agent').' - '.agents_get_alias($id_agent).'

'; $output .= '

'.__('Modules').'

'; @@ -3264,17 +4002,17 @@ function reporting_get_agent_detailed($id_agent, $period=0, $date=0, $return=fal $table_modules->width = '99%'; $output .= html_print_table($table_modules, true); - // Show alerts in agent + // Show alerts in agent. $table_alerts = reporting_get_agent_alerts_table($id_agent, $period, $date); $table_alerts->width = '99%'; - if (sizeof($table_alerts->data)) { + if (count($table_alerts->data)) { $output .= '

'.__('Alerts').'

'; $output .= html_print_table($table_alerts, true); } - // Show monitor status in agent (if any) + // Show monitor status in agent (if any). $table_monitors = reporting_get_agent_monitors_table($id_agent, $period, $date); - if (sizeof($table_monitors->data) == 0) { + if (count($table_monitors->data) == 0) { $output .= '
'; if (! $return) { echo $output; @@ -3467,12 +4205,12 @@ function reporting_get_agents_by_status($data, $graph_width=250, $graph_height=1 if (!defined('METACONSOLE')) { $agents_data = '
- '.__('Agents by status').''.html_print_table($table_agent, true).'
'; + '.__('Agents by status').''.html_print_table($table_agent, true).''; } else { $table_agent->style = []; $table_agent->class = 'tactical_view'; $agents_data = '
- '.__('Agents by status').''.html_print_table($table_agent, true).'
'; + '.__('Agents by status').''.html_print_table($table_agent, true).''; } return $agents_data; @@ -3495,7 +4233,7 @@ function reporting_get_total_agents_and_monitors($data, $graph_width=250, $graph $total_data[3] = $total_module <= 0 ? '-' : $total_module; $table_total->data[] = $total_data; $total_agent_module = '
- '.__('Total agents and monitors').''.html_print_table($table_total, true).'
'; + '.__('Total agents and monitors').''.html_print_table($table_total, true).''; return $total_agent_module; } @@ -3514,12 +4252,12 @@ function reporting_get_total_servers($num_servers) if (!defined('METACONSOLE')) { $node_overview = '
- '.__('Node overview').''.html_print_table($table_node, true).'
'; + '.__('Node overview').''.html_print_table($table_node, true).''; } else { $table_node->style = []; $table_node->class = 'tactical_view'; $node_overview = '
- '.__('Node overview').''.html_print_table($table_node, true).'
'; + '.__('Node overview').''.html_print_table($table_node, true).''; } return $node_overview; @@ -3563,7 +4301,7 @@ function reporting_get_events($data, $links=false) if (!defined('METACONSOLE')) { $event_view = '
- '.__('Events by severity').''.html_print_table($table_events, true).'
'; + '.__('Events by severity').''.html_print_table($table_events, true).''; } else { $table_events->class = 'tactical_view'; $table_events->styleTable = 'text-align:center;'; @@ -3573,7 +4311,7 @@ function reporting_get_events($data, $links=false) $table_events->size[3] = '10%'; $event_view = '
- '.__('Important Events by Criticity').''.html_print_table($table_events, true).'
'; + '.__('Important Events by Criticity').''.html_print_table($table_events, true).''; } return $event_view; @@ -3605,9 +4343,9 @@ function reporting_get_last_activity() case 'mysql': $sql = sprintf( 'SELECT id_usuario,accion,fecha,ip_origen,descripcion,utimestamp - FROM tsesion - WHERE (`utimestamp` > UNIX_TIMESTAMP(NOW()) - '.SECONDS_1WEEK.") - AND `id_usuario` = '%s' ORDER BY `utimestamp` DESC LIMIT 5", + FROM tsesion + WHERE (`utimestamp` > UNIX_TIMESTAMP(NOW()) - '.SECONDS_1WEEK.") + AND `id_usuario` = '%s' ORDER BY `utimestamp` DESC LIMIT 5", $config['id_user'] ); break; @@ -3615,9 +4353,9 @@ function reporting_get_last_activity() case 'postgresql': $sql = sprintf( "SELECT \"id_usuario\", accion, fecha, \"ip_origen\", descripcion, utimestamp - FROM tsesion - WHERE (\"utimestamp\" > ceil(date_part('epoch', CURRENT_TIMESTAMP)) - ".SECONDS_1WEEK.") - AND \"id_usuario\" = '%s' ORDER BY \"utimestamp\" DESC LIMIT 5", + FROM tsesion + WHERE (\"utimestamp\" > ceil(date_part('epoch', CURRENT_TIMESTAMP)) - ".SECONDS_1WEEK.") + AND \"id_usuario\" = '%s' ORDER BY \"utimestamp\" DESC LIMIT 5", $config['id_user'] ); break; @@ -3625,9 +4363,9 @@ function reporting_get_last_activity() case 'oracle': $sql = sprintf( "SELECT id_usuario, accion, fecha, ip_origen, descripcion, utimestamp - FROM tsesion - WHERE ((utimestamp > ceil((sysdate - to_date('19700101000000','YYYYMMDDHH24MISS')) * (".SECONDS_1DAY.')) - '.SECONDS_1WEEK.") - AND id_usuario = '%s') AND rownum <= 10 ORDER BY utimestamp DESC", + FROM tsesion + WHERE ((utimestamp > ceil((sysdate - to_date('19700101000000','YYYYMMDDHH24MISS')) * (".SECONDS_1DAY.')) - '.SECONDS_1WEEK.") + AND id_usuario = '%s') AND rownum <= 10 ORDER BY utimestamp DESC", $config['id_user'] ); break; @@ -3805,7 +4543,7 @@ function reporting_get_event_histogram($events, $text_header_event=false) if (!defined('METACONSOLE')) { if (!$text_header_event) { $event_graph = '
- '.$text_header_event.''.html_print_table($table, true).'
'; + '.$text_header_event.''.html_print_table($table, true).''; } else { $table->class = 'noclass'; $event_graph = html_print_table($table, true); @@ -3903,9 +4641,9 @@ function reporting_get_event_histogram_meta($width) $time_condition = 'utimestamp > '.$bottom.' AND utimestamp < '.$top; $sql = sprintf( 'SELECT criticity,utimestamp - FROM tmetaconsole_event - WHERE %s %s %s - ORDER BY criticity DESC', + FROM tmetaconsole_event + WHERE %s %s %s + ORDER BY criticity DESC', $time_condition, $groups_condition, $status_condition @@ -3989,7 +4727,7 @@ function reporting_get_event_histogram_meta($width) if (!$text_header_event) { $event_graph = '
- '.$text_header_event.''.html_print_table($table, true).'
'; + '.$text_header_event.''.html_print_table($table, true).''; } else { $table->class = 'noclass'; $event_graph = html_print_table($table, true); diff --git a/pandora_console/include/functions_tags.php b/pandora_console/include/functions_tags.php index 2969a80dcd..ebbc2ac376 100644 --- a/pandora_console/include/functions_tags.php +++ b/pandora_console/include/functions_tags.php @@ -748,7 +748,7 @@ function tags_get_acl_tags( $id_user = $config['id_user']; } - if (is_user_admin($id_user)) { + if (is_user_admin($id_user) && empty($childrens_ids)) { switch ($return_mode) { case 'data': return []; @@ -797,7 +797,8 @@ function tags_get_acl_tags( // Return the condition of the tags for tagente_modulo table $condition = tags_get_acl_tags_module_condition( $acltags, - $query_table + $query_table, + empty($childrens_ids) ? [] : $childrens_ids ); if (!empty($condition)) { return " $query_prefix ".$condition; @@ -825,7 +826,7 @@ function tags_get_acl_tags( * * @return string SQL condition for tagente_module */ -function tags_get_acl_tags_module_condition($acltags, $modules_table='') +function tags_get_acl_tags_module_condition($acltags, $modules_table='', $force_tags=[]) { if (!empty($modules_table)) { $modules_table .= '.'; @@ -839,6 +840,17 @@ function tags_get_acl_tags_module_condition($acltags, $modules_table='') // The acltags array contains the groups with the acl propagation applied // after the changes done into the 'tags_get_user_groups_and_tags' function. foreach ($acltags as $group_id => $group_tags) { + if (empty($group_tags)) { + $group_tags = []; + if (!empty($force_tags)) { + $group_tags = $force_tags; + } + } + + if (!empty($group_tags)) { + $group_tags = array_intersect($force_tags, $group_tags); + } + $tag_join = ''; if (!empty($group_tags)) { $tag_join = sprintf('AND ttag_module.id_tag IN (%s)', is_array($group_tags) ? implode(',', $group_tags) : $group_tags); @@ -849,7 +861,7 @@ function tags_get_acl_tags_module_condition($acltags, $modules_table='') } $group_conditions[] = $agent_condition; - } else { + } else if (!empty($force_tags)) { $without_tags[] = $group_id; } } diff --git a/pandora_console/include/graphs/flot/pandora.flot.js b/pandora_console/include/graphs/flot/pandora.flot.js index 0460b55c99..3561581f49 100644 --- a/pandora_console/include/graphs/flot/pandora.flot.js +++ b/pandora_console/include/graphs/flot/pandora.flot.js @@ -856,6 +856,7 @@ function pandoraFlotSlicebar( } var font_size = parseInt(font_size); + if (font != undefined) var font = font .split("/") .pop() diff --git a/pandora_console/include/help/en/help_response_macros.php b/pandora_console/include/help/en/help_response_macros.php index 38aae0eeab..37abe115fa 100644 --- a/pandora_console/include/help/en/help_response_macros.php +++ b/pandora_console/include/help/en/help_response_macros.php @@ -32,7 +32,8 @@ The accepted macros are:
  • Event associated module name: _module_name_
  • Event owner user: _owner_user_
  • User ID: _user_id_
  • - +
  • Id of the user who fires the response: _current_user_
  • +

    Custom fields

    diff --git a/pandora_console/include/help/es/help_response_macros.php b/pandora_console/include/help/es/help_response_macros.php index adc43b4f48..5a860f1548 100644 --- a/pandora_console/include/help/es/help_response_macros.php +++ b/pandora_console/include/help/es/help_response_macros.php @@ -33,6 +33,7 @@ Las macros aceptadas son las siguientes:
  • Nombre del módulo asociado al evento: _module_name_
  • Usuario propietario del evento: _owner_user_
  • Id del usuario: _user_id_
  • +
  • Id del usuario que ejecuta la respuesta: _current_user_
  • Campos personalizados

    diff --git a/pandora_console/include/help/ja/help_response_macros.php b/pandora_console/include/help/ja/help_response_macros.php index 1aa60b38a4..8beebc7a8d 100644 --- a/pandora_console/include/help/ja/help_response_macros.php +++ b/pandora_console/include/help/ja/help_response_macros.php @@ -32,6 +32,7 @@
  • Event associated module name: _module_name_
  • Event owner user: _owner_user_
  • User ID: _user_id_
  • +
  • Id of the user who fires the response: _current_user_
  • Custom fields

    diff --git a/pandora_console/include/javascript/pandora.js b/pandora_console/include/javascript/pandora.js index 37a9987812..c30736cd8b 100644 --- a/pandora_console/include/javascript/pandora.js +++ b/pandora_console/include/javascript/pandora.js @@ -503,6 +503,14 @@ function module_changed_by_multiple_modules(event, id_module, selected) { selection_mode = "common"; } + var tags_selected = []; + + var tags_to_search = $("#tags").val(); + if (tags_to_search != null) { + if (tags_to_search[0] != -1) { + tags_selected = tags_to_search; + } + } jQuery.post( "ajax.php", { @@ -510,7 +518,8 @@ function module_changed_by_multiple_modules(event, id_module, selected) { get_agents_json_for_multiple_modules: 1, status_module: status_module, "module_name[]": idModules, - selection_mode: selection_mode + selection_mode: selection_mode, + tags: tags_selected }, function(data) { $("#agents").append( diff --git a/pandora_console/include/styles/pandora.css b/pandora_console/include/styles/pandora.css index 70a9c4920e..7cc134c76a 100644 --- a/pandora_console/include/styles/pandora.css +++ b/pandora_console/include/styles/pandora.css @@ -1,24 +1,30 @@ -/* -Author: The Pandora FMS team -Name: Default theme -Description: The default Pandora FMS theme layout - -// Pandora FMS - http://pandorafms.com -// ========================================================== -// 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 -// 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. -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -*/ +/** + * Extension to manage a list of gateways and the node address where they should + * point to. + * + * @category Extensions + * @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. + * ============================================================================ + */ /* Tree view styles */ /*@import url(tree.css); @@ -2053,82 +2059,58 @@ div#logo_text3 { /* TABLAS */ /* Cells divs to set individual styles with the table objects */ -div.cellBold { - width: 100%; - height: 100%; +td.cellBold { font-weight: bold; } -div.cellRight { - width: 100%; - height: 100%; +td.cellRight { text-align: right; } -div.cellCenter { - width: 100%; - height: 100%; +td.cellCenter { text-align: center; } -div.cellWhite { - width: 100%; - height: 100%; +td.cellWhite { background: #fff; color: #111; } -div.cellNormal { - width: 100%; - height: 100%; +td.cellNormal { background: #6eb432; color: #fff; } -div.cellCritical { - width: 100%; - height: 100%; +td.cellCritical { background: #f85858; color: #fff; } -div.cellWarning { - width: 100%; - height: 100%; +td.cellWarning { background: #ffea59; color: #111; } -div.cellUnknown { - width: 100%; - height: 100%; +td.cellUnknown { background: #aaaaaa; color: #ffffff; } -div.cellNotInit { - width: 100%; - height: 100%; +td.cellNotInit { background: #3ba0ff; color: #ffffff; } -div.cellAlert { - width: 100%; - height: 100%; +td.cellAlert { background: #ff8800; color: #111; } -div.cellBorder1 { - width: 100%; - height: 100%; +td.cellBorder1 { border: 1px solid #666; } -div.cellBig { - width: 100%; - height: 100%; +td.cellBig { font-size: 18px; } @@ -4561,4 +4543,4 @@ input:checked + .slider:before { .no-close .ui-dialog-titlebar-close { display: none; } -/* jQuery dialog */ +/* --- END - JQUERY-UI --- */ diff --git a/pandora_console/include/styles/pandoraPDF.css b/pandora_console/include/styles/pandoraPDF.css new file mode 100644 index 0000000000..37d527c30b --- /dev/null +++ b/pandora_console/include/styles/pandoraPDF.css @@ -0,0 +1,78 @@ +/** + * Extension to manage a list of gateways and the node address where they should + * point to. + * + * @category Extensions + * @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. + * ============================================================================ + */ +table.header_table { + width: 100%; +} + +table.header_table thead tr th, +table.header_table tbody tr td { + padding: 10px; +} + +thead.header_tr tr { + background: #e6e6e6; +} + +thead.header_tr tr th { + font-weight: normal; + text-align: right; +} + +thead.header_tr tr th.th_first { + font-weight: bold; + text-align: left; +} + +thead.header_tr tr th.th_description { + background-color: #f5f5f5; + color: #1c1c1c; + text-align: justify; +} + +table.table_beauty { + border-collapse: collapse; + width: 100%; +} + +table.table_beauty tbody tr td { + padding: 5px; + border: 0.1pt solid #acacac; +} + +table.databox { + margin-bottom: 20px; +} + +th.title_table_pdf { + background-color: #acacac; + padding: 15px; +} + +table.table_agent_module tr td { + padding: 5px; +} diff --git a/pandora_console/index.php b/pandora_console/index.php index ad4b93465a..321b5956dc 100755 --- a/pandora_console/index.php +++ b/pandora_console/index.php @@ -1363,4 +1363,3 @@ require 'include/php_to_js_values.php'; if (__PAN_XHPROF__ === 1) { pandora_xhprof_display_result('node_index'); } - diff --git a/pandora_console/install.php b/pandora_console/install.php index be416f5b40..ad9889d1b3 100644 --- a/pandora_console/install.php +++ b/pandora_console/install.php @@ -129,7 +129,7 @@
    $status_modulo], + [ + 'status' => $status_modulo, + 'tags' => $tags_selected, + ], 'AW' ); diff --git a/pandora_console/operation/users/user_edit.php b/pandora_console/operation/users/user_edit.php index 1552f2f57c..802ab0bf6c 100644 --- a/pandora_console/operation/users/user_edit.php +++ b/pandora_console/operation/users/user_edit.php @@ -390,10 +390,13 @@ $table->data[] = $data; // Double auth $double_auth_enabled = (bool) db_get_value('id', 'tuser_double_auth', 'id_user', $config['id_user']); -$data = []; -$data[0] = ''.__('Double authentication').''; -$data[0] .= $jump; -$data[0] .= ''.html_print_checkbox('double_auth', 1, $double_auth_enabled, true).''; +$data = array(); +if ($config['double_auth_enabled']) { + $data[0] = ''.__('Double authentication').''; + $data[0] .= $jump; + $data[0] .= ''.html_print_checkbox('double_auth', 1, $double_auth_enabled, true).''; +} + if ($double_auth_enabled) { $data[0] .= $jump; $data[0] .= html_print_button(__('Show information'), 'show_info', false, 'javascript:show_double_auth_info();', '', true); diff --git a/pandora_console/pandora_console.redhat.spec b/pandora_console/pandora_console.redhat.spec index 4653843f6a..cfece25f38 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.731 -%define release 190219 +%define release 190220 # 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 a5f4fb2163..9f5469f8d5 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.731 -%define release 190219 +%define release 190220 %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 e307f4aa2b..3faf066895 100644 --- a/pandora_server/DEBIAN/control +++ b/pandora_server/DEBIAN/control @@ -1,5 +1,5 @@ package: pandorafms-server -Version: 7.0NG.731-190219 +Version: 7.0NG.731-190220 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 c4305947c6..455e217ec3 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.731-190219" +pandora_version="7.0NG.731-190220" package_cpan=0 package_pandora=1 diff --git a/pandora_server/lib/PandoraFMS/Config.pm b/pandora_server/lib/PandoraFMS/Config.pm index a3469c8f4c..236e161eae 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.731"; -my $pandora_build = "190219"; +my $pandora_build = "190220"; our $VERSION = $pandora_version." ".$pandora_build; # Setup hash diff --git a/pandora_server/lib/PandoraFMS/Core.pm b/pandora_server/lib/PandoraFMS/Core.pm index 3bfd1e1a7d..4682c38820 100644 --- a/pandora_server/lib/PandoraFMS/Core.pm +++ b/pandora_server/lib/PandoraFMS/Core.pm @@ -3454,6 +3454,7 @@ sub pandora_evaluate_snmp_alerts ($$$$$$$$$) { # Specific SNMP Trap alert macros for regexp selectors in trap info my %macros; + $macros{'_trap_id_'} = $trap_id; $macros{'_snmp_oid_'} = $trap_oid; $macros{'_snmp_value_'} = $trap_value; diff --git a/pandora_server/lib/PandoraFMS/PluginTools.pm b/pandora_server/lib/PandoraFMS/PluginTools.pm index 06ba620049..0ebb176f6e 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.731"; -my $pandora_build = "190219"; +my $pandora_build = "190220"; 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 0e83289792..e64e4cb345 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.731 -%define release 190219 +%define release 190220 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server.spec b/pandora_server/pandora_server.spec index 3696930e4d..acb121e249 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.731 -%define release 190219 +%define release 190220 Summary: Pandora FMS Server Name: %{name} diff --git a/pandora_server/pandora_server_installer b/pandora_server/pandora_server_installer index 6ef203a875..069e8311c9 100755 --- a/pandora_server/pandora_server_installer +++ b/pandora_server/pandora_server_installer @@ -9,7 +9,7 @@ # ********************************************************************** PI_VERSION="7.0NG.731" -PI_BUILD="190219" +PI_BUILD="190220" MODE=$1 if [ $# -gt 1 ]; then diff --git a/pandora_server/util/pandora_db.pl b/pandora_server/util/pandora_db.pl index ab35080dc9..67e58019af 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.731 PS190219"; +my $version = "7.0NG.731 PS190220"; # Pandora server configuration my %conf; diff --git a/pandora_server/util/pandora_manage.pl b/pandora_server/util/pandora_manage.pl index aaafd6978c..3046097bbd 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.731 PS190219"; +my $version = "7.0NG.731 PS190220"; # save program name for logging my $progname = basename($0);