Поддержка серверов

CUpdateSystem::getHTTPPage: метод Битрикс

Постоянная ссылка: http://bxapi.ru/src/?id=176345

<?php 
//    /bitrix/modules/main/classes/general/update_class.phpCUpdateSystem::getHTTPPage()
//    3344:

    
public static function getHTTPPage($page$strVars, &$strError)
    {
        global 
$SERVER_NAME$DB;

        
CUpdateSystem::AddMessage2Log("exec CUpdateSystem::getHTTPPage");

        
$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 = (strlen($proxyAddr) > && strlen($proxyPort) > 0);

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

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

        
$FP fsockopen($requestIP$requestPort$errno$errstr120);

        if (
$FP)
        {
            
$strRequest "";

            if (
$bUseProxy)
            {
                
$strRequest .= "POST http://".$ServerIP."/bitrix/updates/".$page." HTTP/1.0\r\n";
                if (
strlen($proxyUserName) > 0)
                    
$strRequest .= "Proxy-Authorization: Basic ".base64_encode($proxyUserName.":".$proxyPassword)."\r\n";
            }
            else
                
$strRequest .= "POST /bitrix/updates/".$page." HTTP/1.0\r\n";

            
$CRCCode COption::GetOptionString("main""crc_code""");
            
$strVars .= "&spd=".urlencode($CRCCode);
            if (
defined('BX_UTF'))
                
$strVars .= "&utf=".urlencode("Y");
            else
                
$strVars .= "&utf=".urlencode("N");
            
$dbv $DB->GetVersion();
            
$strVars .= "&dbv=".urlencode($dbv != false $dbv "");

            
$strRequest .= "User-Agent: BitrixSMUpdater\r\n";
            
$strRequest .= "Accept: */*\r\n";
            
$strRequest .= "Host: ".$ServerIP."\r\n";
            
$strRequest .= "Accept-Language: en\r\n";
            
$strRequest .= "Content-type: application/x-www-form-urlencoded\r\n";
            
$strRequest .= "Content-length: ".strlen($strVars)."\r\n\r\n";
            
$strRequest .= "$strVars";
            
$strRequest .= "\r\n";

            
fputs($FP$strRequest);

            
$bChunked False;
            while (!
feof($FP))
            {
                
$line fgets($FP4096);
                if (
$line != "\r\n")
                {
                    if (
preg_match("/Transfer-Encoding: +chunked/i"$line))
                        
$bChunked True;
                }
                else
                {
                    break;
                }
            }

            
/*
            while (($line = fgets($FP, 4096)) && $line != "\r\n")
            {
                if (preg_match("/Transfer-Encoding: +chunked/i", $line))
                    $bChunked = True;
            }
            */

            
$content "";
            if (
$bChunked)
            {
                
$maxReadSize 4096;

                
$length 0;
                
$line FGets($FP$maxReadSize);
                
$line StrToLower($line);

                
$strChunkSize "";
                
$i 0;
                while (
$i StrLen($line) && in_array($line[$i], array("0""1""2""3""4""5""6""7""8""9""a""b""c""d""e""f")))
                {
                    
$strChunkSize .= $line[$i];
                    
$i++;
                }

                
$chunkSize hexdec($strChunkSize);

                while (
$chunkSize 0)
                {
                    
$processedSize 0;
                    
$readSize = (($chunkSize $maxReadSize) ? $maxReadSize $chunkSize);

                    while (
$readSize && $line fread($FP$readSize))
                    {
                        
$content .= $line;
                        
$processedSize += StrLen($line);
                        
$newSize $chunkSize $processedSize;
                        
$readSize = (($newSize $maxReadSize) ? $maxReadSize $newSize);
                    }
                    
$length += $chunkSize;

                    
$line FGets($FP$maxReadSize);

                    
$line FGets($FP$maxReadSize);
                    
$line StrToLower($line);

                    
$strChunkSize "";
                    
$i 0;
                    while (
$i StrLen($line) && in_array($line[$i], array("0""1""2""3""4""5""6""7""8""9""a""b""c""d""e""f")))
                    {
                        
$strChunkSize .= $line[$i];
                        
$i++;
                    }

                    
$chunkSize hexdec($strChunkSize);
                }
            }
            else
            {
                while (
$line fread($FP4096))
                    
$content .= $line;
            }

            
fclose($FP);
        }
        else
        {
            
$content "";
            
$strError .= GetMessage("SUPP_GHTTP_ER").": [".$errno."] ".$errstr.". ";
            if (
IntVal($errno)<=0$strError .= GetMessage("SUPP_GHTTP_ER_DEF")." ";

            
CUpdateSystem::AddMessage2Log("Error connecting 2 ".$ServerIP.": [".$errno."] ".$errstr."""ERRCONN");
        }
        return 
$content;
    }

Блог разработчика

9 Августа 2016 ResizeImageGet и простой водяной знак налету

Сегодня поговорим о том как проще всего воткнуть водяной знак на картинки в Битрикс. Например, на все изображения каталога.

21 Июля 2016 Добавление вкладки в CRM коробки Битрикс24

В этом посте я покажу, как легко и просто добавить вкладку в сущность CRM. И не просто добавить, а вывести там свой контент.

21 Июля 2016 Как просто обращаться из коробки Битрикс24 на сайт на базе Битрикс

К примеру вам хочется внутренним скриптом дернуть с сайта-магазина информацию, которая там, в свою очередь, закрыта некоторыми правами. Например, админскими. Можно конечно мутить свой REST, или иной формат общения, но проще всего воспользоваться штатным инструментом:

Текст сообщения*
Загрузить изображение