Some checks failed
Create and publish Docker images with specific build args / build-main-image (linux/amd64, ubuntu-latest) (push) Has been cancelled
Create and publish Docker images with specific build args / build-main-image (linux/arm64, ubuntu-24.04-arm) (push) Has been cancelled
Create and publish Docker images with specific build args / build-cuda-image (linux/amd64, ubuntu-latest) (push) Has been cancelled
Create and publish Docker images with specific build args / build-cuda-image (linux/arm64, ubuntu-24.04-arm) (push) Has been cancelled
Create and publish Docker images with specific build args / build-cuda126-image (linux/amd64, ubuntu-latest) (push) Has been cancelled
Create and publish Docker images with specific build args / build-cuda126-image (linux/arm64, ubuntu-24.04-arm) (push) Has been cancelled
Create and publish Docker images with specific build args / build-ollama-image (linux/amd64, ubuntu-latest) (push) Has been cancelled
Create and publish Docker images with specific build args / build-ollama-image (linux/arm64, ubuntu-24.04-arm) (push) Has been cancelled
Create and publish Docker images with specific build args / build-slim-image (linux/amd64, ubuntu-latest) (push) Has been cancelled
Create and publish Docker images with specific build args / build-slim-image (linux/arm64, ubuntu-24.04-arm) (push) Has been cancelled
Create and publish Docker images with specific build args / merge-main-images (push) Has been cancelled
Create and publish Docker images with specific build args / merge-cuda-images (push) Has been cancelled
Create and publish Docker images with specific build args / merge-cuda126-images (push) Has been cancelled
Create and publish Docker images with specific build args / merge-ollama-images (push) Has been cancelled
Create and publish Docker images with specific build args / merge-slim-images (push) Has been cancelled
Python CI / Format Backend (3.11.x) (push) Has been cancelled
Python CI / Format Backend (3.12.x) (push) Has been cancelled
Frontend Build / Format & Build Frontend (push) Has been cancelled
Frontend Build / Frontend Unit Tests (push) Has been cancelled
Close inactive issues / close-issues (push) Has been cancelled
47 lines
1.1 KiB
Python
47 lines
1.1 KiB
Python
import validators
|
|
|
|
from typing import Optional
|
|
from urllib.parse import urlparse
|
|
|
|
from pydantic import BaseModel
|
|
|
|
from open_webui.retrieval.web.utils import resolve_hostname
|
|
from open_webui.utils.misc import is_string_allowed
|
|
|
|
|
|
def get_filtered_results(results, filter_list):
|
|
if not filter_list:
|
|
return results
|
|
|
|
filtered_results = []
|
|
|
|
for result in results:
|
|
url = result.get("url") or result.get("link", "") or result.get("href", "")
|
|
if not validators.url(url):
|
|
continue
|
|
|
|
domain = urlparse(url).netloc
|
|
if not domain:
|
|
continue
|
|
|
|
hostnames = [domain]
|
|
|
|
try:
|
|
ipv4_addresses, ipv6_addresses = resolve_hostname(domain)
|
|
hostnames.extend(ipv4_addresses)
|
|
hostnames.extend(ipv6_addresses)
|
|
except Exception:
|
|
pass
|
|
|
|
if is_string_allowed(hostnames, filter_list):
|
|
filtered_results.append(result)
|
|
continue
|
|
|
|
return filtered_results
|
|
|
|
|
|
class SearchResult(BaseModel):
|
|
link: str
|
|
title: Optional[str]
|
|
snippet: Optional[str]
|