fix anwser token and database issus

This commit is contained in:
tamakyi
2026-09-15 11:06:09 +08:00
parent e683e798aa
commit adcc42cc8c
33 changed files with 1011 additions and 802 deletions
+8 -13
View File
@@ -12,7 +12,7 @@ import (
"gopkg.in/ini.v1"
)
// File is the configuration object.
// File 是解析后的配置对象。
var File *ini.File
func Init() error {
@@ -110,19 +110,14 @@ func Init() error {
}
// validateTextCensorSource 校验文本审核通道([security] text_censor_source)与凭据的搭配。
// 抽成纯函数(只依赖入参、不读全局)以便单测覆盖,也让 Init 保持轻薄。
//
// 单独抽成纯函数(只依赖入参、不读全局)是为了能直接被单测覆盖,也让 Init 保持轻薄。
//
// 规则:
// - 审核整体关闭(enabled=false)→ 不校验,此时不需要任何凭据。
// - 留空 / auto → 通过。auto 是历史默认(七牛优先、阿里云兜底),两者都没配凭据时
// 维持既有行为(运行期 fail-closed),不阻断启动 —— 否则 app.sample.ini 原样拷贝
// (enable_text_censor = true 且凭据留空)将无法启动,破坏开箱流程。
// - 显式选 qiniu / aliyun → 必须配齐该通道的凭据,否则启动即失败。
// 理由:缺凭据时运行期审核必然失败,而审核失败是 fail-closed(拒绝提交),
// 会让发布/私信整站不可用,且现象隐蔽(只在日志可见)——不如启动就报错。
// - 其它取值 → 直接报错,不做静默回退:拼写错误若被悄悄当成 auto,
// 运维会以为「已经只用七牛了」,实际仍在走双通道。
// - 审核整体关闭(enabled=false)→ 不校验,不需要任何凭据。
// - 留空 / auto → 通过。auto 是历史默认(七牛优先、阿里云兜底),两者都无凭据时
// 维持既有运行期 fail-closed 行为,不阻断启动(否则 app.sample.ini 原样拷贝无法启动)。
// - 显式选 qiniu / aliyun → 必须配齐该通道凭据,否则启动即失败:缺凭据时运行期审核必失败,
// 而审核失败是 fail-closed(拒绝提交),会让发布/私信整站不可用且现象隐蔽。
// - 其它取值 → 直接报错,不做静默回退:拼写错误若被当成 auto,运维会误以为已切通道。
func validateTextCensorSource(enabled bool, source, qiniuKey, qiniuSecret, aliyunKey, aliyunSecret string) error {
if !enabled {
return nil