add global config support
This commit is contained in:
parent
cd1e1a42f3
commit
34d553a890
23 changed files with 1682 additions and 343 deletions
|
|
@ -1 +1,87 @@
|
|||
package api
|
||||
|
||||
import (
|
||||
"caddydash/config"
|
||||
"caddydash/db"
|
||||
"caddydash/gen"
|
||||
"os"
|
||||
|
||||
"github.com/infinite-iroha/touka"
|
||||
)
|
||||
|
||||
func PutGlobalConfig(cdb *db.ConfigDB, cfg *config.Config) touka.HandlerFunc {
|
||||
return func(c *touka.Context) {
|
||||
var config gen.CaddyGlobalConfig
|
||||
err := c.ShouldBindJSON(&config)
|
||||
if err != nil {
|
||||
c.JSON(400, touka.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
var paramsGob []byte
|
||||
|
||||
paramsGob, err = gen.EncodeGobConfig(config)
|
||||
if err != nil {
|
||||
c.Warnf("encode gob config error: %v", err)
|
||||
c.JSON(500, touka.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
// 取出数据库内的tmpl
|
||||
tmplContent, err := cdb.GetGlobalTemplate("caddyfile")
|
||||
if err != nil {
|
||||
c.Warnf("get global template error: %v", err)
|
||||
c.JSON(500, touka.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
renderedContent, err := gen.RenderGlobalConfig(paramsGob, tmplContent)
|
||||
if err != nil {
|
||||
c.Warnf("render global config error: %v", err)
|
||||
c.JSON(500, touka.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
//回写条目到数据库
|
||||
err = cdb.SaveGlobalConfig(db.GlobalConfig{
|
||||
Filename: "caddyfile",
|
||||
Params: paramsGob,
|
||||
TmplContent: tmplContent,
|
||||
RenderedContent: renderedContent,
|
||||
})
|
||||
if err != nil {
|
||||
c.Warnf("save global config error: %v", err)
|
||||
c.JSON(500, touka.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
err = os.WriteFile(cfg.Server.CaddyDir+"Caddyfile", renderedContent, 0644)
|
||||
if err != nil {
|
||||
c.Warnf("write Caddyfile error: %v", err)
|
||||
c.JSON(500, touka.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(200, touka.H{"message": "global config saved"})
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// GetGlobalConfig 检出已有配置
|
||||
func GetGlobalConfig(cdb *db.ConfigDB) touka.HandlerFunc {
|
||||
return func(c *touka.Context) {
|
||||
globalConfig, err := cdb.GetGlobalConfig("caddyfile")
|
||||
if err != nil {
|
||||
c.JSON(500, touka.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
var config gen.CaddyGlobalConfig
|
||||
err = gen.DecodeGobConfig(globalConfig.Params, &config)
|
||||
if err != nil {
|
||||
c.JSON(500, touka.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
c.JSON(200, config)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue