SunSeekerX
f5e982632d
chore
2026-01-04 12:05:53 +08:00
SunSeekerX
90023d1551
Revert: 撤销 584fa8c 之后的所有提交
2026-01-03 23:24:59 +08:00
SunSeekerX
74e71d0afc
chore
2026-01-03 23:20:05 +08:00
SunSeekerX
d8a33f9aa7
chore
2026-01-01 12:42:47 +08:00
SunSeekerX
666b0120b7
chore
2025-12-31 02:28:51 +08:00
SunSeekerX
b4233033a6
chore
2025-12-31 02:17:10 +08:00
SunSeekerX
584fa8c9c1
feat: 大规模性能优化 - Redis Pipeline 批量操作、索引系统、连接池优化
2025-12-31 02:08:47 +08:00
Junming Chen
45b81bd478
fix: 修复 authenticateUserOrAdmin 认证绕过漏洞
...
- 添加 username 和 loginTime 字段验证(与 authenticateAdmin 保持一致)
- 无效/伪造会话自动删除并记录安全日志
- 删除未使用的 id 字段(死代码清理)
漏洞详情:
- 位置:src/middleware/auth.js:1569-1581
- 原因:只检查 Object.keys(session).length > 0,未验证必须字段
- 影响:攻击者可通过注入最小会话 {foo:'bar'} 绕过认证
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2025-12-28 23:56:05 -05:00
shaw
982cca1020
fix: 修复鉴权检测的重大安全漏洞
2025-12-25 14:23:35 +08:00
IanShaw027
b88698191e
style(admin): fix ESLint curly rule violations in sync.js
...
为单行 if 语句添加花括号以符合 ESLint curly 规则要求
2025-12-24 17:57:30 -08:00
IanShaw027
11c38b23d1
style(admin): format sync.js with prettier
...
修复 CI 格式化检查失败问题
2025-12-24 17:52:51 -08:00
IanShaw027
b2dfc2eb25
feat(admin): 添加账户导出同步 API
...
- 新增 /api/accounts 端点,支持导出所有账户数据
- 新增 /api/proxies 端点,支持导出所有代理配置
- 支持 Sub2API 从 CRS 批量同步账户
- 包含完整的 credentials 和 extra 字段
- 提供账户类型标识 (oauth/setup_token/api_key)
相关 PR: Sub2API 端实现账户同步功能
2025-12-24 17:35:11 -08:00
shaw
67c20fa30e
feat: 为 claude-official 账户添加 403 错误重试机制
...
针对 OAuth 和 Setup Token 类型的 Claude 账户,遇到 403 错误时:
- 休息 2 秒后进行重试
- 最多重试 2 次(总共最多 3 次请求)
- 重试后仍是 403 才标记账户为 blocked
同时支持流式和非流式请求,并修复了流式请求中的竞态条件问题。
2025-12-24 19:54:25 +08:00
shaw
671451253f
fix: 修复并发清理任务 WRONGTYPE 错误
...
问题:
- 并发清理定时任务在遇到非 zset 类型的遗留键时报 WRONGTYPE 错误
- 错误键如 concurrency:wait:*, concurrency:user:*, concurrency:account:* 等
修复:
- app.js: 使用原子 Lua 脚本先检查键类型再执行清理,消除竞态条件
- redis.js: 为 6 个并发管理函数添加类型检查
- getAllConcurrencyStatus(): 跳过 queue 键 + 类型检查
- getConcurrencyStatus(): 类型检查,非 zset 返回 invalidType
- forceClearConcurrency(): 类型检查,任意类型都删除
- forceClearAllConcurrency(): 跳过 queue 键 + 类型检查
- cleanupExpiredConcurrency(): 跳过 queue 键 + 类型检查
- 遗留键会被自动识别并删除,同时记录日志
2025-12-24 17:51:19 +08:00
shaw
84f19b348b
fix: 适配cc遥测端点
2025-12-21 22:29:36 +08:00
shaw
8ec8a59b07
feat: claude账号新增支持拦截预热请求
2025-12-21 22:28:22 +08:00
shaw
00d8ac4bec
Merge branch 'main' into dev
2025-12-21 21:35:16 +08:00
shaw
638d2ff189
feat: 支持claude单账户开启串行队列
2025-12-19 22:29:57 +08:00
guoyongchang
dd8a0c95c3
fix: use template literals instead of string concatenation
...
- Convert string concatenation to template literals per ESLint prefer-template rule
- Fixes ESLint errors in sessionKeyPrefix logging (lines 281, 330)
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com >
2025-12-19 15:46:38 +08:00
guoyongchang
126eee3712
feat/cron-test-support format fix.
2025-12-19 14:59:47 +08:00
guoyongchang
26bfdd6892
[feat/cron-test-support]optimize.
2025-12-19 14:03:31 +08:00
guoyongchang
cd3f51e9e2
refactor: optimize cron test support feature
...
**优化内容:**
1. **验证和安全性加强**
- 移除cron验证重复,统一使用accountTestSchedulerService.validateCronExpression()方法
- 添加model参数类型和长度验证(max 256 chars)
- 限制cronExpression长度至100字符防止DoS攻击
- 双层验证:service层和route层都进行长度检查
2. **性能优化**
- 优化_refreshAllTasks()使用Promise.all()并行加载所有平台配置(之前是顺序加载)
- 改进错误处理,平台加载失败时继续处理其他平台
3. **数据管理改进**
- 为test config添加1年TTL过期机制(之前没有过期设置)
- 保证test history已有30天TTL和5条记录限制
4. **错误响应标准化**
- 统一所有API响应格式,确保error状态都包含message字段
- 改进错误消息的可读性和上下文信息
5. **用户体验改进**
- Vue组件使用showToast()替代原生alert()
- 移除console.error()改用toast通知用户
- 成功保存时显示成功提示
6. **代码整理**
- 移除未使用的maxConcurrentTests变量及其getStatus()中的引用
- 保持代码整洁性
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com >
2025-12-19 13:39:39 +08:00
guoyongchang
09cf951cdc
[feat/cron-test-support]done.
2025-12-19 10:25:43 +08:00
Wesley Liddick
53cda0fd18
Merge pull request #806 from XiaoXice/main [skip ci]
...
fix: 全时间api-token统计因为日token记录过期导致不准的问题
2025-12-16 19:34:35 -05:00
sususu
0994eb346f
format
2025-12-16 18:32:11 +08:00
sususu
4863a37328
feat: 添加 Claude Code 遥测端点并优化日志级别
...
- 添加 /api/event_logging/batch 端点处理客户端遥测请求
- 将遥测相关请求日志改为 debug 级别,减少日志噪音
2025-12-16 18:31:07 +08:00
huajiwuyan
052e236a93
fix(scheduler): 恢复OpenAI 账号选择支持 priority + lastUsedAt
2025-12-15 23:17:44 +08:00
XiaoXice
c79ea19aa1
fix: 全时间api-token统计因为日token记录过期导致不准的问题
2025-12-15 15:14:09 +08:00
Wesley Liddick
bd7b8884ab
Merge pull request #801 from miraserver/fix/cost-calculation-and-ui-display
...
fix: correct API key cost calculation and UI display issues
2025-12-14 20:48:00 -05:00
shaw
ce13e5ddb1
fix: console账号转发使用白名单透传header
2025-12-15 09:38:51 +08:00
John Doe
baafebbf7b
fix: correct API key cost calculation and UI display issues
...
- Fix admin panel cost display for "all time" period using permanent Redis key
- Fix user statistics total cost limit to show complete history
- Fix restricted models list overflow with scrollable container
Backend changes:
- src/routes/admin/apiKeys.js: Use allTimeCost for timeRange='all' instead of scanning TTL keys
- src/routes/apiStats.js: Prioritize permanent usage:cost:total key over monthly keys
Frontend changes:
- web/admin-spa/src/components/apistats/LimitConfig.vue: Add overflow-visible and scrolling to model list
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-12-12 18:11:02 +03:00
Wesley Liddick
60f5cbe780
Merge pull request #800 from DaydreamCoding/feature/concurrency-queue
...
feat: enhance concurrency queue with health check and admin endpoints
2025-12-12 01:58:24 -05:00
DaydreamCoding
07633ddbf8
feat: enhance concurrency queue with health check and admin endpoints
...
- Add queue health check for fast-fail when overloaded (P90 > threshold)
- Implement socket identity verification with UUID token
- Add wait time statistics (P50/P90/P99) and queue stats tracking
- Add admin endpoints for queue stats and cleanup
- Add CLEAR_CONCURRENCY_QUEUES_ON_STARTUP config option
- Update documentation with troubleshooting and proxy config guide
2025-12-12 14:32:09 +08:00
kikii16
ceee3a9295
Update auth.js
2025-12-12 11:34:46 +08:00
LZY
51aa8dc381
fix:修复codex统计token问题
2025-12-10 22:56:25 +08:00
Wesley Liddick
4337af06d4
Merge pull request #791 from DaydreamCoding/feature/log-opt
...
fix: improve logging for client disconnections in relay services
2025-12-10 07:11:24 -05:00
Wesley Liddick
d226d57325
Merge pull request #790 from DaydreamCoding/patch-4 [skip ci]
...
fix(security): add authenticateAdmin middleware to concurrency routes
2025-12-10 07:11:07 -05:00
QTom
8901994644
fix: improve logging for client disconnections in relay services
...
当客户端主动断开连接时,改为使用 INFO 级别记录而不是 ERROR 级别,
因为这是正常情况而非错误。
- ccrRelayService: 区分客户端断开与实际错误
- claudeConsoleRelayService: 区分客户端断开与实际错误
- claudeRelayService: 区分客户端断开与实际错误
- droidRelayService: 区分客户端断开与实际错误
2025-12-10 14:18:44 +08:00
QTom
e3ca555df7
fix(security): add authenticateAdmin middleware to concurrency routes
...
fix(security): add authenticateAdmin middleware to concurrency routes
All concurrency management endpoints were missing authentication,
allowing unauthenticated access to view and clear concurrency data.
2025-12-10 13:59:25 +08:00
QTom
3b9c96dff8
feat(queue): 优化用户消息队列锁释放时机
...
将队列锁释放时机从"请求完成后"提前到"请求发送后",因为 Claude API
限流(RPM)基于请求发送时刻计算,无需等待响应完成。
主要变更:
- 移除锁续租机制(startLockRenewal、refreshUserMessageLock)
- 所有 relay 服务在请求发送成功后立即释放锁
- 流式请求通过 onResponseStart 回调在收到响应头时释放
- 调整默认配置:timeoutMs 60s→5s,lockTtlMs 120s→5s
- 新增 USER_MESSAGE_QUEUE_LOCK_TTL_MS 环境变量支持
2025-12-10 01:26:00 +08:00
QTom
b409adf9d8
feat: 修复 userMessageQueue 配置缺失导致的 500 错误
...
- 在 config.example.js 添加缺失的 userMessageQueue 配置段
- 在 userMessageQueueService.js 添加防御性代码,当配置未定义时使用默认值
修复 #783 合并后新用户安装报错:
Cannot read properties of undefined (reading 'enabled')
2025-12-09 18:41:13 +08:00
QTom
dc96447d72
style: 格式化文件以符合 Prettier 规范
2025-12-09 17:18:43 +08:00
QTom
f5d1c25295
feat: 添加用户消息串行队列功能,防止同账户并发请求触发限流
...
- 新增 userMessageQueueService.js 实现基于 Redis 的队列锁机制
- 在 claudeRelayService、claudeConsoleRelayService、bedrockRelayService、ccrRelayService 中集成队列锁
- 添加 Redis 原子性 Lua 脚本:acquireUserMessageLock、releaseUserMessageLock、refreshUserMessageLock
- 支持锁续租机制,防止长时间请求锁过期
- 添加可配置参数:USER_MESSAGE_QUEUE_ENABLED、USER_MESSAGE_QUEUE_DELAY_MS、USER_MESSAGE_QUEUE_TIMEOUT_MS
- 添加 Web 管理界面配置入口
- 添加 logger.performance 方法用于结构化性能日志
- 添加完整单元测试 (tests/userMessageQueue.test.js)
2025-12-09 17:04:01 +08:00
shaw
aa71c58400
fix: 修复强制会话绑定首次会话的bug
2025-12-08 21:05:21 +08:00
shaw
5a18f54abd
Merge branch 'dev'
2025-12-08 16:08:10 +08:00
shaw
c79fdc4d71
feat: 增加Claude会话强制绑定
2025-12-08 16:06:23 +08:00
shaw
659072075d
fix: 统一格式化claude参数传递
2025-12-08 14:23:13 +08:00
sususu
cf93128a96
fix: format
2025-12-08 11:01:10 +08:00
sususu
909b5ad37f
fix: 添加 Explore agent 系统提示词模板并优化日志级别
...
- 添加 exploreAgentSystemPrompt 模板用于匹配 Claude Code Explore 子代理
- 将详细的 prompt 内容从 error 日志移至 warn 级别,减少日志噪音
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2025-12-08 10:45:46 +08:00
shaw
bab7073822
fix: 修复api-keys页面窗口费率显示问题
2025-12-08 09:58:54 +08:00