0) { // Evaluate if we are in metaconsole or not. $eventTable = 'tevento'; // Default grouped message filtering (evento and estado). $whereGrouped = sprintf( '`evento` = "%s" AND `estado` = "%s"', $event['evento'], $event['estado'] ); // If id_agente is reported, filter the messages by them as well. if ((int) $event['id_agente'] > 0) { $whereGrouped .= sprintf(' AND `id_agente` = "%s"', $event['id_agente']); } // Get grouped comments. $eventsGrouped = db_get_all_rows_sql( sprintf( 'SELECT `user_comment` FROM `%s` WHERE %s', $eventTable, $whereGrouped ) ); } else { $events = events_get_event( $event['id_evento'], false, is_metaconsole(), $history ); if ($events !== false) { $event = $events; } } } // End of get_comments. echo events_page_comments($event, true, $eventsGrouped); return; } if ($get_event_filters) { $event_filter = events_get_event_filter_select(); echo io_json_mb_encode($event_filter); return; } // Delete event (filtered or not). if ($delete_event) { $filter = get_parameter('filter', []); $id_evento = get_parameter('id_evento', 0); $event_rep = get_parameter('event_rep', 0); if ($event_rep === 0) { // Disable group by when there're result is unique. $filter['group_rep'] = 0; } // Check acl. if (! check_acl($config['id_user'], 0, 'EM')) { echo 'unauthorized'; return; } if ($node_id > 0) { try { $node = new Node($node_id); $node->connect(); $r = events_delete($id_evento, $filter, false, true); } catch (\Exception $e) { // Unexistent agent. $node->disconnect(); $success = false; echo 'owner_error'; } finally { $node->disconnect(); } } else { $r = events_delete($id_evento, $filter); } if ($r === false) { echo 'Failed'; } else { echo $r; } return; } // Validates an event (filtered or not). if ($validate_event) { $filter = get_parameter('filter', []); $id_evento = get_parameter('id_evento', 0); $event_rep = get_parameter('event_rep', 0); if ($event_rep === 0) { // Disable group by when there're result is unique. $filter['group_rep'] = 0; } // Check acl. if (! check_acl($config['id_user'], 0, 'EW')) { echo 'unauthorized'; return; } $r = events_update_status($id_evento, EVENT_VALIDATE, $filter); if ($r === false) { echo 'Failed'; } else { echo $r; } return; } // Sets status to in progress. if ($in_process_event) { $filter = get_parameter('filter', []); $id_evento = get_parameter('id_evento', 0); $event_rep = get_parameter('event_rep', 0); if ($event_rep === 0) { // Disable group by when there're result is unique. $filter['group_rep'] = 0; } // Check acl. if (! check_acl($config['id_user'], 0, 'EW')) { echo 'unauthorized'; return; } $r = events_update_status($id_evento, EVENT_PROCESS, $filter); if ($r === false) { echo 'Failed'; } else { echo $r; } return; } // Saves an event filter. if ($save_event_filter) { $values = []; $values['id_name'] = get_parameter('id_name'); $values['id_group'] = get_parameter('id_group'); $values['event_type'] = get_parameter('event_type'); $values['severity'] = implode(',', get_parameter('severity', -1)); $values['status'] = get_parameter('status'); $values['search'] = get_parameter('search'); $values['text_agent'] = get_parameter('text_agent'); $values['id_agent'] = get_parameter('id_agent'); $values['id_agent_module'] = get_parameter('id_agent_module'); $values['pagination'] = get_parameter('pagination'); $values['event_view_hr'] = get_parameter('event_view_hr'); $values['id_user_ack'] = get_parameter('id_user_ack'); $values['group_rep'] = get_parameter('group_rep'); $values['tag_with'] = get_parameter('tag_with', io_json_mb_encode([])); $values['tag_without'] = get_parameter( 'tag_without', io_json_mb_encode([]) ); $values['filter_only_alert'] = get_parameter('filter_only_alert'); $values['id_group_filter'] = get_parameter('id_group_filter'); $values['date_from'] = get_parameter('date_from'); $values['time_from'] = get_parameter('time_from'); $values['date_to'] = get_parameter('date_to'); $values['time_to'] = get_parameter('time_to'); $values['source'] = get_parameter('source'); $values['id_extra'] = get_parameter('id_extra'); $values['user_comment'] = get_parameter('user_comment'); $values['id_source_event'] = get_parameter('id_source_event'); $values['custom_data'] = get_parameter('custom_data'); $values['custom_data_filter_type'] = get_parameter('custom_data_filter_type'); if (is_metaconsole()) { $values['server_id'] = get_parameter('server_id'); } $exists = (bool) db_get_value_filter( 'id_filter', 'tevent_filter', $values ); if ($exists) { echo 'duplicate'; } else { $result = db_process_sql_insert('tevent_filter', $values); if ($result === false) { echo 'error'; } else { echo $result; } } } if ($update_event_filter) { $values = []; $id = get_parameter('id'); $values['id_group'] = get_parameter('id_group'); $values['event_type'] = get_parameter('event_type'); $values['severity'] = implode(',', get_parameter('severity', -1)); $values['status'] = get_parameter('status'); $values['search'] = get_parameter('search'); $values['text_agent'] = get_parameter('text_agent'); $values['id_agent'] = get_parameter('id_agent'); $values['id_agent_module'] = get_parameter('id_agent_module'); $values['pagination'] = get_parameter('pagination'); $values['event_view_hr'] = get_parameter('event_view_hr'); $values['id_user_ack'] = get_parameter('id_user_ack'); $values['group_rep'] = get_parameter('group_rep'); $values['tag_with'] = get_parameter('tag_with', io_json_mb_encode([])); $values['tag_without'] = get_parameter( 'tag_without', io_json_mb_encode([]) ); $values['filter_only_alert'] = get_parameter('filter_only_alert'); $values['id_group_filter'] = get_parameter('id_group_filter'); $values['date_from'] = get_parameter('date_from'); $values['time_from'] = get_parameter('time_from'); $values['date_to'] = get_parameter('date_to'); $values['time_to'] = get_parameter('time_to'); $values['source'] = get_parameter('source'); $values['id_extra'] = get_parameter('id_extra'); $values['user_comment'] = get_parameter('user_comment'); $values['id_source_event'] = get_parameter('id_source_event'); $values['custom_data'] = get_parameter('custom_data'); $values['custom_data_filter_type'] = get_parameter('custom_data_filter_type'); if (is_metaconsole() === true) { $values['server_id'] = get_parameter('server_id'); } if (io_safe_output($values['tag_with']) == '["0"]') { $values['tag_with'] = '[]'; } if (io_safe_output($values['tag_without']) == '["0"]') { $values['tag_without'] = '[]'; } $result = db_process_sql_update( 'tevent_filter', $values, ['id_filter' => $id] ); if ($result === false) { echo 'error'; } else { echo 'ok'; } } // Get db values of a single filter. if ($get_filter_values) { $id_filter = get_parameter('id'); $event_filter = events_get_event_filter($id_filter); if ($event_filter === false) { $event_filter = [ 'status' => EVENT_NO_VALIDATED, 'event_view_hr' => $config['event_view_hr'], 'group_rep' => 1, 'tag_with' => [], 'tag_without' => [], 'history' => false, 'module_search' => '', 'filter_only_alert' => '-1', 'user_comment' => '', 'id_extra' => '', 'id_user_ack' => '', 'date_from' => '', 'time_from' => '', 'date_to' => '', 'time_to' => '', 'severity' => '', 'event_type' => '', 'group_rep' => 0, 'id_group' => 0, 'id_group_filter' => 0, 'group_name' => 'All', 'text_agent' => '', 'id_agent' => 0, 'id_name' => 'None', 'filter_id' => 0, ]; } else { $event_filter['module_search'] = io_safe_output(db_get_value_filter('nombre', 'tagente_modulo', ['id_agente_modulo' => $event_filter['id_agent_module']])); $a = array_keys(users_get_groups(false)); $event_filter['group_name'] = ''; foreach ($a as $key => $value) { if ($value == $event_filter['id_group']) { $event_filter['group_name'] = db_get_value('nombre', 'tgrupo', 'id_grupo', $event_filter['id_group_filter']); if ($event_filter['group_name'] === false) { $event_filter['group_name'] = __('All'); } } } if (is_metaconsole() === true) { $server_name = db_get_value('server_name', 'tmetaconsole_setup', 'id', $event_filter['server_id']); if ($server_name !== false) { $event_filter['server_name'] = $server_name; } } $event_filter['module_search'] = io_safe_output(db_get_value_filter('nombre', 'tagente_modulo', ['id_agente_modulo' => $event_filter['id_agent_module']])); } $event_filter['search'] = io_safe_output($event_filter['search']); $event_filter['id_name'] = io_safe_output($event_filter['id_name']); $event_filter['text_agent'] = io_safe_output($event_filter['text_agent']); $event_filter['source'] = io_safe_output($event_filter['source']); $event_filter['tag_with'] = base64_encode( io_safe_output($event_filter['tag_with']) ); $event_filter['tag_without'] = base64_encode( io_safe_output($event_filter['tag_without']) ); echo io_json_mb_encode($event_filter); } if ($load_filter_modal) { $current = db_get_value_filter('default_event_filter', 'tusuario', ['id_user' => $config['id_user']]); $filters = events_get_event_filter_select(); $user_groups_array = users_get_groups_for_select( $config['id_user'], $access, true, true, false ); echo '
'; echo '
'; $table = new StdClass; $table->id = 'load_filter_form'; $table->width = '100%'; $table->cellspacing = 4; $table->cellpadding = 4; $table->class = 'databox'; if (is_metaconsole()) { $table->cellspacing = 0; $table->cellpadding = 0; $table->class = 'databox filters'; } $table->styleTable = 'font-weight: bold; color: #555; text-align:left;'; $filter_id_width = '200px'; if (is_metaconsole()) { $filter_id_width = '150px'; } $data = []; $table->rowid[3] = 'update_filter_row1'; $data[0] = __('Load filter').$jump; $data[0] .= html_print_select( $filters, 'filter_id', $current, '', __('None'), 0, true, false, true, '', false, 'margin-left:5px; width:'.$filter_id_width.';' ); $data[1] = html_print_submit_button( __('Load filter'), 'load_filter', false, 'class="sub upd"', true ); $data[1] .= html_print_input_hidden('load_filter', 1, true); $table->data[] = $data; $table->rowclass[] = ''; html_print_table($table); echo '
'; echo '
'; ?> '; if (check_acl($config['id_user'], 0, 'EW') || check_acl($config['id_user'], 0, 'EM') ) { echo '
'; $table = new StdClass; $table->id = 'save_filter_form'; $table->width = '100%'; $table->cellspacing = 4; $table->cellpadding = 4; $table->class = 'databox'; if (is_metaconsole()) { $table->class = 'databox filters'; $table->cellspacing = 0; $table->cellpadding = 0; } $table->styleTable = 'font-weight: bold; text-align:left;'; if (!is_metaconsole()) { $table->style[0] = 'width: 50%; width:50%;'; } $data = []; $table->rowid[0] = 'update_save_selector'; $data[0] = html_print_radio_button( 'filter_mode', 'new', '', true, true ).__('New filter').''; $data[1] = html_print_radio_button( 'filter_mode', 'update', '', false, true ).__('Update filter').''; $table->data[] = $data; $table->rowclass[] = ''; $data = []; $table->rowid[1] = 'save_filter_row1'; $data[0] = __('Filter name').$jump; $data[0] .= html_print_input_text('id_name', '', '', 15, 255, true); if (is_metaconsole()) { $data[1] = __('Save in Group').$jump; } else { $data[1] = __('Filter group').$jump; } $user_groups_array = users_get_groups_for_select( $config['id_user'], 'EW', users_can_manage_group_all(), true ); $data[1] .= html_print_select( $user_groups_array, 'id_group_filter', $id_group_filter, '', '', 0, true, false, false, 'w130' ); $table->data[] = $data; $table->rowclass[] = ''; $data = []; $table->rowid[2] = 'save_filter_row2'; $table->data[] = $data; $table->rowclass[] = ''; $data = []; $table->rowid[3] = 'update_filter_row1'; $data[0] = __('Overwrite filter').$jump; // Fix : Only admin user can see filters of group ALL for update. $_filters_update = events_get_event_filter_select(false); $data[0] .= html_print_select( $_filters_update, 'overwrite_filter', '', '', '', 0, true ); $data[1] = html_print_submit_button( __('Update filter'), 'update_filter', false, 'class="sub upd" onclick="save_update_filter();"', true ); $table->data[] = $data; $table->rowclass[] = ''; html_print_table($table); echo '
'; echo html_print_submit_button( __('Save filter'), 'save_filter', false, 'class="sub upd float-right" onclick="save_new_filter();"', true ); echo '
'; } else { include 'general/noaccess.php'; } echo ''; ?> ', $description); echo $description; return; } if ($get_response_params) { if (! check_acl($config['id_user'], 0, 'EW')) { echo 'unauthorized'; return; } $response_id = get_parameter('response_id'); $params = db_get_value('params', 'tevent_response', 'id', $response_id); if ($params === false) { return; } echo json_encode(explode(',', $params)); return; } if ($get_response_target) { if (! check_acl($config['id_user'], 0, 'EW')) { echo 'unauthorized'; return; } $response_id = (int) get_parameter('response_id'); $event_id = (int) get_parameter('event_id'); $server_id = (int) get_parameter('server_id'); $event_response = db_get_row('tevent_response', 'id', $response_id); if (empty($event_response)) { return; } echo events_get_response_target($event_id, $response_id, $server_id); return; } if ($get_response) { if (! check_acl($config['id_user'], 0, 'EW')) { echo 'unauthorized'; return; } $response_id = get_parameter('response_id'); $event_response = db_get_row('tevent_response', 'id', $response_id); if (empty($event_response)) { return; } echo json_encode($event_response); return; } if ($perform_event_response) { global $config; if (! check_acl($config['id_user'], 0, 'EW')) { echo 'unauthorized'; return; } $target = get_parameter('target', ''); $response_id = get_parameter('response_id'); $event_id = (int) get_parameter('event_id'); $server_id = (int) get_parameter('server_id', 0); if (empty($target)) { $command = events_get_response_target($event_id, $response_id, $server_id); } else { $command = $target; } $event_response = db_get_row('tevent_response', 'id', $response_id); $command_timeout = $event_response !== false ? $event_response['command_timeout'] : 90; if (enterprise_installed()) { if ($event_response['server_to_exec'] != 0 && $event_response['type'] == 'command') { $commandExclusions = [ 'vi', 'vim', 'nano', ]; $server_data = db_get_row( 'tserver', 'id_server', $event_response['server_to_exec'] ); if (in_array(strtolower($command), $commandExclusions)) { echo 'Only stdin/stdout commands are supported'; } else { switch (PHP_OS) { case 'FreeBSD': $timeout_bin = '/usr/local/bin/gtimeout'; break; case 'NetBSD': $timeout_bin = '/usr/pkg/bin/gtimeout'; break; default: $timeout_bin = '/usr/bin/timeout'; break; } if (empty($server_data['port'])) { system('ssh pandora_exec_proxy@'.$server_data['ip_address'].' "'.$timeout_bin.' '.$command_timeout.' '.io_safe_output($command).' 2>&1"', $ret_val); } else { system('ssh -p '.$server_data['port'].' pandora_exec_proxy@'.$server_data['ip_address'].' "'.$timeout_bin.' '.$command_timeout.' '.io_safe_output($command).' 2>&1"', $ret_val); } } } else { switch (PHP_OS) { case 'FreeBSD': $timeout_bin = '/usr/local/bin/gtimeout'; break; case 'NetBSD': $timeout_bin = '/usr/pkg/bin/gtimeout'; break; default: $timeout_bin = '/usr/bin/timeout'; break; } system($timeout_bin.' '.$command_timeout.' '.io_safe_output($command).' 2>&1', $ret_val); } } else { switch (PHP_OS) { case 'FreeBSD': $timeout_bin = '/usr/local/bin/gtimeout'; break; case 'NetBSD': $timeout_bin = '/usr/pkg/bin/gtimeout'; break; default: $timeout_bin = '/usr/bin/timeout'; break; } system($timeout_bin.' '.$command_timeout.' '.io_safe_output($command).' 2>&1', $ret_val); } if ($ret_val != 0) { echo "
"; echo __('Error executing response'); echo '

'; } return; } if ($dialogue_event_response) { global $config; if (! check_acl($config['id_user'], 0, 'EW')) { echo 'unauthorized'; return; } $event_id = get_parameter('event_id'); $response_id = get_parameter('response_id'); $command = get_parameter('target'); $massive = get_parameter('massive'); $end = get_parameter('end'); $show_execute_again_btn = get_parameter('show_execute_again_btn'); $out_iterator = get_parameter('out_iterator'); $event_response = db_get_row('tevent_response', 'id', $response_id); $server_id = get_parameter('server_id'); $event = db_get_row('tevento', 'id_evento', $event_id); $prompt = '
> '; switch ($event_response['type']) { case 'command': $display_command = (bool) $event_response['display_command']; $command_str = ($display_command === true) ? $command : ''; if ($massive) { echo "
"; echo $prompt.sprintf( '(Event #'.$event_id.') '.__( 'Executing command: %s', $command_str ) ); echo '

'; echo "
'; echo "



"; if ($end) { echo "
'; } } else { echo "
"; echo $prompt."Executing command: $command_str"; echo '

'; echo "'; echo "


"; echo "
'; } break; case 'url': $command = str_replace('localhost', $_SERVER['SERVER_NAME'], $command); echo ""; break; default: // Ignore. break; } } if ($add_comment === true) { $comment = (string) get_parameter('comment'); $eventId = (int) get_parameter('event_id'); // Safe comments for hacks. if (preg_match('/script/i', io_safe_output($comment))) { $return = false; } else { $return = events_comment($eventId, $comment, 'Added comment', $meta, $history); } echo ($return === true) ? 'comment_ok' : 'comment_error'; return; } if ($change_status) { $event_ids = get_parameter('event_ids'); $new_status = get_parameter('new_status'); if ($node_id > 0) { try { $node = new Node($node_id); $node->connect(); $return = events_change_status( explode(',', $event_ids), $new_status, $meta, $history ); } catch (\Exception $e) { // Unexistent agent. $node->disconnect(); $success = false; echo 'owner_error'; } finally { $node->disconnect(); } } else { $return = events_change_status( explode(',', $event_ids), $new_status, $meta, $history ); } if ($return !== false) { $event_st = events_display_status($new_status); echo json_encode( [ 'status_title' => $event_st['title'], 'status_img' => html_print_image($event_st['img'], true, false, true), 'status' => 'status_ok', 'user' => db_get_value( 'fullname', 'tusuario', 'id_user', $config['id_user'] ), ] ); } else { echo json_encode( [ 'status' => 'status_error', 'user' => db_get_value( 'fullname', 'tusuario', 'id_user', $config['id_user'] ), ] ); } return; } if ($change_owner) { $new_owner = get_parameter('new_owner'); $event_id = get_parameter('event_id'); $similars = true; if ($new_owner == -1) { $new_owner = ''; } if ($node_id > 0) { try { $node = new Node($node_id); $node->connect(); $return = events_change_owner($event_id, $new_owner, true, $meta, $history); } catch (\Exception $e) { // Unexistent agent. $node->disconnect(); $success = false; echo 'owner_error'; } finally { $node->disconnect(); } } else { $return = events_change_owner($event_id, $new_owner, true, $meta, $history); } if ($return) { echo 'owner_ok'; } else { echo 'owner_error'; } return; } // Generate a modal window with extended information of given event. if ($get_extended_event) { global $config; $event = io_safe_output(get_parameter('event', false)); $filter = get_parameter('filter', false); if ($event === false) { return; } $event_id = $event['id_evento']; $readonly = false; if (!$meta && isset($config['event_replication']) && $config['event_replication'] == 1 && $config['show_events_in_local'] == 1 || enterprise_hook( 'enterprise_acl', [ $config['id_user'], 'eventos', 'execute_event_responses', ] ) === false ) { $readonly = true; } // Clean url from events and store in array. $event['clean_tags'] = events_clean_tags($event['tags']); // If the event is not found, we abort. if (empty($event)) { ui_print_error_message('Event not found'); return false; } $dialog_page = get_parameter('dialog_page', 'general'); $filter = get_parameter('filter', []); $similar_ids = get_parameter('similar_ids', $event_id); $group_rep = $filter['group_rep']; $event_rep = $event['event_rep']; $timestamp_first = $event['min_timestamp']; $timestamp_last = $event['max_timestamp']; $server_id = $event['server_id']; if (empty($server_id) && !empty($event['server_name']) && is_metaconsole()) { $server_id = metaconsole_get_id_server($event['server_name']); } $comments = $event['comments']; $event['similar_ids'] = $similar_ids; if (!isset($comments)) { $comments = $event['user_comment']; } // Check ACLs. $access = false; if (is_user_admin($config['id_user'])) { // Do nothing if you're admin, you get full access. $access = true; } else if ($config['id_user'] == $event['owner_user']) { // Do nothing if you're the owner user, you get access. $access = true; } else if ($event['id_grupo'] == 0) { // If the event has access to all groups, you get access. $access = true; } else { // Get your groups. $groups = users_get_groups($config['id_user'], 'ER'); if (in_array($event['id_grupo'], array_keys($groups))) { // If event group is among the groups of the user, you get access. $access = true; } else if ($event['id_agente'] && agents_check_access_agent($event['id_agente'], 'ER') ) { // Secondary group, indirect access. $access = true; } } if (!$access) { // If all the access types fail, abort. echo 'Access denied'; return false; } // Print group_rep in a hidden field to recover it from javascript. html_print_input_hidden('group_rep', (int) $group_rep); if ($node_id > 0) { html_print_input_hidden('node_id', (int) $node_id); } if ($event === false) { return; } // Tabs. $tabs = "'; // Get criticity image. switch ($event['criticity']) { default: case 0: $img_sev = 'images/status_sets/default/severity_maintenance_rounded.png'; break; case 1: $img_sev = 'images/status_sets/default/severity_informational_rounded.png'; break; case 2: $img_sev = 'images/status_sets/default/severity_normal_rounded.png'; break; case 3: $img_sev = 'images/status_sets/default/severity_warning_rounded.png'; break; case 4: $img_sev = 'images/status_sets/default/severity_critical_rounded.png'; break; case 5: $img_sev = 'images/status_sets/default/severity_minor_rounded.png'; break; case 6: $img_sev = 'images/status_sets/default/severity_major_rounded.png'; break; } if (!$readonly && ((tags_checks_event_acl( $config['id_user'], $event['id_grupo'], 'EM', $event['clean_tags'], $childrens_ids )) || (tags_checks_event_acl( $config['id_user'], $event['id_grupo'], 'EW', $event['clean_tags'], $childrens_ids )) || (tags_checks_event_acl( $config['id_user'], $event['id_grupo'], 'ER', $event['clean_tags'], $childrens_ids ))) ) { $responses = events_page_responses($event); } else { $responses = ''; } $console_url = ''; // If metaconsole switch to node to get details and custom fields. if ($meta || (is_metaconsole() && !empty($server_id))) { $server = metaconsole_get_connection_by_id($server_id); } else { $server = ''; } $details = events_page_details($event, $server); if (events_has_extended_info($event['id_evento']) === true) { $related = events_page_related($event, $server); } $connected = true; if ($meta || (is_metaconsole() && !empty($server_id))) { if (metaconsole_connect($server) === NOERR) { $connected = true; } else { $connected = false; } } if ($connected === true) { $custom_fields = events_page_custom_fields($event); $custom_data = events_page_custom_data($event); } if ($meta && $connected === true) { metaconsole_restore_db(); } $general = events_page_general($event); $comments = '
'; $notifications = '
'.ui_print_error_message(__('Error adding comment'), '', true).'
'; $notifications .= '
'.ui_print_success_message(__('Comment added successfully'), '', true).'
'; $notifications .= '
'.ui_print_error_message(__('Error changing event status'), '', true).'
'; $notifications .= '
'.ui_print_success_message(__('Event status changed successfully'), '', true).'
'; $notifications .= '
'.ui_print_error_message(__('Error changing event owner'), '', true).'
'; $notifications .= '
'.ui_print_success_message(__('Event owner changed successfully'), '', true).'
'; $notifications .= '
'.ui_print_error_message(__('Error deleting event'), '', true).'
'; $loading = '
'.html_print_image('images/spinner.gif', true).'
'; $i = 0; $tab['general'] = $i++; $tab['details'] = $i++; if (!empty($related)) { $tab['related'] = $i++; } $tab['custom_fields'] = $i++; $tab['comments'] = $i++; $tab['responses'] = $i++; $tab['custom_data'] = $i++; $out = '
'.$tabs.$notifications.$loading.$general.$details.$related.$custom_fields.$comments.$responses.$custom_data.html_print_input_hidden('id_event', $event['id_evento']).'
'; $js = ''; echo $out.$js; } if ($get_events_details) { $event_ids = explode(',', get_parameter('event_ids')); $events = db_get_all_rows_filter( 'tevento', [ 'id_evento' => $event_ids, 'order' => 'utimestamp ASC', ], [ 'evento', 'utimestamp', 'estado', 'criticity', 'id_usuario', ], 'AND', true ); $out = ''; $out .= ''; foreach ($events as $event) { switch ($event['estado']) { case 0: $img = ui_get_full_url('images/star.png', false, false, false); $title = __('New event'); break; case 1: $img = ui_get_full_url('images/tick.png', false, false, false); $title = __('Event validated'); break; case 2: $img = ui_get_full_url('images/hourglass.png', false, false, false); $title = __('Event in process'); break; default: // Ignore. break; } $out .= ''; $out .= ''; $out .= ''; $out .= ''; $out .= ''; $out .= ''; $out .= ''; $out .= ''; $out .= ''; } $out .= '
'; $out .= io_safe_output($event['evento']); $out .= '
'; $out .= html_print_image(ui_get_full_url('images/clock.png', false, false, false), true, ['title' => __('Timestamp'), 'class' => 'invert_filter'], false, true); $out .= ''; $out .= date($config['date_format'], $event['utimestamp']); $out .= '
'; $out .= html_print_image($img, true, ['title' => $title], false, true); $out .= ''; $out .= $title; if ($event['estado'] == 1) { if (empty($event['id_usuario'])) { $ack_user = ''.__('Auto').''; } else { $ack_user = $event['id_usuario']; } $out .= ' ('.$ack_user.')'; } $out .= '
'; $out .= '
'; $out .= '
'; echo $out; } if ($table_events) { include_once 'include/functions_events.php'; include_once 'include/functions_graph.php'; $id_agente = (int) get_parameter('id_agente', 0); $all_events_24h = (int) get_parameter('all_events_24h', 0); // Fix: for tag functionality groups have to be all user_groups // (propagate ACL funct!). $groups = users_get_groups($config['id_user']); $tags_condition = tags_get_acl_tags( $config['id_user'], array_keys($groups), 'ER', 'event_condition', 'AND' ); echo '
'; echo ''; echo html_print_switch( [ 'name' => 'all_events_24h', 'value' => $all_events_24h, 'id' => 'checkbox-all_events_24h', ] ); echo '
'; $date_subtract_day = (time() - (24 * 60 * 60)); if ($all_events_24h) { events_print_event_table( 'utimestamp > '.$date_subtract_day, 200, '100%', false, $id_agente, true ); } else { events_print_event_table( 'estado <> 1 '.$tags_condition, 200, '100%', false, $id_agente, true ); } } if ($total_events) { global $config; $sql_count_event = 'SELECT SQL_NO_CACHE COUNT(id_evento) FROM tevento '; if ($config['event_view_hr']) { $sql_count_event .= 'WHERE utimestamp > (UNIX_TIMESTAMP(NOW()) - '.($config['event_view_hr'] * SECONDS_1HOUR).')'; } $system_events = db_get_value_sql($sql_count_event); echo $system_events; return; } if ($total_event_graph) { global $config; include_once $config['homedir'].'/include/functions_graph.php'; $prueba = grafico_eventos_total('', 280, 150, false, true); echo $prueba; return; } if ($graphic_event_group) { global $config; include_once $config['homedir'].'/include/functions_graph.php'; $prueba = grafico_eventos_grupo(280, 150, '', false, true); echo $prueba; return; } if ($get_table_response_command) { global $config; $response_id = get_parameter('event_response_id'); $params_string = db_get_value( 'params', 'tevent_response', 'id', $response_id ); $params = explode(',', $params_string); $table = new stdClass; $table->id = 'events_responses_table_command'; $table->width = '90%'; $table->styleTable = 'text-align:center; margin: 0 auto;'; $table->style = []; $table->style[0] = 'text-align:center;'; $table->style[1] = 'text-align:center;'; $table->head = []; $table->head[0] = __('Parameters'); $table->head[0] .= ui_print_help_tip( __('These commands will apply to all selected events'), true ); $table->head[1] = __('Value'); if (isset($params) === true && is_array($params) === true ) { foreach ($params as $key => $value) { $table->data[$key][0] = $value; $table->data[$key][1] = html_print_input_text( $value.'-'.$key, '', '', 50, 255, true, false, false, '', 'response_command_input' ); } } echo '
'; echo html_print_table($table, true); echo '
'; echo html_print_submit_button( __('Execute'), 'enter_command', false, 'class="sub next float-right mrgn_top_15px mrgn_right_25px"', true ); return; } if ($get_events_fired) { global $config; $id = get_parameter('id_row'); $idGroup = get_parameter('id_group'); $agents = get_parameter('agents', null); $query = ' AND id_evento > '.$id; $type = []; $alert = get_parameter('alert_fired'); if ($alert == 'true') { $resultAlert = alerts_get_event_status_group( $idGroup, [ 'alert_fired', 'alert_ceased', ], $query, $agents ); } $critical = get_parameter('critical'); if ($critical == 'true') { $resultCritical = alerts_get_event_status_group( $idGroup, [ 'going_up_critical', 'going_down_critical', ], $query, $agents ); } $warning = get_parameter('warning'); if ($warning == 'true') { $resultWarning = alerts_get_event_status_group( $idGroup, [ 'going_up_warning', 'going_down_warning', ], $query, $agents ); } $unknown = get_parameter('unknown'); if ($unknown == 'true') { $resultUnknown = alerts_get_event_status_group( $idGroup, 'going_unknown', $query, $agents ); } if ($resultAlert) { $return = [ 'fired' => $resultAlert, 'sound' => $config['sound_alert'], ]; $event = events_get_event($resultAlert); $module_name = modules_get_agentmodule_name($event['id_agentmodule']); $agent_name = agents_get_alias($event['id_agente']); $return['message'] = io_safe_output($agent_name).' - '; $return['message'] .= __('Alert fired in module '); $return['message'] .= io_safe_output($module_name).' - '; $return['message'] .= $event['timestamp']; } else if ($resultCritical) { $return = [ 'fired' => $resultCritical, 'sound' => $config['sound_critical'], ]; $event = events_get_event($resultCritical); $module_name = modules_get_agentmodule_name($event['id_agentmodule']); $agent_name = agents_get_alias($event['id_agente']); $return['message'] = io_safe_output($agent_name).' - '; $return['message'] .= __('Module ').io_safe_output($module_name); $return['message'] .= __(' is going to critical').' - '; $return['message'] .= $event['timestamp']; } else if ($resultWarning) { $return = [ 'fired' => $resultWarning, 'sound' => $config['sound_warning'], ]; $event = events_get_event($resultWarning); $module_name = modules_get_agentmodule_name($event['id_agentmodule']); $agent_name = agents_get_alias($event['id_agente']); $return['message'] = io_safe_output($agent_name).' - '; $return['message'] .= __('Module ').io_safe_output($module_name); $return['message'] .= __(' is going to warning').' - '; $return['message'] .= $event['timestamp']; } else if ($resultUnknown) { $return = [ 'fired' => $resultUnknown, 'sound' => $config['sound_alert'], ]; $event = events_get_event($resultUnknown); $module_name = modules_get_agentmodule_name($event['id_agentmodule']); $agent_name = agents_get_alias($event['id_agente']); $return['message'] = io_safe_output($agent_name).' - '; $return['message'] .= __('Module ').io_safe_output($module_name); $return['message'] .= __(' is going to unknown').' - '; $return['message'] .= $event['timestamp']; } else { $return = ['fired' => 0]; } echo io_json_mb_encode($return); }