diff --git a/backend/open_webui/retrieval/web/main.py b/backend/open_webui/retrieval/web/main.py index 23cbf08aeb..d8127807cf 100644 --- a/backend/open_webui/retrieval/web/main.py +++ b/backend/open_webui/retrieval/web/main.py @@ -1,10 +1,11 @@ from __future__ import annotations +import ipaddress from urllib.parse import urlparse import validators from open_webui.retrieval.web.utils import resolve_hostname -from open_webui.utils.misc import is_host_allowed +from open_webui.utils.misc import get_allow_block_lists, is_host_allowed from pydantic import BaseModel @@ -12,6 +13,16 @@ def get_filtered_results(results, filter_list): if not filter_list: return results + allow_list, block_list = get_allow_block_lists(filter_list) + resolve_ips = False + for entry in allow_list + block_list: + try: + ipaddress.ip_address(entry) + except ValueError: + continue + resolve_ips = True + break + filtered_results = [] for result in results: @@ -25,12 +36,13 @@ def get_filtered_results(results, filter_list): hostnames = [domain] - try: - ipv4_addresses, ipv6_addresses = resolve_hostname(domain) - hostnames.extend(ipv4_addresses) - hostnames.extend(ipv6_addresses) - except Exception: - pass + if resolve_ips: + try: + ipv4_addresses, ipv6_addresses = resolve_hostname(domain) + hostnames.extend(ipv4_addresses) + hostnames.extend(ipv6_addresses) + except Exception: + pass if is_host_allowed(hostnames, filter_list): filtered_results.append(result)