From f1c86054b3d620e2f356e3f64687ae732dbfb559 Mon Sep 17 00:00:00 2001 From: Henrique Dias Date: Wed, 9 Jan 2019 08:13:24 +0000 Subject: [PATCH] fix: clean server struct once it gets to the handler License: MIT Signed-off-by: Henrique Dias --- http/http.go | 3 ++- settings/settings.go | 17 +++++++++++++---- settings/storage.go | 4 +--- storage/bolt/importer/conf.go | 1 - 4 files changed, 16 insertions(+), 9 deletions(-) diff --git a/http/http.go b/http/http.go index 6765a0bb..2190ac44 100644 --- a/http/http.go +++ b/http/http.go @@ -14,8 +14,9 @@ type modifyRequest struct { } func NewHandler(storage *storage.Storage, server *settings.Server) (http.Handler, error) { - r := mux.NewRouter() + server.Clean() + r := mux.NewRouter() index, static := getStaticHandlers(storage, server) monkey := func(fn handleFunc, prefix string) http.Handler { diff --git a/settings/settings.go b/settings/settings.go index 3e41c1f5..e985335a 100644 --- a/settings/settings.go +++ b/settings/settings.go @@ -1,6 +1,10 @@ package settings -import "github.com/filebrowser/filebrowser/v2/rules" +import ( + "strings" + + "github.com/filebrowser/filebrowser/v2/rules" +) // AuthMethod describes an authentication method. type AuthMethod string @@ -17,6 +21,11 @@ type Settings struct { Rules []rules.Rule `json:"rules"` } +// GetRules implements rules.Provider. +func (s *Settings) GetRules() []rules.Rule { + return s.Rules +} + // Server specific settings. type Server struct { Root string `json:"root"` @@ -28,7 +37,7 @@ type Server struct { Log string `json:"log"` } -// GetRules implements rules.Provider. -func (s *Settings) GetRules() []rules.Rule { - return s.Rules +// Clean cleans any variables that might need cleaning. +func (s *Server) Clean() { + s.BaseURL = strings.TrimSuffix(s.BaseURL, "/") } diff --git a/settings/storage.go b/settings/storage.go index f3cb18d3..d88f5c28 100644 --- a/settings/storage.go +++ b/settings/storage.go @@ -1,8 +1,6 @@ package settings import ( - "strings" - "github.com/filebrowser/filebrowser/v2/errors" "github.com/filebrowser/filebrowser/v2/rules" "github.com/filebrowser/filebrowser/v2/users" @@ -94,6 +92,6 @@ func (s *Storage) GetServer() (*Server, error) { // SaveServer wraps StorageBackend.SaveServer and adds some verification. func (s *Storage) SaveServer(ser *Server) error { - ser.BaseURL = strings.TrimSuffix(ser.BaseURL, "/") + ser.Clean() return s.back.SaveServer(ser) } diff --git a/storage/bolt/importer/conf.go b/storage/bolt/importer/conf.go index d0348310..b967c5ec 100644 --- a/storage/bolt/importer/conf.go +++ b/storage/bolt/importer/conf.go @@ -99,7 +99,6 @@ func readConf(path string) (*oldConf, error) { } func importConf(db *storm.DB, path string, sto *storage.Storage) error { - cfg, err := readConf(path) if err != nil { return err