summaryrefslogtreecommitdiff
path: root/searx/plugins/tor_check.py
diff options
context:
space:
mode:
Diffstat (limited to 'searx/plugins/tor_check.py')
-rw-r--r--searx/plugins/tor_check.py53
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