This commit is contained in:
toom1996
2026-09-28 10:52:50 +08:00
parent aaeab41d67
commit d15d2a4701
42 changed files with 19884 additions and 337 deletions

View File

@ -119,6 +119,10 @@ type IngestConfig struct {
Secret string `yaml:"secret"`
// TTLSeconds 时间戳容忍窗口(秒),默认 300(±5 分钟)。
TTLSeconds int `yaml:"ttl_seconds"`
// DownloadProxy 本机下载代理(仅本地开发用):worker 下载图片经此代理访问源站,
// 支持 http:// 或 socks5://(如 socks5://127.0.0.1:51831、http://127.0.0.1:58591)。
// 仅作用于图片下载客户端,不影响 S4 上传与数据库连接;留空直连。env: INGEST_DOWNLOAD_PROXY
DownloadProxy string `yaml:"download_proxy"`
}
// S4Config 缤纷云 S4 对象存储配置(S3 兼容,爬虫入库图片上传目标)。
@ -212,8 +216,9 @@ func defaultConfig() *Config {
TTLSeconds: 30,
},
Ingest: IngestConfig{
Secret: "",
TTLSeconds: 300,
Secret: "",
TTLSeconds: 300,
DownloadProxy: "",
},
S4: S4Config{
Enabled: false,
@ -268,11 +273,33 @@ func Load(explicit string) (*Config, error) {
}
cfg.loadedFrom = loadedFrom
// 本机私有覆盖(config.local.yml,已被 .gitignore 忽略):叠加在 config.yml 之上,
// 用于放本机相关、不应进版本库的设置(如本地代理 download_proxy)。环境变量仍拥有最高优先级。
overlayLocalConfig(cfg)
cfg.applyEnv()
cfg.normalize()
return cfg, nil
}
// overlayLocalConfig 把本机私有覆盖文件 config.local.yml(若存在)叠加到配置上。
// 仅用于本机相关、不应进版本库的设置(如本地代理 download_proxy);文件不存在则静默跳过。
// 与 config.yml 同样走 goccy/go-yaml 反序列化,仅覆盖文件中出现的键;环境变量仍在 applyEnv 中拥有最高优先级。
func overlayLocalConfig(cfg *Config) {
for _, p := range []string{
"configs/config.local.yml",
"config.local.yml",
filepath.Join("..", "..", "configs", "config.local.yml"),
} {
data, err := os.ReadFile(p)
if err != nil {
continue
}
_ = yaml.Unmarshal(data, cfg) // 解析失败静默跳过:本地覆盖属尽力而为,不应阻断启动
break
}
}
// LoadedFrom 返回实际加载的配置文件路径;为空表示未找到配置文件、全部使用默认值与环境变量。
func (c *Config) LoadedFrom() string { return c.loadedFrom }
@ -310,6 +337,7 @@ func (c *Config) applyEnv() {
envStr("INGEST_SECRET", &c.Ingest.Secret)
envInt("INGEST_TTL", &c.Ingest.TTLSeconds)
envStr("INGEST_DOWNLOAD_PROXY", &c.Ingest.DownloadProxy)
// 缤纷云 S4(兼容 S3):环境变量 S4_* 注入;旧 QINIU_* 仅作兼容回退,便于平滑切换
// (S4_* 优先,仅在 S4_* 为空时回退 QINIU_*)。