- Модуль: dav
- Путь к файлу: ~/bitrix/modules/dav/classes/general/webdav.php
- Класс: CDavWebDav
- Вызов: CDavWebDav::CopyMove
private function CopyMove($what)
{
/** @var CDavRequest $request */
$request = $this->request;
$response = $this->response;
$httpDestination = $request->GetParameter("HTTP_DESTINATION");
$pu = parse_url($httpDestination);
$path = urldecode($pu['path']);
$httpHost = $pu['host'];
if (isset($pu['port']) && (int)$pu['port'] !== 80 && (int)$pu['port'] !== 443)
{
$httpHost .= ":" . $pu['port'];
}
$httpHeaderHost = preg_replace("/:(80|443)$/", "", $request->GetParameter("HTTP_HOST"));
if ($httpHost == $httpHeaderHost /*&& !strncmp($request->GetParameter("SCRIPT_NAME"), $path, strlen($request->GetParameter("SCRIPT_NAME")))*/)
{
$dest = $path;
if (!strncmp($request->GetParameter("SCRIPT_NAME"), $path, mb_strlen($request->GetParameter("SCRIPT_NAME"))))
{
$dest = mb_substr($path, mb_strlen($request->GetParameter("SCRIPT_NAME")));
}
if (!$this->CheckLockStatus($dest))
{
$response->SetHttpStatus("423 Locked");
return;
}
}
else
{
$response->SetHttpStatus("412 precondition failed");
return;
}
// RFC 2518 Sections 9.6, 8.8.4, 8.9.3
$httpOverwrite = $request->GetParameter("HTTP_OVERWRITE");
if (!is_null($httpOverwrite))
{
$overwrite = ($httpOverwrite === "T");
}
else
{
$overwrite = true;
}
$stat = $this->$what($dest, $httpDestination, $overwrite);
$response->SetHttpStatus($stat);
}