mirror of
https://hacklab.nilfm.cc/nirvash
synced 2024-10-22 14:01:49 +00:00
205 lines
4.5 KiB
Go
205 lines
4.5 KiB
Go
package main
|
|
|
|
import (
|
|
"net/http"
|
|
core "nilfm.cc/git/nirvash/archetype"
|
|
shell "nilfm.cc/git/nirvash/lfo"
|
|
"nilfm.cc/git/quartzgun/indentalUserDB"
|
|
"nilfm.cc/git/quartzgun/middleware"
|
|
"nilfm.cc/git/quartzgun/renderer"
|
|
"nilfm.cc/git/quartzgun/router"
|
|
"os"
|
|
"path/filepath"
|
|
)
|
|
|
|
func main() {
|
|
cfg := core.ReadConfig()
|
|
udb := indentalUserDB.CreateIndentalUserDB(
|
|
filepath.Join(
|
|
core.GetConfigLocation(),
|
|
"user.db"))
|
|
if core.ProcessCmd(os.Args, udb, cfg) {
|
|
os.Exit(0)
|
|
}
|
|
if cfg.IsNull() {
|
|
cfg.RunWizard()
|
|
}
|
|
|
|
cfg.Adapter.Init(cfg)
|
|
|
|
pathConcat := filepath.Join
|
|
|
|
rtr := &router.Router{
|
|
StaticPaths: map[string]string{
|
|
"/static": filepath.Join(cfg.AssetRoot, "static"),
|
|
},
|
|
}
|
|
|
|
templateRoot := pathConcat(cfg.AssetRoot, "templates")
|
|
|
|
rtr.Get("/login", renderer.Template(
|
|
pathConcat(templateRoot, "login.html")))
|
|
|
|
rtr.Post("/login", middleware.Authorize("/", udb, "/login?tryagain=1"))
|
|
|
|
rtr.Get("/logout", middleware.Bunt("/", udb, "/login?tryagain=1"))
|
|
|
|
rtr.Get(
|
|
"/",
|
|
middleware.Protected(
|
|
shell.WithAdapter(
|
|
renderer.Template(
|
|
pathConcat(templateRoot, "cms_list.html"),
|
|
pathConcat(templateRoot, "header.html"),
|
|
pathConcat(templateRoot, "footer.html")),
|
|
cfg.Adapter),
|
|
http.MethodGet,
|
|
udb,
|
|
"/login"))
|
|
|
|
rtr.Get(
|
|
`/edit/(?P<Slug>\S+)`,
|
|
middleware.Fortify(
|
|
middleware.Protected(
|
|
shell.WithAdapter(
|
|
renderer.Template(
|
|
pathConcat(templateRoot, "cms_edit.html"),
|
|
pathConcat(templateRoot, "header.html"),
|
|
pathConcat(templateRoot, "footer.html")),
|
|
cfg.Adapter),
|
|
http.MethodGet,
|
|
udb,
|
|
"/login")))
|
|
|
|
rtr.Post(
|
|
`/save/(?P<Slug>\S+)`,
|
|
middleware.Defend(
|
|
middleware.Protected(
|
|
shell.WithAdapter(
|
|
shell.EnsurePageData(
|
|
renderer.Template(
|
|
pathConcat(templateRoot, "cms_save.html"),
|
|
pathConcat(templateRoot, "header.html"),
|
|
pathConcat(templateRoot, "footer.html")),
|
|
cfg.Adapter),
|
|
cfg.Adapter),
|
|
http.MethodGet,
|
|
udb,
|
|
"/login"),
|
|
udb,
|
|
"/"))
|
|
|
|
rtr.Get(
|
|
`/new`,
|
|
middleware.Fortify(
|
|
middleware.Protected(
|
|
shell.WithAdapter(
|
|
renderer.Template(
|
|
pathConcat(templateRoot, "cms_new.html"),
|
|
pathConcat(templateRoot, "header.html"),
|
|
pathConcat(templateRoot, "footer.html")),
|
|
cfg.Adapter),
|
|
http.MethodGet,
|
|
udb,
|
|
"/login")))
|
|
|
|
rtr.Post(
|
|
`/create`,
|
|
middleware.Defend(
|
|
middleware.Protected(
|
|
shell.WithAdapter(
|
|
shell.EnsurePageData(
|
|
renderer.Template(
|
|
pathConcat(templateRoot, "cms_create.html"),
|
|
pathConcat(templateRoot, "header.html"),
|
|
pathConcat(templateRoot, "footer.html")),
|
|
cfg.Adapter),
|
|
cfg.Adapter),
|
|
http.MethodGet,
|
|
udb,
|
|
"/login"),
|
|
udb,
|
|
"/"))
|
|
|
|
rtr.Get(
|
|
`/build`,
|
|
middleware.Fortify(
|
|
middleware.Protected(
|
|
shell.WithAdapter(
|
|
renderer.Template(
|
|
pathConcat(templateRoot, "build.html"),
|
|
pathConcat(templateRoot, "header.html"),
|
|
pathConcat(templateRoot, "footer.html")),
|
|
cfg.Adapter),
|
|
http.MethodGet,
|
|
udb,
|
|
"/login")))
|
|
|
|
rtr.Post(
|
|
`/build-run`,
|
|
middleware.Defend(
|
|
middleware.Protected(
|
|
shell.SanitizeFormMap(
|
|
shell.WithAdapter(
|
|
renderer.Template(
|
|
pathConcat(templateRoot, "build_run.html"),
|
|
pathConcat(templateRoot, "header.html"),
|
|
pathConcat(templateRoot, "footer.html")),
|
|
cfg.Adapter)),
|
|
http.MethodGet,
|
|
udb,
|
|
"/login"),
|
|
udb,
|
|
"/"))
|
|
|
|
rtr.Post(
|
|
`/delete/(?P<Slug>\S+)`,
|
|
middleware.Defend(
|
|
middleware.Protected(
|
|
shell.WithAdapter(
|
|
renderer.Template(
|
|
pathConcat(templateRoot, "delete.html"),
|
|
pathConcat(templateRoot, "header.html"),
|
|
pathConcat(templateRoot, "footer.html")),
|
|
cfg.Adapter),
|
|
http.MethodGet,
|
|
udb,
|
|
"/login"),
|
|
udb,
|
|
"/"))
|
|
|
|
rtr.Get(
|
|
`/config`,
|
|
middleware.Fortify(
|
|
middleware.Protected(
|
|
shell.WithAdapter(
|
|
renderer.Template(
|
|
pathConcat(templateRoot, "config.html"),
|
|
pathConcat(templateRoot, "header.html"),
|
|
pathConcat(templateRoot, "footer.html")),
|
|
cfg.Adapter),
|
|
http.MethodGet,
|
|
udb,
|
|
"/login")))
|
|
|
|
rtr.Post(
|
|
`/config-set`,
|
|
middleware.Defend(
|
|
middleware.Protected(
|
|
shell.SanitizeFormMap(
|
|
shell.FormMapToAdapterConfig(
|
|
shell.WithAdapter(
|
|
renderer.Template(
|
|
pathConcat(templateRoot, "config_set.html"),
|
|
pathConcat(templateRoot, "header.html"),
|
|
pathConcat(templateRoot, "footer.html")),
|
|
cfg.Adapter),
|
|
cfg.Adapter)),
|
|
http.MethodGet,
|
|
udb,
|
|
"/login"),
|
|
udb,
|
|
"/"))
|
|
|
|
http.ListenAndServe(":8080", rtr)
|
|
}
|