miniflux-legacy/app/handlers/proxy.php

66 lines
1.9 KiB
PHP
Raw Normal View History

<?php
2016-08-19 04:41:39 +02:00
namespace Handler\Proxy;
use Helper;
use Model\Config;
use PicoFeed\Client\ClientException;
use PicoFeed\Config\Config as PicoFeedConfig;
use PicoFeed\Filter\Filter;
use PicoFeed\Client\Client;
2015-02-07 17:09:43 +01:00
use PicoFeed\Logging\Logger;
2015-05-17 19:33:13 +02:00
function rewrite_link($link)
2015-02-07 17:09:43 +01:00
{
2015-04-11 02:57:44 +02:00
if (Helper\is_secure_connection() && strpos($link, 'http:') === 0) {
$link = '?action=proxy&url='.rawurlencode($link);
}
return $link;
}
2015-05-17 19:33:13 +02:00
function rewrite_html($html, $website, $proxy_images, $cloak_referrer)
{
if ($html === '' // no content, no proxy
|| (! $cloak_referrer && ! $proxy_images) // neither cloaking nor proxing enabled
2015-04-11 02:57:44 +02:00
|| (! $cloak_referrer && $proxy_images && ! Helper\is_secure_connection())) { // only proxy enabled, but not connected via HTTPS
return $html;
}
$config = new PicoFeedConfig();
$config->setFilterImageProxyUrl('?action=proxy&url=%s');
if (! $cloak_referrer && $proxy_images) {
// image proxy mode only: https links do not need to be proxied, since
// they do not trigger mixed content warnings.
$config->setFilterImageProxyProtocol('http');
2016-04-18 01:44:45 +02:00
} elseif (! $proxy_images && $cloak_referrer && Helper\is_secure_connection()) {
// cloaking mode only: if a request from a HTTPS connection to a HTTP
// connection is made, the referrer will be omitted by the browser.
// Only the referrer for HTTPS to HTTPs requests needs to be cloaked.
$config->setFilterImageProxyProtocol('https');
}
$filter = Filter::html($html, $website);
$filter->setConfig($config);
return $filter->execute();
}
function download($url)
{
2015-05-17 19:26:51 +02:00
try {
if ((bool) Config\get('debug_mode')) {
Logger::enable();
}
2015-02-07 17:09:43 +01:00
2015-05-17 19:26:51 +02:00
$client = Client::getInstance();
$client->setUserAgent(Config\HTTP_USER_AGENT);
$client->enablePassthroughMode();
$client->execute($url);
2016-08-19 04:41:39 +02:00
} catch (ClientException $e) {}
Config\write_debug();
}