| |
| export interface AppConfig { |
| |
| defaultSearchEngine: 'bing' | 'duckduckgo' | 'exa' | 'brave' | 'baidu' | 'csdn' | 'linuxdo' | 'juejin'; |
| |
| allowedSearchEngines: string[]; |
| |
| proxyUrl?: string; |
| useProxy: boolean; |
| |
| enableCors: boolean; |
| corsOrigin: string; |
| |
| enableHttpServer: boolean; |
| } |
|
|
| |
| export const config: AppConfig = { |
| |
| defaultSearchEngine: (process.env.DEFAULT_SEARCH_ENGINE as AppConfig['defaultSearchEngine']) || 'bing', |
| |
| allowedSearchEngines: process.env.ALLOWED_SEARCH_ENGINES ? |
| process.env.ALLOWED_SEARCH_ENGINES.split(',').map(e => e.trim()) : |
| [], |
| |
| proxyUrl: process.env.PROXY_URL || 'http://127.0.0.1:10809', |
| useProxy: process.env.USE_PROXY === 'true', |
| |
| enableCors: process.env.ENABLE_CORS === 'true', |
| corsOrigin: process.env.CORS_ORIGIN || '*', |
| |
| |
| enableHttpServer: process.env.MODE ? ['both', 'http'].includes(process.env.MODE) : true |
| }; |
|
|
| |
| const validSearchEngines = ['bing', 'duckduckgo', 'exa', 'brave', 'baidu', 'csdn', 'linuxdo', 'juejin']; |
|
|
| |
| if (!validSearchEngines.includes(config.defaultSearchEngine)) { |
| console.warn(`Invalid DEFAULT_SEARCH_ENGINE: "${config.defaultSearchEngine}", falling back to "bing"`); |
| config.defaultSearchEngine = 'bing'; |
| } |
|
|
| |
| if (config.allowedSearchEngines.length > 0) { |
| |
| const invalidEngines = config.allowedSearchEngines.filter(engine => !validSearchEngines.includes(engine)); |
| if (invalidEngines.length > 0) { |
| console.warn(`Invalid search engines detected and will be ignored: ${invalidEngines.join(', ')}`); |
| } |
| config.allowedSearchEngines = config.allowedSearchEngines.filter(engine => validSearchEngines.includes(engine)); |
|
|
| |
| if (config.allowedSearchEngines.length === 0) { |
| console.warn(`No valid search engines specified in the allowed list, all engines will be available`); |
| } |
| |
| else if (!config.allowedSearchEngines.includes(config.defaultSearchEngine)) { |
| console.warn(`Default search engine "${config.defaultSearchEngine}" is not in the allowed engines list`); |
| |
| config.defaultSearchEngine = config.allowedSearchEngines[0] as AppConfig['defaultSearchEngine']; |
| console.error(`Default search engine updated to "${config.defaultSearchEngine}"`); |
| } |
| } |
|
|
| |
| console.error(`π Default search engine: ${config.defaultSearchEngine}`); |
| if (config.allowedSearchEngines.length > 0) { |
| console.error(`π Allowed search engines: ${config.allowedSearchEngines.join(', ')}`); |
| } else { |
| console.error(`π No search engine restrictions, all available engines can be used`); |
| } |
|
|
| if (config.useProxy) { |
| console.error(`π Using proxy: ${config.proxyUrl}`); |
| } else { |
| console.error(`π No proxy configured (set USE_PROXY=true to enable)`); |
| } |
|
|
| |
| const mode = process.env.MODE || (config.enableHttpServer ? 'both' : 'stdio'); |
| console.error(`π₯οΈ Server mode: ${mode.toUpperCase()}`); |
|
|
| if (config.enableHttpServer) { |
| if (config.enableCors) { |
| console.error(`π CORS enabled with origin: ${config.corsOrigin}`); |
| } else { |
| console.error(`π CORS disabled (set ENABLE_CORS=true to enable)`); |
| } |
| } |
|
|
|
|
| |
| |
| |
| export function getProxyUrl(): string | undefined { |
| return config.useProxy ? encodeURI(<string>config.proxyUrl) : undefined; |
| } |
|
|