- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/classes/general/site_checker.php
- Класс: CSiteCheckerTest
- Вызов: CSiteCheckerTest::check_access_mobile
function check_access_mobile()
{
$checker = 'checker.internal.bitrix24.com';
$retVal = null;
if (preg_match('#^(127|10|172.16|192.168).#', $this->host))
$status = 0;
else
{
$strRequest =
'GET /check/?license_hash='.LICENSE_HASH.'&host='.urlencode($this->host).'&port='.urlencode($this->port).'&https='.($this->ssl ? 'Y' : 'N').' HTTP/1.1'."rn".
'host: '.$checker."rn".
"rn";
if (!$res = $this->ConnectToHost($checker, 80))
{
$this->arTestVars['check_access_fail'] = true;
return $this->Result($retVal, GetMessage("MAIN_SC_NO_CONNECTTO", array('#HOST#' => $checker)));
}
$strRes = GetHttpResponse($res, $strRequest, $strHeaders);
PrintHTTP($strRequest, $strHeaders, $strRes);
if (!preg_match('#^Status: (.+)$#m', $strRes, $regs))
{
$this->arTestVars['check_access_fail'] = true;
return $this->Result($retVal, GetMessage("MAIN_SC_UNKNOWN_ANSWER", array('#HOST#' => $checker)));
}
$status = intval($regs[1]);
}
if (!$status)
{
$this->arTestVars['check_access_fail'] = true;
return $this->Result($retVal, GetMessage("MAIN_SC_NO_EXTERNAL_CONNECT_WARN"));
}
if ($status != 200 && $status != 401)
{
$this->arTestVars['check_access_fail'] = true;
echo $strRes;
return $this->Result($retVal, GetMessage("MAIN_SC_EXTERNAL_ANSWER_INCORRECT"));
}
if (!CModule::IncludeModule('pull'))
return $this->Result(null, GetMessage("MAIN_NO_PULL_MODULE"));
if (!CPullOptions::GetPushStatus())
return $this->Result(null, GetMessage("MAIN_NO_OPTION_PULL"));
if (!$ar = parse_url(str_replace('#DOMAIN#', $this->host, COption::GetOptionString('pull', 'path_to_mobile_listener'.($this->ssl ? '_secure' : '')))))
return $this->Result(false, GetMessage("MAIN_SC_PATH_SUB"));
$sub_port = $ar['port'];
if (!$sub_port)
$sub_port = 80;
if ($sub_port != $this->port)
{
$strRequest =
'GET /check/?license_hash='.LICENSE_HASH.'&host='.urlencode($this->host).'&port='.urlencode($sub_port).'&https='.($ar['scheme'] == 'https' ? 'Y' : 'N').' HTTP/1.1'."rn".
'host: '.$checker."rn".
"rn";
if (!$res = $this->ConnectToHost($checker, 80))
return $this->Result($retVal, GetMessage("MAIN_SC_NO_CONNECTTO", array('#HOST#' => $checker)));
$strRes = GetHttpResponse($res, $strRequest, $strHeaders);
PrintHTTP($strRequest, $strHeaders, $strRes);
if (!preg_match('#^Status: (.+)$#m', $strRes, $regs))
return $this->Result($retVal, GetMessage("MAIN_SC_UNKNOWN_ANSWER", array('#HOST#' => $checker)));
$status = intval($regs[1]);
if (!$status)
return $this->Result($retVal, GetMessage("MAIN_SC_NO_PULL_EXTERNAL_2"));
}
return true;
}