cursor2api / src /config /config.js
github-actions[bot]
Update from GitHub Actions
b5e1f18
// 读取并解析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'
}
};