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、哪些已收敛到页面
24 lines
959 B
Go
24 lines
959 B
Go
package model
|
|
|
|
import "time"
|
|
|
|
// AppConfig 运行配置中心(键值表)。
|
|
//
|
|
// 设计要点:
|
|
// 1. 只存「页面可配置」的业务参数,启动引导密钥(JWT_SECRET / OPSLIC_MASTER_KEY /
|
|
// OFFLINE_LICENSE_SEED)永远只从环境变量读取,不入库;
|
|
// 2. 机密项(webhook 密钥等)落库前经 secretbox 信封加密,明文只在内存中出现;
|
|
// 3. 读取优先级:本表 → 环境变量 → 注册表默认值,删除行即回退到环境变量。 // Logan.Li
|
|
type AppConfig struct {
|
|
Key string `json:"key" gorm:"primaryKey;size:100"`
|
|
Value string `json:"-" gorm:"type:text"` // 明文或 enc:v1: 密文,JSON 永不导出
|
|
IsSecret bool `json:"is_secret" gorm:"default:false"`
|
|
UpdatedBy string `json:"updated_by" gorm:"size:100"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
}
|
|
|
|
// TableName 指定表名 // Logan.Li
|
|
func (AppConfig) TableName() string {
|
|
return "app_configs"
|
|
}
|