晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
Server : Apache System : Linux srv.rainic.com 4.18.0-553.47.1.el8_10.x86_64 #1 SMP Wed Apr 2 05:45:37 EDT 2025 x86_64 User : rainic ( 1014) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/stando/public_html/wp-content/plugins/duplicator/classes/utilities/ |
Upload File : |
<?php
defined('ABSPATH') || defined('DUPXABSPATH') || exit;
/**
* Recursivly scans a directory and finds all sym-links and unreadable files
*
* Standard: PSR-2
* @link http://www.php-fig.org/psr/psr-2
*
* @package Duplicator
* @subpackage classes/utilities
* @copyright (c) 2017, Snapcreek LLC
*
*/
// Exit if accessed directly
if (! defined('DUPLICATOR_VERSION')) exit;
class DUP_ScanCheck
{
/**
* The number of files scanned
*/
public $fileCount = 0;
/**
* The number of directories scanned
*/
public $dirCount = 0;
/**
* The maximum count of files before the recursive function stops
*/
public $maxFiles = 1000000;
/**
* The maximum count of directories before the recursive function stops
*/
public $maxDirs = 75000;
/**
* Recursivly scan the root directory provided
*/
public $recursion = true;
/**
* Stores a list of symbolic link files
*/
public $symLinks = array();
/**
* Stores a list of files unreadable by PHP
*/
public $unreadable = array();
/**
* Stores a list of dirs with utf8 settings
*/
public $nameTestDirs = array();
/**
* Stores a list of files with utf8 settings
*/
public $nameTestFiles = array();
/**
* If the maxFiles or maxDirs limit is reached then true
*/
protected $limitReached = false;
/**
* Is the server running on Windows
*/
private $isWindows = false;
/**
* Init this instance of the object
*/
function __construct()
{
$this->isWindows = defined('PHP_WINDOWS_VERSION_BUILD');
}
/**
* Start the scan process
*
* @param string $dir A valid directory path where the scan will run
* @param array $results Used for recursion, do not pass in value with calling
*
* @return obj The scan check object with the results of the scan
*/
public function run($dir, &$results = array())
{
//Stop Recursion if Max search is reached
if ($this->fileCount > $this->maxFiles || $this->dirCount > $this->maxDirs) {
$this->limitReached = true;
return $results;
}
$files = @scandir($dir);
if (is_array($files)) {
foreach ($files as $key => $value) {
$path = realpath($dir.DIRECTORY_SEPARATOR.$value);
if ($path) {
//Files
if (!is_dir($path)) {
if (!is_readable($path)) {
$results[] = $path;
$this->unreadable[] = $path;
} else if ($this->isLink($path)) {
$results[] = $path;
$this->symLinks[] = $path;
} else {
$name = basename($path);
$invalid_test = preg_match('/(\/|\*|\?|\>|\<|\:|\\|\|)/', $name)
|| trim($name) == ''
|| (strrpos($name, '.') == strlen($name) - 1 && substr($name, -1) == '.')
|| preg_match('/[^\x20-\x7f]/', $name);
if ($invalid_test) {
if (! DUP_Util::$PHP7_plus && DUP_Util::isWindows()) {
$this->nameTestFiles[] = utf8_decode($path);
} else {
$this->nameTestFiles[] = $path;
}
}
}
$this->fileCount++;
}
//Dirs
else if ($value != "." && $value != "..") {
if (!$this->isLink($path) && $this->recursion) {
$this->Run($path, $results);
}
if (!is_readable($path)) {
$results[] = $path;
$this->unreadable[] = $path;
} else if ($this->isLink($path)) {
$results[] = $path;
$this->symLinks[] = $path;
} else {
$invalid_test = strlen($path) > 244
|| trim($path) == ''
|| preg_match('/[^\x20-\x7f]/', $path);
if ($invalid_test) {
if (! DUP_Util::$PHP7_plus && DUP_Util::isWindows()) {
$this->nameTestDirs[] = utf8_decode($path);
} else {
$this->nameTestDirs[] = $path;
}
}
}
$this->dirCount++;
}
}
}
}
return $this;
}
/**
* Separation logic for supporting how different operating systems work
*
* @param string $target A valid file path
*
* @return bool Is the target a sym link
*/
private function isLink($target)
{
//Currently Windows does not support sym-link detection
if ($this->isWindows) {
return false;
} elseif (is_link($target)) {
return true;
}
return false;
}
}