Commit graph

22 commits

Author SHA1 Message Date
Wenaixi
bc018cf16f fix: 修复代码审查中发现的关键问题
1. 修复方法名错误
   - 将 performScheduledHealthChecks() 改为 performHealthChecks()
   - 修复启动时健康检查调用错误

2. 改进路径遍历防护
   - 仅在 Windows 平台执行小写转换
   - 避免 Linux 平台路径大小写误判

3. 增强 XSS 防护
   - 扩展危险协议检测(data/javascript/vbscript)
   - 使用更安全的 HTML 标签移除方式
   - 添加 HTML 实体编码攻击防护

4. 为文件锁添加超时机制
   - 防止操作永久挂起导致锁链阻塞
   - 默认超时时间 30 秒
2026-04-03 02:56:34 +08:00
Wenaixi
1018750388 fix: 深度review后续修复——安全强化、i18n补全、代码清理
安全修复:
- PBKDF2迭代次数从100k提升至310k(OWASP 2023 SHA-512标准)
- 密码最小长度从8位提升至12位
- sanitizeProviderData正则加强:data:协议拒绝而非部分移除,
  on\w+事件处理器更严格,javascript:加单词边界防止误匹配
- withFileLock错误处理改为重新抛出,不再静默吞错误
- 后端interval上限校验(MAX_INTERVAL_MS)确保配置一致性

功能修复:
- 重命名performHealthChecks/performScheduledHealthChecks方法,
  明确区分初始化检查和定时检查的职责
- generateUUID回退方案兼容Node.js <14.17.0
- 凭据无expiry字段时强制刷新(安全措施)

代码清理:
- 移除未使用的RETRY.DEFAULT_RETRIES常量
- 添加定时健康检查完整英文i18n翻译
2026-04-03 02:56:34 +08:00
Wenaixi
740f930f34 fix: 深度代码审查修复——空队列泄漏、XSS防护、docker代理清理
- fix(provider-pool): 修复 ownsGlobalSlot=false 时空队列未清理的内存泄漏
- fix(provider-api): 新增 sanitizeProviderData/ProviderPools,对 customName 等用户输入字段做 HTML 转义,防止 XSS
- fix(docker): 删除 docker-compose.yml 中的代理硬编码配置
- fix(api-server): 重构定时健康检查 timer 管理,支持热更新 enabled 状态(stopHealthCheckTimer + 状态变化追踪)
- fix(constants): 提取 HEALTH_CHECK/PASSWORD/NETWORK/RETRY 常量到 constants.js
- style(api-server): 移除日志中密码长度记录,防止敏感元信息泄露
2026-04-03 02:56:34 +08:00
Wenaixi
9d4864dfed fix: 修复代码审查发现的5个安全与正确性问题
- pbkdf2Sync 改为异步避免阻塞事件循环 (auth.js, config-api.js)
- 路径遍历检查改用 path.resolve 验证绝对路径在 cwd 内 (config-api.js)
- _activeInterval 移出配置对象避免序列化到 JSON (config-api.js, api-server.js)
- 删除 performScheduledHealthChecks 中冗余的 isDisabled 二次检查 (provider-pool-manager.js)
2026-04-03 02:56:33 +08:00
Wenaixi
a97b05dd2d fix: 修复代码审查发现的10个安全与正确性问题
- fix: provider-pool-manager: 移除 if(true) 占位符,改为读取凭据文件真实过期时间
- fix: provider-pool-manager: Math.min 展开大数组改为 reduce,防止栈溢出
- fix: provider-pool-manager: forceRefreshToken 调用前检查方法是否实现,不存在则 fallback
- fix: provider-api: handleAddProvider 默认路径统一为 configs/provider_pools.json
- fix: config-api: handleGetConfig 改为白名单字段过滤,REQUIRED_API_KEY 脱敏返回
- fix: api-server: 启动日志中 API Key 遮码处理
- fix: utils: generateUUID 改用 crypto.randomUUID() 替代 Math.random()
- fix: config-manager: renderProviderTags innerHTML 加 escHtml 防 XSS 注入
- fix: config-manager: PROVIDER_POOLS_FILE_PATH 未定义时加 || '' 兜底
- fix: section-config.css: white 改为 var(--bg-primary, white) 支持暗黑模式
- chore: .gitignore 添加 AGENTS.md
- chore: docker-compose.yml 添加代理环境变量
2026-04-03 02:56:33 +08:00
Wenaixi
801917b478 fix: 修复审查发现的3个问题
1. api-server.js: 更新过时的 performHealthChecks(true) 调用
   - 方法签名改了,不再接受 isInit 参数
   - 改为 performHealthChecks()

