function addProxyToTags($html, $website, $proxy_images, $cloak_referrer) { if ($html === '' || !$cloak_referrer && !$proxy_images || !$cloak_referrer && $proxy_images && !Helper\isSecureConnection()) { // 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'); } elseif (!$proxy_images && $cloak_referrer && Helper\isSecureConnection()) { // 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(); }
public function testImageProxyLimitedToHTTPSwithHTTPSLink() { $config = new Config(); $config->setFilterImageProxyUrl('http://myproxy/?url=%s'); $config->setFilterImageProxyProtocol('https'); $f = Filter::html('<p>Image <img src="https://localhost/image.png" alt="My Image"/></p>', 'http://foo'); $f->setConfig($config); $this->assertEquals('<p>Image <img src="http://myproxy/?url=' . rawurlencode('https://localhost/image.png') . '" alt="My Image"/></p>', $f->execute()); }