[__('User'), 'ASC'], 'full_name' => [__('Full Name'), 'ASC'], 'realm' => [__('Authentication Realm'), 'ASC'], 'time' => [__('Date'), 'DESC'], 'result' => [__('Result'), 'DESC'], 'ip' => [__('IP Address'), 'DESC'] ]; $nav = html_nav_bar('user_log.php?user_id=' . grv('user_id') . '&filter=' . grv('filter'), MAX_DISPLAY_PAGES, grv('page'), $rows, $total_rows, 6, __('Login Attempts'), 'page', 'main'); print $nav; html_start_box('', '100%', false, 3, 'center', ''); html_header_sort($display_text, grv('sort_column'), grv('sort_direction'), 1, 'user_log.php'); $i = 0; if (cacti_sizeof($user_log)) { foreach ($user_log as $item) { form_alternate_row('line' . $i, true); form_selectable_cell(filter_value($item['username'], grv('filter')), $i, '', 'nowrap'); if (isset($item['full_name'])) { form_selectable_cell(filter_value($item['full_name'], grv('filter')), $i); } else { form_selectable_cell(__('(User Removed)'), $i); } if (isset($auth_realms[$item['realm']]['name'])) { form_selectable_cell(filter_value($auth_realms[$item['realm']]['name'], grv('filter')), $i); } else { form_selectable_cell(__('N/A'), $i); } form_selectable_cell(filter_value($item['time'], grv('filter')), $i); form_selectable_cell(($item['result'] == 0 ? __('Failed') : ($item['result'] == 1 ? __('Success - Password') : ($item['result'] == 3 ? __('Success - Password Change') : __('Success - Token')))), $i); form_selectable_cell(filter_value($item['ip'], grv('filter')), $i); $i++; } } html_end_box(); if (cacti_sizeof($user_log)) { print $nav; } } function clear_user_log() : void { $users = db_fetch_assoc('SELECT DISTINCT id, username FROM user_auth'); if (cacti_sizeof($users)) { // remove active users foreach ($users as $user) { // Check how many rows for the current user with a valid token foreach ([1, 2] as $result) { $total_rows = db_fetch_cell_prepared('SELECT COUNT(username) FROM user_log WHERE username = ? AND user_id = ? AND result = ?', [$user['username'], $user['id'], $result]); if ($total_rows > 1) { db_execute_prepared('DELETE FROM user_log WHERE username = ? AND user_id = ? AND result = ? ORDER BY time LIMIT ' . ($total_rows - 1), [$user['username'], $user['id'], $result]); } } db_execute_prepared('DELETE FROM user_log WHERE username = ? AND user_id = ? AND result = 0', [$user['username'], $user['id']]); } // delete inactive users db_execute('DELETE FROM user_log WHERE user_id NOT IN (SELECT id FROM user_auth) OR username NOT IN (SELECT username FROM user_auth)'); } } function purge_user_log() : void { form_start('user_log.php'); html_start_box(__('Purge User Log'), '60%', false, 3, 'center', ''); print "
" . __('Click \'Continue\' to purge the User Log.
Note: If logging is set to both Cacti and Syslog, the log information will remain in Syslog.') . "