diff --git a/pandora_console/operation/agentes/status_monitor.php b/pandora_console/operation/agentes/status_monitor.php index ee20c2d8c1..579fcd81bb 100644 --- a/pandora_console/operation/agentes/status_monitor.php +++ b/pandora_console/operation/agentes/status_monitor.php @@ -11,7 +11,7 @@ // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. -// Load global vars +// Load global vars. global $config; check_login(); @@ -115,9 +115,18 @@ $sort = get_parameter('sort', 'none'); $id_module = (int) get_parameter('id_module', 0); $ag_custom_fields = (array) get_parameter('ag_custom_fields', []); $module_option = (int) get_parameter('module_option', 1); + +$not_condition = (string) get_parameter('not_condition', ''); + +// If option not_condition is enabled, the conditions of the queries are reversed. +$condition_query = '='; +if ($not_condition !== '') { + $condition_query = '!='; +} + $autosearch = false; -// It is validated if it receives parameters different from those it has by default +// It is validated if it receives parameters different from those it has by default. if ($ag_freestring !== '' || $moduletype !== '' || $datatype !== '' || $ag_modulename !== '' || $refr !== 0 || $offset !== 0 || $status !== 4 || $modulegroup !== -1 || $tag_filter !== 0 || $sortField !== '' @@ -151,10 +160,10 @@ if ($id_module) { enterprise_hook('open_meta_frame'); -// Get Groups and profiles from user +// Get Groups and profiles from user. $user_groups = implode(',', array_keys(users_get_groups(false, 'AR', false))); -// Begin Build SQL sentences +// Begin Build SQL sentences. $sql_from = ' FROM tagente_modulo INNER JOIN tagente ON tagente_modulo.id_agente = tagente.id_agente @@ -177,7 +186,7 @@ if (is_numeric($ag_group)) { $id_ag_group = db_get_value('id_grupo', 'tgrupo', 'nombre', $ag_group); } -// Agent group selector +// Agent group selector. if (!is_metaconsole()) { if ($ag_group > 0 && check_acl($config['id_user'], $ag_group, 'AR')) { if ($recursion) { @@ -191,7 +200,7 @@ if (!is_metaconsole()) { ); } else { $sql_conditions_group = sprintf( - ' AND (tagente.id_grupo = %d OR tasg.id_group = %d)', + ' AND (tagente.id_grupo '.$condition_query.' %d OR tasg.id_group '.$condition_query.' %d)', $ag_group, $ag_group ); @@ -230,66 +239,66 @@ if (!is_metaconsole()) { } } -// Module group +// Module group. if (is_metaconsole()) { if ($modulegroup != '-1') { - $sql_conditions .= sprintf(' AND tagente_modulo.id_module_group IN (%s)', $modulegroup); + $sql_conditions .= sprintf(' AND tagente_modulo.id_module_group '.$not_condition.' IN (%s)', $modulegroup); } } else if ($modulegroup > -1) { - $sql_conditions .= sprintf(' AND tagente_modulo.id_module_group = \'%d\'', $modulegroup); + $sql_conditions .= sprintf(' AND tagente_modulo.id_module_group '.$condition_query.' \'%d\'', $modulegroup); } -// Module name selector +// Module name selector. if ($ag_modulename != '') { - $sql_conditions .= " AND tagente_modulo.nombre LIKE '%".$ag_modulename."%'"; + $sql_conditions .= " AND tagente_modulo.nombre $not_condition LIKE '%".$ag_modulename."%'"; } if ($module_option !== 0) { if ($module_option == 1) { - // Only enabled - $sql_conditions .= sprintf(' AND tagente_modulo.disabled = 0'); + // Only enabled. + $sql_conditions .= sprintf(' AND tagente_modulo.disabled '.$condition_query.' 0'); } else if ($module_option == 2) { - // Only disabled - $sql_conditions .= sprintf(' AND tagente_modulo.disabled = 1'); + // Only disabled. + $sql_conditions .= sprintf(' AND tagente_modulo.disabled '.$condition_query.' 1'); } } if ($datatype != '') { - $sql_conditions .= sprintf(' AND ttipo_modulo.id_tipo ='.$datatype); + $sql_conditions .= sprintf(' AND ttipo_modulo.id_tipo '.$condition_query.' '.$datatype); } if ($moduletype != '') { - $sql_conditions .= sprintf(' AND tagente_modulo.id_modulo ='.$moduletype); + $sql_conditions .= sprintf(' AND tagente_modulo.id_modulo '.$condition_query.' '.$moduletype.''); } -// Freestring selector +// 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.'%%\')'; + $sql_conditions .= ' AND (tagente.nombre COLLATE utf8_general_ci '.$not_condition.' LIKE \'%%'.$ag_freestring.'%%\' + OR tagente.alias COLLATE utf8_general_ci '.$not_condition.' LIKE \'%%'.$ag_freestring.'%%\' + OR tagente_modulo.nombre COLLATE utf8_general_ci '.$not_condition.' LIKE \'%%'.$ag_freestring.'%%\' + OR tagente_modulo.descripcion COLLATE utf8_general_ci '.$not_condition.' LIKE \'%%'.$ag_freestring.'%%\')'; } -// Status selector +// Status selector. if ($status == AGENT_MODULE_STATUS_NORMAL) { - // Normal - $sql_conditions .= ' AND tagente_estado.estado = 0 + // Normal. + $sql_conditions .= ' AND tagente_estado.estado '.$condition_query.' 0 AND (utimestamp > 0 OR (tagente_modulo.id_tipo_modulo IN(21,22,23,100))) '; } else if ($status == AGENT_MODULE_STATUS_CRITICAL_BAD) { - // Critical - $sql_conditions .= ' AND tagente_estado.estado = 1 AND utimestamp > 0'; + // Critical. + $sql_conditions .= ' AND tagente_estado.estado '.$condition_query.' 1 AND utimestamp > 0'; } else if ($status == AGENT_MODULE_STATUS_WARNING) { - // Warning - $sql_conditions .= ' AND tagente_estado.estado = 2 AND utimestamp > 0'; + // Warning. + $sql_conditions .= ' AND tagente_estado.estado '.$condition_query.' 2 AND utimestamp > 0'; } else if ($status == AGENT_MODULE_STATUS_NOT_NORMAL) { - // Not normal + // Not normal. $sql_conditions .= ' AND tagente_estado.estado <> 0'; } else if ($status == AGENT_MODULE_STATUS_UNKNOWN) { - // Unknown - $sql_conditions .= ' AND tagente_estado.estado = 3 AND tagente_estado.utimestamp <> 0'; + // Unknown. + $sql_conditions .= ' AND tagente_estado.estado '.$condition_query.' 3 AND tagente_estado.utimestamp <> 0'; } else if ($status == AGENT_MODULE_STATUS_NOT_INIT) { - // Not init - $sql_conditions .= ' AND tagente_estado.utimestamp = 0 + // Not init. + $sql_conditions .= ' AND tagente_estado.utimestamp '.$condition_query.' 0 AND tagente_modulo.id_tipo_modulo NOT IN (21,22,23,100)'; } @@ -300,13 +309,13 @@ if (!empty($min_hours_status)) { $sql_conditions .= sprintf(' AND tagente_estado.last_status_change < %d', $max_time); } -// Filter by agent custom fields +// Filter by agent custom fields. $sql_conditions_custom_fields = ''; if (!empty($ag_custom_fields)) { $cf_filter = []; 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.'%\')'; + $cf_filter[] = '(tagent_custom_data.id_field '.$condition_query.' '.$field_id.' AND tagent_custom_data.description '.$not_condition.' LIKE \'%'.$value.'%\')'; } } @@ -318,24 +327,24 @@ if (!empty($ag_custom_fields)) { } } -// Filter by tag +// Filter by tag. if ($tag_filter !== 0) { if (is_metaconsole()) { - $sql_conditions .= ' AND tagente_modulo.id_agente_modulo IN ( + $sql_conditions .= ' AND tagente_modulo.id_agente_modulo '.$not_condition.' IN ( SELECT ttag_module.id_agente_modulo FROM ttag_module - WHERE ttag_module.id_tag IN ('.$tag_filter.'))'; + WHERE ttag_module.id_tag '.$not_condition.' IN ('.$tag_filter.'))'; } else { - $sql_conditions .= ' AND tagente_modulo.id_agente_modulo IN ( + $sql_conditions .= ' AND tagente_modulo.id_agente_modulo '.$not_condition.' IN ( SELECT ttag_module.id_agente_modulo FROM ttag_module - WHERE ttag_module.id_tag = '.$tag_filter.')'; + WHERE ttag_module.id_tag '.$condition_query.' '.$tag_filter.')'; } } -// Apply the module ACL with tags +// Apply the module ACL with tags. $sql_conditions_tags = ''; if (!users_is_admin()) { @@ -356,20 +365,20 @@ if (!users_is_admin()) { } } -// Two modes of filter. All the filters and only ACLs filter +// Two modes of filter. All the filters and only ACLs filter. $sql_conditions_all = $sql_conditions.$sql_conditions_group.$sql_conditions_tags.$sql_conditions_custom_fields; -// Get count to paginate +// Get count to paginate. if (!defined('METACONSOLE')) { $count = db_get_sql('SELECT COUNT(DISTINCT tagente_modulo.id_agente_modulo)'.$sql_from.$sql_conditions_all); } -// Get limit_sql depend of the metaconsole or standard mode +// Get limit_sql depend of the metaconsole or standard mode. if (is_metaconsole()) { - // Offset will be used to get the subset of modules + // 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 reset to get all elements. $offset = 0; if (!isset($config['meta_num_elements'])) { $config['meta_num_elements'] = 100; @@ -380,9 +389,9 @@ if (is_metaconsole()) { $limit_sql = $config['block_size']; } -// End Build SQL sentences +// End Build SQL sentences. // -// Start Build Search Form +// Start Build Search Form. // $table = new StdClass(); $table->width = '100%'; @@ -436,7 +445,7 @@ $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 +// Default. $fields[AGENT_MODULE_STATUS_NOT_INIT] = __('Not init'); $table->data[0][2] = __('Monitor status'); @@ -528,32 +537,32 @@ $network_available = db_get_sql( FROM tserver WHERE server_type = 1' ); -// POSTGRESQL AND ORACLE COMPATIBLE +// POSTGRESQL AND ORACLE COMPATIBLE. $wmi_available = db_get_sql( 'SELECT count(*) FROM tserver WHERE server_type = 6' ); -// POSTGRESQL AND ORACLE COMPATIBLE +// POSTGRESQL AND ORACLE COMPATIBLE. $plugin_available = db_get_sql( 'SELECT count(*) FROM tserver WHERE server_type = 4' ); -// POSTGRESQL AND ORACLE COMPATIBLE +// POSTGRESQL AND ORACLE COMPATIBLE. $prediction_available = db_get_sql( 'SELECT count(*) FROM tserver WHERE server_type = 5' ); -// POSTGRESQL AND ORACLE COMPATIBLE +// POSTGRESQL AND ORACLE COMPATIBLE. $wux_available = db_get_sql( 'SELECT count(*) FROM tserver WHERE server_type = 17' ); -// POSTGRESQL AND ORACLE COMPATIBLE - // Development mode to use all servers +// POSTGRESQL AND ORACLE COMPATIBLE. +// Development mode to use all servers. if ($develop_bypass) { $network_available = 1; $wmi_available = 1; @@ -606,7 +615,7 @@ $min_hours_val = empty($min_hours_status) ? '' : (int) $min_hours_status; $table->data[2][4] = ''.__('Min. hours in current status').''; $table->data[2][5] = html_print_input_text('min_hours_status', $min_hours_val, '', 12, 20, true); -$table->data[3][0] = 'data[3][0] = 'data[3][0] .= '>'.__('Data type').''; @@ -619,7 +628,7 @@ switch ($moduletype) { $sql = sprintf( 'SELECT id_tipo, descripcion FROM ttipo_modulo - WHERE categoria IN (6,7,8,0,1,2,-1) order by descripcion ' + WHERE categoria '.$not_condition.' IN (6,7,8,0,1,2,-1) order by descripcion ' ); break; @@ -627,7 +636,7 @@ switch ($moduletype) { $sql = sprintf( 'SELECT id_tipo, descripcion FROM ttipo_modulo - WHERE categoria between 3 and 5 ' + WHERE categoria '.$not_condition.' between 3 and 5 ' ); break; @@ -635,7 +644,7 @@ switch ($moduletype) { $sql = sprintf( 'SELECT id_tipo, descripcion FROM ttipo_modulo - WHERE categoria between 0 and 2 ' + WHERE categoria '.$not_condition.' between 0 and 2 ' ); break; @@ -643,7 +652,7 @@ switch ($moduletype) { $sql = sprintf( 'SELECT id_tipo, descripcion FROM ttipo_modulo - WHERE categoria between 0 and 2 ' + WHERE categoria '.$not_condition.' between 0 and 2 ' ); break; @@ -651,7 +660,7 @@ switch ($moduletype) { $sql = sprintf( 'SELECT id_tipo, descripcion FROM ttipo_modulo - WHERE categoria = 9' + WHERE categoria '.$condition_query.' 9' ); break; @@ -659,7 +668,7 @@ switch ($moduletype) { $sql = sprintf( 'SELECT id_tipo, descripcion FROM ttipo_modulo - WHERE categoria = 0' + WHERE categoria '.$condition_query.' 0' ); break; @@ -667,7 +676,7 @@ switch ($moduletype) { $sql = sprintf( 'SELECT id_tipo, descripcion FROM ttipo_modulo - WHERE nombre = \'web_analysis\'' + WHERE nombre '.$condition_query.' \'web_analysis\'' ); break; @@ -677,6 +686,10 @@ switch ($moduletype) { FROM ttipo_modulo' ); break; + + default: + // Nothing. + break; } $a = db_get_all_rows_sql($sql); @@ -704,294 +717,115 @@ foreach ($a as $valor) { $table->data[3][1] .= ''; + $table->data[3][1] .= '
'; + $table->data[3][1] .= html_print_input( + [ + 'type' => 'checkbox', + 'name' => 'not_condition', + 'return' => true, + 'checked' => $check_not_condition, + 'value' => 'NOT', + ] + ); + $table->data[3][1] .= __('Not condition').ui_print_help_tip(__('If this option is enabled, the events that DO NOT comply with this condition will be displayed.'), true); + $table->data[3][1] .= '
'; $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'; -} + 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 = []; -if (!is_metaconsole()) { - $table_custom_fields->style[0] = 'font-weight: bold; width: 150px;'; -} else { - $table_custom_fields->style[0] = 'font-weight: bold;'; -} + 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 = []; -$table_custom_fields->data = []; + $table_custom_fields->colspan = []; + $table_custom_fields->data = []; -$custom_fields = db_get_all_fields_in_table('tagent_custom_fields'); -if ($custom_fields === false) { - $custom_fields = []; -} + $custom_fields = db_get_all_fields_in_table('tagent_custom_fields'); + if ($custom_fields === false) { + $custom_fields = []; + } -foreach ($custom_fields as $custom_field) { - $row = []; - $row[0] = $custom_field['name']; + foreach ($custom_fields as $custom_field) { + $row = []; + $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 = ''; + 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; } - } - $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[4][0] = 7; - $table->cellstyle[4][0] = 'padding: 10px;'; - $table->data[4][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 filters'), '', '', false); -} else { - $table->colspan[4][0] = 7; - $table->cellstyle[4][0] = 'padding-left: 10px;'; - $table->data[4][0] = ui_toggle( - html_print_table( - $table_custom_fields, - true - ), - __('Agent custom fields'), - '', - '', - true, - true, - '', - 'white-box-content', - 'white_table_graph' - ); - - $filters .= html_print_table($table, true); - $filters .= ''; - echo $filters; -} - -unset($table); -// End Build Search Form -// -// Sort functionality -$selected = true; -$selectAgentNameUp = false; -$selectAgentNameDown = false; -$selectDataTypeUp = false; -$selectDataTypeDown = false; -$selectTypeUp = false; -$selectTypeDown = false; -$selectModuleNameUp = false; -$selectModuleNameDown = false; -$selectIntervalUp = false; -$selectIntervalDown = false; -$selectStatusUp = false; -$selectStatusDown = false; -$selectDataUp = false; -$selectDataDown = false; -$selectTimestampUp = false; -$selectTimestampDown = false; -$order = null; - -switch ($sortField) { - case 'agent_alias': - switch ($sort) { - case 'up': - $selectAgentNameUp = $selected; - $order = [ - 'field' => 'tagente.alias', - 'order' => 'ASC', - ]; - break; - - case 'down': - $selectAgentNameDown = $selected; - $order = [ - 'field' => 'tagente.alias', - 'order' => 'DESC', - ]; - break; + if ($not_condition !== '') { + $check_not_condition = true; } - break; - case 'type': - switch ($sort) { - case 'up': - $selectDataTypeUp = $selected; - $order = [ - 'field' => 'tagente_modulo.id_tipo_modulo', - 'order' => 'ASC', - ]; - break; - case 'down': - $selectDataTypeDown = $selected; - $order = [ - 'field' => 'tagente_modulo.id_tipo_modulo', - 'order' => 'DESC', - ]; - break; + + + $filters = '
'; + + + if (is_metaconsole()) { + $table->colspan[4][0] = 7; + $table->cellstyle[4][0] = 'padding: 10px;'; + $table->data[4][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 filters'), '', '', false); + } else { + $table->colspan[4][0] = 7; + $table->cellstyle[4][0] = 'padding-left: 10px;'; + $table->data[4][0] = ui_toggle( + html_print_table( + $table_custom_fields, + true + ), + __('Agent custom fields'), + '', + '', + true, + true, + '', + 'white-box-content', + 'white_table_graph' + ); + + $filters .= html_print_table($table, true); + $filters .= ''; + echo $filters; } - break; - case 'moduletype': - switch ($sort) { - case 'up': - $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 'module_name': - switch ($sort) { - case 'up': - $selectModuleNameUp = $selected; - $order = [ - 'field' => 'tagente_modulo.nombre', - 'order' => 'ASC', - ]; - break; - - case 'down': - $selectModuleNameDown = $selected; - $order = [ - 'field' => 'tagente_modulo.nombre', - 'order' => 'DESC', - ]; - break; - } - break; - - case 'interval': - switch ($sort) { - case 'up': - $selectIntervalUp = $selected; - $order = [ - 'field' => 'tagente_modulo.module_interval', - 'order' => 'ASC', - ]; - break; - - case 'down': - $selectIntervalDown = $selected; - $order = [ - 'field' => 'tagente_modulo.module_interval', - 'order' => 'DESC', - ]; - break; - } - break; - - case 'status': - switch ($sort) { - case 'up': - $selectStatusUp = $selected; - $order = [ - 'field' => 'tagente_estado.estado', - 'order' => 'ASC', - ]; - break; - - case 'down': - $selectStatusDown = $selected; - $order = [ - 'field' => 'tagente_estado.estado', - 'order' => 'DESC', - ]; - break; - } - break; - - case 'last_status_change': - switch ($sort) { - case 'up': - $selectStatusUp = $selected; - $order = [ - 'field' => 'tagente_estado.last_status_change', - 'order' => 'ASC', - ]; - break; - - case 'down': - $selectStatusDown = $selected; - $order = [ - 'field' => 'tagente_estado.last_status_change', - 'order' => 'DESC', - ]; - break; - } - break; - - case 'timestamp': - switch ($sort) { - case 'up': - $selectTimestampUp = $selected; - $order = [ - 'field' => 'tagente_estado.utimestamp', - 'order' => 'ASC', - ]; - break; - - case 'down': - $selectTimestampDown = $selected; - $order = [ - 'field' => 'tagente_estado.utimestamp', - 'order' => 'DESC', - ]; - break; - } - break; - - case 'data': - switch ($sort) { - case 'up': - $selectDataUp = $selected; - $order = [ - 'field' => 'tagente_estado.datos', - 'order' => 'ASC', - ]; - break; - - case 'down': - $selectDataDown = $selected; - $order = [ - 'field' => 'tagente_estado.datos', - 'order' => 'DESC', - ]; - break; - } - break; - - default: - $selectAgentNameUp = $selected; + unset($table); + // End Build Search Form. + // + // Sort functionality. + $selected = true; + $selectAgentNameUp = false; $selectAgentNameDown = false; $selectDataTypeUp = false; $selectDataTypeDown = false; @@ -1007,14 +841,214 @@ switch ($sortField) { $selectDataDown = false; $selectTimestampUp = false; $selectTimestampDown = false; - $order = [ - 'field' => 'tagente.alias', - 'order' => 'ASC', - ]; - break; -} + $order = null; -$sql = 'SELECT + switch ($sortField) { + case 'agent_alias': + switch ($sort) { + case 'up': + $selectAgentNameUp = $selected; + $order = [ + 'field' => 'tagente.alias', + 'order' => 'ASC', + ]; + break; + + case 'down': + $selectAgentNameDown = $selected; + $order = [ + 'field' => 'tagente.alias', + 'order' => 'DESC', + ]; + break; + } + break; + + case 'type': + switch ($sort) { + case 'up': + $selectDataTypeUp = $selected; + $order = [ + 'field' => 'tagente_modulo.id_tipo_modulo', + 'order' => 'ASC', + ]; + break; + + case 'down': + $selectDataTypeDown = $selected; + $order = [ + 'field' => 'tagente_modulo.id_tipo_modulo', + 'order' => 'DESC', + ]; + break; + } + break; + + case 'moduletype': + switch ($sort) { + case 'up': + $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 'module_name': + switch ($sort) { + case 'up': + $selectModuleNameUp = $selected; + $order = [ + 'field' => 'tagente_modulo.nombre', + 'order' => 'ASC', + ]; + break; + + case 'down': + $selectModuleNameDown = $selected; + $order = [ + 'field' => 'tagente_modulo.nombre', + 'order' => 'DESC', + ]; + break; + } + break; + + case 'interval': + switch ($sort) { + case 'up': + $selectIntervalUp = $selected; + $order = [ + 'field' => 'tagente_modulo.module_interval', + 'order' => 'ASC', + ]; + break; + + case 'down': + $selectIntervalDown = $selected; + $order = [ + 'field' => 'tagente_modulo.module_interval', + 'order' => 'DESC', + ]; + break; + } + break; + + case 'status': + switch ($sort) { + case 'up': + $selectStatusUp = $selected; + $order = [ + 'field' => 'tagente_estado.estado', + 'order' => 'ASC', + ]; + break; + + case 'down': + $selectStatusDown = $selected; + $order = [ + 'field' => 'tagente_estado.estado', + 'order' => 'DESC', + ]; + break; + } + break; + + case 'last_status_change': + switch ($sort) { + case 'up': + $selectStatusUp = $selected; + $order = [ + 'field' => 'tagente_estado.last_status_change', + 'order' => 'ASC', + ]; + break; + + case 'down': + $selectStatusDown = $selected; + $order = [ + 'field' => 'tagente_estado.last_status_change', + 'order' => 'DESC', + ]; + break; + } + break; + + case 'timestamp': + switch ($sort) { + case 'up': + $selectTimestampUp = $selected; + $order = [ + 'field' => 'tagente_estado.utimestamp', + 'order' => 'ASC', + ]; + break; + + case 'down': + $selectTimestampDown = $selected; + $order = [ + 'field' => 'tagente_estado.utimestamp', + 'order' => 'DESC', + ]; + break; + } + break; + + case 'data': + switch ($sort) { + case 'up': + $selectDataUp = $selected; + $order = [ + 'field' => 'tagente_estado.datos', + 'order' => 'ASC', + ]; + break; + + case 'down': + $selectDataDown = $selected; + $order = [ + 'field' => 'tagente_estado.datos', + 'order' => 'DESC', + ]; + break; + } + break; + + default: + $selectAgentNameUp = $selected; + $selectAgentNameDown = false; + $selectDataTypeUp = false; + $selectDataTypeDown = false; + $selectTypeUp = false; + $selectTypeDown = false; + $selectModuleNameUp = false; + $selectModuleNameDown = false; + $selectIntervalUp = false; + $selectIntervalDown = false; + $selectStatusUp = false; + $selectStatusDown = false; + $selectDataUp = false; + $selectDataDown = false; + $selectTimestampUp = false; + $selectTimestampDown = false; + $order = [ + 'field' => 'tagente.alias', + 'order' => 'ASC', + ]; + break; + } + + $sql = 'SELECT (SELECT GROUP_CONCAT(ttag.name SEPARATOR \',\') FROM ttag WHERE ttag.id_tag IN ( @@ -1060,623 +1094,648 @@ $sql = 'SELECT LIMIT '.$offset.','.$limit_sql; -// We do not show the modules until the user searches with the filter -if ($autosearch) { - if (! defined('METACONSOLE')) { - $result = db_get_all_rows_sql($sql); + // We do not show the modules until the user searches with the filter. + if ($autosearch) { + if (! defined('METACONSOLE')) { + $result = db_get_all_rows_sql($sql); - if ($result === false) { - $result = []; - } else { - ui_pagination($count, false, $offset, 0, false, 'offset', true); - } - } else { - // For each server defined and not disabled: - $servers = db_get_all_rows_sql( - 'SELECT * + if ($result === false) { + $result = []; + } else { + ui_pagination($count, false, $offset, 0, false, 'offset', true); + } + } 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 = []; - } - - $result = []; - $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']; + ); + if ($servers === false) { + $servers = []; } - $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']; - $result_server[$result_element_key]['groups_in_server'] = agents_get_all_groups_agent( - $result_element_value['id_agent'], - $result_element_value['id_group'] - ); - - $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']); - } -} - - -// Urls to sort the table. -$url_agent_name = 'index.php?sec='.$section.'&sec2=operation/agentes/status_monitor'; -$url_type = 'index.php?sec='.$section.'&sec2=operation/agentes/status_monitor'; -$url_module_name = 'index.php?sec='.$section.'&sec2=operation/agentes/status_monitor'; -$url_server_type = 'index.php?sec='.$section.'&sec2=operation/agentes/status_monitor'; -$url_interval = 'index.php?sec='.$section.'&sec2=operation/agentes/status_monitor'; -$url_status = 'index.php?sec='.$section.'&sec2=operation/agentes/status_monitor'; -$url_status = 'index.php?sec='.$section.'&sec2=operation/agentes/status_monitor'; -$url_data = 'index.php?sec='.$section.'&sec2=operation/agentes/status_monitor'; -$url_timestamp_up = 'index.php?sec='.$section.'&sec2=operation/agentes/status_monitor'; -$url_timestamp_down = 'index.php?sec='.$section.'&sec2=operation/agentes/status_monitor'; - -$url_agent_name .= '&refr='.$refr.'&datatype='.$datatype.'&moduletype='.$moduletype.'&modulegroup='.$modulegroup.'&offset='.$offset.'&ag_group='.$ag_group.'&ag_freestring='.$ag_freestring.'&ag_modulename='.$ag_modulename.'&status='.$status.$ag_custom_fields_params; -$url_type .= '&datatype='.$datatype.'&moduletype='.$moduletype.'&refr='.$refr.'&modulegroup='.$modulegroup.'&offset='.$offset.'&ag_group='.$ag_group.'&ag_freestring='.$ag_freestring.'&ag_modulename='.$ag_modulename.'&status='.$status.$ag_custom_fields_params; -$url_module_name .= '&datatype='.$datatype.'&moduletype='.$moduletype.'&refr='.$refr.'&modulegroup='.$modulegroup.'&offset='.$offset.'&ag_group='.$ag_group.'&ag_freestring='.$ag_freestring.'&ag_modulename='.$ag_modulename.'&status='.$status.$ag_custom_fields_params; -$url_server_type .= '&datatype='.$datatype.'&moduletype='.$moduletype.'&refr='.$refr.'&modulegroup='.$modulegroup.'&offset='.$offset.'&ag_group='.$ag_group.'&ag_freestring='.$ag_freestring.'&ag_modulename='.$ag_modulename.'&status='.$status.$ag_custom_fields_params; -$url_interval .= '&datatype='.$datatype.'&moduletype='.$moduletype.'&refr='.$refr.'&modulegroup='.$modulegroup.'&offset='.$offset.'&ag_group='.$ag_group.'&ag_freestring='.$ag_freestring.'&ag_modulename='.$ag_modulename.'&status='.$status.$ag_custom_fields_params; -$url_status .= '&datatype='.$datatype.'&moduletype='.$moduletype.'&refr='.$refr.'&modulegroup='.$modulegroup.'&offset='.$offset.'&ag_group='.$ag_group.'&ag_freestring='.$ag_freestring.'&ag_modulename='.$ag_modulename.'&status='.$status.$ag_custom_fields_params; -$url_status .= '&datatype='.$datatype.'&moduletype='.$moduletype.'&refr='.$refr.'&modulegroup='.$modulegroup.'&offset='.$offset.'&ag_group='.$ag_group.'&ag_freestring='.$ag_freestring.'&ag_modulename='.$ag_modulename.'&status='.$status.$ag_custom_fields_params; -$url_data .= '&datatype='.$datatype.'&moduletype='.$moduletype.'&refr='.$refr.'&modulegroup='.$modulegroup.'&offset='.$offset.'&ag_group='.$ag_group.'&ag_freestring='.$ag_freestring.'&ag_modulename='.$ag_modulename.'&status='.$status.$ag_custom_fields_params; -$url_timestamp_up .= '&datatype='.$datatype.'&moduletype='.$moduletype.'&refr='.$refr.'&offset='.$offset.'&ag_group='.$ag_group.'&ag_freestring='.$ag_freestring.'&ag_modulename='.$ag_modulename.'&status='.$status.$ag_custom_fields_params; -$url_timestamp_down .= '&datatype='.$datatype.'&moduletype='.$moduletype.'&refr='.$refr.'&modulegroup='.$modulegroup.'&offset='.$offset.'&ag_group='.$ag_group.'&ag_freestring='.$ag_freestring.'&ag_modulename='.$ag_modulename.'&status='.$status.$ag_custom_fields_params; - -// Holy god... -$url_agent_name .= '&recursion='.$recursion; -$url_type .= '&recursion='.$recursion; -$url_module_name .= '&recursion='.$recursion; -$url_server_type .= '&recursion='.$recursion; -$url_interval .= '&recursion='.$recursion; -$url_status .= '&recursion='.$recursion; -$url_status .= '&recursion='.$recursion; -$url_data .= '&recursion='.$recursion; -$url_timestamp_up .= '&recursion='.$recursion; -$url_timestamp_down .= '&recursion='.$recursion; - - -$url_agent_name .= '&sort_field=agent_alias&sort='; -$url_type .= '&sort_field=type&sort='; -$url_module_name .= '&sort_field=module_name&sort='; -$url_server_type .= '&sort_field=moduletype&sort='; -$url_interval .= '&sort_field=interval&sort='; -$url_status .= '&sort_field=status&sort='; -$url_status .= '&sort_field=last_status_change&sort='; -$url_data .= '&sort_field=data&sort='; -$url_timestamp_up .= '&sort_field=timestamp&sort=up'; -$url_timestamp_down .= '&sort_field=timestamp&sort=down'; - -// Start Build List Result -if (!empty($result)) { - $table = new StdClass(); - $table->cellpadding = 0; - $table->cellspacing = 0; - $table->width = '100%'; - $table->class = 'info_table'; - $table->head = []; - $table->data = []; - $table->size = []; - $table->align = []; - - $show_fields = explode(',', $config['status_monitor_fields']); - - - if (in_array('policy', $show_fields)) { - if ($isFunctionPolicies !== ENTERPRISE_NOT_HOOK) { - $table->head[0] = ''.__('P.').''; - } - } - - if (in_array('agent', $show_fields) || is_metaconsole()) { - $table->head[1] = __('Agent'); - $table->head[1] .= ui_get_sorting_arrows($url_agent_name.'up', $url_agent_name.'down', $selectAgentNameUp, $selectAgentNameDown); - } - - if (in_array('data_type', $show_fields) || is_metaconsole()) { - $table->head[2] = __('Data Type'); - $table->head[2] .= ui_get_sorting_arrows($url_type.'up', $url_type.'down', $selectDataTypeUp, $selectDataTypeDown); - $table->align[2] = 'left'; - } - - if (in_array('module_name', $show_fields) || is_metaconsole()) { - $table->head[3] = __('Module name'); - $table->head[3] .= ui_get_sorting_arrows($url_module_name.'up', $url_module_name.'down', $selectModuleNameUp, $selectModuleNameDown); - } - - if (in_array('server_type', $show_fields) || is_metaconsole()) { - $table->head[4] = __('Server type'); - $table->head[4] .= ui_get_sorting_arrows($url_server_type.'up', $url_server_type.'down', $selectTypeUp, $selectTypeDown); - } - - if (in_array('interval', $show_fields) || is_metaconsole()) { - $table->head[5] = __('Interval'); - $table->head[5] .= ui_get_sorting_arrows($url_interval.'up', $url_interval.'down', $selectIntervalUp, $selectIntervalDown); - $table->align[5] = 'left'; - } - - if (in_array('status', $show_fields) || is_metaconsole()) { - $table->head[6] = __('Status'); - $table->head[6] .= ui_get_sorting_arrows($url_status.'up', $url_status.'down', $selectStatusUp, $selectStatusDown); - $table->align[6] = 'left'; - } - - if (in_array('last_status_change', $show_fields)) { - $table->head[7] = __('Last status change'); - $table->head[7] .= ui_get_sorting_arrows($url_status.'up', $url_status.'down', $selectStatusUp, $selectStatusDown); - $table->align[7] = 'left'; - } - - if (in_array('graph', $show_fields) || is_metaconsole()) { - $table->head[8] = __('Graph'); - $table->align[8] = 'left'; - } - - if (in_array('warn', $show_fields) || is_metaconsole()) { - $table->head[9] = __('Warn'); - $table->align[9] = 'left'; - } - - if (in_array('data', $show_fields) || is_metaconsole()) { - $table->head[10] = __('Data'); - $table->align[10] = 'left'; - if (is_metaconsole()) { - $table->head[10] .= ui_get_sorting_arrows($url_data.'up', $url_data.'down', $selectDataUp, $selectDataDown); - } - } - - if (in_array('timestamp', $show_fields) || is_metaconsole()) { - $table->head[11] = __('Timestamp'); - $table->head[11] .= ui_get_sorting_arrows($url_timestamp_up, $url_timestamp_down, $selectTimestampUp, $selectTimestampDown); - $table->align[11] = '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', - [ - '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 = []; - - if (in_array('policy', $show_fields) || is_metaconsole()) { - if ($isFunctionPolicies !== ENTERPRISE_NOT_HOOK) { - if (is_metaconsole()) { - $node = metaconsole_get_connection_by_id($row['server_id']); - if (metaconsole_load_external_db($node) !== NOERR) { - // Restore the default connection. - metaconsole_restore_db(); - $errors++; - break; - } - } - - $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_mc.png'; - $title = $policyInfo['name_policy']; - } + $result = []; + $count_modules = 0; + foreach ($servers as $server) { + // If connection was good then retrieve all data server. + if (metaconsole_connect($server) == NOERR) { + $connection = true; } 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']; + $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']; + $result_server[$result_element_key]['groups_in_server'] = agents_get_all_groups_agent( + $result_element_value['id_agent'], + $result_element_value['id_group'] + ); + + $count_modules++; + } + + $result = array_merge($result, $result_server); } - if (is_metaconsole()) { - $data[0] = ''.html_print_image($img, true, ['title' => $title]).''; - } else { - $data[0] = ''.html_print_image($img, true, ['title' => $title]).''; - } - } - - if (is_metaconsole()) { 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 (in_array('agent', $show_fields) || is_metaconsole()) { - $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] .= ''; + if (($config['dbtype'] == 'oracle') && ($result !== false)) { + for ($i = 0; $i < count($result); $i++) { + unset($result[$i]['rnum']); } } - if (in_array('data_type', $show_fields) || is_metaconsole()) { - $data[2] = html_print_image('images/'.modules_show_icon_type($row['module_type']), true, ['class' => 'invert_filter']); - $agent_groups = is_metaconsole() ? $row['groups_in_server'] : agents_get_all_groups_agent($row['id_agent'], $row['id_group']); - if (check_acl_one_of_groups($config['id_user'], $agent_groups, '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'; - } + // Urls to sort the table. + $url_agent_name = 'index.php?sec='.$section.'&sec2=operation/agentes/status_monitor'; + $url_type = 'index.php?sec='.$section.'&sec2=operation/agentes/status_monitor'; + $url_module_name = 'index.php?sec='.$section.'&sec2=operation/agentes/status_monitor'; + $url_server_type = 'index.php?sec='.$section.'&sec2=operation/agentes/status_monitor'; + $url_interval = 'index.php?sec='.$section.'&sec2=operation/agentes/status_monitor'; + $url_status = 'index.php?sec='.$section.'&sec2=operation/agentes/status_monitor'; + $url_status = 'index.php?sec='.$section.'&sec2=operation/agentes/status_monitor'; + $url_data = 'index.php?sec='.$section.'&sec2=operation/agentes/status_monitor'; + $url_timestamp_up = 'index.php?sec='.$section.'&sec2=operation/agentes/status_monitor'; + $url_timestamp_down = 'index.php?sec='.$section.'&sec2=operation/agentes/status_monitor'; - if ($show_edit_icon) { - $table->cellclass[][2] = 'action_buttons'; - $data[2] .= ''.html_print_image( - 'images/config.png', - true, - [ - 'alt' => '0', - 'border' => '', - 'title' => __('Edit'), - ] - ).''; + $url_agent_name .= '&refr='.$refr.'&datatype='.$datatype.'&moduletype='.$moduletype.'&modulegroup='.$modulegroup.'&offset='.$offset.'&ag_group='.$ag_group.'&ag_freestring='.$ag_freestring.'&ag_modulename='.$ag_modulename.'&status='.$status.$ag_custom_fields_params; + $url_type .= '&datatype='.$datatype.'&moduletype='.$moduletype.'&refr='.$refr.'&modulegroup='.$modulegroup.'&offset='.$offset.'&ag_group='.$ag_group.'&ag_freestring='.$ag_freestring.'&ag_modulename='.$ag_modulename.'&status='.$status.$ag_custom_fields_params; + $url_module_name .= '&datatype='.$datatype.'&moduletype='.$moduletype.'&refr='.$refr.'&modulegroup='.$modulegroup.'&offset='.$offset.'&ag_group='.$ag_group.'&ag_freestring='.$ag_freestring.'&ag_modulename='.$ag_modulename.'&status='.$status.$ag_custom_fields_params; + $url_server_type .= '&datatype='.$datatype.'&moduletype='.$moduletype.'&refr='.$refr.'&modulegroup='.$modulegroup.'&offset='.$offset.'&ag_group='.$ag_group.'&ag_freestring='.$ag_freestring.'&ag_modulename='.$ag_modulename.'&status='.$status.$ag_custom_fields_params; + $url_interval .= '&datatype='.$datatype.'&moduletype='.$moduletype.'&refr='.$refr.'&modulegroup='.$modulegroup.'&offset='.$offset.'&ag_group='.$ag_group.'&ag_freestring='.$ag_freestring.'&ag_modulename='.$ag_modulename.'&status='.$status.$ag_custom_fields_params; + $url_status .= '&datatype='.$datatype.'&moduletype='.$moduletype.'&refr='.$refr.'&modulegroup='.$modulegroup.'&offset='.$offset.'&ag_group='.$ag_group.'&ag_freestring='.$ag_freestring.'&ag_modulename='.$ag_modulename.'&status='.$status.$ag_custom_fields_params; + $url_status .= '&datatype='.$datatype.'&moduletype='.$moduletype.'&refr='.$refr.'&modulegroup='.$modulegroup.'&offset='.$offset.'&ag_group='.$ag_group.'&ag_freestring='.$ag_freestring.'&ag_modulename='.$ag_modulename.'&status='.$status.$ag_custom_fields_params; + $url_data .= '&datatype='.$datatype.'&moduletype='.$moduletype.'&refr='.$refr.'&modulegroup='.$modulegroup.'&offset='.$offset.'&ag_group='.$ag_group.'&ag_freestring='.$ag_freestring.'&ag_modulename='.$ag_modulename.'&status='.$status.$ag_custom_fields_params; + $url_timestamp_up .= '&datatype='.$datatype.'&moduletype='.$moduletype.'&refr='.$refr.'&offset='.$offset.'&ag_group='.$ag_group.'&ag_freestring='.$ag_freestring.'&ag_modulename='.$ag_modulename.'&status='.$status.$ag_custom_fields_params; + $url_timestamp_down .= '&datatype='.$datatype.'&moduletype='.$moduletype.'&refr='.$refr.'&modulegroup='.$modulegroup.'&offset='.$offset.'&ag_group='.$ag_group.'&ag_freestring='.$ag_freestring.'&ag_modulename='.$ag_modulename.'&status='.$status.$ag_custom_fields_params; + + // Holy god... + $url_agent_name .= '&recursion='.$recursion; + $url_type .= '&recursion='.$recursion; + $url_module_name .= '&recursion='.$recursion; + $url_server_type .= '&recursion='.$recursion; + $url_interval .= '&recursion='.$recursion; + $url_status .= '&recursion='.$recursion; + $url_status .= '&recursion='.$recursion; + $url_data .= '&recursion='.$recursion; + $url_timestamp_up .= '&recursion='.$recursion; + $url_timestamp_down .= '&recursion='.$recursion; + + + $url_agent_name .= '&sort_field=agent_alias&sort='; + $url_type .= '&sort_field=type&sort='; + $url_module_name .= '&sort_field=module_name&sort='; + $url_server_type .= '&sort_field=moduletype&sort='; + $url_interval .= '&sort_field=interval&sort='; + $url_status .= '&sort_field=status&sort='; + $url_status .= '&sort_field=last_status_change&sort='; + $url_data .= '&sort_field=data&sort='; + $url_timestamp_up .= '&sort_field=timestamp&sort=up'; + $url_timestamp_down .= '&sort_field=timestamp&sort=down'; + + // Start Build List Result. + if (!empty($result)) { + $table = new StdClass(); + $table->cellpadding = 0; + $table->cellspacing = 0; + $table->width = '100%'; + $table->class = 'info_table'; + $table->head = []; + $table->data = []; + $table->size = []; + $table->align = []; + + $show_fields = explode(',', $config['status_monitor_fields']); + + + if (in_array('policy', $show_fields)) { + if ($isFunctionPolicies !== ENTERPRISE_NOT_HOOK) { + $table->head[0] = ''.__('P.').''; } } - } - if (in_array('module_name', $show_fields) || is_metaconsole()) { - $data[3] = ui_print_truncate_text($row['module_name'], 'module_small', false, true, true); - if ($row['extended_info'] != '') { - $data[3] .= ui_print_help_tip($row['extended_info'], true, '/images/default_list.png'); + if (in_array('agent', $show_fields) || is_metaconsole()) { + $table->head[1] = __('Agent'); + $table->head[1] .= ui_get_sorting_arrows($url_agent_name.'up', $url_agent_name.'down', $selectAgentNameUp, $selectAgentNameDown); } - if ($row['tags'] != '') { - $data[3] .= html_print_image( - '/images/tag_red.png', - true, - [ - 'title' => $row['tags'], - 'class' => 'tag_row', - ] - ); - } - } - - if (in_array('server_type', $show_fields) || is_metaconsole()) { - $data[4] = servers_show_type($row['id_modulo']); - } - - - if (in_array('interval', $show_fields) || is_metaconsole()) { - $data[5] = ($row['module_interval'] == 0) ? human_time_description_raw($row['agent_interval']) : human_time_description_raw($row['module_interval']); - } - - if (in_array('status', $show_fields) || is_metaconsole()) { - 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 - ); - } else if ($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').': '.htmlspecialchars($row['datos']), - true - ); - } - } else if ($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').': '.htmlspecialchars($row['datos']), - true - ); - } - } else if ($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').': '.htmlspecialchars($row['datos']), - true - ); - } - } else if ($row['estado'] == 3) { - if (is_numeric($row['datos'])) { - $data[6] = ui_print_status_image( - STATUS_MODULE_UNKNOWN, - __('UNKNOWN').': '.remove_right_zeros(number_format($row['datos'], $config['graph_precision'])), - true - ); - } else { - $data[6] = ui_print_status_image( - STATUS_MODULE_UNKNOWN, - __('UNKNOWN').': '.htmlspecialchars($row['datos']), - true - ); - } - } else if ($row['estado'] == 4) { - if (is_numeric($row['datos'])) { - $data[6] = ui_print_status_image( - STATUS_MODULE_NO_DATA, - __('NO DATA').': '.remove_right_zeros(number_format($row['datos'], $config['graph_precision'])), - true - ); - } else { - $data[6] = ui_print_status_image( - STATUS_MODULE_NO_DATA, - __('NO DATA').': '.htmlspecialchars($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').': '.htmlspecialchars($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').': '.htmlspecialchars($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').': '.htmlspecialchars($row['datos']), - true - ); - } - break; - } - } - } - - if (in_array('last_status_change', $show_fields) || is_metaconsole()) { - $data[7] = ($row['last_status_change'] > 0) ? human_time_comparation($row['last_status_change']) : __('N/A'); - } - - if (in_array('graph', $show_fields) || is_metaconsole()) { - $data[8] = ''; - - $acl_graphs = false; - - // Avoid the check on the metaconsole. Too slow to show/hide an icon depending on the permissions - if (!is_metaconsole()) { - $agent_groups = agents_get_all_groups_agent($row['id_agent'], $row['id_group']); - $acl_graphs = check_acl_one_of_groups($config['id_user'], $agent_groups, 'RR'); - } else { - $acl_graphs = true; + if (in_array('data_type', $show_fields) || is_metaconsole()) { + $table->head[2] = __('Data Type'); + $table->head[2] .= ui_get_sorting_arrows($url_type.'up', $url_type.'down', $selectDataTypeUp, $selectDataTypeDown); + $table->align[2] = 'left'; } - 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 = [ - 'type' => $graph_type, - 'period' => SECONDS_1DAY, - 'id' => $row['id_agente_modulo'], - 'refresh' => SECONDS_10MINUTES, - ]; - - if (is_metaconsole() && isset($row['server_id'])) { - // Set the server id - $graph_params['server'] = $row['server_id']; - } - - $graph_params_str = http_build_query($graph_params); - - $link = 'winopeng_var(\''.$url.'?'.$graph_params_str.'\',\''.$win_handle.'\', 800, 480)'; - - $data[8] = get_module_realtime_link_graph($row); - - if (!is_snapshot_data($row['datos'])) { - $data[8] .= ''.html_print_image('images/chart.png', true, ['border' => '0', 'alt' => '', 'class' => 'invert_filter']).''; - } - - $data[8] .= ''.html_print_image( - 'images/binary.png', - true, - [ - 'border' => '0', - 'alt' => '', - 'class' => 'invert_filter', - ] - ).''; - - $data[8] .= ''.$row['module_name'].''; + if (in_array('module_name', $show_fields) || is_metaconsole()) { + $table->head[3] = __('Module name'); + $table->head[3] .= ui_get_sorting_arrows($url_module_name.'up', $url_module_name.'down', $selectModuleNameUp, $selectModuleNameDown); } - } - if (in_array('warn', $show_fields) || is_metaconsole()) { - $data[9] = ui_print_module_warn_value( - $row['max_warning'], - $row['min_warning'], - $row['str_warning'], - $row['max_critical'], - $row['min_critical'], - $row['str_critical'], - $row['warning_inverse'], - $row['critical_inverse'] + if (in_array('server_type', $show_fields) || is_metaconsole()) { + $table->head[4] = __('Server type'); + $table->head[4] .= ui_get_sorting_arrows($url_server_type.'up', $url_server_type.'down', $selectTypeUp, $selectTypeDown); + } + + if (in_array('interval', $show_fields) || is_metaconsole()) { + $table->head[5] = __('Interval'); + $table->head[5] .= ui_get_sorting_arrows($url_interval.'up', $url_interval.'down', $selectIntervalUp, $selectIntervalDown); + $table->align[5] = 'left'; + } + + if (in_array('status', $show_fields) || is_metaconsole()) { + $table->head[6] = __('Status'); + $table->head[6] .= ui_get_sorting_arrows($url_status.'up', $url_status.'down', $selectStatusUp, $selectStatusDown); + $table->align[6] = 'left'; + } + + if (in_array('last_status_change', $show_fields)) { + $table->head[7] = __('Last status change'); + $table->head[7] .= ui_get_sorting_arrows($url_status.'up', $url_status.'down', $selectStatusUp, $selectStatusDown); + $table->align[7] = 'left'; + } + + if (in_array('graph', $show_fields) || is_metaconsole()) { + $table->head[8] = __('Graph'); + $table->align[8] = 'left'; + } + + if (in_array('warn', $show_fields) || is_metaconsole()) { + $table->head[9] = __('Warn'); + $table->align[9] = 'left'; + } + + if (in_array('data', $show_fields) || is_metaconsole()) { + $table->head[10] = __('Data'); + $table->align[10] = 'left'; + if (is_metaconsole()) { + $table->head[10] .= ui_get_sorting_arrows($url_data.'up', $url_data.'down', $selectDataUp, $selectDataDown); + } + } + + if (in_array('timestamp', $show_fields) || is_metaconsole()) { + $table->head[11] = __('Timestamp'); + $table->head[11] .= ui_get_sorting_arrows($url_timestamp_up, $url_timestamp_down, $selectTimestampUp, $selectTimestampDown); + $table->align[11] = 'left'; + } + + $id_type_web_content_string = db_get_value( + 'id_tipo', + 'ttipo_modulo', + 'nombre', + 'web_content_string' ); - 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; + foreach ($result as $row) { + // Avoid unset, null and false value. + if (empty($row['server_name'])) { + $row['server_name'] = ''; + } - default: + $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, + ] + ); + + // 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 = []; + + if (in_array('policy', $show_fields) || is_metaconsole()) { + if ($isFunctionPolicies !== ENTERPRISE_NOT_HOOK) { + if (is_metaconsole()) { + $node = metaconsole_get_connection_by_id($row['server_id']); + if (metaconsole_load_external_db($node) !== NOERR) { + // Restore the default connection. + metaconsole_restore_db(); + $errors++; + break; + } + } + + $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_mc.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']; + } + } + + if (is_metaconsole()) { + $data[0] = ''.html_print_image($img, true, ['title' => $title]).''; + } else { + $data[0] = ''.html_print_image($img, true, ['title' => $title]).''; + } + } + + if (is_metaconsole()) { + metaconsole_restore_db(); + } + } + } + + if (in_array('agent', $show_fields) || is_metaconsole()) { + $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] .= ''; + } + } + + if (in_array('data_type', $show_fields) || is_metaconsole()) { + $data[2] = html_print_image('images/'.modules_show_icon_type($row['module_type']), true, ['class' => 'invert_filter']); + $agent_groups = is_metaconsole() ? $row['groups_in_server'] : agents_get_all_groups_agent($row['id_agent'], $row['id_group']); + if (check_acl_one_of_groups($config['id_user'], $agent_groups, '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) { + $table->cellclass[][2] = 'action_buttons'; + $data[2] .= ''.html_print_image( + 'images/config.png', + true, + [ + 'alt' => '0', + 'border' => '', + 'title' => __('Edit'), + ] + ).''; + } + } + } + + if (in_array('module_name', $show_fields) || is_metaconsole()) { + $data[3] = ui_print_truncate_text($row['module_name'], 'module_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, + [ + 'title' => $row['tags'], + 'class' => 'tag_row', + ] + ); + } + } + + if (in_array('server_type', $show_fields) || is_metaconsole()) { + $data[4] = servers_show_type($row['id_modulo']); + } + + + if (in_array('interval', $show_fields) || is_metaconsole()) { + $data[5] = ($row['module_interval'] == 0) ? human_time_description_raw($row['agent_interval']) : human_time_description_raw($row['module_interval']); + } + + if (in_array('status', $show_fields) || is_metaconsole()) { + 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 + ); + } else if ($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').': '.htmlspecialchars($row['datos']), + true + ); + } + } else if ($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').': '.htmlspecialchars($row['datos']), + true + ); + } + } else if ($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').': '.htmlspecialchars($row['datos']), + true + ); + } + } else if ($row['estado'] == 3) { + if (is_numeric($row['datos'])) { + $data[6] = ui_print_status_image( + STATUS_MODULE_UNKNOWN, + __('UNKNOWN').': '.remove_right_zeros( + number_format($row['datos'], $config['graph_precision']) + ), + true + ); + } else { + $data[6] = ui_print_status_image( + STATUS_MODULE_UNKNOWN, + __('UNKNOWN').': '.htmlspecialchars($row['datos']), + true + ); + } + } else if ($row['estado'] == 4) { + if (is_numeric($row['datos'])) { + $data[6] = ui_print_status_image( + STATUS_MODULE_NO_DATA, + __('NO DATA').': '.remove_right_zeros( + number_format($row['datos'], $config['graph_precision']) + ), + true + ); + } else { + $data[6] = ui_print_status_image( + STATUS_MODULE_NO_DATA, + __('NO DATA').': '.htmlspecialchars($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').': '.htmlspecialchars($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').': '.htmlspecialchars($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').': '.htmlspecialchars($row['datos']), + true + ); + } + break; + } + } + } + + if (in_array('last_status_change', $show_fields) || is_metaconsole()) { + $data[7] = ($row['last_status_change'] > 0) ? human_time_comparation($row['last_status_change']) : __('N/A'); + } + + if (in_array('graph', $show_fields) || is_metaconsole()) { + $data[8] = ''; + + $acl_graphs = false; + + // Avoid the check on the metaconsole. Too slow to show/hide an icon depending on the permissions. + if (!is_metaconsole()) { + $agent_groups = agents_get_all_groups_agent($row['id_agent'], $row['id_group']); + $acl_graphs = check_acl_one_of_groups($config['id_user'], $agent_groups, '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 = [ + 'type' => $graph_type, + 'period' => SECONDS_1DAY, + 'id' => $row['id_agente_modulo'], + 'refresh' => SECONDS_10MINUTES, + ]; + + if (is_metaconsole() && isset($row['server_id'])) { + // Set the server id. + $graph_params['server'] = $row['server_id']; + } + + $graph_params_str = http_build_query($graph_params); + + $link = 'winopeng_var(\''.$url.'?'.$graph_params_str.'\',\''.$win_handle.'\', 800, 480)'; + + $data[8] = get_module_realtime_link_graph($row); + + if (!is_snapshot_data($row['datos'])) { + $data[8] .= ''.html_print_image('images/chart.png', true, ['border' => '0', 'alt' => '', 'class' => 'invert_filter']).''; + } + + $data[8] .= ''.html_print_image( + 'images/binary.png', + true, + [ + 'border' => '0', + 'alt' => '', + 'class' => 'invert_filter', + ] + ).''; + + $data[8] .= ''.$row['module_name'].''; + } + } + + if (in_array('warn', $show_fields) || is_metaconsole()) { + $data[9] = ui_print_module_warn_value( + $row['max_warning'], + $row['min_warning'], + $row['str_warning'], + $row['max_critical'], + $row['min_critical'], + $row['str_critical'], + $row['warning_inverse'], + $row['critical_inverse'] + ); + + 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']); @@ -1691,152 +1750,135 @@ if (!empty($result)) { $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']).''; - if (strlen($salida) > $config['agent_size_text_small']) { - $salida = ui_print_truncate_text($salida, 'agent_small', true, true, false, '[…]', 'font-size:7.5pt;'); - // clean tag - $text_aux = explode(' $row['id_agente_modulo'], - 'interval' => $row['current_interval'], - 'module_name' => $row['module_name'], - 'id_node' => $row['server_id'], - ] - ); - $salida = ui_get_snapshot_image($link, $is_snapshot).'  '; - } 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 { + // 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 = $row['datos']; + $salida .= ' '.''.io_safe_output($row['unit']).''; + if (strlen($salida) > $config['agent_size_text_small']) { + $salida = ui_print_truncate_text($salida, 'agent_small', true, true, false, '[…]', 'font-size:7.5pt;'); + // Clean tag . + $text_aux = explode(' $row['id_agente_modulo'], + 'interval' => $row['current_interval'], + 'module_name' => $row['module_name'], + 'id_node' => $row['server_id'], + ] + ); + $salida = ui_get_snapshot_image($link, $is_snapshot).'  '; } else { - $salida = ''.'".''.$sub_string.' '."".html_print_image('images/rosette.png', true).''; + } + } } } } + + if (in_array('data', $show_fields) || is_metaconsole()) { + $data[10] = $salida; + } + + if (in_array('timestamp', $show_fields) || is_metaconsole()) { + if ($row['module_interval'] > 0) { + $interval = $row['module_interval']; + } else { + $interval = $row['agent_interval']; + } + + if ($row['estado'] == 3) { + $option = [ + 'html_attr' => 'class="redb"', + 'style' => 'font-size:7pt;', + ]; + } else { + $option = ['style' => 'font-size:7pt;']; + } + + $data[11] = ui_print_timestamp($row['utimestamp'], true, $option); + } + + array_push($table->data, $data); } - } - if (in_array('data', $show_fields) || is_metaconsole()) { - $data[10] = $salida; - } + html_print_table($table); - if (in_array('timestamp', $show_fields) || is_metaconsole()) { - if ($row['module_interval'] > 0) { - $interval = $row['module_interval']; + if ($count_modules > $config['block_size']) { + ui_pagination($count_modules, false, $offset, 0, false, 'offset', true, 'pagination-bottom'); + } + } else { + if ($first_interaction) { + ui_print_info_message(['no_close' => true, 'message' => __('This group doesn\'t have any monitor')]); } else { - $interval = $row['agent_interval']; + ui_print_info_message(['no_close' => true, 'message' => __('Sorry no search parameters')]); } - - if ($row['estado'] == 3) { - $option = [ - 'html_attr' => 'class="redb"', - 'style' => 'font-size:7pt;', - ]; - } else { - $option = ['style' => 'font-size:7pt;']; - } - - $data[11] = ui_print_timestamp($row['utimestamp'], true, $option); } - array_push($table->data, $data); - } + // End Build List Result. + echo "
"; - html_print_table($table); + enterprise_hook('close_meta_frame'); - if ($count_modules > $config['block_size']) { - ui_pagination($count_modules, false, $offset, 0, false, 'offset', true, 'pagination-bottom'); - } -} else { - if ($first_interaction) { - ui_print_info_message(['no_close' => true, 'message' => __('This group doesn\'t have any monitor')]); - } else { - ui_print_info_message(['no_close' => true, 'message' => __('Sorry no search parameters')]); - } -} + ui_require_javascript_file('pandora_modules'); -// End Build List Result. -echo "
"; - -enterprise_hook('close_meta_frame'); - -ui_require_javascript_file('pandora_modules'); - -?> + ?>