Spaces:
Paused
Paused
| // 读取并解析API_KEYS环境变量 | |
| // 避免循环依赖,不要在此处引用logger | |
| // 添加自己的简单日志函数,防止循环依赖 | |
| function log(level, message) { | |
| // 只在控制台输出,不写入文件 | |
| const timestamp = new Date().toISOString(); | |
| if (level === 'ERROR') { | |
| console.error(`[ERROR] ${timestamp} ${message}`); | |
| } else if (level === 'WARN') { | |
| console.warn(`[WARN] ${timestamp} ${message}`); | |
| } else { | |
| console.log(`[INFO] ${timestamp} ${message}`); | |
| } | |
| } | |
| // 解析API Keys配置 | |
| let apiKeysConfig = {}; | |
| try { | |
| if (process.env.API_KEYS) { | |
| // 解析API Keys字符串为对象 | |
| apiKeysConfig = JSON.parse(process.env.API_KEYS); | |
| log('INFO', '正在从环境变量加载API Keys...'); | |
| log('INFO', `成功解析API Keys,包含 ${Object.keys(apiKeysConfig).length} 个键`); | |
| } | |
| } catch (error) { | |
| log('ERROR', '解析API_KEYS环境变量失败:' + error.message); | |
| log('ERROR', '请确保API_KEYS是有效的JSON格式'); | |
| } | |
| // 导出配置 | |
| module.exports = { | |
| port: process.env.PORT || 3000, | |
| // 日志配置 | |
| log: { | |
| level: process.env.LOG_LEVEL || 'INFO', // ERROR, WARN, INFO, DEBUG, TRACE | |
| format: process.env.LOG_FORMAT || 'colored', // colored, json, text | |
| toFile: process.env.LOG_TO_FILE === 'true' || false, | |
| maxSize: parseInt(process.env.LOG_MAX_SIZE || '10', 10) * 1024 * 1024, // 默认10MB | |
| maxFiles: parseInt(process.env.LOG_MAX_FILES || '10', 10) // 保留最近10个日志文件 | |
| }, | |
| // 合并API Keys设置 | |
| apiKeys: { | |
| ...apiKeysConfig, | |
| ...Object.fromEntries( | |
| Object.entries(process.env) | |
| .filter(([key]) => key.startsWith('API_KEY_')) | |
| .map(([key, value]) => { | |
| const apiKey = key.replace('API_KEY_', 'sk-'); | |
| try { | |
| // 尝试解析JSON字符串,支持数组格式的cookie | |
| const parsed = JSON.parse(value); | |
| return [apiKey, parsed]; | |
| } catch (e) { | |
| // 如果不是JSON,直接作为字符串处理 | |
| return [apiKey, value]; | |
| } | |
| }) | |
| ) | |
| }, | |
| defaultRotationStrategy: process.env.ROTATION_STRATEGY || 'round-robin', | |
| // 添加代理配置 | |
| proxy: { | |
| enabled: process.env.PROXY_ENABLED === 'true' || false, | |
| url: process.env.PROXY_URL || 'http://127.0.0.1:7890', | |
| }, | |
| // GitHub相关配置 | |
| github: { | |
| token: process.env.GITHUB_TOKEN, | |
| owner: process.env.GITHUB_OWNER, | |
| repo: process.env.GITHUB_REPO, | |
| workflowId: process.env.GITHUB_WORKFLOW_ID, | |
| triggerWorkflow: process.env.TRIGGER_WORKFLOW === 'true' | |
| }, | |
| // 工作流参数 | |
| workflowParams: { | |
| number: parseInt(process.env.REGISTER_NUMBER || '2', 10), | |
| maxWorkers: parseInt(process.env.REGISTER_MAX_WORKERS || '1', 10), | |
| emailServer: process.env.REGISTER_EMAIL_SERVER || 'TempEmail', | |
| ingestToOneapi: process.env.REGISTER_INGEST_TO_ONEAPI === 'true', | |
| uploadArtifact: process.env.REGISTER_UPLOAD_ARTIFACT === 'true', | |
| useConfigFile: process.env.REGISTER_USE_CONFIG_FILE !== 'false', | |
| emailConfigs: process.env.REGISTER_EMAIL_CONFIGS || '[]' | |
| }, | |
| // 刷新配置 | |
| refresh: { | |
| cron: process.env.REFRESH_CRON || '0 */6 * * *', | |
| minCookieCount: parseInt(process.env.MIN_COOKIE_COUNT || '2', 10), | |
| enabled: process.env.ENABLE_AUTO_REFRESH === 'true' | |
| } | |
| }; | |