diff --git a/src/models/cfg.go b/src/models/cfg.go index aebd673..d1e7822 100644 --- a/src/models/cfg.go +++ b/src/models/cfg.go @@ -69,6 +69,23 @@ func GetFolders(cfg config.Config) (res []Folder, err error) { return } +// InsertOrUpdateFolders ... +func InsertOrUpdateFolders(cfg config.Config, folders []Folder) (res string, err error) { + var w = Cfg{Key: "folders"} + if exists, _ := cfg.Db.Get(&w); exists { + resbytes, err := json.Marshal(folders) + if err != nil { + return "", err + } + w.Value = string(resbytes) + _, err = cfg.Db.ID(w.ID).Update(&w) + if err != nil { + return "", err + } + } + return +} + type Trustlist struct { IP string `json:"ip"` } diff --git a/src/routers/funcs.go b/src/routers/funcs.go index f11b8a3..b0eac9d 100644 --- a/src/routers/funcs.go +++ b/src/routers/funcs.go @@ -111,6 +111,15 @@ func RegisterRoutes(e *echo.Echo, ctx *context.Context, cfg *config.Config) { folders, err := models.GetFolders(*cfg) return Result(c, err, folders) }) + e.POST("/ips/folders", func(c echo.Context) (err error) { + var folders []models.Folder + err = c.Bind(&folders) + if err != nil { + return Result(c, err, "Unable to parse JSON") + } + _, err = models.InsertOrUpdateFolders(*cfg, folders) + return Result(c, err, folders) + }) e.Logger.Fatal( e.Start(