$filter] + $other_filter) ); if ($modules === false) { $modules = []; } $modules = array_unique($modules); $modules = io_safe_output($modules); echo json_encode($modules); return; } if ($get_module_detail) { // This script is included manually to be // included after jquery and avoid error. ui_include_time_picker(); ui_require_jquery_file( 'ui.datepicker-'.get_user_language(), 'include/javascript/i18n/' ); $module_id = (int) get_parameter('id_module'); $period = get_parameter('period', SECONDS_1DAY); if ($period === 'undefined') { $period = SECONDS_1DAY; } else { $period = (int) $period; } $group = agents_get_agentmodule_group($module_id); $agentId = (int) get_parameter('id_agent'); $server_name = (string) get_parameter('server_name'); if (is_metaconsole()) { $server = metaconsole_get_connection($server_name); if (metaconsole_connect($server) != NOERR) { return; } $conexion = false; } else { $conexion = false; } $freesearch = (string) get_parameter('freesearch', ''); $free_checkbox = (bool) get_parameter('free_checkbox', false); $selection_mode = get_parameter('selection_mode', 'fromnow'); $utimestamp = get_system_time(); $date_from = (string) get_parameter( 'date_from', date(DATE_FORMAT, ($utimestamp - SECONDS_1DAY)) ); $time_from = (string) get_parameter( 'time_from', date(TIME_FORMAT, ($utimestamp - SECONDS_1DAY)) ); $date_to = (string) get_parameter( 'date_to', date(DATE_FORMAT, $utimestamp) ); $time_to = (string) get_parameter( 'time_to', date(TIME_FORMAT, $utimestamp) ); // Definition of new table. $formtable = new stdClass(); $formtable->width = '98%'; $formtable->class = 'databox'; $formtable->data = []; $formtable->size = []; $moduletype_name = modules_get_moduletype_name( modules_get_agentmodule_type($module_id) ); $periods = [ SECONDS_5MINUTES => __('5 minutes'), SECONDS_30MINUTES => __('30 minutes'), SECONDS_1HOUR => __('1 hour'), SECONDS_6HOURS => __('6 hours'), SECONDS_12HOURS => __('12 hours'), SECONDS_1DAY => __('1 day'), SECONDS_1WEEK => __('1 week'), SECONDS_15DAYS => __('15 days'), SECONDS_1MONTH => __('1 month'), SECONDS_3MONTHS => __('3 months'), SECONDS_6MONTHS => __('6 months'), SECONDS_1YEAR => __('1 year'), SECONDS_2YEARS => __('2 years'), SECONDS_3YEARS => __('3 years'), ]; $formtable->data[0][0] = html_print_radio_button_extended( 'selection_mode', 'fromnow', '', $selection_mode, false, '', 'class="mrgn_right_15px"', true ).__('Choose a time from now'); $formtable->data[0][1] = html_print_select( $periods, 'period', $period, '', '', 0, true, false, false ); $formtable->data[0][2] = ''; $formtable->data[0][3] = "".html_print_image('images/refresh.png', true, ['style' => 'vertical-align: middle;', 'border' => '0', 'class' => 'invert_filter' ]).''; $formtable->rowspan[0][3] = 2; $formtable->cellstyle[0][3] = 'vertical-align: middle;'; $formtable->data[1][0] = html_print_radio_button_extended( 'selection_mode', 'range', '', $selection_mode, false, '', 'class="mrgn_right_15px"', true ).__('Specify time range'); $formtable->data[1][1] = __('Timestamp from:'); $formtable->data[1][2] = html_print_input_text( 'date_from', $date_from, '', 10, 10, true ); $formtable->data[1][2] .= html_print_input_text( 'time_from', $time_from, '', 9, 7, true ); $formtable->data[1][1] .= '
'; $formtable->data[1][1] .= __('Timestamp to:'); $formtable->data[1][2] .= '
'; $formtable->data[1][2] .= html_print_input_text( 'date_to', $date_to, '', 10, 10, true ); $formtable->data[1][2] .= html_print_input_text( 'time_to', $time_to, '', 9, 7, true ); $freesearch_object = ''; if (preg_match('/_string/', $moduletype_name)) { $formtable->data[2][0] = __('Free search').' '; $formtable->data[2][1] = html_print_input_text( 'freesearch', $freesearch, '', 20, null, true ); $formtable->data[2][2] = html_print_checkbox( 'free_checkbox', 1, $free_checkbox, true ); $formtable->data[2][2] .= ' '.__('Exact phrase'); $freesearch_object = json_encode( [ 'value' => io_safe_output($freesearch), 'exact' => (bool) $free_checkbox, ] ); } html_print_table($formtable); $offset = (int) get_parameter('offset'); $block_size = (int) $config['block_size']; $columns = []; $datetime_from = strtotime($date_from.' '.$time_from); $datetime_to = strtotime($date_to.' '.$time_to); $columns = [ 'Data' => [ 'data', 'modules_format_data', 'align' => 'center', 'width' => '230px' ], ]; if ($config['prominent_time'] == 'comparation') { $columns['Time'] = [ 'utimestamp', 'modules_format_time', 'align' => 'center', 'width' => '50px' ]; } else { $columns['Timestamp'] = [ 'utimestamp', 'modules_format_timestamp', 'align' => 'center', 'width' => '50px' ]; } if ($selection_mode == 'fromnow') { $date = get_system_time(); $period = $period; } else { $period = ($datetime_to - $datetime_from); $date = ($datetime_from + $period); } $count = modules_get_agentmodule_data( $module_id, $period, $date, true, $conexion, 'ASC', $freesearch_object ); $module_data = modules_get_agentmodule_data( $module_id, $period, $date, false, $conexion, 'DESC', $freesearch_object ); if (empty($module_data)) { $result = []; } else { // Paginate the result. $result = array_slice($module_data, $offset, $block_size); } // Definition of new class. $table = new stdClass(); $table->width = '100%'; $table->class = 'databox data'; $table->data = []; $index = 0; foreach ($columns as $col => $attr) { $table->head[$index] = $col; if ($col === 'Data') { $table->head[$index] .= ui_print_help_tip( __('In Pandora FMS, data is stored compressed. The data visualization in database, charts or CSV exported data won\'t match, because is interpreted at runtime. Please check \'Pandora FMS Engineering\' chapter from documentation.'), true ); } if (isset($attr['align'])) { $table->align[$index] = $attr['align']; } if (isset($attr['width'])) { $table->size[$index] = $attr['width']; } $index++; } $id_type_web_content_string = db_get_value( 'id_tipo', 'ttipo_modulo', 'nombre', 'web_content_string' ); $post_process = db_get_value_filter( 'post_process', 'tagente_modulo', ['id_agente_modulo' => $module_id] ); $unit = db_get_value_filter( 'unit', 'tagente_modulo', ['id_agente_modulo' => $module_id] ); foreach ($result as $row) { $data = []; $is_web_content_string = (bool) db_get_value_filter( 'id_agente_modulo', 'tagente_modulo', [ 'id_agente_modulo' => $row['id_agente_modulo'], 'id_tipo_modulo' => $id_type_web_content_string, ] ); foreach ($columns as $col => $attr) { if ($attr[1] != 'modules_format_data') { $data[] = date('d F Y h:i:s A', $row['utimestamp']); } else if (is_snapshot_data($row[$attr[0]])) { if ($config['command_snapshot']) { $imagetab = ''; $image = ''; $data[] = ''.$image.''; } else { $data[] = ''.wordwrap(io_safe_input($row[$attr[0]]), 60, "
\n", true).'
'; } } else if (($config['command_snapshot'] == '0') && (preg_match("/[\n]+/i", $row[$attr[0]]))) { // Its a single-data, multiline data (data snapshot) ? // I dont why, but using index (value) method, data is automatically converted to html entities ¿? $data[] = html_print_result_div($row[$attr[0]]); } else if ($is_web_content_string) { // Fixed the goliat sends the strings from web // without HTML entities. $data[] = io_safe_input($row[$attr[0]]); } else { // Fixed the data from Selenium Plugin. if ($row[$attr[0]] != strip_tags($row[$attr[0]])) { $data[] = html_print_result_div($row[$attr[0]]); } else if (is_numeric($row[$attr[0]]) && !modules_is_string_type($row['module_type']) ) { switch ($row['module_type']) { case 15: $value = db_get_value( 'snmp_oid', 'tagente_modulo', 'id_agente_modulo', $module_id ); // System Uptime: // In case of System Uptime module, // shows data in format // "Days hours minutes seconds" if and only if // selected module unit is "_timeticks_" // Take notice that selected unit // may not be postrocess unit. if ($value == '.1.3.6.1.2.1.1.3.0' || $value == '.1.3.6.1.2.1.25.1.1.0' ) { $data_macro = modules_get_unit_macro( $row[$attr[0]], $unit ); if ($data_macro) { $data[] = $data_macro; } else { $data[] = remove_right_zeros( number_format( $row[$attr[0]], $config['graph_precision'] ) ); } } else { $data[] = remove_right_zeros( number_format( $row[$attr[0]], $config['graph_precision'] ) ); } break; default: $data_macro = modules_get_unit_macro( $row[$attr[0]], $unit ); if ($data_macro) { $data[] = $data_macro; } else { $data[] = remove_right_zeros( number_format( $row[$attr[0]], $config['graph_precision'] ) ); } break; } } else { if ($row[$attr[0]] == '') { $data[] = 'No data'; } else { $data_macro = modules_get_unit_macro( $row[$attr[0]], $unit ); if ($data_macro) { $data[] = $data_macro; } else { $data[] = html_print_result_div( $row[$attr[0]] ); } } } } } array_push($table->data, $data); if (count($table->data) > 200) { break; } } if (empty($table->data)) { ui_print_error_message(__('No available data to show')); } else { ui_pagination( count($count), false, $offset, 0, false, 'offset', true, 'binary_dialog' ); html_print_table($table); } if (is_metaconsole()) { metaconsole_restore_db(); } return; } if ($get_module_autocomplete_input) { $id_agent = (int) get_parameter('id_agent'); ob_clean(); if ($id_agent > 0) { html_print_autocomplete_modules( 'autocomplete_module_name', '', [$id_agent] ); return; } return; } if ($add_module_relation) { $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 ); } else { echo json_encode($result); return; } } 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 ); } else { echo json_encode($result); return; } } if ($id_module_a > 0 && $id_module_b > 0) { $result = modules_add_relation($id_module_a, $id_module_b, $type); } echo json_encode($result); return; } if ($remove_module_relation) { $id_relation = (int) get_parameter('id_relation'); if ($id_relation > 0) { $result = (bool) modules_delete_relation($id_relation); } echo json_encode($result); return; } if ($change_module_relation_updates) { $id_relation = (int) get_parameter('id_relation'); if ($id_relation > 0) { $result = (bool) modules_change_relation_lock($id_relation); } echo json_encode($result); return; } if ($get_id_tag) { $tag_name = get_parameter('tag_name'); if ($tag_name) { $tag_id = db_get_value('id_tag', 'ttag', 'name', $tag_name); } else { $tag_id = 0; } echo $tag_id; return; } if ($list_modules) { include_once $config['homedir'].'/include/functions_modules.php'; include_once $config['homedir'].'/include/functions_servers.php'; include_once $config['homedir'].'/include/functions_tags.php'; include_once $config['homedir'].'/include/functions_clippy.php'; // Disable module edition in cluster module list. $cluster_view = (bool) preg_match( '/operation\/cluster\/cluster/', $_SERVER['HTTP_REFERER'] ); $agent_a = check_acl($config['id_user'], 0, 'AR'); $agent_w = check_acl($config['id_user'], 0, 'AW'); $access = ($agent_a == true) ? 'AR' : (($agent_w == true) ? 'AW' : 'AR'); $id_agent = (int) get_parameter('id_agente', 0); $id_agente = $id_agent; $show_notinit = (int) get_parameter('show_notinit', 0); $cluster_list = (int) get_parameter('cluster_list', 0); $url = 'index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente='.$id_agent; $selectTypeUp = false; $selectTypeDown = false; $selectNameUp = false; $selectNameDown = false; $selectStatusUp = false; $selectStatusDown = false; $selectDataUp = false; $selectDataDown = false; $selectLastContactUp = false; $selectLastContactDown = false; $sortField = get_parameter('sort_field'); $sort = get_parameter('sort', 'none'); $selected = true; $order[] = [ 'field' => 'tmodule_group.name', 'order' => 'ASC', ]; switch ($sortField) { case 'type': switch ($sort) { case 'up': default: $selectTypeUp = $selected; $order[] = [ 'field' => 'tagente_modulo.id_modulo', 'order' => 'ASC', ]; break; case 'down': $selectTypeDown = $selected; $order[] = [ 'field' => 'tagente_modulo.id_modulo', 'order' => 'DESC', ]; break; } break; case 'name': switch ($sort) { case 'up': $selectNameUp = $selected; $order[] = [ 'field' => 'tagente_modulo.nombre', 'order' => 'ASC', ]; break; case 'down': $selectNameDown = $selected; $order[] = [ 'field' => 'tagente_modulo.nombre', 'order' => 'DESC', ]; break; default: // Ignore. break; } break; case 'status': switch ($sort) { case 'up': $selectStatusUp = $selected; $order[] = [ 'field' => 'tagente_estado.estado=0 DESC,tagente_estado.estado=3 DESC,tagente_estado.estado=2 DESC,tagente_estado.estado=1 DESC', 'order' => '', ]; break; case 'down': $selectStatusDown = $selected; $order[] = [ 'field' => 'tagente_estado.estado=1 DESC,tagente_estado.estado=2 DESC,tagente_estado.estado=3 DESC,tagente_estado.estado=0 DESC', 'order' => '', ]; break; default: // Ignore. break; } break; case 'last_contact': switch ($sort) { case 'up': $selectLastContactUp = $selected; $order[] = [ 'field' => 'tagente_estado.utimestamp', 'order' => 'ASC', ]; break; case 'down': $selectLastContactDown = $selected; $order[] = [ 'field' => 'tagente_estado.utimestamp', 'order' => 'DESC', ]; break; default: // Ignore. break; } break; default: $selectTypeUp = false; $selectTypeDown = false; $selectNameUp = $selected; $selectNameDown = false; $selectStatusUp = false; $selectStatusDown = false; $selectDataUp = false; $selectDataDown = false; $selectLastContactUp = false; $selectLastContactDown = false; $order[] = [ 'field' => 'tagente_modulo.nombre', 'order' => 'ASC', ]; break; } // Fix: for tag functionality groups have to be all user_groups // (propagate ACL funct!). $groups = users_get_groups($config['id_user'], $access); $tags_join = ''; $tags_sql = ''; if ($cluster_list != 1) { $tags = tags_get_user_applied_agent_tags($id_agent, $access); if ($tags === false) { $tags_sql = ' AND 1=0'; } else if (is_array($tags)) { $tags_sql = ' AND ttag_module.id_tag IN ('.implode(',', $tags).')'; $tags_join = 'LEFT JOIN ttag_module ON ttag_module.id_agente_modulo = tagente_modulo.id_agente_modulo'; } } $status_filter_monitor = (int) get_parameter( 'status_filter_monitor', -1 ); $status_text_monitor = get_parameter('status_text_monitor', ''); $filter_monitors = (bool) get_parameter('filter_monitors', false); $status_module_group = get_parameter('status_module_group', -1); $monitors_change_filter = (bool) get_parameter( 'monitors_change_filter', false ); $status_filter_sql = '1 = 1'; if ($status_filter_monitor == AGENT_MODULE_STATUS_NOT_NORMAL) { // Not normal. $status_filter_sql = ' tagente_estado.estado <> 0'; } else if ($status_filter_monitor != -1) { $status_filter_sql = 'tagente_estado.estado = '.$status_filter_monitor; } if ($status_module_group != -1) { $status_module_group_filter = 'tagente_modulo.id_module_group = '.$status_module_group; } else { $status_module_group_filter = 'tagente_modulo.id_module_group >= 0'; } $status_text_monitor_sql = '%'; if (!empty($status_text_monitor)) { $status_text_monitor_sql .= $status_text_monitor.'%'; } if (!$show_notinit) { $monitor_filter = AGENT_MODULE_STATUS_NO_DATA; } else { $monitor_filter = -15; } // Count monitors/modules // Build the order sql. $first = true; foreach ($order as $ord) { if ($first) { $first = false; } else { $order_sql .= ','; } $order_sql .= $ord['field'].' '.$ord['order']; } $sql_condition = "FROM tagente_modulo $tags_join INNER JOIN tagente_estado ON tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo LEFT JOIN tmodule_group ON tagente_modulo.id_module_group = tmodule_group.id_mg WHERE tagente_modulo.id_agente = $id_agente AND nombre LIKE '$status_text_monitor_sql' AND delete_pending = 0 AND disabled = 0 AND $status_filter_sql AND $status_module_group_filter $tags_sql AND tagente_estado.estado != $monitor_filter "; $count_modules = db_get_all_rows_sql( 'SELECT COUNT(DISTINCT tagente_modulo.id_agente_modulo)'.$sql_condition ); if (isset($count_modules[0])) { $count_modules = reset($count_modules[0]); } else { $count_modules = 0; } // Get monitors/modules // Get all module from agent. $sql_modules_info = "SELECT tagente_estado.*, tagente_modulo.*, tmodule_group.* $sql_condition GROUP BY tagente_modulo.id_agente_modulo ORDER BY $order_sql"; if ($monitors_change_filter) { $limit = ' LIMIT '.$config['block_size'].' OFFSET 0'; } else { $limit = ' LIMIT '.$config['block_size'].' OFFSET '.get_parameter('offset', 0); } $paginate_module = false; if (isset($config['paginate_module'])) { $paginate_module = $config['paginate_module']; } if ($paginate_module) { $modules = db_get_all_rows_sql($sql_modules_info.$limit); } else { $modules = db_get_all_rows_sql($sql_modules_info); } if (empty($modules)) { $modules = []; } // Urls to sort the table. $url_up_type = $url.'&sort_field=type&sort=up&refr=&filter_monitors=1&status_filter_monitor='.$status_filter_monitor.' &status_text_monitor='.$status_text_monitor.'&status_module_group= '.$status_module_group; $url_down_type = $url.'&sort_field=type&sort=down&refr=&filter_monitors=1&status_filter_monitor='.$status_filter_monitor.' &status_text_monitor='.$status_text_monitor.'&status_module_group= '.$status_module_group; $url_up_name = $url.'&sort_field=name&sort=up&refr=&filter_monitors=1&status_filter_monitor='.$status_filter_monitor.' &status_text_monitor='.$status_text_monitor.'&status_module_group= '.$status_module_group; $url_down_name = $url.'&sort_field=name&sort=down&refr=&filter_monitors=1&status_filter_monitor='.$status_filter_monitor.' &status_text_monitor='.$status_text_monitor.'&status_module_group= '.$status_module_group; $url_up_status = $url.'&sort_field=status&sort=up&refr=&filter_monitors=1&status_filter_monitor='.$status_filter_monitor.' &status_text_monitor='.$status_text_monitor.'&status_module_group= '.$status_module_group; $url_down_status = $url.'&sort_field=status&sort=down&refr=&filter_monitors=1&status_filter_monitor='.$status_filter_monitor.' &status_text_monitor='.$status_text_monitor.'&status_module_group= '.$status_module_group; $url_up_last = $url.'&sort_field=last_contact&sort=up&refr=&filter_monitors=1&status_filter_monitor='.$status_filter_monitor.' &status_text_monitor='.$status_text_monitor.'&status_module_group= '.$status_module_group; $url_down_last = $url.'&sort_field=last_contact&sort=down&refr=&filter_monitors=1&status_filter_monitor='.$status_filter_monitor.' &status_text_monitor='.$status_text_monitor.'&status_module_group= '.$status_module_group; $table = new stdClass(); $table->width = '100%'; $table->styleTable = 'border: 0;border-radius: 0;'; $table->cellpadding = 0; $table->cellspacing = 0; $table->class = 'info_table'; $table->head = []; $table->data = []; $isFunctionPolicies = enterprise_include_once('include/functions_policies.php'); if ($agent_w) { $table->head[0] = "".__('F.').''; } if ($isFunctionPolicies !== ENTERPRISE_NOT_HOOK) { $table->head[1] = "".__('P.').''; } $table->head[2] = __('Type').ui_get_sorting_arrows($url_up_type, $url_down_type, $selectTypeUp, $selectTypeDown); $table->head[3] = __('Module name').ui_get_sorting_arrows($url_up_name, $url_down_name, $selectNameUp, $selectNameDown); $table->head[4] = __('Description'); $table->head[5] = __('Status').ui_get_sorting_arrows($url_up_status, $url_down_status, $selectStatusUp, $selectStatusDown); $table->head[6] = __('Thresholds'); $table->head[7] = __('Data'); $table->head[8] = __('Graph'); $table->head[9] = __('Last contact').ui_get_sorting_arrows($url_up_last, $url_down_last, $selectLastContactUp, $selectLastContactDown); $table->align = []; $table->align[0] = 'center'; $table->align[1] = 'left'; $table->align[2] = 'left'; $table->align[3] = 'left'; $table->align[4] = 'left'; $table->align[5] = 'left'; $table->align[6] = 'center'; $table->align[7] = 'left'; $table->align[8] = 'center'; $table->align[9] = 'right'; $table->headstyle[2] = 'min-width: 65px'; $table->headstyle[3] = 'min-width: 80px'; $table->size[3] = '25%'; $table->style[3] = 'max-width: 28em;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;'; $table->size[4] = '25%'; $table->headstyle[5] = 'min-width: 65px'; $table->headstyle[6] = 'min-width: 80px; text-align: center;'; $table->headstyle[7] = 'min-width: 80px;'; $table->headstyle[8] = 'min-width: 70px; text-align: center;'; $table->headstyle[9] = 'min-width: 100px; text-align: right;'; $last_modulegroup = 0; $rowIndex = 0; $id_type_web_content_string = db_get_value( 'id_tipo', 'ttipo_modulo', 'nombre', 'web_content_string' ); $show_context_help_first_time = false; $hierachy_mode = get_parameter('hierachy_mode', false); if ($hierachy_mode == 'true') { $modules_hierachy = []; $modules_hierachy = get_hierachy_modules_tree($modules); $modules_dt = get_dt_from_modules_tree($modules_hierachy); $modules = $modules_dt; } foreach ($modules as $module) { if ($hierachy_mode !== 'true') { // The code add the row of 1 cell with title of group for to be more organice the list. if ($module['id_module_group'] != $last_modulegroup) { $table->colspan[$rowIndex][0] = count($table->head); $table->rowclass[$rowIndex] = 'datos4'; array_push($table->data, [''.$module['name'].'']); $rowIndex++; $last_modulegroup = $module['id_module_group']; } // End of title of group. } $data = []; if (($module['id_modulo'] != 1) && ($module['id_tipo_modulo'] != 100)) { if ($agent_w) { if ($module['flag'] == 0) { $data[0] = ''.html_print_image('images/target.png', true, ['border' => '0', 'title' => __('Force'), 'class' => 'invert_filter' ]).''; } else { $data[0] = ''.html_print_image('images/refresh.png', true, ['border' => '0', 'title' => __('Refresh'), 'class' => 'invert_filter']).''; } } } else { if ($agent_w) { $data[0] = ''; } } if ($isFunctionPolicies !== ENTERPRISE_NOT_HOOK) { if ($module['id_policy_module'] != 0) { $linked = policies_is_module_linked($module['id_agente_modulo']); $id_policy = db_get_value_sql('SELECT id_policy FROM tpolicy_modules WHERE id = '.$module['id_policy_module']); if ($id_policy != '') { $name_policy = db_get_value_sql('SELECT name FROM tpolicies WHERE id = '.$id_policy); } else { $name_policy = __('Unknown'); } $policyInfo = policies_info_module_policy($module['id_policy_module']); $adopt = false; if (policies_is_module_adopt($module['id_agente_modulo'])) { $adopt = true; } if ($linked) { if ($adopt) { $img = 'images/policies_brick.png'; $title = '('.__('Adopted').') '.$name_policy; } else { $img = 'images/policies_mc.png'; $title = $name_policy; } } else { if ($adopt) { $img = 'images/policies_not_brick.png'; $title = '('.__('Unlinked').') ('.__('Adopted').') '.$name_policy; } else { $img = 'images/unlinkpolicy.png'; $title = '('.__('Unlinked').') '.$name_policy; } } $data[1] = ''.html_print_image($img, true, ['title' => $title]).''; } else { $data[1] = ''; } } $data[2] = servers_show_type($module['id_modulo']).' '; if (check_acl($config['id_user'], $id_grupo, 'AW') && $cluster_view === false ) { $data[2] .= ''.html_print_image('images/config.png', true, ['alt' => '0', 'border' => '', 'title' => __('Edit'), 'class' => 'action_button_img']).''; } $data[3] = ''; if (isset($module['deep']) && ($module['deep'] != 0)) { $data[3] .= str_repeat('    ', $module['deep']); $data[3] .= html_print_image('images/icono_escuadra.png', true, ['style' => 'padding-bottom: inherit;']).'  '; } if ($module['quiet']) { $data[3] .= html_print_image( 'images/dot_blue.png', true, [ 'border' => '0', 'title' => __('Quiet'), 'alt' => '', ] ).' '; } $data[3] .= ui_print_truncate_text($module['nombre'], 'module_medium'); if (!empty($module['extended_info'])) { if ($module['extended_info'] != '') { $data[3] .= ui_print_help_tip($module['extended_info'], true, '/images/default_list.png'); } } // Adds tag context information. if (tags_get_modules_tag_count($module['id_agente_modulo']) > 0) { $data[3] .= ' '.html_print_image('images/tag_red.png', true, ['id' => 'tag-details-'.$module['id_agente_modulo'], 'class' => 'img_help invert_filter']).' '; } // Adds relations context information. if (modules_relation_exists($module['id_agente_modulo'])) { $data[3] .= ' '.html_print_image('images/link2.png', true, ['id' => 'relations-details-'.$module['id_agente_modulo'], 'class' => 'img_help']).' '; } $data[4] = ui_print_string_substr($module['descripcion'], 60, true, 8); if ($module['datos'] != strip_tags($module['datos'])) { $module_value = io_safe_input($module['datos']); } else { $module_value = io_safe_output($module['datos']); } modules_get_status( $module['id_agente_modulo'], $module['estado'], $module_value, $status, $title ); $last_status_change_text = 'Time elapsed since last status change: '; $last_status_change_text .= !empty($module['last_status_change']) ? human_time_comparation($module['last_status_change']) : __('N/A'); $data[5] = ui_print_status_image($status, htmlspecialchars($title), true, false, false, false, $last_status_change_text); if (!$show_context_help_first_time) { $show_context_help_first_time = true; if ($module['estado'] == AGENT_MODULE_STATUS_UNKNOWN) { $data[5] .= clippy_context_help('module_unknow'); } } $salida = modules_get_agentmodule_data_for_humans($module); if ($module['id_tipo_modulo'] != 25) { $data[6] = ui_print_module_warn_value($module['max_warning'], $module['min_warning'], $module['str_warning'], $module['max_critical'], $module['min_critical'], $module['str_critical'], $module['warning_inverse'], $module['critical_inverse']); } else { $data[6] = ''; } $data[7] = $salida; $graph_type = return_graphtype($module['id_tipo_modulo']); $data[8] = ' '; if ($module['history_data'] == 1) { $tresholds = true; if (empty((float) $module['min_warning']) === true && empty((float) $module['max_warning']) === true && empty($module['warning_inverse']) === true && empty((float) $module['min_critical']) === true && empty((float) $module['max_critical']) === true && empty($module['critical_inverse']) === true ) { $tresholds = false; } $nombre_tipo_modulo = modules_get_moduletype_name($module['id_tipo_modulo']); $handle = 'stat'.$nombre_tipo_modulo.'_'.$module['id_agente_modulo']; $url = 'include/procesos.php?agente='.$module['id_agente_modulo']; $win_handle = dechex(crc32($module['id_agente_modulo'].$module['nombre'])); // Try to display the SNMP module realtime graph. $rt_button = get_module_realtime_link_graph($module); if (empty($rt_button) === false) { $data[8] = $rt_button.'  '; } // Show events for boolean modules by default. if ($graph_type == 'boolean') { $draw_events = 1; } else { $draw_events = 0; } if ($tresholds === true || $graph_type === 'boolean') { $link = "winopeng_var('".'operation/agentes/stat_win.php?'."type=$graph_type&".'period='.SECONDS_1DAY.'&id='.$module['id_agente_modulo'].'&refresh='.SECONDS_10MINUTES.'&'."histogram=1', 'day_".$win_handle."', 800, 480)"; $data[8] .= ''.html_print_image( 'images/histograma.png', true, [ 'border' => '0', 'alt' => '', 'class' => 'invert_filter', ] ).'   '; } $link = "winopeng_var('".'operation/agentes/stat_win.php?'."type=$graph_type&".'period='.SECONDS_1DAY.'&id='.$module['id_agente_modulo'].'&refresh='.SECONDS_10MINUTES.'&'."draw_events=$draw_events', 'day_".$win_handle."', 800, 480)"; if (!is_snapshot_data($module['datos'])) { $data[8] .= ''.html_print_image( 'images/chart.png', true, [ 'border' => '0', 'alt' => '', 'class' => 'invert_filter', ] ).'   '; } $server_name = ''; $modules_get_agentmodule_name = modules_get_agentmodule_name($module['id_agente_modulo']); // Escape the double quotes that may have the name of the module. $modules_get_agentmodule_name = str_replace('"', '\"', $modules_get_agentmodule_name); $data[8] .= "".html_print_image( 'images/binary.png', true, [ 'border' => '0', 'alt' => '', 'class' => 'invert_filter', ] ).''; } if ($module['estado'] == 3) { $data[9] = ''; } else { $data[9] = ''; } $data[9] .= ui_print_timestamp($module['utimestamp'], true, ['style' => 'font-size: 7pt']); $data[9] .= ''; array_push($table->data, $data); $rowIndex++; } ui_require_javascript_file('pandora.js'); ?> data)) { if ($filter_monitors) { ui_print_info_message([ 'no_close' => true, 'message' => __('Any monitors aren\'t with this filter.') ]); } else { ui_print_info_message([ 'no_close' => true, 'message' => __('This agent doesn\'t have any active monitors.') ]); } } else { $url = 'index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente='.$id_agente.'&refr=&filter_monitors=1&status_filter_monitor='.$status_filter_monitor.'&status_text_monitor='.$status_text_monitor.'&status_module_group='.$status_module_group; if ($paginate_module) { ui_pagination( $count_modules, false, 0, 0, false, 'offset', true, '', 'pagination_list_modules(offset_param)', [ 'count' => '', 'offset' => 'offset_param', ] ); } html_print_table($table); if ($paginate_module) { ui_pagination( $count_modules, false, 0, 0, false, 'offset', true, 'pagination-bottom', 'pagination_list_modules(offset_param)', [ 'count' => '', 'offset' => 'offset_param', ] ); } } unset($table); unset($table_data); } if ($get_type) { $id_module = (int) get_parameter('id_module'); $module = modules_get_agentmodule($id_module); $graph_type = return_graphtype($module['id_tipo_modulo']); echo $graph_type; return; } if ($get_graph_module === true) { global $config; $output = ''; $graph_data = get_parameter('graph_data', ''); $params = json_decode(base64_decode($graph_data), true); $server_id = (int) get_parameter('server_id', 0); include_once $config['homedir'].'/include/functions_graph.php'; // Metaconsole connection to the node. if (is_metaconsole() === true && empty($server_id) === false) { $server = metaconsole_get_connection_by_id($server_id); metaconsole_connect($server); } if ($params['histogram'] === true) { $params['id_agent_module'] = $params['agent_module_id']; $params['dinamic_proc'] = 1; $output .= '
'; if ($params['compare'] === 'separated') { $graph = \reporting_module_histogram_graph( ['datetime' => ($params['begin_date'] - $params['period'])], $params ); $output .= $graph['chart']; } $graph = \reporting_module_histogram_graph( ['datetime' => $params['begin_date']], $params ); $output .= $graph['chart']; $output .= '
'; } else { $output .= grafico_modulo_sparse($params); } if (is_metaconsole() === true && empty($server_id) === false) { metaconsole_restore_db(); } echo $output; return; } if ($get_graph_module_interfaces === true) { global $config; include_once $config['homedir'].'/include/functions_graph.php'; $output = ''; $graph_data = get_parameter('graph_data', ''); $params = json_decode(base64_decode($graph_data), true); $modules = get_parameter('modules', ''); $modules = json_decode(base64_decode($modules), true); $graph_data_combined = get_parameter('graph_data_combined', ''); $params_combined = json_decode( base64_decode($graph_data_combined), true ); $output .= graphic_combined_module( $modules, $params, $params_combined ); echo $output; return; } }