Spaces:
Running
Running
// 读取并解析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' | |
} | |
}; | |