Logan.Li
|
83a3630404
|
feat(settings): 运行配置中心——.env 业务参数统一到后台页面维护
CI / backend (push) Canceled after 0s
- 新增 app_configs 表与 appconfig 注册表:读取优先级 页面 → .env → 默认,删除即回退
- 页面可配 7 项:支付回调基址、成功回跳、Webhook 密钥(加密入库)、未验签放行开关、CORS、可信代理、GeoIP 路径
- 引导密钥(JWT_SECRET / OPSLIC_MASTER_KEY / OFFLINE_LICENSE_SEED)与部署参数只读展示掩码+指纹,永不入库
- 校验:URL 格式、密钥长度≥16、CIDR、release 下禁止开启未验签回调;变更写审计日志
- 消费点改造:支付回调地址、Waffo 回跳、webhook 验签、可信代理、CORS、GeoIP 统一走配置中心
- 前端新增「审计与设置 → 运行配置」页(分组表格 + 来源标记 + 编辑弹窗 + 恢复默认)
- .env.example 补注释:哪些必须留在 .env、哪些已收敛到页面
|
2026-11-01 06:17:58 +08:00 |
|
Logan.Li
|
b0b611eee2
|
refactor(payment): 支付配置接入统一 secretbox 信封加密
CI / backend (push) Canceled after 0s
- 丢弃支付模块自带的 PAYMENT_SECRET_KEY/JWT_SECRET 派生双密钥体系,
EncryptSecret/DecryptSecret 直接走 internal/secretbox(OPSLIC_MASTER_KEY)
- 全站只有一把主密钥:Waffo 私钥、节点 shared_key、支付 APIv3 密钥/应用私钥同格式同前缀
- 测试改由 TestMain 装载 secretbox 主密钥,密文前缀统一引用 secretbox.Prefix
- .env.example 移除 PAYMENT_SECRET_KEY,改为说明复用 OPSLIC_MASTER_KEY
|
2026-11-01 06:03:24 +08:00 |
|
Logan.Li
|
7d53c6ed3c
|
feat(payment): 后台「支付配置」支持微信支付与支付宝凭据管理
后端:
- 新增 payment_configs 单行配置表;APIv3 密钥、应用私钥/公钥以 AES-256-GCM 密文入库(enc:v1 前缀,主密钥取 PAYMENT_SECRET_KEY,缺省回退 JWT_SECRET 派生)
- 证书/私钥落 PAYMENT_CERT_DIR(默认 /data/payment-certs),目录 0700 / 文件 0600,不经任何静态路由暴露
- 接口:GET/PUT /api/admin/payment/config、POST /upload(PEM 校验 + 微信证书序列号自动回填)、POST /test(真打官方接口:微信 /v3/certificates 签名校验、支付宝 alipay.trade.query 签名校验)、POST /wechat/platform-certs(APIv3 密钥解密平台证书并落盘)
- 未配置凭据时测试返回 skipped 而不是 500;敏感字段在返回体里一律脱敏
前端:
- /payments 改为「通用设置 + 微信支付 / 支付宝 / Waffo 海外支付」页签(原 Waffo 页整页迁到 views/payments/Waffo.vue)
- 微信:mchid、AppID、APIv3 密钥(密码框 + 掩码回显 + 更换/清除)、证书序列号、支付方式多选、三项证书上传、自动获取平台证书
- 支付宝:app_id、应用私钥(粘贴/上传)、支付宝公钥、网关、RSA2、回调地址
- 菜单归入「审计与设置 → 支付配置」
|
2026-11-01 05:59:51 +08:00 |
|
Logan.Li
|
1c50d565eb
|
fix(security): webhook fail-closed、机密字段信封加密、限流信任代理修正
CI / backend (push) Canceled after 0s
三项 P0 安全修复:
1. Webhook 验签 fail-closed
- WaffoWebhook 未配置验签材料时从「告警放行」改为 503 拒绝,
封死伪造 order.completed 结算订单的路径
- 通用 PaymentWebhook 从「仅 release 拒绝」收紧为默认拒绝,
仅显式 ALLOW_UNVERIFIED_WEBHOOK=1(本地调试)放行
2. 机密字段信封加密(新增 internal/secretbox)
- AES-256-GCM,主密钥 OPSLIC_MASTER_KEY(64 位 hex),密文带
enc:v1: 前缀;Encrypt 幂等、历史明文原样放行
- PaymentGatewayConfig.SecretKey/WebhookSecret 与 PeerNode.
SharedKey 挂 GORM 钩子透明加解密,业务代码零改动;SharedKey
列宽 128→512(密文更长)
- 启动 fail-fast 校验主密钥;MigratePlaintext 幂等迁移存量明文;
节点同步只含业务表,机密表为节点本地,互不影响
- docker-compose/.env.example 补 OPSLIC_MASTER_KEY 与说明
3. 限流信任代理修正
- 默认 SetTrustedProxies(nil) 不信任任何 X-Forwarded-For,
封死伪造 XFF 轮换 IP 绕过按 IP 限流;反代节点用
TRUSTED_PROXIES 指定内网 CIDR,非法配置拒绝启动
验证:go build/vet/test 全绿(含 secretbox 6 条单测);
读取路径(Waffo 私钥/webhook 密钥/互联密钥)确认全走 GORM 钩子。
部署注意:上线须配置 OPSLIC_MASTER_KEY(双节点一致)与
WAFFO_WEBHOOK_PUBLIC_KEY(未配则回调 503,属预期);香港反代
节点配 TRUSTED_PROXIES。
|
2026-11-01 02:03:26 +08:00 |
|
Logan.Li
|
b76111dfc3
|
feat: 客户端授权防护——响应签名/激活令牌/宽限期/换座限制/在线清扫/疑似共享标记
|
2026-09-14 21:08:39 +08:00 |
|
 Logan.LiandCursor
