• Модуль: dav
  • Путь к файлу: ~/bitrix/modules/dav/classes/general/groupdavclientcalendar.php
  • Класс: CDavGroupdavClientCalendar
  • Вызов: CDavGroupdavClientCalendar::CheckCaldavServer
static function CheckCaldavServer($url, $host, $userName, $userPassword)
{
	$options = [];
	if (CDav::UseProxy())
	{
		$arProxy = CDav::GetProxySettings();
		$options = [
			"proxyHost" => $arProxy["PROXY_SCHEME"],
			"proxyPort" => $arProxy["PROXY_PORT"],
			"proxyUser" => $arProxy["PROXY_USERNAME"],
			"proxyPassword" => $arProxy["PROXY_PASSWORD"],
		];
	}

	$client = new HttpClient($options);
	$client->setPrivateIp(true);
	$client->setHeader("User-Agent", "Bitrix CalDAV/CardDAV/GroupDAV client");
	$client->setHeader("Connection", "Keep-Alive");
	$client->setHeader("Host", $host);

	for ($i = 0; $i < 3; $i++)
	{
		$client->query(HttpClient::HTTP_OPTIONS, $url);

		if ($client->getStatus() == 401)
		{
			$client->setHeader('Authorization', 'Basic ' . base64_encode($userName.":".$userPassword));
			continue;
		}

		break;
	}

	$headers = $client->getHeaders();
	if (!empty($headers['dav']))
	{
		$davPart = explode(",", $headers['dav']);
		foreach ($davPart as $part)
		{
			if (trim($part)."!" == "1!")
			{
				return true;
			}
		}
	}

	return false;
}