diff --git a/pandora_console/include/functions_reporting.php b/pandora_console/include/functions_reporting.php index d2a32f9cd1..43e29667d9 100644 --- a/pandora_console/include/functions_reporting.php +++ b/pandora_console/include/functions_reporting.php @@ -2136,859 +2136,4 @@ function reporting_get_agentmodule_ttr ($id_agent_module, $period = 0, $date = 0 return $critical_period; } - -/** - * Get all the template graphs a user can see. - * - * @param $id_user User id to check. - * @param $only_names Wheter to return only graphs names in an associative array - * or all the values. - * @param $returnAllGroup Wheter to return graphs of group All or not. - * @param $privileges Privileges to check in user group - * - * @return template graphs of a an user. Empty array if none. - */ -function reporting_template_graphs_get_user ($id_user = 0, $only_names = false, $returnAllGroup = true, $privileges = 'RR') { - global $config; - - if (!$id_user) { - $id_user = $config['id_user']; - } - - $groups = users_get_groups ($id_user, $privileges, $returnAllGroup); - - $all_templates = db_get_all_rows_in_table ('tgraph_template', 'name'); - if ($all_templates === false) - return array (); - - $templates = array (); - foreach ($all_templates as $template) { - if (!in_array($template['id_group'], array_keys($groups))) - continue; - - if ($template["id_user"] != $id_user && $template['private']) - continue; - - if ($template["id_group"] > 0) - if (!isset($groups[$template["id_group"]])){ - continue; - } - - if ($only_names) { - $templates[$template['id_graph_template']] = $template['name']; - } - else { - $templates[$template['id_graph_template']] = $template; - $templatesCount = db_get_value_sql("SELECT COUNT(id_gs_template) FROM tgraph_source_template WHERE id_template = " . $template['id_graph_template']); - $templates[$template['id_graph_template']]['graphs_template_count'] = $templatesCount; - } - } - - return $templates; -} - -/** - * Gets a detailed reporting of groups's events. - * - * @param unknown_type $id_group Id of the group. - * @param unknown_type $period Time period of the report. - * @param unknown_type $date Date of the report. - * @param unknown_type $return Whether to return or not. - * @param unknown_type $html Whether to return HTML code or not. - * - * @return string Report of groups's events - */ -function reporting_get_count_events_by_agent ($id_group, $period = 0, - $date = 0, - $filter_event_validated = false, $filter_event_critical = false, - $filter_event_warning = false, $filter_event_no_validated = false) { - - if (!is_numeric ($date)) { - $date = strtotime ($date); - } - if (empty ($date)) { - $date = get_system_time (); - } - - return events_get_count_events_by_agent($id_group, $period, $date, - $filter_event_validated, $filter_event_critical, - $filter_event_warning, $filter_event_no_validated); -} - -/** - * Gets a detailed reporting of groups's events. - * - * @param unknown_type $filter. - * @param unknown_type $period Time period of the report. - * @param unknown_type $date Date of the report. - * @param unknown_type $return Whether to return or not. - * @param unknown_type $html Whether to return HTML code or not. - * - * @return string Report of groups's events - */ -function reporting_get_count_events_validated_by_user ($filter, $period = 0, - $date = 0, - $filter_event_validated = false, $filter_event_critical = false, - $filter_event_warning = false, $filter_event_no_validated = false) { - - if (!is_numeric ($date)) { - $date = strtotime ($date); - } - if (empty ($date)) { - $date = get_system_time (); - } - - return events_get_count_events_validated_by_user($filter, $period, $date, - $filter_event_validated, $filter_event_critical, - $filter_event_warning, $filter_event_no_validated); -} - -/** - * Gets a detailed reporting of groups's events. - * - * @param unknown_type $id_group Id of the group. - * @param unknown_type $period Time period of the report. - * @param unknown_type $date Date of the report. - * @param unknown_type $return Whether to return or not. - * @param unknown_type $html Whether to return HTML code or not. - * - * @return string Report of groups's events - */ -function reporting_get_count_events_by_criticity ($filter, $period = 0, - $date = 0, - $filter_event_validated = false, $filter_event_critical = false, - $filter_event_warning = false, $filter_event_no_validated = false) { - - if (!is_numeric ($date)) { - $date = strtotime ($date); - } - if (empty ($date)) { - $date = get_system_time (); - } - - return events_get_count_events_by_criticity($filter, $period, $date, - $filter_event_validated, $filter_event_critical, - $filter_event_warning, $filter_event_no_validated); -} - -/** - * Gets a detailed reporting of groups's events. - * - * @param unknown_type $id_group Id of the group. - * @param unknown_type $period Time period of the report. - * @param unknown_type $date Date of the report. - * @param unknown_type $return Whether to return or not. - * @param unknown_type $html Whether to return HTML code or not. - * - * @return string Report of groups's events - */ -function reporting_get_count_events_validated ($filter, $period = 0, - $date = 0, - $filter_event_validated = false, $filter_event_critical = false, - $filter_event_warning = false, $filter_event_no_validated = false) { - - if (!is_numeric ($date)) { - $date = strtotime ($date); - } - if (empty ($date)) { - $date = get_system_time (); - } - - return events_get_count_events_validated($filter, $period, $date, - $filter_event_validated, $filter_event_critical, - $filter_event_warning, $filter_event_no_validated); -} - -/** - * Print tiny statistics of the status of one agent, group, etc. - * - * @param mixed Array with the counts of the total modules, normal modules, critical modules, warning modules, unknown modules and fired alerts - * @param bool return or echo flag - * - * @return string html formatted tiny stats of modules/alerts of an agent - */ -function reporting_tiny_stats ($counts_info, $return = false, $type = 'agent', $separator = ':', $strict_user = false) { - global $config; - - $out = ''; - - // Depend the type of object, the stats will refer agents, modules... - switch ($type) { - case 'modules': - $template_title['total_count'] = __('%d Total modules'); - $template_title['normal_count'] = __('%d Normal modules'); - $template_title['critical_count'] = __('%d Critical modules'); - $template_title['warning_count'] = __('%d Warning modules'); - $template_title['unknown_count'] = __('%d Unknown modules'); - break; - case 'agent': - $template_title['total_count'] = __('%d Total modules'); - $template_title['normal_count'] = __('%d Normal modules'); - $template_title['critical_count'] = __('%d Critical modules'); - $template_title['warning_count'] = __('%d Warning modules'); - $template_title['unknown_count'] = __('%d Unknown modules'); - $template_title['fired_count'] = __('%d Fired alerts'); - break; - default: - $template_title['total_count'] = __('%d Total agents'); - $template_title['normal_count'] = __('%d Normal agents'); - $template_title['critical_count'] = __('%d Critical agents'); - $template_title['warning_count'] = __('%d Warning agents'); - $template_title['unknown_count'] = __('%d Unknown agents'); - $template_title['not_init_count'] = __('%d not init agents'); - $template_title['fired_count'] = __('%d Fired alerts'); - break; - } - - if ($strict_user && $type == 'agent') { - - $acltags = tags_get_user_module_and_tags ($config['id_user'],'AR', $strict_user); - $filter['disabled'] = 0; - $id_agent = $counts_info['id_agente']; - - $counts_info = array(); - $counts_info['normal_count'] = count(tags_get_agent_modules ($id_agent, $acltags, false, $filter, false, AGENT_MODULE_STATUS_NORMAL)); - $counts_info['warning_count'] = count(tags_get_agent_modules ($id_agent, $acltags, false, $filter, false, AGENT_MODULE_STATUS_WARNING)); - $counts_info['critical_count'] = count(tags_get_agent_modules ($id_agent, $acltags, false, $filter, false, AGENT_MODULE_STATUS_CRITICAL_BAD)); - $counts_info['notinit_count'] = count(tags_get_agent_modules ($id_agent, $acltags, false, $filter, false, AGENT_MODULE_STATUS_NOT_INIT)); - $counts_info['unknown_count'] = count(tags_get_agent_modules ($id_agent, $acltags, false, $filter, false, AGENT_MODULE_STATUS_UNKNOWN)); - $counts_info['total_count'] = $counts_info['normal_count'] + $counts_info['warning_count'] + $counts_info['critical_count'] + $counts_info['unknown_count'] + $counts_info['notinit_count']; - - $all_agent_modules = tags_get_agent_modules ($id_agent, $acltags, false, $filter); - if (!empty($all_agent_modules)) { - $mod_clause = "(".implode(',', array_keys($all_agent_modules)).")"; - - $counts_info['fired_count'] = (int) db_get_sql ("SELECT COUNT(times_fired) - FROM talert_template_modules - WHERE times_fired != 0 AND id_agent_module IN ".$mod_clause); - } - else { - $counts_info['fired_count'] = 0; - } - } - - // Store the counts in a data structure to print hidden divs with titles - $stats = array(); - - if (isset($counts_info['total_count'])) { - $not_init = isset($counts_info['notinit_count']) ? $counts_info['notinit_count'] : 0; - $total_count = $counts_info['total_count'] - $not_init; - $stats[] = array('name' => 'total_count', 'count' => $total_count, 'title' => sprintf($template_title['total_count'], $total_count)); - } - - if (isset($counts_info['normal_count'])) { - $normal_count = $counts_info['normal_count']; - $stats[] = array('name' => 'normal_count', 'count' => $normal_count, 'title' => sprintf($template_title['normal_count'], $normal_count)); - } - - if (isset($counts_info['critical_count'])) { - $critical_count = $counts_info['critical_count']; - $stats[] = array('name' => 'critical_count', 'count' => $critical_count, 'title' => sprintf($template_title['critical_count'], $critical_count)); - } - - if (isset($counts_info['warning_count'])) { - $warning_count = $counts_info['warning_count']; - $stats[] = array('name' => 'warning_count', 'count' => $warning_count, 'title' => sprintf($template_title['warning_count'], $warning_count)); - } - - if (isset($counts_info['unknown_count'])) { - $unknown_count = $counts_info['unknown_count']; - $stats[] = array('name' => 'unknown_count', 'count' => $unknown_count, 'title' => sprintf($template_title['unknown_count'], $unknown_count)); - } - - if (isset($counts_info['not_init_count'])) { - $not_init_count = $counts_info['not_init_count']; - $stats[] = array('name' => 'not_init_count', - 'count' => $not_init_count, - 'title' => sprintf($template_title['not_init_count'], $not_init_count)); - } - - if (isset($template_title['fired_count'])) { - if (isset($counts_info['fired_count'])) { - $fired_count = $counts_info['fired_count']; - $stats[] = array('name' => 'fired_count', 'count' => $fired_count, 'title' => sprintf($template_title['fired_count'], $fired_count)); - } - } - - $uniq_id = uniqid(); - - foreach ($stats as $stat) { - $params = array('id' => 'forced_title_' . $stat['name'] . '_' . $uniq_id, - 'class' => 'forced_title_layer', - 'content' => $stat['title'], - 'hidden' => true); - $out .= html_print_div($params, true); - } - - // If total count is less than 0, is an error. Never show negative numbers - if ($total_count < 0) { - $total_count = 0; - } - - $out .= '' . '' . $total_count . ''; - if (isset($fired_count) && $fired_count > 0) - $out .= ' ' . $separator . ' ' . $fired_count . ''; - if (isset($critical_count) && $critical_count > 0) - $out .= ' ' . $separator . ' ' . $critical_count . ''; - if (isset($warning_count) && $warning_count > 0) - $out .= ' ' . $separator . ' ' . $warning_count . ''; - if (isset($unknown_count) && $unknown_count > 0) - $out .= ' ' . $separator . ' ' . $unknown_count . ''; - if (isset($not_init_count) && $not_init_count > 0) - $out .= ' ' . $separator . ' ' . $not_init_count . ''; - if (isset($normal_count) && $normal_count > 0) - $out .= ' ' . $separator . ' ' . $normal_count . ''; - - $out .= ''; - - if ($return) { - return $out; - } - else { - echo $out; - } -} - - -function reporting_network_interfaces_table ($content, $report, $mini, $item_title = "", &$table = null, &$pdf = null) { - global $config; - - include_once($config['homedir'] . "/include/functions_custom_graphs.php"); - - if (empty($item_title)) { - $group_name = groups_get_name($content['id_group']); - $item_title = __('Network interfaces') . " - " . sprintf(__('Group "%s"'), $group_name); - } - - $is_html = $table !== null; - $is_pdf = $pdf !== null; - - $ttl = $is_pdf ? 2 : 1; - - $graph_width = 900; - $graph_height = 200; - - $datetime = $report['datetime']; - $period = $content['period']; - - if ($is_pdf) { - $graph_width = 800; - $graph_height = 200; - pdf_header_content($pdf, $content, $report, $item_title, false, $content["description"]); - } - else if ($is_html) { - reporting_header_content($mini, $content, $report, $table, $item_title); - - //RUNNING - $table->style[1] = 'text-align: right'; - - // Put description at the end of the module (if exists) - $table->colspan[0][1] = 2; - $next_row = 1; - if ($content["description"] != "") { - $table->colspan[$next_row][0] = 3; - $next_row++; - $data_desc = array(); - $data_desc[0] = $content["description"]; - array_push ($table->data, $data_desc); - } - } - - $filter = array( - 'id_grupo' => $content['id_group'], - 'disabled' => 0 - ); - $network_interfaces_by_agents = agents_get_network_interfaces(false, $filter); - - if (empty($network_interfaces_by_agents)) { - if ($is_pdf) { - $pdf->addHTML(__('The group has no agents or none of the agents has any network interface')); - } - else if ($is_html) { - $data = array(); - $data[0] = __('The group has no agents or none of the agents has any network interface'); - $table->colspan[$next_row][0] = 3; - array_push ($table->data, $data); - } - return; - } - else { - foreach ($network_interfaces_by_agents as $agent_id => $agent) { - - $table_agent = new StdCLass(); - $table_agent->width = '100%'; - $table_agent->data = array(); - $table_agent->head = array(); - $table_agent->head[0] = sprintf(__("Agent '%s'"), $agent['name']); - $table_agent->headstyle = array(); - $table_agent->headstyle[0] = 'font-size: 16px;'; - $table_agent->style[0] = 'text-align: center'; - - if ($is_pdf) { - $table_agent->class = 'table_sla table_beauty'; - $table_agent->headstyle[0] = 'background: #373737; color: #FFF; display: table-cell; font-size: 16px; border: 1px solid grey'; - } - - $table_agent->data['interfaces'] = ""; - - foreach ($agent['interfaces'] as $interface_name => $interface) { - $table_interface = new StdClass(); - $table_interface->width = '100%'; - $table_interface->data = array(); - $table_interface->rowstyle = array(); - $table_interface->head = array(); - $table_interface->cellstyle = array(); - $table_interface->title = sprintf(__("Interface '%s' throughput graph"), $interface_name); - $table_interface->head['ip'] = __('IP'); - $table_interface->head['mac'] = __('Mac'); - $table_interface->head['status'] = __('Actual status'); - $table_interface->style['ip'] = 'text-align: left'; - $table_interface->style['mac'] = 'text-align: left'; - $table_interface->style['status'] = 'width: 150px; text-align: center'; - - if ($is_pdf) { - $table_interface->class = 'table_sla table_beauty'; - $table_interface->titlestyle = 'background: #373737; color: #FFF; display: table-cell; font-size: 12px; border: 1px solid grey'; - - $table_interface->headstyle['ip'] = 'text-align: left; background: #666; color: #FFF; display: table-cell; font-size: 11px; border: 1px solid grey'; - $table_interface->headstyle['mac'] = 'text-align: left; background: #666; color: #FFF; display: table-cell; font-size: 11px; border: 1px solid grey'; - $table_interface->headstyle['status'] = 'background: #666; color: #FFF; display: table-cell; font-size: 11px; border: 1px solid grey'; - - $table_interface->style['ip'] = 'text-align: left; display: table-cell; font-size: 10px;'; - $table_interface->style['mac'] = 'text-align: left; display: table-cell; font-size: 10px;'; - $table_interface->style['status'] = 'text-align: center; display: table-cell; font-size: 10px;'; - } - - $data = array(); - $data['ip'] = !empty($interface['ip']) ? $interface['ip'] : "--"; - $data['mac'] = !empty($interface['mac']) ? $interface['mac'] : "--"; - $data['status'] = $interface['status_image']; - $table_interface->data['data'] = $data; - - if (!empty($interface['traffic'])) { - - $only_image = !(bool)$config['flash_charts'] || $is_pdf ? true : false; - - $graph = custom_graphs_print(0, - $graph_height, - $graph_width, - $period, - null, - true, - $date, - $only_image, - 'white', - array_values($interface['traffic']), - $config['homeurl'], - array_keys($interface['traffic']), - array_fill(0, count($interface['traffic']),"bytes/s"), - false, - true, - true, - true, - $ttl); - - $table_interface->data['graph'] = $graph; - $table_interface->colspan['graph'][0] = count($table_interface->head); - $table_interface->cellstyle['graph'][0] = 'text-align: center;'; - } - - $table_agent->data['interfaces'] .= html_print_table($table_interface, true); - $table_agent->colspan[$interface_name][0] = 3; - } - - if ($is_html) { - $table->data[$agent_id] = html_print_table($table_agent, true); - $table->colspan[$agent_id][0] = 3; - } - else if ($is_pdf) { - $html = html_print_table($table_agent, true); - $pdf->addHTML($html); - } - } - } -} - -function reporting_get_agents_by_status ($data, $graph_width = 250, $graph_height = 150, $links = false) { - global $config; - - if ($links == false) { - $links = array(); - } - - $table_agent = html_get_predefined_table(); - - $agent_data = array(); - $agent_data[0] = html_print_image('images/agent_critical.png', true, array('title' => __('Agents critical'))); - $agent_data[1] = ""; - $agent_data[1] .= format_numeric($data["agent_critical"]) <= 0 ? '-' : format_numeric($data['agent_critical']); - $agent_data[1] .= ""; - - $agent_data[2] = html_print_image('images/agent_warning.png', true, array('title' => __('Agents warning'))); - $agent_data[3] = ""; - $agent_data[3] .= $data["agent_warning"] <= 0 ? '-' : format_numeric($data['agent_warning']); - $agent_data[3] .= ""; - - $table_agent->data[] = $agent_data; - - $agent_data = array(); - $agent_data[0] = html_print_image('images/agent_ok.png', true, array('title' => __('Agents ok'))); - $agent_data[1] = ""; - $agent_data[1] .= $data["agent_ok"] <= 0 ? '-' : format_numeric($data['agent_ok']); - $agent_data[1] .= ""; - - $agent_data[2] = html_print_image('images/agent_unknown.png', true, array('title' => __('Agents unknown'))); - $agent_data[3] = ""; - $agent_data[3] .= $data["agent_unknown"] <= 0 ? '-' : format_numeric($data['agent_unknown']); - $agent_data[3] .= ""; - - $table_agent->data[] = $agent_data; - - $agent_data = array(); - $agent_data[0] = html_print_image('images/agent_notinit.png', true, array('title' => __('Agents not init'))); - $agent_data[1] = ""; - $agent_data[1] .= $data["agent_not_init"] <= 0 ? '-' : format_numeric($data['agent_not_init']); - $agent_data[1] .= ""; - - $agent_data[2] = ""; - $agent_data[3] = ""; - $table_agent->data[] = $agent_data; - - - if (!defined('METACONSOLE')) { - $agents_data = '
- ' . - __('Agents by status') . - '' . - html_print_table($table_agent, true) . '
'; - } - else{ - $table_agent->style=array(); - $table_agent->class = "tactical_view"; - $agents_data = '
- ' . - __('Agents by status') . - '' . - html_print_table($table_agent, true) . '
'; - } - - return $agents_data; -} - -function reporting_get_total_agents_and_monitors ($data, $graph_width = 250, $graph_height = 150) { - global $config; - - $total_agent = $data['agent_ok'] + $data['agent_warning'] + $data['agent_critical'] + $data['gent_unknown'] + $data['agent_not_init']; - $total_module = $data['monitor_ok'] + $data['monitor_warning'] + $data['monitor_critical'] + $data['monitor_unknown'] + $data['monitor_not_init']; - - $table_total = html_get_predefined_table(); - - $total_data = array(); - $total_data[0] = html_print_image('images/agent.png', true, array('title' => __('Total agents'))); - $total_data[1] = $total_agent <= 0 ? '-' : $total_agent; - $total_data[2] = html_print_image('images/module.png', true, array('title' => __('Monitor checks'))); - $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) . '
'; - - return $total_agent_module; -} - -function reporting_get_total_servers ($num_servers) { - global $config; - - $table_node = html_get_predefined_table(); - - $node_data = array(); - $node_data[0] = html_print_image('images/server_export.png', true, array('title' => __('Nodes'))); - $node_data[1] = ""; - $node_data[1] .= $num_servers <= 0 ? '-' : format_numeric($num_servers); - $node_data[1] .= ""; - $table_node->data[] = $node_data; - - if (!defined('METACONSOLE')){ - $node_overview = '
- ' . - __('Node overview') . - '' . - html_print_table($table_node, true) . '
'; - }else{ - $table_node->style = array(); - $table_node->class = "tactical_view"; - $node_overview = '
- ' . - __('Node overview') . - '' . - html_print_table($table_node, true) . '
'; - } - - return $node_overview; -} - -function reporting_get_events ($data, $links = false) { - global $config; - - $table_events->width = "100%"; - if (defined('METACONSOLE')) - $style = " vertical-align:middle;"; - else - $style = ""; - if (defined('METACONSOLE')){ - $table_events->style[0] = "background-color:#FC4444"; - $table_events->data[0][0] = html_print_image('images/module_event_critical.png', true, array('title' => __('Critical events'))); - $table_events->data[0][0] .= "   " . - ""; - $table_events->data[0][0] .= format_numeric($data['critical']) <= 0 ? ' -' : format_numeric($data['critical']); - $table_events->data[0][0] .= ""; - $table_events->style[1] = "background-color:#FAD403"; - $table_events->data[0][1] = html_print_image('images/module_event_warning.png', true, array('title' => __('Warning events'))); - $table_events->data[0][1] .= "   " . - ""; - $table_events->data[0][1] .= format_numeric($data['warning']) <= 0 ? ' -' : format_numeric($data['warning']); - $table_events->data[0][1] .= ""; - $table_events->style[2] = "background-color:#80BA27"; - $table_events->data[0][2] = html_print_image('images/module_event_ok.png', true, array('title' => __('OK events'))); - $table_events->data[0][2] .= "   " . - ""; - $table_events->data[0][2] .= format_numeric($data['normal']) <= 0 ? ' -' : format_numeric($data['normal']); - $table_events->data[0][2] .= ""; - $table_events->style[3] = "background-color:#B2B2B2"; - $table_events->data[0][3] = html_print_image('images/module_event_unknown.png', true, array('title' => __('Unknown events'))); - $table_events->data[0][3] .= "   " . - ""; - $table_events->data[0][3] .=format_numeric($data['unknown']) <= 0 ? ' -' : format_numeric($data['unknown']); - $table_events->data[0][3] .=""; - } - else{ - $table_events->data[0][0] = html_print_image('images/module_critical.png', true, array('title' => __('Critical events'))); - $table_events->data[0][0] .= "   " . - "". - format_numeric($data['critical']).""; - $table_events->data[0][1] = html_print_image('images/module_warning.png', true, array('title' => __('Warning events'))); - $table_events->data[0][1] .= "   " . - "". - format_numeric($data['warning']).""; - $table_events->data[0][2] = html_print_image('images/module_ok.png', true, array('title' => __('OK events'))); - $table_events->data[0][2] .= "   " . - "". - format_numeric($data['normal']).""; - $table_events->data[0][3] = html_print_image('images/module_unknown.png', true, array('title' => __('Unknown events'))); - $table_events->data[0][3] .= "   " . - "". - format_numeric($data['unknown']).""; - - } - if (!defined('METACONSOLE')) { - $event_view = '
- ' . - __('Events by criticity') . - '' . - html_print_table($table_events, true) . '
'; - } - else{ - $table_events->class="tactical_view"; - $table_events->styleTable="text-align:center;"; - $table_events->size[0]="10%"; - $table_events->size[1]="10%"; - $table_events->size[2]="10%"; - $table_events->size[3]="10%"; - - $event_view = '
- ' . - __('Important Events by Criticity') . - '' . - html_print_table($table_events, true) . '
'; - } - - return $event_view; -} - -function reporting_get_last_activity() { - global $config; - - // Show last activity from this user - - $table->width = '100%'; - $table->data = array (); - $table->size = array (); - $table->size[2] = '150px'; - $table->size[3] = '130px'; - $table->size[5] = '200px'; - $table->head = array (); - $table->head[0] = __('User'); - $table->head[1] = ''; - $table->head[2] = __('Action'); - $table->head[3] = __('Date'); - $table->head[4] = __('Source IP'); - $table->head[5] = __('Comments'); - $table->title = '' . __('Last activity in Pandora FMS console') . ''; - - switch ($config["dbtype"]) { - 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", $config["id_user"]); - break; - 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", $config["id_user"]); - break; - 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", $config["id_user"]); - break; - } - - $sessions = db_get_all_rows_sql ($sql); - - if ($sessions === false) - $sessions = array (); - - foreach ($sessions as $session) { - $data = array (); - - switch ($config["dbtype"]) { - case "mysql": - case "oracle": - $session_id_usuario = $session['id_usuario']; - $session_ip_origen = $session['ip_origen']; - break; - case "postgresql": - $session_id_usuario = $session['id_usuario']; - $session_ip_origen = $session['ip_origen']; - break; - } - - - $data[0] = '' . $session_id_usuario . ''; - $data[1] = ui_print_session_action_icon ($session['accion'], true); - $data[2] = $session['accion']; - $data[3] = ui_print_help_tip($session['fecha'], true) . human_time_comparation($session['utimestamp'], 'tiny'); - $data[4] = $session_ip_origen; - $data[5] = io_safe_output ($session['descripcion']); - - array_push ($table->data, $data); - } - - if(defined("METACONSOLE")) - $table->class="databox_tactical"; - - return html_print_table ($table, true); - -} - -function reporting_get_event_histogram ($events) { - global $config; - include_once ('../../include/graphs/functions_gd.php'); - $max_value = count($events); - if (defined("METACONSOLE")) - $max_value = SECONDS_1HOUR; - - $ttl = 1; - $urlImage = ui_get_full_url(false, true, false, false); - - $colors = array( - EVENT_CRIT_MAINTENANCE => COL_MAINTENANCE, - EVENT_CRIT_INFORMATIONAL => COL_INFORMATIONAL, - EVENT_CRIT_NORMAL => COL_NORMAL, - EVENT_CRIT_MINOR => COL_MINOR, - EVENT_CRIT_WARNING => COL_WARNING, - EVENT_CRIT_MAJOR => COL_MAJOR, - EVENT_CRIT_CRITICAL => COL_CRITICAL - ); - if(defined("METACONSOLE")){ - $full_legend = array(); - $cont = 0; - } - - foreach ($events as $data) { - - switch ($data['criticity']) { - case 0: - $color = EVENT_CRIT_MAINTENANCE; - break; - case 1: - $color = EVENT_CRIT_INFORMATIONAL; - break; - case 2: - $color = EVENT_CRIT_NORMAL; - break; - case 3: - $color = EVENT_CRIT_WARNING; - break; - case 4: - $color = EVENT_CRIT_CRITICAL; - break; - case 5: - $color = EVENT_CRIT_MINOR; - break; - case 6: - $color = EVENT_CRIT_MAJOR; - break; - case 20: - $color = EVENT_CRIT_NOT_NORMAL; - break; - case 34: - $color = EVENT_CRIT_WARNING_OR_CRITICAL; - break; - } - - if(defined("METACONSOLE")){ - $full_legend[$cont] = $data['timestamp']; - $graph_data[] = array( - 'data' => $color, - 'utimestamp' => $data['utimestamp'] - get_system_time () - ); - $cont++; - } - else{ - $graph_data[] = array( - 'data' => $color, - 'utimestamp' => 1 - ); - } - } - - $table->width = '100%'; - $table->data = array (); - $table->size = array (); - $table->head = array (); - $table->title = '' . __('Events info (1hr.)') . ''; - $table->data[0][0] = "" ; - - if (!empty($graph_data)) { - if (defined("METACONSOLE")) - $slicebar = flot_slicesbar_graph($graph_data, $max_value, "100%", 35, $full_legend, $colors, $config['fontpath'], $config['round_corner'], $urlImage); - else - $slicebar = slicesbar_graph($graph_data, $max_value, 700, 25, $colors, $config['fontpath'], $config['round_corner'], $urlImage, $ttl); - - $table->data[0][0] = $slicebar; - } else { - $table->data[0][0] = __('No events'); - } - - if(!defined('METACONSOLE')){ - $event_graph = '
- ' . - __('Events info (1hr)') . - '' . - html_print_table($table, true) . '
'; - } - else{ - $table->class='tactical_view'; - $event_graph = '
' . - html_print_table($table, true) . '
'; - } - - return $event_graph; -} ?> \ No newline at end of file