shaw
3bc239e85c
Merge branch 'main' into dev
2025-08-30 19:55:33 +08:00
Feng Yue
70c8cb5aff
add debug log for headers and body of Azure OpenAI requests
2025-08-30 19:25:06 +08:00
Feng Yue
92f4fbcef3
fix azure endpoint and api version issue
2025-08-30 18:55:24 +08:00
Feng Yue
2cf2574ebe
add logs to fix azure request issue
2025-08-30 18:46:46 +08:00
Feng Yue
c638c8b82c
Merge remote-tracking branch 'f3n9/main' into um-5
2025-08-30 15:39:33 +08:00
Wesley Liddick
9e8e74ce6b
Merge pull request #292 from iRubbish/dev
...
feat: 新增AD域控用户认证系统
2025-08-28 08:43:21 +08:00
Hg
fcc8387c24
feat: 增加Bark作为webhook渠道
2025-08-26 17:40:02 +08:00
iRubbish
8a5d4b5d8f
feat: 完善AD域控用户系统,增加配置说明
...
- 完善用户API Key创建流程,移除名称编辑权限
- 清理硬编码敏感信息,改用环境变量配置
- 在README.md和.env.example中添加AD域控配置说明
- 修复ESLint no-shadow错误
- 删除测试文件test-fixed-auto-link.js
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-26 15:55:13 +08:00
iRubbish
82f545c3b0
保存当前API Key管理功能的修改
...
- 统一用户创建和admin创建API Key的逻辑
- 修复admin更新用户创建的API Key功能
- 用户创建API Key名称改为displayName
- 默认无限制配置
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-26 13:42:02 +08:00
Wesley Liddick
222f4e44fe
Merge pull request #288 from sczheng189/feat/multi-group-scheduling
...
feat: 实现账户多分组调度功能
2025-08-26 08:58:33 +08:00
sczheng189
e69ab2161d
feat: 实现账户多分组调度功能
...
- 添加账户分组管理功能,支持创建、编辑、删除分组
- 实现基于分组的账户调度逻辑
- 添加分组权重和优先级支持
- 提供测试脚本验证多分组调度功能
- 修复代码格式化问题(统一使用LF换行符)
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-25 20:11:18 +08:00
Wesley Liddick
6bcd7ed1fc
Merge pull request #286 from sczheng189/feat/5xx-error-circuit-breaker
...
feat: 扩展熔断机制支持所有5xx错误码
2025-08-25 19:43:08 +08:00
sczheng189
5366dc70e1
fix: 修复重置账号状态后仍被认为不可用的bug
...
问题描述:
- 重置账号状态时虽然正确设置了 schedulable: 'true'
- 但在账号选择逻辑中缺少对 schedulable !== 'false' 的检查
- 导致重置后的账号仍被认为不可用
修复内容:
- selectAvailableAccount: 在 activeAccounts 过滤中添加 schedulable 检查
- selectAccountForApiKey: 在绑定账户和 sharedAccounts 过滤中添加 schedulable 检查
- 确保重置状态后的账号能正确被识别为可用
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-25 19:18:51 +08:00
sczheng189
f4f88091c1
feat: 扩展熔断机制支持所有5xx错误码
...
- 扩展错误检测从单一500错误到所有5xx错误码(500-599)
- 新增temp_error状态,连续3次5xx错误触发临时熔断
- 支持流式和非流式请求的统一5xx错误处理
- 添加定时清理机制,60分钟后自动恢复temp_error状态
- 完善错误计数和清理逻辑,提高系统可靠性
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-25 19:14:14 +08:00
iRubbish
7624c383e8
feat: 完整实现AD域控用户认证系统
...
主要功能:
- 新增LDAP服务连接AD域控服务器
- 实现多格式AD用户认证(sAMAccountName, UPN, 域\用户名, DN)
- 支持中文显示名和拼音用户名搜索
- 添加用户账户状态检查(禁用账户检测)
- 实现JWT token认证和用户会话管理
新增文件:
- src/services/ldapService.js - LDAP核心服务
- src/routes/ldapRoutes.js - AD认证API路由
- src/services/userMappingService.js - 用户映射服务
- web/admin-spa/src/views/UserDashboardView.vue - 用户控制台
- web/admin-spa/src/components/user/ - 用户组件目录
修改功能:
- ApiStatsView.vue 增加用户登录按钮和模态框
- 路由系统增加用户专用页面
- 安装ldapjs和jsonwebtoken依赖
技术特性:
- 多种认证格式自动尝试
- LDAP referral错误处理
- 详细认证日志和错误码记录
- 前后端完整用户认证流程
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-25 18:03:55 +08:00
Feng Yue
d5f5e0f4dd
Merge branch 'main' into um-5
2025-08-25 17:19:24 +08:00
shaw
b426a759a8
feat: 支持后台配置webhook
2025-08-23 20:20:32 +08:00
shaw
74bcb99142
feat: 新增支持Azure OpenAI账户
2025-08-23 10:30:29 +08:00
shaw
102fc54e8e
fix: 修复gemini转发代理ip未使用的问题
2025-08-21 10:55:05 +08:00
shaw
cb29b3f7e4
fix: 代理ip使用重构为统一方法
2025-08-20 23:21:32 +08:00
shaw
a45c832278
feat: 统一代理配置管理,支持IPv4/IPv6协议族选择
...
- 新增统一代理工具 ProxyHelper,支持 SOCKS5/HTTP/HTTPS 代理
- 添加 IPv4/IPv6 协议族配置选项,默认使用 IPv4 确保兼容性
- 移除 OpenAI 路由中硬编码的 family: 4 限制
- 统一 8 个服务文件中的代理创建逻辑,避免重复维护
- 支持 OAuth 和 token 交换过程中的代理使用
- 新增配置项:PROXY_USE_IPV4(默认 true)
- 向后兼容:现有配置无需手动更新
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-20 22:36:34 +08:00
mouyong
5af8913954
refactor(backend): 统一账户平台标识字段
...
WHAT: 统一 Claude 账户的平台标识,从 claude-oauth 改为 claude
WHY: 简化平台标识命名规范,提高前后端数据一致性,为多平台支持奠定基础
HOW: 在账户创建和查询接口中添加 platform 字段支持;更新 claudeAccountService 默认平台标识;保持向后兼容性,旧数据自动使用默认值
2025-08-20 21:40:24 +08:00
Feng Yue
77338276db
Merge remote-tracking branch 'f3n9/main' into user-management-new
2025-08-18 15:32:17 +08:00
shaw
65ba0ffb8f
feat: 优化 Gemini 项目ID处理逻辑
...
- 统一使用账户配置的项目ID,忽略客户端请求中的project参数
- 增强日志记录,更清晰地追踪项目ID的使用情况
- 移除无用的 geminiAuthInterceptor 中间件
- 移除调试用的 console.log
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-18 09:33:15 +08:00
shaw
3d1cd21bc4
fix: 修复 ESLint 错误和代码格式问题
...
- 修复 cacheMonitor.js 中未使用的变量 'name'
- 移除未使用的变量以通过 ESLint 检查
- 确保 npm run dev 能正常运行
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-17 16:54:08 +08:00
shaw
3bcdb511fe
feat: 实现多服务账户缓存优化系统
...
- 添加通用LRU缓存工具类,支持过期时间和内存限制
- 实现缓存监控系统,提供统计和健康检查接口
- 为所有账户服务(Claude、Gemini、OpenAI、Bedrock、Claude Console)添加缓存层
- 优化账户选择性能,减少Redis查询频率
- 添加缓存统计监控端点 /admin/cache/stats
性能提升:
- 账户列表查询从O(n)优化到O(1)
- 减少90%以上的Redis查询
- 响应时间降低50ms以上
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-17 15:38:49 +08:00
shaw
77f80ef1f4
fix: claude token统计问题
2025-08-17 00:41:16 +08:00
shaw
4643e471ee
fix: 修复claude转发usage统计问题
2025-08-17 00:03:17 +08:00
shaw
043e3768ab
fix: 修复每次请求都要重新生成秘钥的问题
2025-08-16 23:49:19 +08:00
shaw
681cb8cd82
feat: 优化 Claude 模型缓存费用计算,支持 5 分钟和 1 小时两种缓存类型
...
- 在 pricingService 中硬编码 1 小时缓存价格(Opus: $30/MTok, Sonnet: $6/MTok, Haiku: $1.6/MTok)
- 更新 usage 捕获逻辑以分别记录 ephemeral_5m 和 ephemeral_1h 缓存 tokens
- 改进费用计算逻辑,正确计算两种缓存类型的费用
- 新增 recordUsageWithDetails 方法支持详细的缓存数据
- 保持向后兼容性,支持旧的数据格式
- 删除测试脚本 test-openai-refresh.js
- 修复 OpenAI token 刷新逻辑
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-16 22:31:20 +08:00
Feng Yue
7a0acbdfdc
security: fix LDAP injection vulnerability in username parameter
...
- Add strict username validation to prevent LDAP injection attacks
- Only allow alphanumeric characters, underscores, and hyphens in usernames
- Implement length limits and format validation for usernames
- Replace direct string interpolation with validated input in LDAP filters
- Update all logging to use sanitized username consistently
- Fix ESLint warnings for code style compliance
This prevents injection attacks like: *)(|(uid=admin that could bypass
authentication or allow user enumeration through malicious LDAP filters.
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-15 18:57:42 +08:00
shaw
812e98355f
feat: 实现 OpenAI token 自动刷新功能并优化账户管理界面
...
主要更改:
1. OpenAI Token 自动刷新
- 实现 refreshAccessToken 函数,支持 OAuth 2.0 refresh_token grant type
- 使用 Codex CLI 官方 CLIENT_ID (app_EMoamEEZ73f0CkXaXp7hrann)
- 支持 SOCKS5 和 HTTP/HTTPS 代理
- 自动更新 access token、id token 和 refresh token
2. 账户管理界面优化
- 移除手动刷新 token 按钮(桌面端和移动端)
- 保留后端自动刷新机制
- 优化代码结构,删除不再需要的函数和变量
3. 测试和文档
- 添加 test-openai-refresh.js 测试脚本
- 创建详细的实现文档
技术细节:
- Token 端点: https://auth.openai.com/oauth/token
- 默认有效期: 1小时
- 加密存储: AES-256-CBC
所有平台现在都支持自动 token 刷新:
✅ Claude - OAuth 自动刷新
✅ Gemini - Google OAuth2 自动刷新
✅ OpenAI - OAuth 自动刷新(新实现)
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-15 16:56:44 +08:00
Wesley Liddick
925da6fb22
Merge pull request #249 from iRubbish/feat/webhook-manual-disable-notification
...
feat: 增强 webhook 通知功能,支持手动禁用账号通知
2025-08-14 21:47:01 +08:00
iRubbish
c9b0c3eb82
feat: 增强 webhook 通知功能,支持手动禁用账号通知
...
- 添加手动禁用账号时的 webhook 通知功能
- 支持所有账号类型:Claude OAuth、Claude Console、Gemini
- 新增错误代码:MANUALLY_DISABLED 系列
- 更新 README.md 文档,添加完整的 webhook 配置说明
- 包含企业微信配置示例和测试方法
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-14 18:28:48 +08:00
KevinLiao
b0622bdcbd
Merge branch 'main' of https://github.com/Wei-Shaw/claude-relay-service
2025-08-14 16:44:20 +08:00
KevinLiao
0e5f4e03c1
feat: 新增Claude账号订阅类型设置
...
1. OAuth可自动判断订阅类型,Setup Token请自行选择。无论那种类型都可以自己改
2. 优化调度,Pro账号不再接受opus模型请求的调度
2025-08-14 16:43:58 +08:00
Feng Yue
94eed70cf2
fix: disable user API keys when user account is disabled
...
Security enhancement to prevent disabled users from using API keys:
- Auto-disable all API keys when user is disabled/deleted
- Add user status validation during API key authentication
- Prevent API usage even if key is active but user is disabled
- Add comprehensive logging for security audit trail
This ensures disabled users cannot bypass restrictions through
existing API keys and maintains system security integrity.
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-14 16:25:42 +08:00
Feng Yue
c80446ae98
fix: include deletion metadata in user API keys response
...
- Add isDeleted, deletedAt, deletedBy, deletedByType fields to getUserApiKeys service method
- Include deletion fields in user routes API keys response
- Add debug logging to dashboard component to troubleshoot deleted keys count
- Ensure frontend can properly identify and count deleted API keys
This fixes the issue where deleted API keys count was always showing 0
instead of the actual number of deleted keys.
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-14 16:02:11 +08:00
Feng Yue
4509f303e6
feat: enhance user API keys view and fix admin cost display
...
- Add deleted API keys display to user's My API Keys view
- Show deleted status with gray indicator and "Deleted" badge
- Display deletion date and hide delete button for deleted keys
- Fix cost calculation in admin deleted API keys tab
- Add getCostStats call to properly populate cost data
- Support includeDeleted parameter in user API keys endpoint
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-14 15:25:22 +08:00
Wesley Liddick
1144b9b5ff
Merge pull request #246 from iRubbish/feat/webhook-account-notification
...
feat: 添加账号禁用异常状态 Webhook 通知功能 (已格式化)
2025-08-14 14:31:14 +08:00
iRubbish
2b77fdc06c
fix: 修复 ESLint 代码质量问题
...
- 修复正则表达式中不必要的转义字符
- 使用对象解构优化代码风格
- 修复未使用变量的命名规范
- 确保所有修改文件通过 ESLint 检查
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-14 14:14:01 +08:00
Feng Yue
aff9966ed1
feat: management of deleted keys
2025-08-14 12:42:39 +08:00
Feng Yue
9efe429912
fix: user stats in admin panel
2025-08-14 11:38:51 +08:00
Feng Yue
8ea150a975
feat: enhance user API key management and implement soft delete
...
- Redirect users to API Keys tab after login instead of overview
- Remove Token Limit and Daily Cost Limit from user API key details modal
- Implement soft delete for API keys to preserve usage statistics
- Add admin endpoint to view deleted API keys with metadata
- Track deletion metadata (deletedBy, deletedAt, deletedByType)
- Ensure deleted API keys cannot be restored
- Include deleted key stats in user totals while excluding from active count
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-14 11:38:46 +08:00
Feng Yue
c413fddec0
fix: user stats again x4
2025-08-14 11:38:41 +08:00
Feng Yue
1ba55401f9
fix: user stats again again again
2025-08-14 11:38:36 +08:00
Feng Yue
983cc520ae
fix: user stats again again
2025-08-14 11:38:32 +08:00
Feng Yue
02a801c290
fix: user stats again
2025-08-14 11:38:27 +08:00
Feng Yue
2756671117
fix: user stats
2025-08-14 11:38:23 +08:00
Feng Yue
bb60df8b41
chore: redirect back to login page for deactivated users
2025-08-14 11:38:08 +08:00