/** * Print a HTML code with the content of the logs audited by the remote Sucuri * API service, this page is part of the monitoring tool. * * @return void */ function sucuriscan_auditlogs() { // Initialize the values for the pagination. $max_per_page = SUCURISCAN_AUDITLOGS_PER_PAGE; $page_number = SucuriScanTemplate::get_page_number(); $logs_limit = $page_number * $max_per_page; $audit_logs = SucuriScanAPI::get_logs($logs_limit); $template_variables = array('PageTitle' => 'Audit Logs', 'AuditLogs.List' => '', 'AuditLogs.Count' => 0, 'AuditLogs.MaxPerPage' => $max_per_page, 'AuditLogs.NoItemsVisibility' => 'visible', 'AuditLogs.PaginationVisibility' => 'hidden', 'AuditLogs.PaginationLinks' => '', 'AuditLogs.EnableAuditReportVisibility' => 'hidden'); if ($audit_logs) { $counter_i = 0; $total_items = count($audit_logs->output_data); $iterator_start = ($page_number - 1) * $max_per_page; $iterator_end = $total_items; if ($audit_logs->total_entries >= $max_per_page && SucuriScanOption::is_disabled(':audit_report')) { $template_variables['AuditLogs.EnableAuditReportVisibility'] = 'visible'; } for ($i = $iterator_start; $i < $total_items; $i++) { if ($counter_i > $max_per_page) { break; } if (isset($audit_logs->output_data[$i])) { $audit_log = $audit_logs->output_data[$i]; $css_class = $counter_i % 2 == 0 ? '' : 'alternate'; $snippet_data = array('AuditLog.CssClass' => $css_class, 'AuditLog.Event' => SucuriScan::escape($audit_log['event']), 'AuditLog.EventTitle' => SucuriScan::escape(ucfirst($audit_log['event'])), 'AuditLog.DateTime' => SucuriScan::datetime($audit_log['timestamp']), 'AuditLog.Account' => SucuriScan::escape($audit_log['account']), 'AuditLog.Username' => SucuriScan::escape($audit_log['username']), 'AuditLog.RemoteAddress' => SucuriScan::escape($audit_log['remote_addr']), 'AuditLog.Message' => SucuriScan::escape($audit_log['message']), 'AuditLog.Extra' => ''); // Print every file_list information item in a separate table. if ($audit_log['file_list']) { $css_scrollable = $audit_log['file_list_count'] > 10 ? 'sucuriscan-list-as-table-scrollable' : ''; $snippet_data['AuditLog.Extra'] .= '<ul class="sucuriscan-list-as-table ' . $css_scrollable . '">'; foreach ($audit_log['file_list'] as $log_extra) { $snippet_data['AuditLog.Extra'] .= '<li>' . SucuriScan::escape($log_extra) . '</li>'; } $snippet_data['AuditLog.Extra'] .= '</ul>'; } $template_variables['AuditLogs.List'] .= SucuriScanTemplate::get_snippet('integrity-auditlogs', $snippet_data); $counter_i += 1; } } $template_variables['AuditLogs.Count'] = $counter_i; $template_variables['AuditLogs.NoItemsVisibility'] = 'hidden'; if ($total_items > 1) { $max_pages = ceil($audit_logs->total_entries / $max_per_page); if ($max_pages > SUCURISCAN_MAX_PAGINATION_BUTTONS) { $max_pages = SUCURISCAN_MAX_PAGINATION_BUTTONS; } if ($max_pages > 1) { $template_variables['AuditLogs.PaginationVisibility'] = 'visible'; $template_variables['AuditLogs.PaginationLinks'] = SucuriScanTemplate::get_pagination('%%SUCURI.URL.Home%%', $max_per_page * $max_pages, $max_per_page); } } } return SucuriScanTemplate::get_section('integrity-auditlogs', $template_variables); }