diff --git a/pkg/common/common.go b/pkg/common/common.go index 737ff6c..91b2a3d 100644 --- a/pkg/common/common.go +++ b/pkg/common/common.go @@ -245,14 +245,27 @@ func GetRequestIP(r *http.Request) (requestIP string) { return headerValue } +type statusRecorder struct { + http.ResponseWriter + Status int +} + +func (r *statusRecorder) WriteHeader(status int) { + r.Status = status + r.ResponseWriter.WriteHeader(status) +} + // Logging ... // a basic middleware for logging func Logging(next http.Handler) http.Handler { // log all requests return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { requestIP := GetRequestIP(r) - log.Printf("%v %v %v %v %v %v %#v", r.Method, r.URL, r.Proto, r.Response, requestIP, r.RemoteAddr, r.Header) - next.ServeHTTP(w, r) + recorder := &statusRecorder{ + ResponseWriter: w, + } + next.ServeHTTP(recorder, r) + log.Printf("%v %v %v %v %v %v %#v", recorder.Status, r.Method, r.URL, r.Proto, requestIP, r.RemoteAddr, r.Header) }) } @@ -268,15 +281,18 @@ type DotfileConfig struct { // LoadDotfileConfig ... // loads a .ghs.yaml in the serve folder -func LoadDotfileConfig(serveFolder string) (cfg DotfileConfig, err error) { +func LoadDotfileConfig(serveFolder string) (cfg *DotfileConfig, err error) { configPath := path.Join(serveFolder, AppServeFolderConfigName) + if _, err := os.Stat(configPath); err != nil { + return nil, nil + } file, err := os.ReadFile(configPath) if err != nil { - return DotfileConfig{}, err + return &DotfileConfig{}, err } err = yaml.Unmarshal(file, &cfg) if err != nil { - return DotfileConfig{}, err + return &DotfileConfig{}, err } return cfg, nil } diff --git a/pkg/httpserver/httpserver.go b/pkg/httpserver/httpserver.go index 9d8b912..52ce688 100644 --- a/pkg/httpserver/httpserver.go +++ b/pkg/httpserver/httpserver.go @@ -97,7 +97,7 @@ func NewWebServer() *WebServer { cfg, err := common.LoadDotfileConfig(w.ServeFolder) if err != nil { log.Printf("error loading dotfile config: %v\n", err) - } else { + } else if cfg != nil { w.VueJSHistoryMode = cfg.HistoryMode if cfg.RedirectRoutes != nil { w.RedirectRoutes = cfg.RedirectRoutes @@ -108,7 +108,6 @@ func NewWebServer() *WebServer { if cfg.TemplateMap != nil { w.TemplateMap = cfg.TemplateMap } - if w.HeaderMap != nil { w.HeaderMapEnabled = true } @@ -216,7 +215,7 @@ func (w *WebServer) LoadTemplateMap() *WebServer { } if w.TemplateMap == nil { if _, err := os.Stat(w.TemplateMapPath); os.IsNotExist(err) { - log.Printf("[notice] history mode is enabled, template maps (currently set to '%v') can also be used\n", w.TemplateMapPath) + log.Printf("[notice] history mode templating is enabled, template maps (currently set to '%v') can also be used\n", w.TemplateMapPath) return w } configMap, err := common.LoadMapConfig(w.TemplateMapPath) @@ -243,7 +242,7 @@ func (w *WebServer) LoadHeaderMap() *WebServer { } if w.HeaderMap == nil { if _, err := os.Stat(w.HeaderMapPath); os.IsNotExist(err) { - log.Printf("[notice] history mode is enabled, template maps (currently set to '%v') can also be used\n", w.TemplateMapPath) + log.Printf("[notice] header templating is enabled, header template maps (currently set to '%v') can also be used\n", w.HeaderMapPath) return w } headerMap, err := common.LoadHeaderMapConfig(w.HeaderMapPath)