Documentation
¶
Overview ¶
API Key 临期站内通知(波次3):定期扫描 7 天内到期的有效 Key, 给属主发站内信(带 Webhook 外推),并打去重标记。 通知失败不阻塞扫描(下轮重试);标记成功才视为已通知,绝不重复打扰。
Index ¶
- Variables
- func Bootstrap(configPath string) (*server.Hertz, error)
- func BootstrapWithOptions(configPath string, opts ...Option) (*server.Hertz, error)
- func CORS() app.HandlerFunc
- func Cleanup()
- func CreateDefaultAdmin(database *gorm.DB, cfg *conf.AppConfiguration) error
- func InitDatabase(config *conf.DatabaseConfig) (*gorm.DB, error)
- type Config
- type Option
- type Options
Constants ¶
This section is empty.
Variables ¶
var ErrInsecureDefaultAdmin = errors.New("refusing to create default admin with known default password in production mode")
ErrInsecureDefaultAdmin 生产模式下拒绝以已知默认口令创建默认管理员时返回 (errors.Is 可判)。逃生门:PB_ADMIN_PASSWORD 注入强密码,或 PB_DISABLE_DEFAULT_ADMIN=true 走 /setup 首启向导。
Functions ¶
func Bootstrap ¶
Bootstrap 应用程序启动入口(兼容入口,等价于无选项的 BootstrapWithOptions)。 configPath 为空时依次回退到 CONFIG_PATH 环境变量、默认 configs/config.yaml。
func BootstrapWithOptions ¶
BootstrapWithOptions 带函数选项的启动入口。 可用选项见 options.go(如 WithStaticDir 覆盖前端静态资源目录)。
func CORS ¶
func CORS() app.HandlerFunc
CORS 跨域中间件(配置化)。
安全策略:
- 配置了 allow_origins 白名单时,仅放行白名单内的 Origin(生产推荐)
- 未配置白名单时,退化为反射 Origin(便于本地开发,等同于宽松模式)
- allow_credentials=true 时,绝不返回 "*",而是精确匹配的 Origin
同时允许 X-Trace-Id / X-API-Key 等自定义请求头跨域。 allow_origins 来源:yaml 的 security.cors.allow_origins(数组)或 环境变量 PB_CORS_ALLOW_ORIGINS(逗号分隔,如 "https://a.com,https://b.com")。
func CreateDefaultAdmin ¶
func CreateDefaultAdmin(database *gorm.DB, cfg *conf.AppConfiguration) error
CreateDefaultAdmin 创建默认管理员。
密码来源(优先级):PB_ADMIN_PASSWORD 环境变量 > 默认 admin123。 密码用 bcrypt 现场哈希(此前硬编码的哈希与 admin123 不匹配,导致管理员无法登录)。 生产模式(app.production 或 server.mode=release)下若未注入 PB_ADMIN_PASSWORD 且库中无管理员,返回 ErrInsecureDefaultAdmin 由调用方终止启动——已知弱口令 不允许上线(2026-10-08 审计:此前仅 Warn,与 JWT secret 的全环境 fail-fast 不对称)。 仅在"即将创建"时校验:库中已有 admin 的存量部署升级不受影响(每次启动都查会 打断未配 env 的老部署)。cfg 允许 nil(视为非生产,保持旧行为)。
func InitDatabase ¶
func InitDatabase(config *conf.DatabaseConfig) (*gorm.DB, error)
InitDatabase 初始化数据库。
迁移策略(按配置):
- database.migrate=true:先执行版本化迁移(migrations/*.sql),适合生产/需要版本控制
- database.auto_migrate(默认 true):GORM AutoMigrate,开发友好、自动补表/列
- 两者可共存:版本化迁移建表后,AutoMigrate 兜底补充新字段
Types ¶
type Config ¶
type Config = conf.AppConfiguration
Config 与 internal/conf 包中的统一配置类型互为别名。
func InitConfig ¶
InitConfig 初始化配置。
配置来源优先级(高 → 低):
- 环境变量(PB_ 前缀完整名 / 文档化的短名,见 bindEnvironment)
- 配置文件(yaml,路径由 configPath 或 CONFIG_PATH 决定)
- 代码内默认值(SetDefault)
这样容器化部署(K8s/Docker)可通过 env 注入敏感配置(jwt_secret、db 密码等), 而无需修改镜像内的配置文件,符合 12-factor。