diff options
author | martin scharm <[email protected]> | 2018-01-14 00:30:22 +0100 |
---|---|---|
committer | martin scharm <[email protected]> | 2018-01-14 00:30:22 +0100 |
commit | ea55f2e11c162db8edeac1a39f861d5ad2381a60 (patch) | |
tree | f7e843b4fe7a49f6b5f4bf03ef3b68a71fb15e8f /include | |
parent | c30f5e18119d1935e8fe6d422053b127e8f4f1b3 (diff) |
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, see
https://git.tt-rss.org/git/tt-rss/src/c30f5e18119d1935e8fe6d422053b127e8f4f1b3/include/functions.php#L377
In this case it would use the `file_get_contents` with a stream
context without a proxy definition:
https://git.tt-rss.org/git/tt-rss/src/c30f5e18119d1935e8fe6d422053b127e8f4f1b3/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.
Diffstat (limited to 'include')
-rw-r--r-- | include/functions.php | 35 |
1 files changed, 17 insertions, 18 deletions
diff --git a/include/functions.php b/include/functions.php index 649b77881..f58a2fc68 100644 --- a/include/functions.php +++ b/include/functions.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); |