diff options
Diffstat (limited to 'searx/plugins/tor_check.py')
| -rw-r--r-- | searx/plugins/tor_check.py | 53 |
1 files changed, 25 insertions, 28 deletions
diff --git a/searx/plugins/tor_check.py b/searx/plugins/tor_check.py index 3816d8ece..95281eb42 100644 --- a/searx/plugins/tor_check.py +++ b/searx/plugins/tor_check.py @@ -1,8 +1,8 @@ # SPDX-License-Identifier: AGPL-3.0-or-later """A plugin to check if the ip address of the request is a Tor exit-node if the user searches for ``tor-check``. It fetches the tor exit node list from -https://check.torproject.org/exit-addresses and parses all the IPs into a list, -then checks if the user's IP address is in it. +:py:obj:`url_exit_list` and parses all the IPs into a list, then checks if the +user's IP address is in it. Enable in ``settings.yml``: @@ -14,10 +14,15 @@ Enable in ``settings.yml``: """ +from __future__ import annotations + import re from flask_babel import gettext from httpx import HTTPError + from searx.network import get +from searx.result_types import Answer + default_on = False @@ -42,27 +47,28 @@ query_examples = '' # Regex for exit node addresses in the list. reg = re.compile(r"(?<=ExitAddress )\S+") +url_exit_list = "https://check.torproject.org/exit-addresses" +"""URL to load Tor exit list from.""" -def post_search(request, search): + +def post_search(request, search) -> list[Answer]: + results = [] if search.search_query.pageno > 1: - return True + return results if search.search_query.query.lower() == "tor-check": # Request the list of tor exit nodes. try: - resp = get("https://check.torproject.org/exit-addresses") - node_list = re.findall(reg, resp.text) + resp = get(url_exit_list) + node_list = re.findall(reg, resp.text) # type: ignore except HTTPError: # No answer, return error - search.result_container.answers["tor"] = { - "answer": gettext( - "Could not download the list of Tor exit-nodes from: https://check.torproject.org/exit-addresses" - ) - } - return True + msg = gettext("Could not download the list of Tor exit-nodes from") + Answer(results=results, answer=f"{msg} {url_exit_list}") + return results x_forwarded_for = request.headers.getlist("X-Forwarded-For") @@ -72,20 +78,11 @@ def post_search(request, search): ip_address = request.remote_addr if ip_address in node_list: - search.result_container.answers["tor"] = { - "answer": gettext( - "You are using Tor and it looks like you have this external IP address: {ip_address}".format( - ip_address=ip_address - ) - ) - } + msg = gettext("You are using Tor and it looks like you have the external IP address") + Answer(results=results, answer=f"{msg} {ip_address}") + else: - search.result_container.answers["tor"] = { - "answer": gettext( - "You are not using Tor and you have this external IP address: {ip_address}".format( - ip_address=ip_address - ) - ) - } - - return True + msg = gettext("You are not using Tor and you have the external IP address") + Answer(results=results, answer=f"{msg} {ip_address}") + + return results |