• Модуль: dav
  • Путь к файлу: ~/bitrix/modules/dav/classes/general/groupdavclient.php
  • Класс: CDavGroupdavClient
  • Вызов: CDavGroupdavClient::Connect
public function Connect()
{
	if ($this->connected)
	{
		return true;
	}

	$requestScheme = $this->scheme;
	$requestServer = $this->server;
	$requestPort = $this->port;
	if ($this->proxyUsed)
	{
		$requestScheme = $this->proxyScheme;
		$requestServer = $this->proxyServer;
		$requestPort = $this->proxyPort;
	}

	switch ($requestScheme)
	{
		case 'https':
			if (!function_exists("openssl_verify"))
			{
				$this->arError[] = array("EC0", "OpenSSL PHP extention required");
				$this->connected = false;
				return false;
			}

			$requestScheme = 'ssl://';
			$requestPort = $requestPort ?? 443;
			break;

		case 'http':
			$requestScheme = '';
			$requestPort = $requestPort ?? 80;
			break;

		default:
			$this->arError[] = array("EC1", "Invalid protocol");
			$this->connected = false;
			return false;
	}

	// $this->fp = @fsockopen($requestScheme.$requestServer, $requestPort, $errno, $errstr, $this->socketTimeout);
	$this->fp = @stream_socket_client(
		sprintf('%s:%s', $requestScheme.$requestServer, $requestPort),
		$errno,
		$errstr,
		$this->socketTimeout,
		STREAM_CLIENT_CONNECT,
		stream_context_create([
			'ssl' => [
				'verify_peer' => false,
				'verify_peer_name' => false
			]
		])
	);

	if (!$this->fp)
	{
		$this->arError[] = array($errno, $errstr);
		$this->connected = false;
		return false;
	}

	stream_set_timeout($this->fp, $this->socketTimeout);
	stream_set_blocking($this->fp, 1);
	$this->connected = true;
	return true;
}