• Модуль: dav
  • Путь к файлу: ~/bitrix/modules/dav/lib/application.php
  • Класс: BitrixDavApplication
  • Вызов: Application::checkDavHeaders
static function checkDavHeaders()
{
	$server = Context::getCurrent()->getServer();
	$davHeaders = [
		"DAV",
		"IF",
		"DEPTH",
		"OVERWRITE",
		"DESTINATION",
		"LOCK_TOKEN",
		"TIMEOUT",
		"STATUS_URI"
	];
	foreach ($davHeaders as $header)
	{
		if ($server->get("HTTP_" . $header))
		{
			return true;
		}
	}

	$davMethods = [
		"OPTIONS",
		"PUT",
		"PROPFIND",
		"REPORT",
		"PROPPATCH",
		"MKCOL",
		"COPY",
		"MOVE",
		"LOCK",
		"UNLOCK",
		"DELETE",
		"COPY",
		"MOVE"
	];
	if (in_array($server->getRequestMethod(), $davMethods, true))
	{
		return true;
	}


	$userAgentParam = $server->get('HTTP_USER_AGENT');
	$userAgentString = $userAgentParam ?: '';

	return (
			mb_strpos($userAgentString, "Microsoft Office") !== false
			&& mb_strpos($userAgentString, "Outlook") === false
		)
		|| mb_strpos($userAgentString, "MiniRedir") !== false
		|| mb_strpos($userAgentString, "WebDAVFS") !== false
		|| mb_strpos($userAgentString, "davfs2") !== false
		|| mb_strpos($userAgentString, "Sardine") !== false
		|| mb_strpos($userAgentString, "gvfs") !== false
		|| mb_strpos($userAgentString, "LibreOffice") !== false
		;
}