init
This commit is contained in:
commit
b10790c212
40 changed files with 4149 additions and 0 deletions
152
gen/init.go
Normal file
152
gen/init.go
Normal file
|
|
@ -0,0 +1,152 @@
|
|||
package gen
|
||||
|
||||
import (
|
||||
"caddydash/config"
|
||||
"caddydash/db"
|
||||
"fmt"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"time"
|
||||
)
|
||||
|
||||
// 把指定目录下的文件作为模板读入
|
||||
func ReadTmplToDB(dir string, cdb *db.ConfigDB) error {
|
||||
// 遍历目录下的所有文件
|
||||
files, err := os.ReadDir(dir)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
for _, file := range files {
|
||||
if file.IsDir() {
|
||||
continue
|
||||
}
|
||||
|
||||
// 读取文件内容
|
||||
content, err := os.ReadFile(filepath.Join(dir, file.Name()))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
tmplEntry := db.TemplateEntry{
|
||||
Filename: file.Name(),
|
||||
TemplateType: file.Name(),
|
||||
Content: content,
|
||||
UpdatedAt: time.Now().Unix(),
|
||||
}
|
||||
|
||||
// 存储到数据库
|
||||
err = cdb.SaveTemplate(tmplEntry)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// 输出tmpl名
|
||||
fmt.Printf("Read template: %s\n", file.Name())
|
||||
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func Add80SiteConfig(cfg *config.Config, cdb *db.ConfigDB) error {
|
||||
// 检查:80是否已存在于数据库中
|
||||
|
||||
_, err := cdb.GetParams(":80")
|
||||
if err == nil {
|
||||
// 如果存在,则不添加
|
||||
return nil
|
||||
}
|
||||
|
||||
siteConfig := CaddyUniConfig{
|
||||
DomainConfig: CaddyUniDomainConfig{
|
||||
Domain: ":80",
|
||||
MutiDomains: false,
|
||||
Domains: []string{":80"},
|
||||
},
|
||||
Mode: "uni",
|
||||
FileServer: CaddyUniFileServerConfig{
|
||||
EnableFileServer: true,
|
||||
FileDirPath: cfg.Server.CaddyDir + "pages/demo",
|
||||
EnableBrowser: false,
|
||||
},
|
||||
Log: CaddyUniLogConfig{
|
||||
EnableLog: true,
|
||||
LogDomain: ":80",
|
||||
},
|
||||
ErrorPage: CaddyUniErrorPageConfig{
|
||||
EnableErrorPage: true,
|
||||
},
|
||||
Encode: CaddyUniEncodeConfig{
|
||||
EnableEncode: true,
|
||||
},
|
||||
}
|
||||
|
||||
// 制作db.ParamsEntry
|
||||
gobData, err := EncodeGobConfig(siteConfig)
|
||||
if err != nil {
|
||||
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
|
||||
}
|
||||
|
||||
paramsEntry := db.ParamsEntry{
|
||||
Filename: ":80",
|
||||
TemplateType: "file_server",
|
||||
ParamsGOB: gobData,
|
||||
ParamsOrigin: originGobData,
|
||||
CreatedAt: time.Now().Unix(),
|
||||
UpdatedAt: time.Now().Unix(),
|
||||
}
|
||||
|
||||
filename := paramsEntry.Filename
|
||||
|
||||
// 保存到数据库
|
||||
err = cdb.SaveParams(paramsEntry)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// 渲染配置
|
||||
err = RenderConfig(filename, cdb)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("render config error: %w", err)
|
||||
return err
|
||||
}
|
||||
// 写入文件
|
||||
renderedEntry, err := cdb.GetRenderedConfig(filename)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("get rendered config error: %w", err)
|
||||
return err
|
||||
}
|
||||
err = os.WriteFile(cfg.Server.CaddyDir+"config.d/"+filename, renderedEntry.RenderedContent, 0644)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("write rendered config file error: %w", err)
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue