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
|
||||
// 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
|
||||
|
|
|
@ -402,8 +402,8 @@
|
|||
curl_setopt($ch, CURLOPT_COOKIEJAR, "/dev/null");
|
||||
}
|
||||
|
||||
if (defined('_CURL_HTTP_PROXY')) {
|
||||
curl_setopt($ch, CURLOPT_PROXY, _CURL_HTTP_PROXY);
|
||||
if (defined('PROXY')) {
|
||||
curl_setopt($ch, CURLOPT_PROXY, PROXY);
|
||||
}
|
||||
|
||||
if ($post_query) {
|
||||
|
@ -483,25 +483,24 @@
|
|||
|
||||
// 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) {
|
||||
$context = stream_context_create(array(
|
||||
'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
|
||||
)));
|
||||
$context_options['http']['header'] = "If-Modified-Since: $last_modified\r\n";
|
||||
}
|
||||
|
||||
if (defined('PROXY')) {
|
||||
$context_options['http']['proxy'] = PROXY;
|
||||
}
|
||||
|
||||
$context = stream_context_create($context_options);
|
||||
|
||||
$old_error = error_get_last();
|
||||
|
||||
$data = @file_get_contents($url, false, $context);
|
||||
|
|
Loading…
Reference in New Issue