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 }