2. i18n.js: 更新描述以匹配实际行为
   - '留空则检查所有供应商' -> '留空则不进行任何检查'

3. provider-pool-manager.js & provider-api.js: 移除死代码
   - _checkProviderHealth 从不返回 null
   - 移除对 result === null 的检查
2026-03-31 22:46:30 +08:00
Wenaixi
714aee54bd docs: 添加设计决策注释说明有意为之的行为变更
- performHealthChecks: 如果没有选择任何 provider types 则不进行检查
- _checkProviderHealth: 不检查 per-provider checkHealth 标志,统一由 providerTypes 控制
- interval 验证: 后端不设最大值,允许通过 API 设置超长间隔
2026-03-31 22:37:27 +08:00
Wenaixi
9f45e77448 fix: 修复健康检查的两个关键bug
1. 修复双重计数usage的问题:
   - 移除 _checkProviderHealth 中的 markProviderHealthy 调用
   - 使用量计数现在只由调用方处理

2. 修复热重载timer时的竞态条件:
   - reload时重置 isHealthCheckRunning 标志
   - 避免reload期间运行时导致新timer被跳过
2026-03-31 11:54:27 +08:00
Wenaixi
e764075cd9 fix: 修复审查发现的两个问题
1. 移除 api-server.js 中重复的启动健康检查代码
2. 恢复 ClaudeConverter 和 OpenAIConverter 中对 googleSearch、url_context、googleMaps 扩展工具的支持
2026-03-31 01:23:22 +08:00
Wenaixi
9172401a50 fix: 简化健康检查逻辑,支持热更新interval,修复provider-tag点击问题
- 移除checkHealth per-instance flag,简化逻辑为只依赖providerTypes勾选
- performHealthChecks启动检查也遵循providerTypes过滤
- 优化健康检查日志:显示耗时、通过/失败计数
- 支持修改interval后热更新,无需重启(globalThis.reloadHealthCheckTimer)
- 移除openai-iflow选项(未注册的provider)
- 修复config-manager.js中scheduledHealthCheckProviders点击不生效问题
- providerTypes配置修改后下次检查自动生效
2026-03-31 01:14:44 +08:00
Wenaixi
21c92ff214 fix: 修复定时健康检查两个bug
1. startupRun配置现在会在启动时立即运行健康检查
2. 修复快捷按钮重复绑定事件监听器的问题

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-30 23:20:07 +08:00
Wenaixi
b6206a5d5c feat: 添加定时健康检查功能
实现对供应商节点进行周期性健康测试,失败1次立即标记unhealthy

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-03-30 01:14:49 +08:00
hex2077
81dd6a3f86 feat(tls): 添加 Go uTLS sidecar 以绕过 Cloudflare TLS 指纹检测
- 新增 Go 语言编写的 TLS sidecar 服务,使用 uTLS 库模拟 Chrome 指纹
- 在 Dockerfile 中添加多阶段构建以编译 sidecar 二进制文件
- 扩展配置系统,支持启用/禁用 sidecar 及自定义端口
- 修改 Grok 提供商,使其请求可通过 sidecar 转发
- 在前端界面添加 TLS sidecar 配置选项和国际化支持
- 服务启动时自动启动 sidecar,关闭时优雅停止
2026-02-28 00:02:12 +08:00
hex2077
6ee7e78c90 feat: 增强模型支持和修复流处理问题
- 添加新的Qwen模型(coder-model, vision-model)到提供者列表
- 修复OpenAI Responses流结束事件处理,避免下游类型校验错误
- 更新Qwen API端点地址和版本号
- 重构Codex转换器,分离OpenAI和OpenAI Responses的转换逻辑
- 优化工具调用处理,支持嵌套function结构
- 移除健康检查功能,简化API管理初始化
- 修复消息角色转换(developer→assistant)和类型标记
2026-02-13 20:47:47 +08:00
Local User
46fc601f6c feat: add health check monitoring and alerting system
- Add health status change logging with detailed information
- Add optional webhook notifications for provider health changes
  - Configurable via HEALTH_ALERT_WEBHOOK_URL environment variable
  - Sends notifications when provider becomes unhealthy or recovers
