晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
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/www/wp-content/plugins/duplicator/ctrls/ |
Upload File : |
<?php
defined('ABSPATH') || defined('DUPXABSPATH') || exit;
// Exit if accessed directly
if (! defined('DUPLICATOR_VERSION')) exit;
require_once(DUPLICATOR_PLUGIN_PATH . '/ctrls/ctrl.base.php');
require_once(DUPLICATOR_PLUGIN_PATH . '/classes/utilities/class.u.scancheck.php');
/**
* Controller for Tools
* @package Duplicator\ctrls
*/
class DUP_CTRL_Tools extends DUP_CTRL_Base
{
/**
* Init this instance of the object
*/
function __construct()
{
add_action('wp_ajax_DUP_CTRL_Tools_runScanValidator', array($this, 'runScanValidator'));
add_action('wp_ajax_DUP_CTRL_Tools_getTraceLog', array($this, 'getTraceLog'));
}
/**
* Calls the ScanValidator and returns a JSON result
*
* @notes: Testing = /wp-admin/admin-ajax.php?action=DUP_CTRL_Tools_runScanValidator
*/
public function runScanValidator()
{
DUP_Handler::init_error_handler();
check_ajax_referer('DUP_CTRL_Tools_runScanValidator', 'nonce');
@set_time_limit(0);
$isValid = true;
$inputData = filter_input_array(INPUT_POST, array(
'recursive_scan' => array(
'filter' => FILTER_VALIDATE_BOOLEAN,
'flags' => FILTER_NULL_ON_FAILURE
)
));
if (is_null($inputData['recursive_scan'])) {
$isValid = false;
}
$result = new DUP_CTRL_Result($this);
try {
DUP_Util::hasCapability('export', DUP_Util::SECURE_ISSUE_THROW);
if (!$isValid) {
throw new Exception(__('Invalid Request.', 'duplicator'));
}
//CONTROLLER LOGIC
$path = duplicator_get_abs_path();
if (!is_dir($path)) {
throw new Exception("Invalid directory provided '{$path}'!");
}
$scanner = new DUP_ScanCheck();
$scanner->recursion = $inputData['recursive_scan'];
$payload = $scanner->run($path);
//RETURN RESULT
$test = ($payload->fileCount > 0)
? DUP_CTRL_Status::SUCCESS
: DUP_CTRL_Status::FAILED;
$result->process($payload, $test);
} catch (Exception $exc) {
$result->processError($exc);
}
}
public function getTraceLog()
{
DUP_Log::Trace("enter");
check_ajax_referer('DUP_CTRL_Tools_getTraceLog', 'nonce');
Dup_Util::hasCapability('export');
$file_path = DUP_Log::GetTraceFilepath();
$backup_path = DUP_Log::GetBackupTraceFilepath();
$zip_path = DUP_Settings::getSsdirPath()."/".DUPLICATOR_ZIPPED_LOG_FILENAME;
$zipped = DUP_Zip_U::zipFile($file_path, $zip_path, true, null, true);
if ($zipped && file_exists($backup_path)) {
$zipped = DUP_Zip_U::zipFile($backup_path, $zip_path, false, null, true);
}
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private", false);
header("Content-Transfer-Encoding: binary");
$fp = fopen($zip_path, 'rb');
if (($fp !== false) && $zipped) {
$zip_filename = basename($zip_path);
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"$zip_filename\";");
// required or large files wont work
if (ob_get_length()) {
ob_end_clean();
}
DUP_Log::trace("streaming $zip_path");
if (fpassthru($fp) === false) {
DUP_Log::trace("Error with fpassthru for $zip_path");
}
fclose($fp);
@unlink($zip_path);
} else {
header("Content-Type: text/plain");
header("Content-Disposition: attachment; filename=\"error.txt\";");
if ($zipped === false) {
$message = "Couldn't create zip file.";
} else {
$message = "Couldn't open $file_path.";
}
DUP_Log::trace($message);
echo esc_html($message);
}
exit;
}
}