|
bac72e6945
|
fix: 按评审报告止血支付漏洞并加固授权链路
废除浏览器回跳自助结算,通用 webhook 强制密钥鉴权,Waffo 支持验签与未知事件忽略;重构订单状态机/激活占座/SQLite WAL,并补备份、readyz、限流与前端导出/登录页安全修复。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-08-12 21:26:58 +08:00 |
|
 Logan.LiandCursor
|
8cc2c83f9d
|
feat: 通用授权后台、离线证、Waffo 支付页与仪表盘加强
支持多产品计划展示、LICOFF 离线签发、支付独立配置与调试,以及分析看板;同步更新 README 与集成文档。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-08-12 20:25:46 +08:00 |
|
 Logan.LiandCursor
|
0966375076
|
feat: 支付成功页与友好 webhook 落地页
浏览器回跳展示许可证并深链回 App;补齐包年订单因未收到 Waffo POST 未发码的体验。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-08-12 16:39:13 +08:00 |
|
 Logan.LiandCursor
|
554998f4b7
|
fix: 永久授权结账币种改为 CNY
与 pancake 永久商品 onetime+CNY 链接对齐,包年/永久均为 CNY。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-08-12 16:19:33 +08:00 |
|
 Logan.LiandCursor
|
e8d98c993f
|
fix: 包年 CNY / 永久 USD 分币种结账
按档位分别拼 Waffo currency,避免永久商品用 CNY 报不可用。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-08-12 16:18:05 +08:00 |
|
 Logan.LiandCursor
|
d4c5637168
|
fix: 包年改为 Waffo 一次性商品并切 CNY
包年 SKU 换为 PROD_1BIezCi932IbgCzRIV8hcJ,checkout type 统一 onetime。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-08-12 16:04:36 +08:00 |
|
 Logan.LiandCursor
|
f00ea7e873
|
fix: Waffo webhook 支持 GET 探测,避免浏览器打开 404
仪表盘/浏览器用 GET 校验 URL 时返回 ready;支付事件仍走 POST。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-08-12 15:57:37 +08:00 |
|
 Logan.LiandCursor
|
cb1a9be2c4
|
chore: 增加 Docker 单容器部署
生产用 Dockerfile + compose 嵌入前端二进制,run.sh docker 一键构建启动。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-08-12 12:02:29 +08:00 |
|
 Logan.LiandCursor
|
95405de119
|
feat: 对齐 Waffo 包年/永久结账与客户端席位 API
同步 OpsXShell 档位定价与 Waffo 商品映射,补齐 checkout/webhook/设备列表契约,便于桌面端购买与满席释放。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-08-12 11:42:56 +08:00 |
|
Logan.Li
|
4ae318335c
|
feat: 完成 opsx-licence 许可证管理平台全栈实现
基于 opsx-web-lite 框架(Go+Gin+Vue3+Element Plus)构建许可证管理服务器,
业务域参考 Licence 服务器 Web 版。
【后端 - 4层架构】
- 认证:单 Admin 表 + JWT(HS256)
- 核心授权域:Product / Customer / License / Activation
· License 生成/验证/激活/机器绑定/心跳/续期/吊销
· 客户端契约接口:/api/v1/license/{verify,activate,deactivate,heartbeat}
- 定价订单:Plan / Order / 支付网关配置
- 防重复购买:CustomerEntitlement + 幂等支付 webhook + 手动发放
- 分析审计:Dashboard 统计 / Analytics / AuditLog / Setting 管理
【前端】
- Dashboard(ECharts 图表)、产品、客户、License、计划、订单、权益、日志、设置
- 9 个完整 CRUD 业务页面 + 登录/布局
【部署】
- SQLite + 单二进制(//go:embed 嵌入前端)
- 开发:./run.sh start(前端5181/后端9001)
- 生产:./run.sh build && ./run.sh binary start
- 默认账号:admin/admin
Author: Logan.Li
|
2026-08-07 15:02:00 +08:00 |
|