1
0
Fork 0
mirror of https://github.com/searxng/searxng.git synced 2025-04-12 14:44:07 +00:00

[fix] plugins: bugfix of tor_check and unit_converter

Closes: https://github.com/searxng/searxng/issues/4461
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
This commit is contained in:
Markus Heiser 2025-03-07 17:35:26 +01:00 committed by Markus Heiser
parent f49b2c94a9
commit da7b069d6e
3 changed files with 19 additions and 19 deletions

View file

@ -8,6 +8,7 @@ from ipaddress import (
IPv4Address,
IPv6Address,
ip_network,
ip_address,
)
import flask
import werkzeug
@ -125,6 +126,9 @@ def get_real_ip(request: SXNG_Request) -> str:
if real_ip and remote_addr and real_ip != remote_addr:
logger.warning("IP from WSGI environment (%s) is not equal to IP from X-Real-IP (%s)", remote_addr, real_ip)
request_ip = forwarded_for or real_ip or remote_addr or '0.0.0.0'
request_ip = ip_address(forwarded_for or real_ip or remote_addr or '0.0.0.0')
if request_ip.version == 6 and request_ip.ipv4_mapped:
request_ip = request_ip.ipv4_mapped
# logger.debug("get_real_ip() -> %s", request_ip)
return request_ip
return str(request_ip)

View file

@ -21,7 +21,8 @@ from flask_babel import gettext
from httpx import HTTPError
from searx.network import get
from searx.result_types import Answer
from searx.result_types import EngineResults
from searx.botdetection import get_real_ip
default_on = False
@ -51,8 +52,8 @@ url_exit_list = "https://check.torproject.org/exit-addresses"
"""URL to load Tor exit list from."""
def post_search(request, search) -> list[Answer]:
results = []
def post_search(request, search) -> EngineResults:
results = EngineResults()
if search.search_query.pageno > 1:
return results
@ -67,22 +68,17 @@ def post_search(request, search) -> list[Answer]:
except HTTPError:
# No answer, return error
msg = gettext("Could not download the list of Tor exit-nodes from")
Answer(results=results, answer=f"{msg} {url_exit_list}")
results.add(results.types.Answer(answer=f"{msg} {url_exit_list}"))
return results
x_forwarded_for = request.headers.getlist("X-Forwarded-For")
real_ip = get_real_ip(request)
if x_forwarded_for:
ip_address = x_forwarded_for[0]
else:
ip_address = request.remote_addr
if ip_address in node_list:
if real_ip in node_list:
msg = gettext("You are using Tor and it looks like you have the external IP address")
Answer(results=results, answer=f"{msg} {ip_address}")
results.add(results.types.Answer(answer=f"{msg} {real_ip}"))
else:
msg = gettext("You are not using Tor and you have the external IP address")
Answer(results=results, answer=f"{msg} {ip_address}")
results.add(results.types.Answer(answer=f"{msg} {real_ip}"))
return results

View file

@ -25,7 +25,7 @@ import babel.numbers
from flask_babel import gettext, get_locale
from searx import data
from searx.result_types import Answer
from searx.result_types import EngineResults
name = "Unit converter plugin"
@ -245,8 +245,8 @@ def _parse_text_and_convert(from_query, to_query) -> str | None:
return f'{result} {target_symbol}'
def post_search(_request, search) -> list[Answer]:
results = []
def post_search(_request, search) -> EngineResults:
results = EngineResults()
# only convert between units on the first page
if search.search_query.pageno > 1:
@ -264,6 +264,6 @@ def post_search(_request, search) -> list[Answer]:
from_query, to_query = query.split(keyword, 1)
target_val = _parse_text_and_convert(from_query.strip(), to_query.strip())
if target_val:
Answer(results=results, answer=target_val)
results.add(results.types.Answer(answer=target_val))
return results