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:
parent
c30f5e1811
commit
ea55f2e11c
|
@ -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);
|
||||||
|
|
Loading…
Reference in New Issue