Example #1
0
/**
 * 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);
}