curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);
// Max download size management
- curl_setopt($ch, CURLOPT_BUFFERSIZE, 1024);
+ curl_setopt($ch, CURLOPT_BUFFERSIZE, 1024*16);
curl_setopt($ch, CURLOPT_NOPROGRESS, false);
curl_setopt($ch, CURLOPT_PROGRESSFUNCTION,
function($arg0, $arg1, $arg2, $arg3, $arg4 = 0) use ($maxBytes)
$port = $server['HTTP_X_FORWARDED_PORT'];
}
+ // This is a workaround for proxies that don't forward the scheme properly.
+ // Connecting over port 443 has to be in HTTPS.
+ // See https://github.com/shaarli/Shaarli/issues/1022
+ if ($port == '443') {
+ $scheme = 'https';
+ }
+
if (($scheme == 'http' && $port != '80')
|| ($scheme == 'https' && $port != '443')
) {
return array_pop($ips);
}
+
+/**
+ * Returns true if Shaarli's currently browsed in HTTPS.
+ * Supports reverse proxies (if the headers are correctly set).
+ *
+ * @param array $server $_SERVER.
+ *
+ * @return bool true if HTTPS, false otherwise.
+ */
+function is_https($server)
+{
+
+ if (isset($server['HTTP_X_FORWARDED_PORT'])) {
+ // Keep forwarded port
+ if (strpos($server['HTTP_X_FORWARDED_PORT'], ',') !== false) {
+ $ports = explode(',', $server['HTTP_X_FORWARDED_PORT']);
+ $port = trim($ports[0]);
+ } else {
+ $port = $server['HTTP_X_FORWARDED_PORT'];
+ }
+
+ if ($port == '443') {
+ return true;
+ }
+ }
+
+ return ! empty($server['HTTPS']);
+}