FreshRSS / Extensions

A repository containing all the official FreshRSS extensions
GNU Affero General Public License v3.0
373 stars 57 forks source link

[ImageProxy] Domain whitelist #229

Open jonsmy opened 7 months ago

jonsmy commented 7 months ago

Default behaviour breaks images that load from internal domains, currently there is no way from within FreshRSS to prevent such domains from going through the configured proxy.

Frenzie commented 7 months ago

Unless I'm missing something I don't think that would help much. Mixed content is blocked after all.

jonsmy commented 7 months ago

The internal domains are using custom certs, things load properly when done directly.

Frenzie commented 7 months ago

I'm not opposed to adding a whitelist, but in that case the more obvious solution would seem to be to use the default settings (i.e., don't force proxy HTTPS).

jonsmy commented 7 months ago

I'm mainly interested in caching and allowing intranet clients to be able to view articles without requiring internet access.

Frenzie commented 7 months ago

I think a simple comma-separated text input (with explode()) should probably do the trick?

I mean around here: https://github.com/FreshRSS/Extensions/blob/9f21984b8c9e75c48496d285795953642a8ec977/xExtension-ImageProxy/extension.php#L72C1-L74C73

Along these lines (NB untested pseudocode, might accidentally run correctly :-)

    $whitelist = "bla.bla,bleep.bla"; // but from userConf
    $parsed_url = parse_url($url);
    $scheme = isset($parsed_url['scheme']) ? $parsed_url['scheme'] : null;
    $host = isset($parsed_url['host']) ? $parsed_url['host'] : null;

    if ($host && in_array($host, explode(',', $whitelist))) {
        return $url;

Please feel free to test and PR; I don't have time to atm and I don't know if I will this week.