From f16d0238f7743107f02c503d7a50b47565b880dd Mon Sep 17 00:00:00 2001 From: thzxx Date: Fri, 12 Jun 2026 12:48:05 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20SearXNG=20API=20=E5=9C=B0=E5=9D=80?= =?UTF-8?q?=E6=94=B9=E4=B8=BA=E5=BF=85=E5=A1=AB=EF=BC=8C=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E6=97=B6=E6=A0=A1=E9=AA=8C=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/tool-handlers-system.ts | 5 ++++- src/renderer/components/searxng-modal.ts | 16 ++++++++++++++-- src/renderer/index.html | 2 +- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/main/tool-handlers-system.ts b/src/main/tool-handlers-system.ts index 3207da1..afc3af0 100644 --- a/src/main/tool-handlers-system.ts +++ b/src/main/tool-handlers-system.ts @@ -446,7 +446,10 @@ async function handleWebSearchSearxng( timeRange: string, _enhanceSnippets: boolean ): Promise { - const url = getSetting('searxng_url', 'https://search.metona.cn'); + const url = getSetting('searxng_url', ''); + if (!url) { + return { success: false, error: 'SearXNG API 地址未配置。请在 SearXNG 设置中填写 API 地址。' }; + } const engines = getSetting('searxng_engines', 'google,bing,duckduckgo,wikipedia'); const language = getSetting('searxng_language', 'zh-CN'); const safesearch = getSetting('searxng_safesearch', 1); diff --git a/src/renderer/components/searxng-modal.ts b/src/renderer/components/searxng-modal.ts index 03a30af..1e4fc5c 100644 --- a/src/renderer/components/searxng-modal.ts +++ b/src/renderer/components/searxng-modal.ts @@ -10,7 +10,7 @@ import { logInfo, logSuccess } from '../services/log-service.js'; /** 默认 SearXNG 配置 */ const DEFAULTS = { enabled: false, - url: 'https://search.metona.cn', + url: '', engines: 'google,bing,duckduckgo,wikipedia', language: 'zh-CN', safesearch: 1, @@ -113,7 +113,19 @@ export function initSearxngModal(): void { // ── 保存按钮 ── document.querySelector('#btnSaveSearxng')!.addEventListener('click', async () => { - searxngConfig.url = (document.querySelector('#searxngUrl') as HTMLInputElement).value.trim(); + const url = (document.querySelector('#searxngUrl') as HTMLInputElement).value.trim(); + if (!url) { + const { showToast } = await import('./toast.js'); + showToast('SearXNG API 地址不能为空', 'error'); + return; + } + if (!/^https?:\/\/.+/.test(url)) { + const { showToast } = await import('./toast.js'); + showToast('SearXNG API 地址格式不正确,需以 http:// 或 https:// 开头', 'error'); + return; + } + + searxngConfig.url = url; searxngConfig.engines = (document.querySelector('#searxngEngines') as HTMLInputElement).value.trim(); searxngConfig.language = (document.querySelector('#searxngLanguage') as HTMLSelectElement).value; searxngConfig.safesearch = parseInt((document.querySelector('#searxngSafeSearch') as HTMLSelectElement).value); diff --git a/src/renderer/index.html b/src/renderer/index.html index 01d2a24..f0c6105 100644 --- a/src/renderer/index.html +++ b/src/renderer/index.html @@ -732,7 +732,7 @@
- +

SearXNG 实例的根地址,无需带 /search 路径