add global config support

This commit is contained in:
wjqserver 2025-06-30 15:31:14 +08:00
parent cd1e1a42f3
commit 34d553a890
23 changed files with 1682 additions and 343 deletions

View file

@ -87,27 +87,6 @@ func Add80SiteConfig(cfg *config.Config, cdb *db.ConfigDB) error {
return err
}
/*
originConfig := db.CaddyfileConfig{
Domain: ":80",
TmplType: "file_server",
FileServer: db.FileServerConfig{
FileDirPath: cfg.Server.CaddyDir + "pages/demo",
EnableBrowser: false,
},
Log: db.LogConfig{
EnableLog: true,
LogDomain: ":80",
},
ErrorPage: db.ErrorPageConfig{
EnableErrorPage: true,
},
Encode: db.EncodeConfig{
EnableEncode: true,
},
}
*/
originGobData, err := EncodeGobConfig(siteConfig)
if err != nil {
return err
@ -150,3 +129,52 @@ func Add80SiteConfig(cfg *config.Config, cdb *db.ConfigDB) error {
return nil
}
// 读入全局配置模板
func ReadGlobalTmpl(dir string) ([]byte, error) {
// 读取目录下的caddyfile文件
content, err := os.ReadFile(filepath.Join(dir, "gtmpl", "caddyfile"))
if err != nil {
return nil, err
}
fmt.Printf("Read global template: %s\n", "caddyfile")
return content, nil
}
func SetGlobalConfig(cfg *config.Config, cdb *db.ConfigDB) error {
var config = DefaultGlobalConfig
paramsGob, err := EncodeGobConfig(config)
if err != nil {
return fmt.Errorf("encode gob config error: %w", err)
}
// 取出数据库内的tmpl
tmplContent, err := ReadGlobalTmpl(cfg.Server.CaddyDir)
if err != nil {
return fmt.Errorf("get global template error: %w", err)
}
renderedContent, err := RenderGlobalConfig(paramsGob, tmplContent)
if err != nil {
return fmt.Errorf("render global config error: %w", err)
}
//回写条目到数据库
err = cdb.SaveGlobalConfig(db.GlobalConfig{
Filename: "caddyfile",
Params: paramsGob,
TmplContent: tmplContent,
RenderedContent: renderedContent,
})
if err != nil {
return fmt.Errorf("save global config error: %w", err)
}
err = os.WriteFile(cfg.Server.CaddyDir+"Caddyfile", renderedContent, 0644)
if err != nil {
return fmt.Errorf("write Caddyfile error: %w", err)
}
return nil
}