Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Verified Commit 4bec24dc authored by Nicolas Gelot's avatar Nicolas Gelot
Browse files

Fix image_proxy

parent a5f05efc
Loading
Loading
Loading
Loading

searx/plugins/rest_api.py

deleted100644 → 0
+0 −52
Original line number Diff line number Diff line
import hmac
import hashlib
from urllib.parse import urlencode
from flask_babel import gettext
from searx import settings


name = gettext("Rest API")
description = gettext("Update REST API")
default_on = True
preference_section = "general"


def proxify(url):
    """helper copied from webapp module"""
    if url.startswith("//"):
        url = "https:" + url

    if not settings.get("result_proxy"):
        return url

    if url.startswith("data:image/"):
        # 50 is an arbitrary number to get only the beginning of the image.
        partial_base64 = url[len("data:image/") : 50].split(";")
        if (
            len(partial_base64) == 2
            and partial_base64[0] in ["gif", "png", "jpeg", "pjpeg", "webp", "tiff", "bmp"]
            and partial_base64[1].startswith("base64,")
        ):
            return url
        else:
            return None

    url_params = dict(mortyurl=url.encode("utf-8"))

    if settings["result_proxy"].get("key"):
        url_params["mortyhash"] = hmac.new(
            settings["result_proxy"]["key"], url.encode("utf-8"), hashlib.sha256
        ).hexdigest()

    return "{0}?{1}".format(settings["result_proxy"]["url"], urlencode(url_params))


def on_result(request, search, result):
    if request.form.get("format") != "json":
        return True

    for attr in ["thumbnail", "thumbnail_src"]:
        if attr in result:
            result[attr] = proxify(result[attr])

    return True
+1 −1
Original line number Diff line number Diff line
@@ -379,7 +379,7 @@ def image_proxify(url: str):
    if url.startswith("//"):
        url = "https:" + url

    if not request.preferences.get_value("image_proxy"):
    if not settings["server"].get("image_proxy"):
        return url

    if url.startswith("data:image/"):