From 04bb842549610c3f77ab87464443af2c99bd0ea3 Mon Sep 17 00:00:00 2001 From: James Hillyerd Date: Sun, 25 Mar 2018 11:55:23 -0700 Subject: [PATCH] config: Combine TemplateDir and PublicDir into UIDir - Define static names for `templates` and `static` --- pkg/config/config.go | 5 ++--- pkg/rest/testutils_test.go | 3 +-- pkg/server/web/server.go | 12 +++++++++--- pkg/server/web/template.go | 7 +++---- 4 files changed, 15 insertions(+), 12 deletions(-) diff --git a/pkg/config/config.go b/pkg/config/config.go index 2ca6702..5346eea 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -57,10 +57,9 @@ type POP3 struct { // Web contains the HTTP server configuration. type Web struct { Addr string `required:"true" default:"0.0.0.0:9000" desc:"Web server IP4 host:port"` - TemplateDir string `required:"true" default:"ui/templates" desc:"Theme template dir"` - TemplateCache bool `required:"true" default:"true" desc:"Cache templates after first use?"` - PublicDir string `required:"true" default:"ui/static" desc:"Theme public dir"` + UIDir string `required:"true" default:"ui" desc:"User interface dir"` GreetingFile string `required:"true" default:"ui/greeting.html" desc:"Home page greeting HTML"` + TemplateCache bool `required:"true" default:"true" desc:"Cache templates after first use?"` MailboxPrompt string `required:"true" default:"@inbucket" desc:"Prompt next to mailbox input"` CookieAuthKey string `desc:"Session cipher key (text)"` MonitorVisible bool `required:"true" default:"true" desc:"Show monitor tab in UI?"` diff --git a/pkg/rest/testutils_test.go b/pkg/rest/testutils_test.go index e2f2e3d..b062083 100644 --- a/pkg/rest/testutils_test.go +++ b/pkg/rest/testutils_test.go @@ -36,8 +36,7 @@ func setupWebServer(mm message.Manager) *bytes.Buffer { http.DefaultServeMux = http.NewServeMux() cfg := &config.Root{ Web: config.Web{ - TemplateDir: "../themes/bootstrap/templates", - PublicDir: "../themes/bootstrap/public", + UIDir: "../ui", }, } shutdownChan := make(chan bool) diff --git a/pkg/server/web/server.go b/pkg/server/web/server.go index 96716f0..8e5524c 100644 --- a/pkg/server/web/server.go +++ b/pkg/server/web/server.go @@ -6,6 +6,7 @@ import ( "expvar" "net" "net/http" + "path/filepath" "time" "github.com/gorilla/mux" @@ -20,6 +21,11 @@ import ( // Handler is a function type that handles an HTTP request in Inbucket type Handler func(http.ResponseWriter, *http.Request, *Context) error +const ( + staticDir = "static" + templateDir = "templates" +) + var ( // msgHub holds a reference to the message pub/sub system msgHub *msghub.Hub @@ -59,10 +65,10 @@ func Initialize( manager = mm // Content Paths - log.Infof("HTTP templates mapped to %q", conf.Web.TemplateDir) - log.Infof("HTTP static content mapped to %q", conf.Web.PublicDir) + staticPath := filepath.Join(conf.Web.UIDir, staticDir) + log.Infof("Web UI content mapped to path: %s", conf.Web.UIDir) Router.PathPrefix("/public/").Handler(http.StripPrefix("/public/", - http.FileServer(http.Dir(conf.Web.PublicDir)))) + http.FileServer(http.Dir(staticPath)))) http.Handle("/", Router) // Session cookie setup diff --git a/pkg/server/web/template.go b/pkg/server/web/template.go index 2597ada..87675a5 100644 --- a/pkg/server/web/template.go +++ b/pkg/server/web/template.go @@ -5,7 +5,6 @@ import ( "net/http" "path" "path/filepath" - "strings" "sync" "github.com/jhillyerd/inbucket/pkg/log" @@ -49,8 +48,7 @@ func ParseTemplate(name string, partial bool) (*template.Template, error) { return t, nil } - tempPath := strings.Replace(name, "/", string(filepath.Separator), -1) - tempFile := filepath.Join(rootConfig.Web.TemplateDir, tempPath) + tempFile := filepath.Join(rootConfig.Web.UIDir, templateDir, filepath.FromSlash(name)) log.Tracef("Parsing template %v", tempFile) var err error @@ -62,7 +60,8 @@ func ParseTemplate(name string, partial bool) (*template.Template, error) { t, err = t.ParseFiles(tempFile) } else { t = template.New("_base.html").Funcs(TemplateFuncs) - t, err = t.ParseFiles(filepath.Join(rootConfig.Web.TemplateDir, "_base.html"), tempFile) + t, err = t.ParseFiles( + filepath.Join(rootConfig.Web.UIDir, templateDir, "_base.html"), tempFile) } if err != nil { return nil, err