$value) { $values_insert[] = '('.$value['id_server'].', '.$value['id_agente'].", '".$value['description']."', '".$value['critical_count']."', '".$value['warning_count']."', '".$value['unknown_count']."', '".$value['notinit_count']."', '".$value['normal_count']."', '".$value['total_count']."', ".$value['status'].')'; } $values_insert_implode = implode(',', $values_insert); $query_insert = 'INSERT INTO temp_custom_fields VALUES '.$values_insert_implode; db_process_sql($query_insert); // Search table for alias, custom field data, server_name, direction. $search_query = ''; if ($search['value'] != '') { $search_query = ' AND (tma.alias LIKE "%'.$search['value'].'%"'; $search_query .= ' OR tma.server_name LIKE "%'.$search['value'].'%"'; $search_query .= ' OR tma.direccion LIKE "%'.$search['value'].'%"'; $search_query .= ' OR temp.name_custom_fields LIKE "%'.$search['value'].'%" ) '; } // Search for status module. $status_agent_search = ''; if (isset($id_status) === true && is_array($id_status) === true) { if (in_array(-1, $id_status) === false) { if (in_array(AGENT_MODULE_STATUS_NOT_NORMAL, $id_status) === false) { $status_agent_search = ' AND temp.status IN ('.implode(',', $id_status).')'; } else { // Not normal statuses. $status_agent_search = ' AND temp.status IN (1,2,3,4,5)'; } } } // Search for status module. $status_module_search = ''; if (isset($module_status) === true && is_array($module_status) === true) { if (in_array(-1, $module_status) === false) { if (in_array(AGENT_MODULE_STATUS_NOT_NORMAL, $module_status) === false) { if (count($module_status) > 0) { $status_module_search = ' AND ( '; foreach ($module_status as $key => $value) { $status_module_search .= ($key != 0) ? ' OR (' : ' ('; switch ($value) { default: case AGENT_STATUS_NORMAL: $status_module_search .= ' temp.normal_count > 0) '; break; case AGENT_STATUS_CRITICAL: $status_module_search .= ' temp.critical_count > 0) '; break; case AGENT_STATUS_WARNING: $status_module_search .= ' temp.warning_count > 0) '; break; case AGENT_STATUS_UNKNOWN: $status_module_search .= ' temp.unknown_count > 0) '; break; case AGENT_STATUS_NOT_INIT: $status_module_search .= ' temp.notinit_count > 0) '; break; } } $status_module_search .= ' ) '; } } else { // Not normal. $status_module_search = ' AND ( temp.critical_count > 0 OR temp.warning_count > 0 OR temp.unknown_count > 0 AND temp.notinit_count > 0 )'; } } } // Query all fields result. $query = sprintf( 'SELECT tma.id_agente, tma.id_tagente, tma.id_tmetaconsole_setup, tma.alias, tma.direccion, tma.server_name, temp.name_custom_fields, temp.status FROM tmetaconsole_agent tma INNER JOIN temp_custom_fields temp ON temp.id_agent = tma.id_tagente AND temp.id_server = tma.id_tmetaconsole_setup WHERE tma.disabled = 0 %s %s %s %s LIMIT %d OFFSET %d ', $search_query, $status_agent_search, $status_module_search, $order_by, $length, $start ); $result = db_get_all_rows_sql($query); // Query count. $query_count = sprintf( 'SELECT COUNT(tma.id_agente) AS `count` FROM tmetaconsole_agent tma INNER JOIN temp_custom_fields temp ON temp.id_agent = tma.id_tagente AND temp.id_server = tma.id_tmetaconsole_setup WHERE tma.disabled = 0 %s %s %s ', $search_query, $status_agent_search, $status_module_search ); $count = db_get_sql($query_count); // For link nodes. $array_nodes = metaconsole_get_connections(); if (isset($array_nodes) && is_array($array_nodes)) { $hash_array_nodes = []; foreach ($array_nodes as $key => $server) { $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; $hash_array_nodes[$server['id']]['hashurl'] = $url_hash; $hash_array_nodes[$server['id']]['server_url'] = $server['server_url']; } } // Prepare rows for table dinamic. $data = []; foreach ($result as $values) { $image_status = agents_get_image_status($values['status']); // Link nodes. $agent_link = ''; $agent_alias = ui_print_truncate_text( $values['alias'], 'agent_small', false, true, false, '[…]', 'font-size:7.5pt;' ); if (can_user_access_node()) { $agent = $agent_link.''.$agent_alias.''; } else { $agent = $agent_alias; } $data[] = [ 'ref' => $referencia, 'data_custom_field' => $values['name_custom_fields'], 'server' => $values['server_name'], 'agent' => $agent, 'IP' => $values['direccion'], 'status' => "
".$image_status.'
', 'id_agent' => $values['id_tagente'], 'id_server' => $values['id_tmetaconsole_setup'], ]; } $result = [ 'draw' => $draw, 'recordsTotal' => count($data), 'recordsFiltered' => $count, 'data' => $data, ]; echo json_encode($result); return; } if ($build_table_child_custom_fields) { $id_agent = get_parameter('id_agent', 0); $id_server = get_parameter('id_server', 0); $module_search = str_replace('amp;', '', get_parameter('module_search', '')); $module_status = get_parameter('module_status', 0); if (!$id_server || !$id_agent) { return false; } if ($module_search != '') { $name_where = " AND tam.nombre LIKE '%".$module_search."%'"; } // Filter by status module. $and_module_status = ''; if (is_array($module_status)) { if (!in_array(-1, $module_status)) { if (!in_array(AGENT_MODULE_STATUS_NOT_NORMAL, $module_status)) { if (count($module_status) > 0) { $and_module_status = ' AND ( '; foreach ($module_status as $key => $value) { $and_module_status .= ($key != 0) ? ' OR (' : ' ('; switch ($value) { default: case AGENT_STATUS_NORMAL: $and_module_status .= ' tae.estado = 0 OR tae.estado = 300 ) '; break; case AGENT_STATUS_CRITICAL: $and_module_status .= ' tae.estado = 1 OR tae.estado = 100 ) '; break; case AGENT_STATUS_WARNING: $and_module_status .= ' tae.estado = 2 OR tae.estado = 200 ) '; break; case AGENT_STATUS_UNKNOWN: $and_module_status .= ' tae.estado = 3 ) '; break; case AGENT_STATUS_NOT_INIT: $and_module_status .= ' tae.estado = 4 OR tae.estado = 5 ) '; break; } } $and_module_status .= ' ) '; } } else { // Not normal. $and_module_status = 'AND tae.estado <> 0 AND tae.estado <> 300 '; } } } if (is_metaconsole()) { $server = metaconsole_get_connection_by_id($id_server); metaconsole_connect($server); } $query = sprintf( 'SELECT tam.nombre, tam.min_warning, tam.max_warning, tam.min_critical, tam.max_critical, tam.str_warning, tam.str_critical, tam.id_tipo_modulo, tae.estado, tae.current_interval, tae.utimestamp, tae.datos FROM tagente_modulo tam INNER JOIN tagente_estado tae ON tam.id_agente_modulo = tae.id_agente_modulo WHERE tam.id_agente = %d %s %s', $id_agent, $name_where, $and_module_status ); $modules = db_get_all_rows_sql($query); $table_modules = new stdClass(); $table_modules->width = '100%'; $table_modules->class = 'databox data'; $table_modules->head = []; $table_modules->head[0] = __('Module name'); $table_modules->head[1] = __('Data'); $table_modules->head[2] = __('Treshold'); $table_modules->head[3] = __('Current interval'); $table_modules->head[4] = __('Timestamp'); $table_modules->head[5] = __('Status'); $table_modules->data = []; if (isset($modules) && is_array($modules)) { foreach ($modules as $key => $value) { $table_modules->data[$key][0] = $value['nombre']; if ($value['id_tipo_modulo'] != 3 && $value['id_tipo_modulo'] != 10 && $value['id_tipo_modulo'] != 17 && $value['id_tipo_modulo'] != 23 && $value['id_tipo_modulo'] != 33 ) { $table_modules->data[$key][1] = remove_right_zeros( number_format( $value['datos'], $config['graph_precision'] ) ); } else { $table_modules->data[$key][1] = $value['datos']; } $table_modules->data[$key][2] = ui_print_module_warn_value( $value['max_warning'], $value['min_warning'], $value['str_warning'], $value['max_critical'], $value['min_critical'], $value['str_critical'] ); $table_modules->data[$key][3] = $value['current_interval']; $table_modules->data[$key][4] = ui_print_timestamp( $value['utimestamp'], true ); switch ($value['estado']) { case 0: case 300: $table_modules->data[$key][5] = html_print_image( 'images/status_sets/default/severity_normal.png', true, [ 'title' => __('Modules normal'), ] ); break; case 1: case 100: $table_modules->data[$key][5] = html_print_image( 'images/status_sets/default/severity_critical.png', true, [ 'title' => __('Modules critical'), ] ); break; case 2: case 200: $table_modules->data[$key][5] = html_print_image( 'images/status_sets/default/severity_warning.png', true, [ 'title' => __('Modules warning'), ] ); break; case 3: $table_modules->data[$key][5] = html_print_image( 'images/status_sets/default/severity_maintenance.png', true, [ 'title' => __('Modules unknown'), ] ); break; case 4: case 5: $table_modules->data[$key][5] = html_print_image( 'images/status_sets/default/severity_informational.png', true, [ 'title' => __('Modules no init'), ] ); break; default: $table_modules->data[$key][5] = html_print_image( 'images/status_sets/default/severity_normal.png', true, [ 'title' => __('Modules normal'), ] ); break; } } } // Status agents from tagente. $sql_info_agents = 'SELECT * fROM tagente WHERE id_agente ='.$id_agent; $info_agents = db_get_row_sql($sql_info_agents); $status_agent = agents_get_status_from_counts($info_agents); if (is_metaconsole()) { metaconsole_restore_db(); } $data['modules_table'] = html_print_table($table_modules, true); $data['img_status_agent'] = agents_get_image_status($status_agent); echo json_encode($data); return; } if ($build_table_save_filter) { $type_form = get_parameter('type_form', ''); if ($type_form == 'save') { $tabs = '
'; $tabs .= "'; $tabs .= '
'; $tabs .= '
'; $tabs .= '
'; $tabs .= '
'; $tabs .= '
'; echo $tabs; } else { $table = new StdClass; $table->id = 'save_filter_form'; $table->width = '100%'; $table->class = 'databox'; $array_filters = get_filters_custom_fields_view(0, true); $table->data[0][0] = __('Filter name'); $table->data[0][1] = html_print_select( $array_filters, 'id_name', '', '', '', '', true, false, true, '', false ); $table->data[0][3] = html_print_submit_button( __('Load filter'), 'load_filter', false, 'class="sub upd"', true ); echo "
"; html_print_table($table); echo '
'; } return; } if ($append_tab_filter) { $filters = json_decode( io_safe_output( get_parameter('filters', '') ), true ); $table = new StdClass; $table->id = 'save_filter_form'; $table->width = '100%'; $table->class = 'databox'; $table->rowspan = []; if ($filters['id'] == 'extended_create_filter') { echo "
"; $table->data[0][0] = __('Filter name'); $table->data[0][1] = html_print_input_text( 'id_name', '', '', 15, 255, true ); $table->data[1][0] = __('Group'); $table->data[1][1] = html_print_select_groups( $config['id_user'], 'AR', true, 'group_search_cr', 0, '', '', '0', true, false, false, '', false, 'width:180px;', false, false, 'id_grupo', false ); $table->rowspan[0][2] = 2; $table->data[0][2] = html_print_submit_button( __('Create filter'), 'create_filter', false, 'class="sub upd"', true ); } else { echo "
"; echo "
"; $array_filters = get_filters_custom_fields_view(0, true); $table->data[0][0] = __('Filter name'); $table->data[0][1] = html_print_select( $array_filters, 'id_name', '', 'filter_name_change_group(this.value)', __('None'), -1, true, false, true, '', false ); $table->data[1][0] = __('Group'); $table->data[1][1] = html_print_select_groups( $config['id_user'], 'AR', true, 'group_search_up', $group, '', '', '0', true, false, false, '', false, 'width:180px;', false, false, 'id_grupo', false ); $table->data[0][2] = html_print_submit_button( __('Delete filter'), 'delete_filter', false, 'class="sub upd"', true ); $table->data[1][2] = html_print_submit_button( __('Update filter'), 'update_filter', false, 'class="sub upd"', true ); } html_print_table($table); return; } if ($create_filter_cf) { // Initialize result. $result_array = []; $result_array['error'] = 0; $result_array['msg'] = ''; // Initialize vars. $filters = json_decode( io_safe_output(get_parameter('filters', '')), true ); $name_filter = get_parameter('name_filter', ''); $group_search = get_parameter('group_search', 0); // Check that the name is not empty. if ($name_filter == '') { $result_array['error'] = 1; $result_array['msg'] = ui_print_error_message( __('The name must not be empty'), '', true ); echo json_encode($result_array); return; } $name_exists = get_filters_custom_fields_view(0, false, $name_filter); if ($name_exists) { $result_array['error'] = 1; $result_array['msg'] = ui_print_error_message( __('Filter name already exists in the bbdd'), '', true ); echo json_encode($result_array); return; } // Check custom field is not empty. if ($filters['id_custom_fields'] == '') { $result_array['error'] = 1; $result_array['msg'] = ui_print_error_message( __('Please, select a custom field'), '', true ); echo json_encode($result_array); return; } // Insert. $values = []; $values['name'] = $name_filter; $values['group_search'] = $group_search; $values['id_group'] = $filters['group']; $values['id_custom_field'] = $filters['id_custom_fields']; $values['id_custom_fields_data'] = json_encode( $filters['id_custom_fields_data'] ); $values['id_status'] = json_encode($filters['id_status']); $values['module_search'] = $filters['module_search']; $values['module_status'] = json_encode($filters['module_status']); $values['recursion'] = $filters['recursion']; $insert = db_process_sql_insert('tagent_custom_fields_filter', $values); // Check error insert. if ($insert) { $result_array['error'] = 0; $result_array['msg'] = ui_print_success_message( __('Success create filter.'), '', true ); } else { $result_array['error'] = 1; $result_array['msg'] = ui_print_error_message( __('Error create filter.'), '', true ); } echo json_encode($result_array); return; } if ($update_filter_cf) { // Initialize result. $result_array = []; $result_array['error'] = 0; $result_array['msg'] = ''; // Initialize vars. $filters = json_decode(io_safe_output(get_parameter('filters', '')), true); $id_filter = get_parameter('id_filter', ''); $group_search = get_parameter('group_search', 0); // Check selected filter. if ($id_filter == -1) { $result_array['error'] = 1; $result_array['msg'] = ui_print_error_message( __('please, select a filter'), '', true ); echo json_encode($result_array); return; } // Array condition update. $condition = []; $condition['id'] = $id_filter; // Check selected custom fields. if ($filters['id_custom_fields'] == '') { $result_array['error'] = 1; $result_array['msg'] = ui_print_error_message( __('please, select a custom field'), '', true ); echo json_encode($result_array); return; } // Array values update. $values = []; $values['id_group'] = $filters['group']; $values['group_search'] = $group_search; $values['id_custom_field'] = $filters['id_custom_fields']; $values['id_custom_fields_data'] = json_encode($filters['id_custom_fields_data']); $values['id_status'] = json_encode($filters['id_status']); $values['module_search'] = $filters['module_search']; $values['module_status'] = json_encode($filters['module_status']); $values['recursion'] = $filters['recursion']; // Update. $update = db_process_sql_update('tagent_custom_fields_filter', $values, $condition); // Check error insert. if ($update) { $result_array['error'] = 0; $result_array['msg'] = ui_print_success_message( __('Success update filter.'), '', true ); } else { $result_array['error'] = 1; $result_array['msg'] = ui_print_error_message( __('Error update filter.'), '', true ); } echo json_encode($result_array); return; } if ($delete_filter_cf) { // Initialize result. $result_array = []; $result_array['error'] = 0; $result_array['msg'] = ''; // Initialize vars. $filters = json_decode(io_safe_output(get_parameter('filters', '')), true); $id_filter = get_parameter('id_filter', ''); // Check selected filter. if ($id_filter == -1) { $result_array['error'] = 1; $result_array['msg'] = ui_print_error_message( __('please, select a filter'), '', true ); echo json_encode($result_array); return; } // Array condition update. $condition = []; $condition['id'] = $id_filter; // Delete. $delete = db_process_sql_delete('tagent_custom_fields_filter', $condition); // Check error insert. if ($delete) { $result_array['error'] = 0; $result_array['msg'] = ui_print_success_message( __('Success delete filter.'), '', true ); } else { $result_array['error'] = 1; $result_array['msg'] = ui_print_error_message( __('Error delete filter.'), '', true ); } echo json_encode($result_array); return; } if ($change_name_filter) { $id_filter = get_parameter('id_filter', 0); if (isset($id_filter)) { $res = get_group_filter_custom_field_view($id_filter); echo json_encode($res); return; } return json_encode(false); } }