yangjianbo
|
6423636177
|
Merge branch 'test' into dev
|
2026-02-12 19:23:35 +08:00 |
|
yangjianbo
|
3511376c2c
|
chore(logging): 默认使用 console 普通日志输出
- 将配置默认 log.format 从 json 调整为 console\n- 将 logger 初始化兜底默认格式调整为 console\n- 同步更新 deploy 配置示例
|
2026-02-12 19:07:16 +08:00 |
|
yangjianbo
|
b7243660c4
|
fix(deploy): 修复 Postgres 数据未持久化导致重启后无法登录
原因:postgres:18-alpine 默认 PGDATA 不在 /var/lib/postgresql/data,数据落到匿名卷,docker compose down/up 会触发 initdb 重新初始化。
修复:在 compose 中显式设置 PGDATA=/var/lib/postgresql/data,让数据落到 postgres_data 命名卷。
|
2026-02-12 17:42:18 +08:00 |
|
yangjianbo
|
fff1d54858
|
feat(log): 落地统一日志底座与系统日志运维能力
|
2026-02-12 16:27:29 +08:00 |
|
yangjianbo
|
2d6066f985
|
Merge branch 'test' into dev
|
2026-02-12 14:40:22 +08:00 |
|
yangjianbo
|
ed2eba9028
|
fix(gateway): 默认过滤OpenAI透传超时头并补充断流告警
|
2026-02-12 14:16:18 +08:00 |
|
yangjianbo
|
e2cdb6c758
|
feat: 优化build image
|
2026-02-11 18:07:50 +08:00 |
|
yangjianbo
|
d7011163b8
|
fix: 修复代码审核发现的安全和质量问题
安全修复(P0):
- 移除硬编码的 OAuth client_secret(Antigravity、Gemini CLI),
改为通过环境变量注入(ANTIGRAVITY_OAUTH_CLIENT_SECRET、
GEMINI_CLI_OAUTH_CLIENT_SECRET)
- 新增 logredact.RedactText() 对非结构化文本做敏感信息脱敏,
覆盖 GOCSPX-*/AIza* 令牌和常见 key=value 模式
- 日志中不再打印 org_uuid、account_uuid、email_address 等敏感值
安全修复(P1):
- URL 验证增强:新增 ValidateHTTPURL 统一入口,支持 allowlist 和
私网地址阻断(localhost/内网 IP)
- 代理回退安全:代理初始化失败时默认阻止直连回退,防止 IP 泄露,
可通过 security.proxy_fallback.allow_direct_on_error 显式开启
- Gemini OAuth 配置校验:client_id 与 client_secret 必须同时
设置或同时留空
其他改进:
- 新增 tools/secret_scan.py 密钥扫描工具和 Makefile secret-scan 目标
- 更新所有 docker-compose 和部署配置,传递 OAuth secret 环境变量
- google_one OAuth 类型使用固定 redirectURI,与 code_assist 对齐
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-02-09 09:58:13 +08:00 |
|
yangjianbo
|
fd43be8d0b
|
merge: 合并 main 分支到 test,解决 config 和 modelWhitelist 冲突
- config.go: 保留 Sora 配置,合入 SubscriptionCache 配置
- useModelWhitelist.ts: 同时保留 soraModels 和 antigravityModels
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-02-07 20:18:07 +08:00 |
|
yangjianbo
|
2588fa6a8f
|
fix(audit): 第二批审计修复 — P0 生产 Bug、安全加固、性能优化、缓存一致性、代码质量
基于 backend-code-audit 审计报告,修复剩余 P0/P1/P2 共 34 项问题:
P0 生产 Bug:
- 修复 time.Since(time.Now()) 计时逻辑错误 (P0-03)
- generateRandomID 改用 crypto/rand 替代固定索引 (P0-04)
- IncrementQuotaUsed 重写为 Ent 原子操作消除 TOCTOU 竞态 (P0-05)
安全加固:
- gateway/openai handler 错误响应替换为泛化消息,防止内部信息泄露 (P1-14)
- usage_log_repo dateFormat 参数改用白名单映射,防止 SQL 注入 (P1-16)
- 默认配置安全加固:sslmode=prefer、response_headers=true、mode=release (P1-18/19, P2-15)
性能优化:
- gateway handler 循环内 defer 替换为显式 releaseWait 闭包 (P1-02)
- group_repo/promo_code_repo Count 前 Clone 查询避免状态污染 (P1-03)
- usage_log_repo 四个查询添加 LIMIT 10000 防止 OOM (P1-07)
- GetBatchUsageStats 添加时间范围参数,默认最近 30 天 (P1-10)
- ip.go CIDR 预编译为包级变量 (P1-11)
- BatchUpdateCredentials 重构为先验证后更新 (P1-13)
缓存一致性:
- billing_cache 添加 jitteredTTL 防止缓存雪崩 (P2-10)
- DeductUserBalance/UpdateSubscriptionUsage 错误传播修复 (P2-12)
- UserService.UpdateBalance 成功后异步失效 billingCache (P2-13)
代码质量:
- search 截断改为按 rune 处理,支持多字节字符 (P2-01)
- TLS Handshake 改为 HandshakeContext 支持 context 取消 (P2-07)
- CORS 预检添加 Access-Control-Max-Age: 86400 (P2-16)
测试覆盖:
- 新增 user_service_test.go(UpdateBalance 缓存失效 6 个用例)
- 新增 batch_update_credentials_test.go(fail-fast + 类型验证 7 个用例)
- 新增 response_transformer_test.go、ip_test.go、usage_log_repo_unit_test.go、search_truncate_test.go
- 集成测试:IncrementQuotaUsed 并发测试、billing_cache 错误传播测试
- config_test.go 补充 server.mode/sslmode 默认值断言
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-02-07 19:46:42 +08:00 |
|
yangjianbo
|
e75d3e3584
|
fix(security): 修复密码重置链接 Host Header 注入漏洞 (P0-07)
ForgotPassword 原来从 c.Request.Host 构建重置链接基础 URL,攻击者
可伪造 Host 头将重置链接指向恶意域名窃取 token。
修复方案:
- ServerConfig 新增 frontend_url 配置项
- auth_handler 改为从配置读取前端 URL,未配置时拒绝请求
- Validate() 校验 frontend_url 必须为绝对 HTTP(S) URL
- 新增 TestValidateServerFrontendURL 单元测试
- config.example.yaml 添加配置说明
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-02-07 17:15:26 +08:00 |
|
yangjianbo
|
fc104dfb56
|
feat:增加端口
|
2026-02-07 14:57:50 +08:00 |
|
yangjianbo
|
ce764bf2d9
|
feat(gateway): 支持强制 Codex CLI 模式并伪装 UA
- Codex CLI 请求仅使用内置 instructions,不再读取 opencode 缓存/回源\n- 新增 gateway.force_codex_cli(环境变量 GATEWAY_FORCE_CODEX_CLI)\n- ForceCodexCLI=true 时转发上游强制 User-Agent=codex_cli_rs/0.0.0\n- 更新 deploy 示例配置
|
2026-02-07 09:21:15 +08:00 |
|
yangjianbo
|
028f8aaa97
|
feat: 优化.env参数
|
2026-02-06 21:01:30 +08:00 |
|
yangjianbo
|
d3f11fdbd3
|
chore(deploy): aicodex 默认 max_conns_per_host=8192
|
2026-02-06 20:50:44 +08:00 |
|
yangjianbo
|
8672b2f3ec
|
chore(gateway): 提升 max_idle_conns 并补齐 env
|
2026-02-06 20:48:48 +08:00 |
|
yangjianbo
|
de753a149e
|
chore(deploy): 补齐连接池默认与 8G 参数
|
2026-02-06 20:44:08 +08:00 |
|
yangjianbo
|
2d4bbbf49d
|
feat: 优化codex冷启动, 还有连接池数据库配置信息
|
2026-02-06 20:31:42 +08:00 |
|
yangjianbo
|
d8e405511e
|
Merge branch 'main' of https://github.com/mt21625457/aicodex2api
|
2026-02-06 06:56:23 +08:00 |
|
Lemon
|
39a0359dd5
|
feat: enhance HTTP/2 Cleartext (h2c) configuration options
|
2026-02-05 12:48:05 +08:00 |
|
Lemon
|
97a5c1ac1d
|
feat: add support for HTTP/2 Cleartext (h2c) connections
|
2026-02-04 21:40:25 +08:00 |
|
yangjianbo
|
317f26f0bf
|
feat: update caddy
|
2026-02-04 19:27:51 +08:00 |
|
yangjianbo
|
377bffe281
|
Merge branch 'main' into test
|
2026-02-03 22:48:04 +08:00 |
|
yangjianbo
|
31fe017888
|
Merge branch 'main' of https://github.com/mt21625457/aicodex2api
|
2026-02-03 21:00:11 +08:00 |
|
shaw
|
5cda979209
|
feat(deploy): 优化 Docker 部署体验,新增一键部署脚本
## 新增功能
- 新增 docker-compose.local.yml:使用本地目录存储数据,便于迁移和备份
- 新增 docker-deploy.sh:一键部署脚本,自动生成安全密钥(JWT_SECRET、TOTP_ENCRYPTION_KEY、POSTGRES_PASSWORD)
- 新增 deploy/.gitignore:忽略运行时数据目录
## 优化改进
- docker-compose.local.yml 包含 PGDATA 环境变量修复,解决 PostgreSQL 18 Alpine 数据丢失问题
- 脚本自动设置 .env 文件权限为 600,增强安全性
- 脚本显示生成的凭证,方便用户记录
## 文档更新
- 更新 README.md(英文版):新增"快速开始"章节,添加部署版本对比表
- 更新 README_CN.md(中文版):同步英文版更新
- 更新 deploy/README.md:详细说明两种部署方式和迁移方法
## 使用方式
一键部署:
```bash
curl -sSL https://raw.githubusercontent.com/Wei-Shaw/sub2api/main/deploy/docker-deploy.sh | bash
docker-compose -f docker-compose.local.yml up -d
```
轻松迁移:
```bash
tar czf sub2api-complete.tar.gz deploy/
# 传输到新服务器后直接解压启动即可
```
|
2026-02-02 16:17:07 +08:00 |
|
yangjianbo
|
99250ec527
|
fix(Sora): 加固直连安全与下载限制
补充图片输入 SSRF 防护与重定向限制\n增加媒体下载超时/大小上限配置并更新示例\n完善 recent_tasks 轮询回退策略与相关测试\n\n测试: go test ./... -tags=unit
|
2026-02-01 22:10:15 +08:00 |
|
yangjianbo
|
399dd78b2a
|
feat(Sora): 直连生成并移除sora2api依赖
实现直连 Sora 客户端、媒体落地与清理策略\n更新网关与前端配置以支持 Sora 平台\n补齐单元测试与契约测试,新增 curl 测试脚本\n\n测试: go test ./... -tags=unit
|
2026-02-01 21:37:10 +08:00 |
|
yangjianbo
|
618a614cbf
|
feat(Sora): 完成Sora网关接入与媒体能力
新增 Sora 网关路由、账号调度与同步服务\n补充媒体代理与签名 URL、模型列表动态拉取\n完善计费配置、前端支持与相关测试
|
2026-01-31 20:22:22 +08:00 |
|
iBenzene
|
f2e206700c
|
feat: add support for using TLS to connect to Redis
|
2026-01-31 03:58:01 +08:00 |
|
yangjianbo
|
a505d992ee
|
feat: 优化配置
|
2026-01-29 20:33:26 +08:00 |
|
shaw
|
1245f07a2d
|
feat(auth): 实现 TOTP 双因素认证功能
新增功能:
- 支持 Google Authenticator 等应用进行 TOTP 二次验证
- 用户可在个人设置中启用/禁用 2FA
- 登录时支持 TOTP 验证流程
- 管理后台可全局开关 TOTP 功能
安全增强:
- TOTP 密钥使用 AES-256-GCM 加密存储
- 添加 TOTP_ENCRYPTION_KEY 配置项,必须手动配置才能启用功能
- 防止服务重启导致加密密钥变更使用户无法登录
- 验证失败次数限制,防止暴力破解
配置说明:
- Docker 部署:在 .env 中设置 TOTP_ENCRYPTION_KEY
- 非 Docker 部署:在 config.yaml 中设置 totp.encryption_key
- 生成密钥命令:openssl rand -hex 32
|
2026-01-26 09:19:53 +08:00 |
|
yangjianbo
|
bece1b5201
|
perf(服务端): 启用 h2c 并保留 HTTP/1.1 回退
|
2026-01-24 20:01:03 +08:00 |
|
Wesley Liddick
|
5602d02b1b
|
Merge pull request #343 from mt21625457/main
fix(调度): 完善粘性会话清理与账号调度刷新 和 启用 OpenAI OAuth HTTP/2 并修复清理任务 lint
|
2026-01-20 16:05:53 +08:00 |
|
yangjianbo
|
5e5d4a513b
|
feat: 移动镜像脚本位置
|
2026-01-20 15:11:27 +08:00 |
|
shaw
|
c95a864975
|
docs: add TLS fingerprint tool link
|
2026-01-20 11:30:10 +08:00 |
|
Wesley Liddick
|
0f8d42c577
|
Merge pull request #327 from mt21625457/main
feat(usage): 添加清理任务与统计过滤
|
2026-01-19 09:18:00 +08:00 |
|
shaw
|
9abda1bc59
|
feat(tls): 新增 TLS 指纹模拟功能
|
2026-01-18 20:08:40 +08:00 |
|
yangjianbo
|
ef5a41057f
|
feat(usage): 添加清理任务与统计过滤
|
2026-01-18 10:52:18 +08:00 |
|
yangjianbo
|
74a3c74514
|
perf(Caddy): 添加静态资源长期缓存配置
- 为 /assets/* 设置 1 年缓存 + immutable 标记
- 包含 logo.png 和 favicon.ico
- 移除可能干扰缓存的 Pragma/Expires 头
效果:
- 浏览器缓存命中后不再发送请求
- Cloudflare CDN 可正确缓存静态资源
- 重复访问页面秒开
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-16 22:49:05 +08:00 |
|
yangjianbo
|
c9f79dee66
|
feat(安全): 实现 CSP nonce 支持解决内联脚本安全问题
- 添加 GenerateNonce() 生成加密安全的随机 nonce
- SecurityHeaders 中间件为每个请求生成唯一 nonce
- CSP 策略支持 __CSP_NONCE__ 占位符动态替换
- embed_on.go 注入的内联脚本添加 nonce 属性
- 添加 Cloudflare Insights 域名到 CSP 允许列表
- 添加完整单元测试,覆盖率达到 89.8%
解决的问题:
- 内联脚本违反 CSP script-src 指令
- Cloudflare Insights beacon.min.js 加载被阻止
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-01-16 17:05:49 +08:00 |
|
yangjianbo
|
a458e684bc
|
fix(认证): OAuth 401 直接标记错误状态
- OAuth 401 清理缓存并设置错误状态
- 移除 oauth_401_cooldown_minutes 配置及示例
- 更新 401 相关单测
破坏性变更: OAuth 401 不再临时不可调度,需手动恢复
|
2026-01-15 15:06:34 +08:00 |
|
yangjianbo
|
daf10907e4
|
fix(认证): 修复 OAuth token 缓存失效与 401 处理
新增 token 缓存失效接口并在刷新后清理
401 限流支持自定义规则与可配置冷却时间
补齐缓存失效与 401 处理测试
测试: make test
|
2026-01-14 15:55:44 +08:00 |
|
yangjianbo
|
202ec21bab
|
fix(config): 提升粘性会话默认等待时长
- 默认值调整为 120s
- 同步示例配置与环境变量
|
2026-01-12 14:26:31 +08:00 |
|
yangjianbo
|
3141aa5144
|
feat(scheduler): 引入调度快照缓存与 outbox 回放
- 调度热路径优先读 Redis 快照,保留分组排序语义
- outbox 回放 + 全量重建纠偏,失败重试不推进水位
- 自动 Atlas 基线对齐并同步调度配置示例
|
2026-01-12 14:19:06 +08:00 |
|
IanShaw027
|
3dfb62e996
|
merge: 合并main分支最新改动
解决冲突:
- backend/internal/config/config.go: 合并Ops和Dashboard配置
- backend/internal/server/api_contract_test.go: 合并handler初始化
- backend/internal/service/openai_gateway_service.go: 保留Ops错误追踪逻辑
- backend/internal/service/wire.go: 合并Ops和APIKeyAuth provider
主要合并内容:
- Dashboard缓存和预聚合功能
- API Key认证缓存优化
- Codex转换支持
- 使用日志分区表
|
2026-01-11 23:15:01 +08:00 |
|
IanShaw027
|
c1a3dd41dd
|
feat(ops): 添加运维监控配置开关
- 在 .env.example 和 config.example.yaml 中添加 ops.enabled 配置项
- 默认值为 true,保持现有行为
- 当设置为 false 时,左侧栏隐藏运维监控菜单并禁用所有运维监控功能
- 修改后端 GetSettings API,让 ops_monitoring_enabled 受 config.ops.enabled 控制
- 数据清理和预聚合任务默认保持开启状态(通过运维监控设置对话框配置)
|
2026-01-11 20:10:08 +08:00 |
|
yangjianbo
|
6271a33d08
|
fix(仪表盘): 兼容禁用聚合与回填限制
|
2026-01-11 18:20:15 +08:00 |
|
yangjianbo
|
1a869547d7
|
feat(仪表盘): 引入预聚合统计与聚合作业
|
2026-01-11 16:01:35 +08:00 |
|
IanShaw027
|
e5857161ff
|
feat(ops): 增强错误详情弹窗与API支持
**前端改动**:
1. OpsErrorDetailModal.vue:
- 新增上游错误详情展示功能
- 支持查看上游错误的请求头、响应体等调试信息
- 改进错误信息格式化与可读性
2. ops.ts API:
- 新增getUpstreamErrors接口调用上游错误查询API
**后端配置**:
- config.go/config.yaml/deploy/config.example.yaml:
- 更新配置支持上游错误事件记录开关
- 添加相关配置项文档说明
|
2026-01-11 15:31:48 +08:00 |
|
yangjianbo
|
c2c865b0cb
|
perf(仪表盘): 增强统计缓存与隔离配置
新增仪表盘缓存开关与 TTL 配置,支持 Redis key 前缀隔离,并补充单测与校验。
测试: make test-backend
|
2026-01-11 10:07:03 +08:00 |
|