| Server IP : 89.108.64.180 / Your IP : 216.73.217.92 Web Server : Apache/2.4.41 (Ubuntu) System : Linux 89-108-64-180.cloudvps.regruhosting.ru 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 User : www-root ( 1010) PHP Version : 8.0.30 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /var/www/www-root/data/www/hostel76.com/wp-content/plugins/wordfence/lib/ |
Upload File : |
<?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($dir, DIRECTORY_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;
}
}