• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/general/site_checker.php
  • Класс: CSiteCheckerTest
  • Вызов: CSiteCheckerTest::check_update
function check_update()
{
	$ServerIP = COption::GetOptionString("main", "update_site", "www.bitrixsoft.com");
	$ServerPort = 80;

	$proxyAddr = COption::GetOptionString("main", "update_site_proxy_addr", "");
	$proxyPort = COption::GetOptionString("main", "update_site_proxy_port", "");
	$proxyUserName = COption::GetOptionString("main", "update_site_proxy_user", "");
	$proxyPassword = COption::GetOptionString("main", "update_site_proxy_pass", "");

	$bUseProxy = !$this->arTestVars['last_value'] && $proxyAddr <> '' && $proxyPort <> '';

	if ($bUseProxy)
	{
		$proxyPort = intval($proxyPort);
		if ($proxyPort <= 0)
			$proxyPort = 80;

		$requestIP = $proxyAddr;
		$requestPort = $proxyPort;
	}
	else
	{
		$requestIP = $ServerIP;
		$requestPort = $ServerPort;
	}

	$strRequest = "";
	$page = "us_updater_list.php";
	if ($bUseProxy)
	{
		$strRequest .= "POST http://".$ServerIP."/bitrix/updates/".$page." HTTP/1.0rn";
		if ($proxyUserName <> '')
			$strRequest .= "Proxy-Authorization: Basic ".base64_encode($proxyUserName.":".$proxyPassword)."rn";
	}
	else
		$strRequest .= "POST /bitrix/updates/".$page." HTTP/1.0rn";

	$strRequest.= "User-Agent: BitrixSMUpdaterrn";
	$strRequest.= "Accept: */*rn";
	$strRequest.= "Host: ".$ServerIP."rn";
	$strRequest.= "Accept-Language: enrn";
	$strRequest.= "Content-type: application/x-www-form-urlencodedrn";
	$strRequest.= "Content-length: 7rnrn";
	$strRequest.= "lang=en";
	$strRequest.= "rn";

	$res = false;
	try
	{
		$res = fsockopen($requestIP, $requestPort, $errno, $errstr, 5);
	}
	catch (Exception $e)
	{
		echo $e->getMessage()."n";
	}

	if (!$res)
	{
		if ($bUseProxy)
			return $this->Result(false, GetMessage('SC_NO_PROXY'). ' ('.$errstr.')');
		else
			return $this->Result(false, GetMessage('SC_UPDATE_ERROR').' ('.$errstr.')');
	}
	else
	{
		if (BitrixMainConfigOption::get("updateserverlight", "is_turned_on", "N") === "Y")
			return true;

		$strRes = GetHttpResponse($res, $strRequest, $strHeaders);

		if ((strpos($strRes, "EMPTY_LICENSE_KEY") !== false)
			|| (strpos($strRes, "LICENSE_KEY_REQUIRED") !== false))
		{
			return true;
		}
		else
		{
			$strRes = mb_strtolower(strip_tags($strRes));
			PrintHTTP($strRequest, $strHeaders, $strRes);
			if ($bUseProxy)
				return $this->Result(false, GetMessage('SC_PROXY_ERR_RESP'));
			else
				return $this->Result(false, GetMessage('SC_UPDATE_ERR_RESP'));
		}
	}
}