summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authormartin scharm <[email protected]>2018-01-14 00:30:22 +0100
committermartin scharm <[email protected]>2018-01-14 00:30:22 +0100
commitea55f2e11c162db8edeac1a39f861d5ad2381a60 (patch)
treef7e843b4fe7a49f6b5f4bf03ef3b68a71fb15e8f /include
parentc30f5e18119d1935e8fe6d422053b127e8f4f1b3 (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.php35
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);