예제 #1
0
/**
 * Read and parse the content of the ignore-scanning settings template.
 *
 * @return string Parsed HTML code for the ignore-scanning settings panel.
 */
function sucuriscan_settings_ignorescanning()
{
    $template_variables = array('IgnoreScanning.ResourceList' => '', 'IgnoreScanning.DisabledVisibility' => 'visible', 'IgnoreScanning.NoItemsVisibility' => 'visible');
    $ignore_scanning = SucuriScanFSScanner::will_ignore_scanning();
    // Allow disable of this option temporarily.
    if (SucuriScanRequest::get('no_scan') == 1) {
        $ignore_scanning = false;
    }
    // Scan the project and get the ignored paths.
    if ($ignore_scanning === true) {
        $counter = 0;
        $template_variables['IgnoreScanning.DisabledVisibility'] = 'hidden';
        $dir_list_list = SucuriScanFSScanner::get_ignored_directories_live();
        foreach ($dir_list_list as $group => $dir_list) {
            foreach ($dir_list as $dir_data) {
                $valid_entry = false;
                $snippet_data = array('IgnoreScanning.CssClass' => '', 'IgnoreScanning.Directory' => '', 'IgnoreScanning.DirectoryPath' => '', 'IgnoreScanning.IgnoredAt' => '', 'IgnoreScanning.IgnoredAtText' => 'ok', 'IgnoreScanning.IgnoredCssClass' => 'success');
                if ($group == 'is_ignored') {
                    $valid_entry = true;
                    $snippet_data['IgnoreScanning.Directory'] = urlencode($dir_data['directory_path']);
                    $snippet_data['IgnoreScanning.DirectoryPath'] = SucuriScan::escape($dir_data['directory_path']);
                    $snippet_data['IgnoreScanning.IgnoredAt'] = SucuriScan::datetime($dir_data['ignored_at']);
                    $snippet_data['IgnoreScanning.IgnoredAtText'] = 'ignored';
                    $snippet_data['IgnoreScanning.IgnoredCssClass'] = 'warning';
                } elseif ($group == 'is_not_ignored') {
                    $valid_entry = true;
                    $snippet_data['IgnoreScanning.Directory'] = urlencode($dir_data);
                    $snippet_data['IgnoreScanning.DirectoryPath'] = SucuriScan::escape($dir_data);
                }
                if ($valid_entry) {
                    $css_class = $counter % 2 == 0 ? '' : 'alternate';
                    $snippet_data['IgnoreScanning.CssClass'] = $css_class;
                    $template_variables['IgnoreScanning.ResourceList'] .= SucuriScanTemplate::get_snippet('settings-ignorescanning', $snippet_data);
                    $counter += 1;
                }
            }
        }
        if ($counter > 0) {
            $template_variables['IgnoreScanning.NoItemsVisibility'] = 'hidden';
        }
    }
    return SucuriScanTemplate::get_section('settings-ignorescanning', $template_variables);
}
예제 #2
0
function sucuriscan_settings_ignorescan_ajax()
{
    if (SucuriScanRequest::post('form_action') == 'get_ignored_files') {
        $response = '';
        // Scan the project and get the ignored paths.
        if (SucuriScanOption::is_enabled(':ignore_scanning')) {
            $counter = 0;
            $ignored_dirs = SucuriScanFSScanner::get_ignored_directories_live();
            foreach ($ignored_dirs as $group => $dir_list) {
                foreach ($dir_list as $dir_data) {
                    $valid_entry = false;
                    $snippet = array('IgnoreScan.CssClass' => '', 'IgnoreScan.Directory' => '', 'IgnoreScan.DirectoryPath' => '', 'IgnoreScan.IgnoredAt' => '', 'IgnoreScan.IgnoredAtText' => 'ok', 'IgnoreScan.IgnoredCssClass' => 'success');
                    if ($group == 'is_ignored') {
                        $valid_entry = true;
                        $snippet['IgnoreScan.Directory'] = urlencode($dir_data['directory_path']);
                        $snippet['IgnoreScan.DirectoryPath'] = $dir_data['directory_path'];
                        $snippet['IgnoreScan.IgnoredAt'] = SucuriScan::datetime($dir_data['ignored_at']);
                        $snippet['IgnoreScan.IgnoredAtText'] = 'ignored';
                        $snippet['IgnoreScan.IgnoredCssClass'] = 'warning';
                    } elseif ($group == 'is_not_ignored') {
                        $valid_entry = true;
                        $snippet['IgnoreScan.Directory'] = urlencode($dir_data);
                        $snippet['IgnoreScan.DirectoryPath'] = $dir_data;
                    }
                    if ($valid_entry) {
                        $snippet['IgnoreScan.CssClass'] = $counter % 2 === 0 ? '' : 'alternate';
                        $response .= SucuriScanTemplate::getSnippet('settings-ignorescan', $snippet);
                        $counter++;
                    }
                }
            }
        } else {
            $response = '<tr><td colspan="3">Enable the ignore scanning option first.</td></tr>';
        }
        print $response;
        exit(0);
    }
}