• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/general/site_checker.php
  • Класс: CSiteCheckerTest
  • Вызов: CSiteCheckerTest::check_webdav
function check_webdav()
{
	if (!CModule::IncludeModule('webdav') && !CModule::IncludeModule('disk'))
		return $this->Result(false, GetMessage("MAIN_SC_NO_WEBDAV_MODULE"));

	if ($this->arTestVars['check_socket_fail'])
		return $this->Result(null, GetMessage('SC_SOCK_NA'));

	$allow = array(
		"PUT"		=> array("rights" => "U", "min_rights" => "U"),
		"LOCK"		=> array("rights" => "U", "min_rights" => "U"),
		"MOVE"		=> array("rights" => "W", "min_rights" => "U"),
		"MKCOL"		=> array("rights" => "W", "min_rights" => "W"),
		"PROPFIND"	=> array("rights" => "R", "min_rights" => "R")
	);

	foreach($allow as $method => $ar)
	{
		$strRequest = $method." /bitrix/admin/site_checker.php?test_type=webdav_test&method=$method&unique_id=".checker_get_unique_id()." HTTP/1.1rn";
		$strRequest.= "Host: ".$this->host."rn";
		$strRequest.= "rn";

		if (!$res = $this->ConnectToHost())
			return null;
		$strRes = GetHttpResponse($res, $strRequest, $strHeaders);
		if (trim($strRes) != 'SUCCESS')
		{
			PrintHTTP($strRequest, $strHeaders, $strRes);
			return $this->Result(null, str_replace('#METHOD#', $method, GetMessage("MAIN_SC_METHOD_NOT_SUP")));
		}
	}
	return true;
}