- Broadcast health status events for real-time UI updates
- Integrate periodic health checks in heartbeat function
- Track provider stats (usage count, error count) in health logs

This improves observability by allowing operators to:
- Monitor provider health status changes in real-time
- Receive alerts via webhook when issues occur
- View detailed health statistics for troubleshooting
2026-02-13 08:37:12 +08:00
hex2077
27acc72dfd feat: 增加登录过期配置并优化错误处理
- 新增 LOGIN_EXPIRY 配置项,支持自定义管理后台登录 Token 有效期
- 优化 provider 错误计数逻辑,当 MAX_ERROR_COUNT 为 0 时禁用自动标记不健康
- 修复工具消息转换中对象内容未序列化的问题
- 增强网络错误处理,可重试的网络错误不再导致进程退出
- 过滤 Claude Kiro provider 中描述为空的工具,避免 API 调用失败
2026-02-09 19:50:35 +08:00
hex2077
245583b96a feat(logging): 添加日志系统配置和下载功能
- 新增日志系统配置选项,支持日志级别、输出模式、文件大小等设置
- 添加当日日志文件下载功能,可通过Web界面直接下载
- 将console.log/error替换为结构化logger,提升日志可管理性
- 在日志页面添加自动滚动到底部功能
- 更新配置示例文件,包含完整的日志配置参数
2026-01-25 17:24:39 +08:00
hex2077
fe131b33d2 fix(provider): 优化节点刷新逻辑
- 修改节点刷新逻辑,当健康节点少于5个时立即刷新
- 移除刷新时的随机延迟以避免并发问题
- 更新Claude Kiro版本号至0.8.140
- 在初始化API服务时添加isReady参数控制预热逻辑
- 在modal.js中排除更多字段
2026-01-20 00:10:04 +08:00
hex2077
f8faee93fc Revert "add letta"
This reverts commit 3faa599b95523160232df3d5483840b56d5a4702.
2026-01-19 21:55:44 +08:00
hex2077
b7f2142411 add letta 2026-01-19 21:55:35 +08:00
hex2077
e335a13592 fix: 修复多个功能问题并优化服务器配置
- 将Claude提供商的AXIOS超时恢复为2分钟
- 扩展CORS头以支持更多方法和头部,并添加预检缓存
- 禁用自动链接提供商配置
- 增强服务器配置,设置超时和最大连接数
- 为更新检查添加代理支持,使用undici进行代理请求
2026-01-13 13:29:03 +08:00
hex2077
2d317e0333 refactor(项目结构): 重构项目目录结构并优化代码组织
将常用工具函数移动到utils目录
重构提供商策略模式实现
新增docker-compose构建配置文件
优化UI配置选择器的样式和交互
重构代理工具和API管理模块
更新脚本路径和依赖引用
2026-01-10 18:19:06 +08:00
Renamed from src/api-server.js (Browse further)