mirror of
https://git.tt-rss.org/git/tt-rss.git
synced 2025-12-18 11:31:30 +00:00
Add proper support for proxies
There are situations where you want tt-rss to use a proxy (e.g. because of network restrictions, or privacy concerns). tt-rss already comes with an undocumented `_CURL_HTTP_PROXY` variable (see eg https://binfalse.de/2015/05/06/ttrss-with-proxy/), however that won't have an effect when, for example, php-curl is not installed, seec30f5e1811/include/functions.php (L377)In this case it would use the `file_get_contents` with a stream context without a proxy definition:c30f5e1811/include/functions.php (L487)Here I propose to properly support proxies, and I introduced a `PROXY` variable, that is respected in both scenarios, with and without curl installed.
This commit is contained in:
@@ -196,4 +196,9 @@
|
|||||||
// Expected config version. Please update this option in config.php
|
// Expected config version. Please update this option in config.php
|
||||||
// if necessary (after migrating all new options from this file).
|
// if necessary (after migrating all new options from this file).
|
||||||
|
|
||||||
|
define('PROXY', '');
|
||||||
|
// Connect to RSS feeds through a PROXY, this way tt-rss won't connect to
|
||||||
|
// webservers directly.
|
||||||
|
// Example format: '127.0.0.1:8123' (polipo proxy running on localhost)
|
||||||
|
|
||||||
// vim:ft=php
|
// vim:ft=php
|
||||||
|
|||||||
@@ -402,8 +402,8 @@
|
|||||||
curl_setopt($ch, CURLOPT_COOKIEJAR, "/dev/null");
|
curl_setopt($ch, CURLOPT_COOKIEJAR, "/dev/null");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (defined('_CURL_HTTP_PROXY')) {
|
if (defined('PROXY')) {
|
||||||
curl_setopt($ch, CURLOPT_PROXY, _CURL_HTTP_PROXY);
|
curl_setopt($ch, CURLOPT_PROXY, PROXY);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($post_query) {
|
if ($post_query) {
|
||||||
@@ -483,25 +483,24 @@
|
|||||||
|
|
||||||
// TODO: should this support POST requests or not? idk
|
// TODO: should this support POST requests or not? idk
|
||||||
|
|
||||||
|
$context_options = array(
|
||||||
|
'http' => array(
|
||||||
|
'method' => 'GET',
|
||||||
|
'ignore_errors' => true,
|
||||||
|
'timeout' => $timeout ? $timeout : FILE_FETCH_TIMEOUT,
|
||||||
|
'protocol_version'=> 1.1)
|
||||||
|
);
|
||||||
|
|
||||||
if (!$post_query && $last_modified) {
|
if (!$post_query && $last_modified) {
|
||||||
$context = stream_context_create(array(
|
$context_options['http']['header'] = "If-Modified-Since: $last_modified\r\n";
|
||||||
'http' => array(
|
|
||||||
'method' => 'GET',
|
|
||||||
'ignore_errors' => true,
|
|
||||||
'timeout' => $timeout ? $timeout : FILE_FETCH_TIMEOUT,
|
|
||||||
'protocol_version'=> 1.1,
|
|
||||||
'header' => "If-Modified-Since: $last_modified\r\n")
|
|
||||||
));
|
|
||||||
} else {
|
|
||||||
$context = stream_context_create(array(
|
|
||||||
'http' => array(
|
|
||||||
'method' => 'GET',
|
|
||||||
'ignore_errors' => true,
|
|
||||||
'timeout' => $timeout ? $timeout : FILE_FETCH_TIMEOUT,
|
|
||||||
'protocol_version'=> 1.1
|
|
||||||
)));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (defined('PROXY')) {
|
||||||
|
$context_options['http']['proxy'] = PROXY;
|
||||||
|
}
|
||||||
|
|
||||||
|
$context = stream_context_create($context_options);
|
||||||
|
|
||||||
$old_error = error_get_last();
|
$old_error = error_get_last();
|
||||||
|
|
||||||
$data = @file_get_contents($url, false, $context);
|
$data = @file_get_contents($url, false, $context);
|
||||||
|
|||||||
Reference in New Issue
Block a user