$value) { if (!empty($value)) $ag_custom_fields_params .= '&ag_custom_fields[' . $id . ']=' . $value; } } if ($id_module) { $status = -1; $ag_modulename = modules_get_agentmodule_name($id_module); $ag_freestring = modules_get_agentmodule_agent_alias($id_module); } enterprise_hook('open_meta_frame'); // Get Groups and profiles from user $user_groups = implode (',', array_keys (users_get_groups ())); //////////////////////////////////// // Begin Build SQL sentences $sql_from = ' FROM ttipo_modulo,tagente, tagente_modulo, tagente_estado,tmodule '; $sql_conditions_base = ' WHERE tagente.id_agente = tagente_modulo.id_agente AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo AND tagente_modulo.id_tipo_modulo = ttipo_modulo.id_tipo AND tmodule.id_module = tagente_modulo.id_modulo'; $sql_conditions = ' AND tagente.disabled = 0'; if (is_numeric($ag_group)) { $id_ag_group = 0; } else { $id_ag_group = db_get_value('id_grupo', 'tgrupo', 'nombre', $ag_group); } // Agent group selector if (!is_metaconsole()) { if ($ag_group > 0 && check_acl ($config['id_user'], $ag_group, 'AR')) { $sql_conditions_group = sprintf (' AND tagente.id_grupo = %d', $ag_group); } elseif ($user_groups != '') { // User has explicit permission on group 1 ? $sql_conditions_group = ' AND tagente.id_grupo IN ('.$user_groups.')'; } } else { if (((int)$ag_group !== 0) && (check_acl ($config['id_user'], $id_ag_group, 'AR'))) { $sql_conditions_group = sprintf (' AND tagente.id_grupo IN (%s) ', $ag_group); } elseif ($user_groups != '') { // User has explicit permission on group 1 ? $sql_conditions_group = ' AND tagente.id_grupo IN ('.$user_groups.')'; } } // Module group if (is_metaconsole()) { if ($modulegroup != '-1') $sql_conditions .= sprintf (' AND tagente_modulo.id_module_group IN (%s)', $modulegroup); } else if ($modulegroup > -1) { $sql_conditions .= sprintf (' AND tagente_modulo.id_module_group = \'%d\'', $modulegroup); } // Module name selector if ($ag_modulename != '') { $sql_conditions .= sprintf (' AND tagente_modulo.nombre = \'%s\'', $ag_modulename); } if ($module_option !== 0) { if ($module_option == 1) { // Only enabled $sql_conditions .= sprintf (' AND tagente_modulo.disabled = 0'); } else if ($module_option == 2) { // Only disabled $sql_conditions .= sprintf (' AND tagente_modulo.disabled = 1'); } } if ($datatype != '') { $sql_conditions .= sprintf (' AND ttipo_modulo.id_tipo =' .$datatype); } if ($moduletype != '') { $sql_conditions .= sprintf (' AND tagente_modulo.id_modulo =' .$moduletype); } // Freestring selector if ($ag_freestring != '') { $sql_conditions .= ' AND (tagente.nombre COLLATE utf8_general_ci LIKE \'%%' . $ag_freestring . '%%\' OR tagente.alias COLLATE utf8_general_ci LIKE \'%%' . $ag_freestring . '%%\' OR tagente_modulo.nombre COLLATE utf8_general_ci LIKE \'%%' . $ag_freestring . '%%\' OR tagente_modulo.descripcion COLLATE utf8_general_ci LIKE \'%%' . $ag_freestring . '%%\')'; } // Status selector if ($status == AGENT_MODULE_STATUS_NORMAL) { //Normal $sql_conditions .= ' AND tagente_estado.estado = 0 AND (utimestamp > 0 OR (tagente_modulo.id_tipo_modulo IN(21,22,23,100))) '; } elseif ($status == AGENT_MODULE_STATUS_CRITICAL_BAD) { //Critical $sql_conditions .= ' AND tagente_estado.estado = 1 AND utimestamp > 0'; } elseif ($status == AGENT_MODULE_STATUS_WARNING) { //Warning $sql_conditions .= ' AND tagente_estado.estado = 2 AND utimestamp > 0'; } elseif ($status == AGENT_MODULE_STATUS_NOT_NORMAL) { //Not normal $sql_conditions .= ' AND tagente_estado.estado <> 0'; } elseif ($status == AGENT_MODULE_STATUS_UNKNOWN) { //Unknown $sql_conditions .= ' AND tagente_estado.estado = 3 AND tagente_estado.utimestamp <> 0'; } elseif ($status == AGENT_MODULE_STATUS_NOT_INIT) { //Not init $sql_conditions .= ' AND tagente_estado.utimestamp = 0 AND tagente_modulo.id_tipo_modulo NOT IN (21,22,23,100)'; } // Filter by agent custom fields $sql_conditions_custom_fields = ""; if (!empty($ag_custom_fields)) { $cf_filter = array(); foreach ($ag_custom_fields as $field_id => $value) { if (!empty($value)) { $cf_filter[] = '(tagent_custom_data.id_field = ' . $field_id . ' AND tagent_custom_data.description LIKE \'%'.$value.'%\')'; } } if (!empty($cf_filter)) { $sql_conditions_custom_fields = ' AND tagente.id_agente IN ( SELECT tagent_custom_data.id_agent FROM tagent_custom_data WHERE ' . implode(' AND ', $cf_filter) . ')'; } } //Filter by tag if ($tag_filter !== 0) { if (is_metaconsole()) { $sql_conditions .= ' AND tagente_modulo.id_agente_modulo IN ( SELECT ttag_module.id_agente_modulo FROM ttag_module WHERE ttag_module.id_tag IN ('.$tag_filter.'))'; } else { $sql_conditions .= ' AND tagente_modulo.id_agente_modulo IN ( SELECT ttag_module.id_agente_modulo FROM ttag_module WHERE ttag_module.id_tag = ' . $tag_filter . ')'; } } // Apply the module ACL with tags $sql_conditions_tags = ''; if (!users_is_admin()) { if ($ag_group !== 0) { $sql_conditions_tags = tags_get_acl_tags($config['id_user'], $ag_group, 'AR', 'module_condition', 'AND', 'tagente_modulo', true, array(), false); } else { // Fix: for tag functionality groups have to be all user_groups (propagate ACL funct!) $groups = users_get_groups($config['id_user']); $sql_conditions_tags = tags_get_acl_tags( $config['id_user'], array_keys($groups), 'AR', 'module_condition', 'AND', 'tagente_modulo', true, array(), false); } if (is_numeric($sql_conditions_tags)) { $sql_conditions_tags = ' AND 1 = 0'; } } // Two modes of filter. All the filters and only ACLs filter $sql_conditions_all = $sql_conditions_base . $sql_conditions . $sql_conditions_group . $sql_conditions_tags . $sql_conditions_custom_fields; $sql_conditions_acl = $sql_conditions_base . $sql_conditions_group . $sql_conditions_tags . $sql_conditions_custom_fields; // Get count to paginate if (!defined('METACONSOLE')) $count = db_get_sql ('SELECT COUNT(tagente_modulo.id_agente_modulo) ' . $sql_from . $sql_conditions_all); // Get limit_sql depend of the metaconsole or standard mode if (is_metaconsole()) { // Offset will be used to get the subset of modules $inferior_limit = $offset; $superior_limit = $config['block_size'] + $offset; // Offset reset to get all elements $offset = 0; if (!isset($config['meta_num_elements'])) $config['meta_num_elements'] = 100; $limit_sql = $config['meta_num_elements']; } else $limit_sql = $config['block_size']; // End Build SQL sentences ///////////////////////////////////// // Start Build Search Form ///////////////////////////////////// $table = new StdClass(); $table->width = '100%'; $table->cellspacing = 0; $table->cellpadding = 0; $table->class = 'databox filters'; $table->style[0] = 'font-weight: bold;'; $table->style[1] = 'font-weight: bold;'; $table->style[2] = 'font-weight: bold;'; $table->style[3] = 'font-weight: bold;'; $table->style[4] = 'font-weight: bold;'; $table->data[0][0] = __('Group'); $table->data[0][1] = html_print_select_groups($config['id_user'], 'AR', true, 'ag_group', $ag_group, '', '', '0', true, false, false, '', false, '', false, false, 'id_grupo', false); $fields = array (); $fields[AGENT_MODULE_STATUS_NORMAL] = __('Normal'); $fields[AGENT_MODULE_STATUS_WARNING] = __('Warning'); $fields[AGENT_MODULE_STATUS_CRITICAL_BAD] = __('Critical'); $fields[AGENT_MODULE_STATUS_UNKNOWN] = __('Unknown'); $fields[AGENT_MODULE_STATUS_NOT_NORMAL] = __('Not normal'); //default $fields[AGENT_MODULE_STATUS_NOT_INIT] = __('Not init'); $table->data[0][2] = __('Monitor status'); $table->data[0][3] = html_print_select ($fields, 'status', $status, '', __('All'), -1, true, false, true, '', false, 'width: 150px;'); $rows_select = array(); $table->data[0][4] = __('Module group'); $rows_select[0] = __('Not assigned'); if (!is_metaconsole()) { $rows = db_get_all_rows_sql('SELECT * FROM tmodule_group ORDER BY name'); $rows = io_safe_output($rows); if (!empty($rows)) foreach ($rows as $module_group) $rows_select[$module_group['id_mg']] = $module_group['name']; } else { $rows_select = modules_get_modulegroups(); } $table->data[0][5] = html_print_select($rows_select, 'modulegroup', $modulegroup, '', __('All'), -1, true, false, true, '', false, 'width: 120px;'); $table->rowspan[0][6] = 2; $table->data[0][6] = html_print_submit_button (__('Show'), 'uptbutton', false, 'class="sub search" style="margin-top:0px;"',true); $modules = array(); $modules = modules_get_modules_name ($sql_from , $sql_conditions_acl, is_metaconsole()); $table->data[1][0] = __('Module name'); $table->data[1][1] = html_print_select (index_array ($modules, 'nombre', 'nombre'), 'ag_modulename', $ag_modulename, '', __('All'), '', true, false, true, '', false, 'width: 150px;'); $table->data[1][2] = __('Search'); $table->data[1][3] = html_print_input_text ('ag_freestring', $ag_freestring, '', 20, 30, true); if (!is_metaconsole()) $table->data[1][4] = __('Tags') . ui_print_help_tip(__('Only it is show tags in use.'), true); else $table->data[1][4] = __('Tags') . ui_print_help_tip(__('Only it is show tags in use.'), true); $tags = array(); $tags = tags_get_user_tags(); if (empty($tags)) { $table->data[1][5] = __('No tags'); } else { $table->data[1][5] = html_print_select ($tags, 'tag_filter', $tag_filter, '', __('All'), '', true, false, true, '', false, 'width: 150px;'); } $network_available = db_get_sql ("SELECT count(*) FROM tserver WHERE server_type = 1"); //POSTGRESQL AND ORACLE COMPATIBLE $wmi_available = db_get_sql ("SELECT count(*) FROM tserver WHERE server_type = 6"); //POSTGRESQL AND ORACLE COMPATIBLE $plugin_available = db_get_sql ("SELECT count(*) FROM tserver WHERE server_type = 4"); //POSTGRESQL AND ORACLE COMPATIBLE $prediction_available = db_get_sql ("SELECT count(*) FROM tserver WHERE server_type = 5"); //POSTGRESQL AND ORACLE COMPATIBLE // Development mode to use all servers if ($develop_bypass) { $network_available = 1; $wmi_available = 1; $plugin_available = 1; $prediction_available = 1; } $typemodules = array (); $typemodules[1] = __('Data server module'); if ($network_available) $typemodules[2] = __('Network server module'); if ($plugin_available) $typemodules[4] = __('Plugin server module'); if ($wmi_available) $typemodules[6] = __('WMI server module'); if ($prediction_available) $typemodules[5] = __('Prediction server module'); if (enterprise_installed()) { $typemodules[7] = __('Web server module'); } $table->data[2][0] = ''.__('Server type').''; $table->data[2][1] = html_print_select ($typemodules, 'moduletype',$moduletype, '', __('All'),'', true, false, true, '', false, 'width: 150px;'); $monitor_options = array(0 => __('All'), 1 => __('Only enabled'), 2 => __('Only disabled')); $table->data[2][2] = ''.__('Show monitors...').''; $table->data[2][3] = html_print_select ($monitor_options, 'module_option', $module_option, '', '','', true, false, true, '', false, 'width: 150px;'); $table->data[2][4] = 'data[2][4] .= 'style="display:none"'; } $table->data[2][4] .= '>'.__('Data type').''; $table->data[2][5] .='
'; switch ($moduletype) { case 1: $sql = sprintf ('SELECT id_tipo, descripcion FROM ttipo_modulo WHERE categoria IN (6,7,8,0,1,2,-1) order by descripcion '); break; case 2: $sql = sprintf ('SELECT id_tipo, descripcion FROM ttipo_modulo WHERE categoria between 3 and 5 '); break; case 4: $sql = sprintf ('SELECT id_tipo, descripcion FROM ttipo_modulo WHERE categoria between 0 and 2 '); break; case 6: $sql = sprintf ('SELECT id_tipo, descripcion FROM ttipo_modulo WHERE categoria between 0 and 2 '); break; case 7: $sql = sprintf ('SELECT id_tipo, descripcion FROM ttipo_modulo WHERE categoria = 9'); break; case 5: $sql = sprintf ('SELECT id_tipo, descripcion FROM ttipo_modulo WHERE categoria = 0'); break; case '': $sql = sprintf ('SELECT id_tipo, descripcion FROM ttipo_modulo'); break; } $a = db_get_all_rows_sql($sql); $table->data[2][5] .= ''; $table->data[2][5] .= '
'; $table_custom_fields = new stdClass(); $table_custom_fields->class = 'filters'; $table_custom_fields->width = '100%'; if (is_metaconsole()) { $table_custom_fields->styleTable = 'margin-left:0px; margin-top:15px;'; $table_custom_fields->cellpadding = '0'; $table_custom_fields->cellspacing = '0'; } $table_custom_fields->style = array(); if(!is_metaconsole()) $table_custom_fields->style[0] = 'font-weight: bold; width: 150px;'; else $table_custom_fields->style[0] = 'font-weight: bold;'; $table_custom_fields->colspan = array(); $table_custom_fields->data = array(); $custom_fields = db_get_all_fields_in_table('tagent_custom_fields'); if ($custom_fields === false) $custom_fields = array(); foreach ($custom_fields as $custom_field) { $row = array(); $row[0] = $custom_field['name']; $custom_field_value = ""; if (!empty($ag_custom_fields)) { $custom_field_value = $ag_custom_fields[$custom_field['id_field']]; if (empty($custom_field_value)) { $custom_field_value = ""; } } $row[1] = html_print_input_text ("ag_custom_fields[".$custom_field['id_field']."]", $custom_field_value, '', 100, 300, true); $table_custom_fields->data[] = $row; } $filters = '
'; if (is_metaconsole()) { $table->colspan[3][0] = 7; $table->cellstyle[3][0] = 'padding: 10px;'; $table->data[3][0] = ui_toggle( html_print_table($table_custom_fields, true), __('Advanced Options'), '', true, true); $filters .= html_print_table($table, true); $filters .= "
"; ui_toggle($filters, __('Show Options')); } else { $table->colspan[3][0] = 7; $table->cellstyle[3][0] = 'padding-left: 10px;'; $table->data[3][0] = ui_toggle(html_print_table($table_custom_fields, true), __('Agent custom fields'), '', true, true); $filters .= html_print_table($table, true); $filters .= ''; echo $filters; } unset($table); // End Build Search Form ///////////////////////////////////// // Sort functionality $selected = 'border: 1px solid black;'; $selectAgentNameUp = ''; $selectAgentNameDown = ''; $selectTypeUp = ''; $selectTypeDown = ''; $selectModuleNameUp = ''; $selectModuleNameDown = ''; $selectIntervalUp = ''; $selectIntervalDown = ''; $selectStatusUp = ''; $selectStatusDown = ''; $selectDataUp = ''; $selectDataDown = ''; $selectTimestampUp = ''; $selectTimestampDown = ''; $order = null; switch ($sortField) { case 'agent_alias': switch ($sort) { case 'up': $selectAgentNameUp = $selected; $order = array('field' => 'tagente.alias', 'order' => 'ASC'); break; case 'down': $selectAgentNameDown = $selected; $order = array('field' => 'tagente.alias', 'order' => 'DESC'); break; } break; case 'type': switch ($sort) { case 'up': $selectTypeUp = $selected; $order = array( 'field' => 'tagente_modulo.id_tipo_modulo', 'order' => 'ASC'); break; case 'down': $selectTypeDown = $selected; $order = array( 'field' => 'tagente_modulo.id_tipo_modulo', 'order' => 'DESC'); break; } break; case 'moduletype': switch ($sort) { case 'up': $selectTypeUp = $selected; $order = array( 'field' => 'tagente_modulo.id_modulo', 'order' => 'ASC'); break; case 'down': $selectTypeDown = $selected; $order = array( 'field' => 'tagente_modulo.id_modulo', 'order' => 'DESC'); break; } break; case 'module_name': switch ($sort) { case 'up': $selectModuleNameUp = $selected; $order = array( 'field' => 'tagente_modulo.nombre', 'order' => 'ASC'); break; case 'down': $selectModuleNameDown = $selected; $order = array( 'field' => 'tagente_modulo.nombre', 'order' => 'DESC'); break; } break; case 'interval': switch ($sort) { case 'up': $selectIntervalUp = $selected; $order = array( 'field' => 'tagente_modulo.module_interval', 'order' => 'ASC'); break; case 'down': $selectIntervalDown = $selected; $order = array( 'field' => 'tagente_modulo.module_interval', 'order' => 'DESC'); break; } break; case 'status': switch ($sort) { case 'up': $selectStatusUp = $selected; $order = array( 'field' => 'tagente_estado.estado', 'order' => 'ASC'); break; case 'down': $selectStatusDown = $selected; $order = array( 'field' => 'tagente_estado.estado', 'order' => 'DESC'); break; } break; case 'timestamp': switch ($sort) { case 'up': $selectTimestampUp = $selected; $order = array( 'field' => 'tagente_estado.utimestamp', 'order' => 'ASC'); break; case 'down': $selectTimestampDown = $selected; $order = array( 'field' => 'tagente_estado.utimestamp', 'order' => 'DESC'); break; } break; case 'data': switch ($sort) { case 'up': $selectTimestampUp = $selected; $order = array( 'field' => 'tagente_estado.datos', 'order' => 'ASC'); break; case 'down': $selectTimestampDown = $selected; $order = array( 'field' => 'tagente_estado.datos', 'order' => 'DESC'); break; } break; default: $selectAgentNameUp = $selected; $selectAgentNameDown = ''; $selectTypeUp = ''; $selectTypeDown = ''; $selectModuleNameUp = ''; $selectModuleNameDown = ''; $selectIntervalUp = ''; $selectIntervalDown = ''; $selectStatusUp = ''; $selectStatusDown = ''; $selectDataUp = ''; $selectDataDown = ''; $selectTimestampUp = ''; $selectTimestampDown = ''; $order = array( 'field' => 'tagente.alias', 'order' => 'ASC'); break; } switch ($config['dbtype']) { case 'mysql': $sql = 'SELECT (SELECT GROUP_CONCAT(ttag.name SEPARATOR \',\') FROM ttag WHERE ttag.id_tag IN ( SELECT ttag_module.id_tag FROM ttag_module WHERE ttag_module.id_agente_modulo = tagente_modulo.id_agente_modulo)) AS tags, tagente_modulo.id_agente_modulo, tagente_modulo.id_modulo, tagente.intervalo AS agent_interval, tagente.alias AS agent_alias, tagente.nombre AS agent_name, tagente_modulo.nombre AS module_name, tagente_modulo.history_data, tagente_modulo.flag AS flag, tagente.id_grupo AS id_group, tagente.id_agente AS id_agent, tagente_modulo.id_tipo_modulo AS module_type, tagente_modulo.module_interval, tagente_estado.datos, tagente_estado.estado, tagente_modulo.min_warning, tagente_modulo.max_warning, tagente_modulo.str_warning, tagente_modulo.unit, tagente_modulo.min_critical, tagente_modulo.max_critical, tagente_modulo.str_critical, tagente_modulo.extended_info, tagente_modulo.critical_inverse, tagente_modulo.warning_inverse, tagente_modulo.critical_instructions, tagente_modulo.warning_instructions, tagente_modulo.unknown_instructions, tagente_estado.utimestamp AS utimestamp' . $sql_from . $sql_conditions_all . ' ORDER BY ' . $order['field'] . " " . $order['order'] . ' LIMIT '.$offset.",".$limit_sql; break; case 'postgresql': if (strstr($config['dbversion'], "8.4") !== false) { $string_agg = 'array_to_string(array_agg(ttag.name), \',\')'; } else { $string_agg = 'STRING_AGG(ttag.name, \',\')'; } $sql = 'SELECT (SELECT ' . $string_agg . ' FROM ttag WHERE ttag.id_tag IN ( SELECT ttag_module.id_tag FROM ttag_module WHERE ttag_module.id_agente_modulo = tagente_modulo.id_agente_modulo)) AS tags, tagente_modulo.id_agente_modulo, tagente_modulo.id_modulo, tagente.intervalo AS agent_interval, tagente.alias AS agent_alias, tagente.nombre AS agent_name, tagente_modulo.nombre AS module_name, tagente_modulo.history_data, tagente_modulo.flag AS flag, tagente.id_grupo AS id_group, tagente.id_agente AS id_agent, tagente_modulo.id_tipo_modulo AS module_type, tagente_modulo.module_interval, tagente_estado.datos, tagente_estado.estado, tagente_modulo.min_warning, tagente_modulo.max_warning, tagente_modulo.str_warning, tagente_modulo.min_critical, tagente_modulo.unit, tagente_modulo.max_critical, tagente_modulo.str_critical, tagente_modulo.extended_info, tagente_modulo.critical_inverse, tagente_modulo.warning_inverse, tagente_modulo.critical_instructions, tagente_modulo.warning_instructions, tagente_modulo.unknown_instructions, tagente_estado.utimestamp AS utimestamp' . $sql_from . $sql_conditions_all . ' LIMIT ' . $limit_sql . ' OFFSET ' . $offset; break; case 'oracle': $set = array(); $set['limit'] = $limit_sql; $set['offset'] = $offset; $sql = 'SELECT (SELECT LISTAGG(ttag.name, \',\') WITHIN GROUP (ORDER BY ttag.name) FROM ttag WHERE ttag.id_tag IN ( SELECT ttag_module.id_tag FROM ttag_module WHERE ttag_module.id_agente_modulo = tagente_modulo.id_agente_modulo)) AS tags, tagente_modulo.id_agente_modulo, tagente_modulo.id_modulo, tagente.intervalo AS agent_interval, tagente.alias AS agent_alias, tagente.nombre AS agent_name, tagente_modulo.nombre AS module_name, tagente_modulo.history_data, tagente_modulo.flag AS flag, tagente.id_grupo AS id_group, tagente.id_agente AS id_agent, tagente_modulo.id_tipo_modulo AS module_type, tagente_modulo.module_interval, tagente_estado.datos, tagente_estado.estado, tagente_modulo.min_warning, tagente_modulo.max_warning, tagente_modulo.str_warning, tagente_modulo.unit, tagente_modulo.min_critical, tagente_modulo.max_critical, tagente_modulo.str_critical, tagente_modulo.extended_info, tagente_modulo.critical_inverse, tagente_modulo.warning_inverse, tagente_modulo.critical_instructions, tagente_modulo.warning_instructions, tagente_modulo.unknown_instructions, tagente_estado.utimestamp AS utimestamp' . $sql_from . $sql_conditions_all; $sql = oracle_recode_query ($sql, $set); break; } if (! defined ('METACONSOLE')) { $result = db_get_all_rows_sql ($sql); if ($result === false) { $result = array (); } else ui_pagination ($count, false, $offset); } else { // For each server defined and not disabled: $servers = db_get_all_rows_sql ('SELECT * FROM tmetaconsole_setup WHERE disabled = 0'); if ($servers === false) $servers = array(); $result = array(); $count_modules = 0; foreach ($servers as $server) { // If connection was good then retrieve all data server if (metaconsole_connect($server) == NOERR) $connection = true; else $connection = false; $result_server = db_get_all_rows_sql ($sql); if (!empty($result_server)) { // Create HASH login info $pwd = $server['auth_token']; $auth_serialized = json_decode($pwd,true); if (is_array($auth_serialized)) { $pwd = $auth_serialized['auth_token']; $api_password = $auth_serialized['api_password']; $console_user = $auth_serialized['console_user']; $console_password = $auth_serialized['console_password']; } $user = $config['id_user']; $user_rot13 = str_rot13($config['id_user']); $hashdata = $user.$pwd; $hashdata = md5($hashdata); $url_hash = '&' . 'loginhash=auto&' . 'loginhash_data=' . $hashdata . '&' . 'loginhash_user=' . $user_rot13; foreach ($result_server as $result_element_key => $result_element_value) { $result_server[$result_element_key]['server_id'] = $server['id']; $result_server[$result_element_key]['server_name'] = $server['server_name']; $result_server[$result_element_key]['server_url'] = $server['server_url'].'/'; $result_server[$result_element_key]['hashdata'] = $hashdata; $result_server[$result_element_key]['user'] = $config['id_user']; $count_modules++; } $result = array_merge($result, $result_server); } metaconsole_restore_db(); } if ($count_modules > $config['block_size']) { ui_pagination ($count_modules, false, $offset); } // Get number of elements of the pagination $result = ui_meta_get_subset_array($result, $inferior_limit, $superior_limit); } if (($config['dbtype'] == 'oracle') && ($result !== false)) { for ($i=0; $i < count($result); $i++) { unset($result[$i]['rnum']); } } // Start Build List Result ///////////////////////////////////// if (!empty($result)) { $table = new StdClass(); $table->cellpadding = 0; $table->cellspacing = 0; $table->width = '100%'; $table->class = 'databox data'; $table->head = array (); $table->data = array (); $table->size = array (); $table->align = array (); if ($isFunctionPolicies !== ENTERPRISE_NOT_HOOK) $table->head[0] = '' . __('P.') . ''; $table->head[1] = __('Agent'); $table->head[1] .=' ' . html_print_image('images/sort_up.png', true, array('style' => $selectAgentNameUp, 'alt' => 'up')) . '' . '' . html_print_image('images/sort_down.png', true, array('style' => $selectAgentNameDown, 'alt' => 'down')) . ''; $table->head[2] = __('Data Type'); $table->head[2] .= ' ' . html_print_image('images/sort_up.png', true, array('style' => $selectTypeUp, 'alt' => 'up')) . '' . '' . html_print_image('images/sort_down.png', true, array('style' => $selectTypeDown, 'alt' => 'down')) . ''; $table->align[2] = 'left'; $table->head[3] = __('Module name'); $table->head[3] .= ' ' . html_print_image('images/sort_up.png', true, array('style' => $selectModuleNameUp, 'alt' => 'up')) . '' . '' . html_print_image('images/sort_down.png', true, array('style' => $selectModuleNameDown, 'alt' => 'down')) . ''; $table->head[4] = __('Server type'); $table->head[4] .= ' ' . html_print_image('images/sort_up.png', true, array('style' => $selectModuleNameUp, 'alt' => 'up')) . '' . '' . html_print_image('images/sort_down.png', true, array('style' => $selectModuleNameDown, 'alt' => 'down')) . ''; $table->head[5] = __('Interval'); $table->head[5] .= ' ' . html_print_image('images/sort_up.png', true, array('style' => $selectIntervalUp, 'alt' => 'up')) . '' . '' . html_print_image('images/sort_down.png', true, array('style' => $selectIntervalDown, 'alt' => 'down')) . ''; $table->align[5] = 'left'; $table->head[6] = __('Status'); $table->head[6] .= ' ' . html_print_image('images/sort_up.png', true, array('style' => $selectStatusUp, 'alt' => 'up')) . '' . '' . html_print_image('images/sort_down.png', true, array('style' => $selectStatusDown, 'alt' => 'down')) . ''; $table->align[6] = 'left'; $table->head[7] = __('Graph'); $table->align[7] = 'left'; $table->head[8] = __('Warn'); $table->align[8] = 'left'; $table->head[9] = __('Data'); $table->align[9] = 'left'; if ( is_metaconsole() ) { $table->head[9] .= ' ' . html_print_image('images/sort_up.png', true, array('style' => $selectStatusUp, 'alt' => 'up')) . '' . '' . html_print_image('images/sort_down.png', true, array('style' => $selectStatusDown, 'alt' => 'down')) . ''; } $table->head[10] = __('Timestamp'); $table->head[10] .= ' ' . html_print_image('images/sort_up.png', true, array('style' => $selectTimestampUp, 'alt' => 'up')) . '' . '' . html_print_image('images/sort_down.png', true, array('style' => $selectTimestampDown, 'alt' => 'down')) . ''; $table->align[10] = 'left'; $id_type_web_content_string = db_get_value('id_tipo', 'ttipo_modulo', 'nombre', 'web_content_string'); foreach ($result as $row) { //Avoid unset, null and false value if (empty($row['server_name'])) $row['server_name'] = ""; $is_web_content_string = (bool)db_get_value_filter('id_agente_modulo', 'tagente_modulo', array('id_agente_modulo' => $row['id_agente_modulo'], 'id_tipo_modulo' => $id_type_web_content_string)); //Fixed the goliat sends the strings from web //without HTML entities if ($is_web_content_string) { $row['datos'] = io_safe_input($row['datos']); } //Fixed the data from Selenium Plugin if ($row['datos'] != strip_tags($row['datos'])) { $row['datos'] = io_safe_input($row['datos']); } $data = array (); if ($isFunctionPolicies !== ENTERPRISE_NOT_HOOK) { $policyInfo = policies_info_module_policy($row['id_agente_modulo']); if ($policyInfo === false) $data[0] = ''; else { $linked = policies_is_module_linked($row['id_agente_modulo']); $adopt = false; if (policies_is_module_adopt($row['id_agente_modulo'])) { $adopt = true; } if ($linked) { if ($adopt) { $img = 'images/policies_brick.png'; $title = __('(Adopt) ') . $policyInfo['name_policy']; } else { $img = 'images/policies.png'; $title = $policyInfo['name_policy']; } } else { if ($adopt) { $img = 'images/policies_not_brick.png'; $title = __('(Unlinked) (Adopt) ') . $policyInfo['name_policy']; } else { $img = 'images/unlinkpolicy.png'; $title = __('(Unlinked) ') . $policyInfo['name_policy']; } } $data[0] = '' . html_print_image($img,true, array('title' => $title)) . ''; } } $agent_alias = !empty($row['agent_alias']) ? $row['agent_alias'] : $row['agent_name']; // TODO: Calculate hash access before to use it more simply like other sections. I.E. Events view if (defined('METACONSOLE')) { $agent_link = ''; $agent_alias = ui_print_truncate_text($agent_alias, 'agent_small', false, true, false, '[…]', 'font-size:7.5pt;'); if (can_user_access_node ()) { $data[1] = $agent_link . '' . $agent_alias . ''; } else { $data[1] = $agent_alias; } } else { $data[1] = ''; $data[1] .= ui_print_truncate_text($agent_alias, 'agent_medium', false, true, false, '[…]', 'font-size:7.5pt;'); $data[1] .= ''; } $data[2] = html_print_image('images/' . modules_show_icon_type ($row['module_type']), true); if (check_acl ($config['id_user'], $row['id_group'], 'AW')) { $show_edit_icon = true; if (defined('METACONSOLE')) { if (!can_user_access_node ()) { $show_edit_icon = false; } $url_edit_module = $row['server_url'] . 'index.php?' . 'sec=gagente&' . 'sec2=godmode/agentes/configurar_agente&' . 'id_agente=' . $row['id_agent'] . '&' . 'tab=module&' . 'id_agent_module=' . $row['id_agente_modulo'] . '&' . 'edit_module=1' . '&loginhash=auto&loginhash_data=' . $row['hashdata'] . '&loginhash_user=' . str_rot13($row['user']); } else { $url_edit_module = 'index.php?' . 'sec=gagente&' . 'sec2=godmode/agentes/configurar_agente&' . 'id_agente=' . $row['id_agent'] . '&' . 'tab=module&' . 'id_agent_module=' . $row['id_agente_modulo'] . '&' . 'edit_module=1'; } if ($show_edit_icon) { $data[2] .= '' . html_print_image('images/config.png', true, array('alt' => '0', 'border' => '', 'title' => __('Edit'))) . ''; } } $data[3] = ui_print_truncate_text($row['module_name'], 'agent_small', false, true, true); if ($row['extended_info'] != '') { $data[3] .= ui_print_help_tip ($row['extended_info'], true, '/images/default_list.png'); } if ($row['tags'] != '') { $data[3] .= html_print_image('/images/tag_red.png', true, array( 'title' => $row['tags'], 'style' => 'width: 20px; margin-left: 3px;')); } $data[4] = servers_show_type ($row['id_modulo']); $data[5] = ($row['module_interval'] == 0) ? human_time_description_raw($row['agent_interval']) : human_time_description_raw($row['module_interval']); if ($row['utimestamp'] == 0 && (($row['module_type'] < 21 || $row['module_type'] > 23) && $row['module_type'] != 100)) { $data[6] = ui_print_status_image(STATUS_MODULE_NO_DATA, __('NOT INIT'), true); } elseif ($row['estado'] == 0) { if (is_numeric($row['datos'])) { $data[6] = ui_print_status_image(STATUS_MODULE_OK, __('NORMAL') . ': ' . remove_right_zeros(number_format($row['datos'], $config['graph_precision'])), true); } else { $data[6] = ui_print_status_image(STATUS_MODULE_OK, __('NORMAL') . ': ' . $row['datos'], true); } } elseif ($row['estado'] == 1) { if (is_numeric($row['datos'])) { $data[6] = ui_print_status_image(STATUS_MODULE_CRITICAL, __('CRITICAL') . ': ' . remove_right_zeros(number_format($row['datos'], $config['graph_precision'])), true); } else { $data[6] = ui_print_status_image(STATUS_MODULE_CRITICAL, __('CRITICAL') . ': ' . $row['datos'], true); } } elseif ($row['estado'] == 2) { if (is_numeric($row['datos'])) { $data[6] = ui_print_status_image(STATUS_MODULE_WARNING, __('WARNING') . ': ' . remove_right_zeros(number_format($row['datos'], $config['graph_precision'])), true); } else { $data[6] = ui_print_status_image(STATUS_MODULE_WARNING, __('WARNING') . ': ' . $row['datos'], true); } } else { $last_status = modules_get_agentmodule_last_status( $row['id_agente_modulo']); switch($last_status) { case 0: if (is_numeric($row['datos'])) { $data[6] = ui_print_status_image(STATUS_MODULE_UNKNOWN, __('UNKNOWN') . ' - ' . __('Last status') . " " . __('NORMAL') . ': ' . remove_right_zeros(number_format($row['datos'], $config['graph_precision'])), true); } else { $data[6] = ui_print_status_image(STATUS_MODULE_UNKNOWN, __('UNKNOWN') . ' - ' . __('Last status') . " " . __('NORMAL') . ': ' . $row['datos'], true); } break; case 1: if (is_numeric($row['datos'])) { $data[6] = ui_print_status_image(STATUS_MODULE_UNKNOWN, __('UNKNOWN') . ' - ' . __('Last status') ." " . __('CRITICAL') . ': ' . remove_right_zeros(number_format($row['datos'], $config['graph_precision'])), true); } else { $data[6] = ui_print_status_image(STATUS_MODULE_UNKNOWN, __('UNKNOWN') . ' - ' . __('Last status') ." " . __('CRITICAL') . ': ' . $row['datos'], true); } break; case 2: if (is_numeric($row['datos'])) { $data[6] = ui_print_status_image(STATUS_MODULE_UNKNOWN, __('UNKNOWN') . ' - ' . __('Last status') . " " . __('WARNING') . ': ' . remove_right_zeros(number_format($row['datos'], $config['graph_precision'])), true); } else { $data[6] = ui_print_status_image(STATUS_MODULE_UNKNOWN, __('UNKNOWN') . ' - ' . __('Last status') . " " . __('WARNING') . ': ' . $row['datos'], true); } break; } } $data[7] = ""; $acl_graphs = false; // Avoid the check on the metaconsole. Too slow to show/hide an icon depending on the permissions if (!is_metaconsole()) { $acl_graphs = check_acl($config['id_user'], $row['id_group'], 'RR'); } else { $acl_graphs = true; } if ($row['history_data'] == 1 && $acl_graphs) { $graph_type = return_graphtype ($row['module_type']); $url = ui_get_full_url('operation/agentes/stat_win.php', false, false, false); $handle = dechex(crc32($row['id_agente_modulo'].$row['module_name'])); $win_handle = 'day_'.$handle; $graph_params = array( 'type' => $graph_type, 'period' => SECONDS_1DAY, 'id' => $row['id_agente_modulo'], 'label' => base64_encode($row['module_name']), 'refresh' => SECONDS_10MINUTES ); if (is_metaconsole() && isset($row['server_id'])) { $graph_params['avg_only'] = 1; // Set the server id $graph_params['server'] = $row['server_id']; } $graph_params_str = http_build_query($graph_params); $link = 'winopeng(\''.$url.'?'.$graph_params_str.'\',\''.$win_handle.'\')'; $data[7] = ''; if(!is_snapshot_data($row['datos'])){ $data[7] = '' . html_print_image('images/chart_curve.png', true, array('border' => '0', 'alt' => '')) . ''; } $data[7] .= '' . html_print_image ('images/binary.png', true, array ('border' => '0', 'alt' => '')) . ''; $data[7] .= '' . $row['module_name'] . ''; } $data[8] = ui_print_module_warn_value($row['max_warning'], $row['min_warning'], $row['str_warning'], $row['max_critical'], $row['min_critical'], $row['str_critical']); if (is_numeric($row['datos']) && !modules_is_string_type($row['module_type'])) { if ( $config['render_proc'] ) { switch($row['module_type']) { case 2: case 6: case 9: case 18: case 21: case 31: if ( $row['datos'] >= 1 ) $salida = $config['render_proc_ok']; else $salida = $config['render_proc_fail']; break; default: switch($row['module_type']) { case 15: $value = db_get_value('snmp_oid', 'tagente_modulo', 'id_agente_modulo', $row['id_agente_modulo']); if ($value == '.1.3.6.1.2.1.1.3.0' || $value == '.1.3.6.1.2.1.25.1.1.0') $salida = human_milliseconds_to_string($row['datos']); else $salida = remove_right_zeros(number_format($row['datos'], $config['graph_precision'])); break; default: $salida = remove_right_zeros(number_format($row['datos'], $config['graph_precision'])); break; } break; } } else { switch($row['module_type']) { case 15: $value = db_get_value('snmp_oid', 'tagente_modulo', 'id_agente_modulo', $row['id_agente_modulo']); if ($value == '.1.3.6.1.2.1.1.3.0' || $value == '.1.3.6.1.2.1.25.1.1.0') $salida = human_milliseconds_to_string($row['datos']); else $salida = remove_right_zeros(number_format($row['datos'], $config['graph_precision'])); break; default: $salida = remove_right_zeros(number_format($row['datos'], $config['graph_precision'])); break; } } // Show units ONLY in numeric data types if (isset($row['unit'])) { $data_macro = modules_get_unit_macro($row['datos'],$row['unit']); if($data_macro) { $salida = $data_macro; } else { $salida .= ' ' . '' . io_safe_output($row['unit']) . ''; $salida = ui_print_truncate_text($salida, 'agent_small', true, true, false, '[…]', 'font-size:7.5pt;'); } } } else { //Fixed the goliat sends the strings from web //without HTML entities if ($is_web_content_string) { $module_value = $row['datos']; } else { $module_value = io_safe_output($row['datos']); } $is_snapshot = is_snapshot_data ( $module_value ); if (($config['command_snapshot']) && ($is_snapshot)) { $handle = 'snapshot_' . $row['id_agente_modulo']; $url = 'include/procesos.php?agente=' . $row['id_agente_modulo']; $win_handle = dechex(crc32($handle)); if (! defined ('METACONSOLE')) { $link = "winopeng_var('operation/agentes/snapshot_view.php?" . "id=" . $row['id_agente_modulo'] . "&refr=" . $row['current_interval'] . "&label=" . rawurlencode(urlencode(io_safe_output($row['module_name']))) . "','" . $win_handle . "', 700,480)"; } else{ $link = "winopeng_var('$row[datos]','',700,480)"; } if(!is_image_data($row['datos'])){ $salida = '' . html_print_image('images/default_list.png', true, array('border' => '0', 'alt' => '', 'title' => __('Snapshot view'))) . '   '; } else { $salida = '' . html_print_image('images/photo.png', true, array('border' => '0', 'alt' => '', 'title' => __('Snapshot view'))) . '   '; } } else { $sub_string = substr(io_safe_output($row['datos']), 0, 12); if ($module_value == $sub_string) { if ($module_value == 0 && !$sub_string) { $salida = 0; } else { $data_macro = modules_get_unit_macro($row['datos'],$row['unit']); if($data_macro) { $salida = $data_macro; } else { $salida = $row['datos']; } } } else { //Fixed the goliat sends the strings from web //without HTML entities if ($is_web_content_string) { $sub_string = substr($row['datos'], 0, 12); } else { //Fixed the data from Selenium Plugin if ($module_value != strip_tags($module_value)) { $module_value = io_safe_input($module_value); $sub_string = substr($row['datos'], 0, 12); } else { $sub_string = substr(io_safe_output($row['datos']),0, 12); } } if ($module_value == $sub_string) { $salida = $module_value; } else { $salida = "" . $module_value . "" . "" . '' . $sub_string . ' ' . "" . html_print_image('images/rosette.png', true) . ''; } } } } $data[9] = $salida; if ($row['module_interval'] > 0) $interval = $row['module_interval']; else $interval = $row['agent_interval']; if ($row['estado'] == 3) { $option = array ('html_attr' => 'class="redb"','style' => 'font-size:7pt;'); } else { $option = array ('style' => 'font-size:7pt;'); } $data[10] = ui_print_timestamp ($row['utimestamp'], true, $option); array_push ($table->data, $data); } html_print_table ($table); } else ui_print_info_message ( array ( 'no_close' => true, 'message' => __('This group doesn\'t have any monitor') ) ); // End Build List Result ///////////////////////////////////// echo "
"; //strict user hidden echo ''; enterprise_hook('close_meta_frame'); ui_require_javascript_file('pandora_modules'); ?>