fix: SearXNG API 地址改为必填,保存时校验格式
This commit is contained in:
@@ -446,7 +446,10 @@ async function handleWebSearchSearxng(
|
|||||||
timeRange: string,
|
timeRange: string,
|
||||||
_enhanceSnippets: boolean
|
_enhanceSnippets: boolean
|
||||||
): Promise<ToolResult> {
|
): Promise<ToolResult> {
|
||||||
const url = getSetting<string>('searxng_url', 'https://search.metona.cn');
|
const url = getSetting<string>('searxng_url', '');
|
||||||
|
if (!url) {
|
||||||
|
return { success: false, error: 'SearXNG API 地址未配置。请在 SearXNG 设置中填写 API 地址。' };
|
||||||
|
}
|
||||||
const engines = getSetting<string>('searxng_engines', 'google,bing,duckduckgo,wikipedia');
|
const engines = getSetting<string>('searxng_engines', 'google,bing,duckduckgo,wikipedia');
|
||||||
const language = getSetting<string>('searxng_language', 'zh-CN');
|
const language = getSetting<string>('searxng_language', 'zh-CN');
|
||||||
const safesearch = getSetting<number>('searxng_safesearch', 1);
|
const safesearch = getSetting<number>('searxng_safesearch', 1);
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import { logInfo, logSuccess } from '../services/log-service.js';
|
|||||||
/** 默认 SearXNG 配置 */
|
/** 默认 SearXNG 配置 */
|
||||||
const DEFAULTS = {
|
const DEFAULTS = {
|
||||||
enabled: false,
|
enabled: false,
|
||||||
url: 'https://search.metona.cn',
|
url: '',
|
||||||
engines: 'google,bing,duckduckgo,wikipedia',
|
engines: 'google,bing,duckduckgo,wikipedia',
|
||||||
language: 'zh-CN',
|
language: 'zh-CN',
|
||||||
safesearch: 1,
|
safesearch: 1,
|
||||||
@@ -113,7 +113,19 @@ export function initSearxngModal(): void {
|
|||||||
|
|
||||||
// ── 保存按钮 ──
|
// ── 保存按钮 ──
|
||||||
document.querySelector('#btnSaveSearxng')!.addEventListener('click', async () => {
|
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.engines = (document.querySelector('#searxngEngines') as HTMLInputElement).value.trim();
|
||||||
searxngConfig.language = (document.querySelector('#searxngLanguage') as HTMLSelectElement).value;
|
searxngConfig.language = (document.querySelector('#searxngLanguage') as HTMLSelectElement).value;
|
||||||
searxngConfig.safesearch = parseInt((document.querySelector('#searxngSafeSearch') as HTMLSelectElement).value);
|
searxngConfig.safesearch = parseInt((document.querySelector('#searxngSafeSearch') as HTMLSelectElement).value);
|
||||||
|
|||||||
@@ -732,7 +732,7 @@
|
|||||||
|
|
||||||
<div class="setting-group">
|
<div class="setting-group">
|
||||||
<label class="setting-label">SearXNG API 地址</label>
|
<label class="setting-label">SearXNG API 地址</label>
|
||||||
<input class="setting-input" id="searxngUrl" type="url" placeholder="https://search.metona.cn" style="margin-bottom:6px;">
|
<input class="setting-input" id="searxngUrl" type="url" placeholder="https://search.metona.cn" required style="margin-bottom:6px;">
|
||||||
<p class="text-muted" style="font-size:11px;">SearXNG 实例的根地址,无需带 /search 路径</p>
|
<p class="text-muted" style="font-size:11px;">SearXNG 实例的根地址,无需带 /search 路径</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user