Для работы с CHTTP через прокси в версии КП 10.0.8
1. Изменил описание класса CHTTP в файле \bitrix\modules\main\tools.php
- добавил свойства
//Прокси
var $proxy_host;
var $proxy_port;
- добавил метод
function SetProxyAuth($host,$port,$login="",$password=""){
$this->proxy_host = $host;
$this->proxy_port = $port;
if($login<>"")
$this->additional_headers["Proxy-Authorization"]="Basic ".base64_encode("$login:$password");
else unset($this->additional_headers["Proxy-Authorization"]);
}
- изменил метод
function Query($method, $host, $port, $path, $postdata = false, $proto = '', $post_content_type = 'N')
Вместо $fp = fsockopen($proto.$host, $port, $this->errno, $this->errstr, $this->http_timeout);
использую конструкцию:
// Мадьяров
if($this->proxy_host<>""){
$fp = fsockopen($this->proxy_host, $this->proxy_port, $this->errno, $this->errstr, $this->http_timeout);// connect to proxy
}
else{
$fp = fsockopen($proto.$host, $port, $this->errno, $this->errstr, $this->http_timeout);
}
2. В файле, в котором используется экземпляр класса (в данном случае при импорте RSS)
\bitrix\gadgets\bitrix\rssreader\include.php
в функции
function gdGetRss($rss_url, $cache_time = 0)
После объявления экземпляра добавил установку параметров прокси
$ob = new CHTTP();
$ob->SetProxyAuth("proxy.sitename.ru",3128,"пользователь","пароль");
А так же пришлось изменить вызов запроса:
$ob->Query(
"GET",
$arUrl["host"],
$arUrl["port"],
//Мадьяров
//$arUrl["path"].($arUrl["query"] <> ''? "?".$arUrl["query"] : ''),
$rss_url.($arUrl["query"] <> ''? "?".$arUrl["query"] : ''),
//-Мадьяров
false,
"",
"N"
);
т.е. вместо $arUrl["path"] использую весь урл $rss_url.
Надеюсь кому-нибудь поможет.