diff --git a/packages/server/pkg/models/configuration.go b/packages/server/pkg/models/configuration.go index a8c2a96..6aae5d7 100644 --- a/packages/server/pkg/models/configuration.go +++ b/packages/server/pkg/models/configuration.go @@ -19,6 +19,7 @@ type RootConfiguration struct { type GlobalConfiguration struct { Host string Port int + Debug bool `yaml:"debug,omitempty"` TLSCertFile string `yaml:"tls_cert,omitempty"` TLSKeyFile string `yaml:"tls_key,omitempty"` SessionsFolder string `yaml:"sessions_folder"` diff --git a/packages/server/pkg/startup-service.go b/packages/server/pkg/startup-service.go index 3b658f1..f175e6e 100644 --- a/packages/server/pkg/startup-service.go +++ b/packages/server/pkg/startup-service.go @@ -14,6 +14,8 @@ import ( "github.com/wufe/polo/pkg/services" "github.com/wufe/polo/pkg/storage" "go.uber.org/dig" + + _ "net/http/pprof" ) type Startup struct { @@ -119,6 +121,11 @@ func (s *Startup) Start(options *StartupOptions) { if options.LoadSessionHelper { s.static.LoadSessionHelper() } + + if s.configuration.Global.Debug { + s.startDebugServer() + } + if options.StartServer { s.startServer() } @@ -213,3 +220,12 @@ func (s *Startup) startServer() { } } } + +func (s *Startup) startDebugServer() { + address := "0.0.0.0:7779" + s.log.Infof("Starting debug server on address %s", address) + + go func() { + s.log.Infof("running debug server: %s", http.ListenAndServe(address, nil)) + }() +}