From 2d903b840e18144f29a4f4a9a0305f8ba16f19a3 Mon Sep 17 00:00:00 2001 From: Mike Crute Date: Sun, 8 Oct 2023 12:33:48 -0700 Subject: echo: expose address/port config to apps --- echo/echo_default.go | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/echo/echo_default.go b/echo/echo_default.go index 98a8ee6..8d5e1a9 100644 --- a/echo/echo_default.go +++ b/echo/echo_default.go @@ -72,10 +72,11 @@ type EchoConfig struct { type EchoWrapper struct { *echo.Echo - runner *service.AppRunner - autocert autocert.PrimingCertProvider - templateFS fs.FS - errorHandler ErrorHandler + AddressPortConfig *AddressPortConfig + runner *service.AppRunner + autocert autocert.PrimingCertProvider + templateFS fs.FS + errorHandler ErrorHandler } // NewEchoWrapper creates a new instance of Echo and wraps it in an @@ -138,7 +139,7 @@ func (w *EchoWrapper) AddErrorHandler(h ContentErrorHandler, mime ...string) { w.errorHandler.AddHandler(h, mime...) } -func (w *EchoWrapper) Configure(c EchoConfig) error { +func (w *EchoWrapper) Configure(c EchoConfig) (err error) { w.configureAutocert(&c) if err := w.configureIpExtractor(&c); err != nil { @@ -153,14 +154,14 @@ func (w *EchoWrapper) Configure(c EchoConfig) error { return err } - bindings, err := ParseAddressPortBindings(c.BindAddresses) + w.AddressPortConfig, err = ParseAddressPortBindings(c.BindAddresses) if err != nil { return fmt.Errorf("Error parsing address/port bindings") } - w.buildServers(&c, bindings) + w.buildServers(&c) w.configureBodyLimit(&c) - w.configureRedirects(&c, bindings) + w.configureRedirects(&c) w.configureCompression(&c) w.Use(glmw.StrictSecure()) @@ -261,8 +262,8 @@ func (w *EchoWrapper) makeServerJob(s webServer) service.RunnerFunc { } } -func (w *EchoWrapper) buildServers(c *EchoConfig, bindings *AddressPortConfig) { - for _, a := range bindings.HttpBindings() { +func (w *EchoWrapper) buildServers(c *EchoConfig) { + for _, a := range w.AddressPortConfig.HttpBindings() { s := &http.Server{ Addr: a, Handler: w, @@ -271,7 +272,7 @@ func (w *EchoWrapper) buildServers(c *EchoConfig, bindings *AddressPortConfig) { w.runner.AddJob(w.makeServerJob(&netHttpWrapper{s})) } - for _, a := range bindings.TlsBindings() { + for _, a := range w.AddressPortConfig.TlsBindings() { s := &http.Server{ Addr: a, TLSConfig: &tls.Config{ @@ -285,7 +286,7 @@ func (w *EchoWrapper) buildServers(c *EchoConfig, bindings *AddressPortConfig) { w.runner.AddJob(w.makeServerJob(&netHttpWrapper{s})) } - for _, a := range bindings.QuicBindings() { + for _, a := range w.AddressPortConfig.QuicBindings() { q := &http3.Server{ Addr: a, TLSConfig: http3.ConfigureTLSConfig(&tls.Config{ @@ -295,7 +296,7 @@ func (w *EchoWrapper) buildServers(c *EchoConfig, bindings *AddressPortConfig) { Handler: w, } w.runner.AddJob(w.makeServerJob(&http3Wrapper{q})) - w.Use(glmw.Http3AltSvcMiddleware(bindings.QuicPort)) + w.Use(glmw.Http3AltSvcMiddleware(w.AddressPortConfig.QuicPort)) } } @@ -307,12 +308,12 @@ func (w *EchoWrapper) configureBodyLimit(c *EchoConfig) { } } -func (w *EchoWrapper) configureRedirects(c *EchoConfig, bindings *AddressPortConfig) { +func (w *EchoWrapper) configureRedirects(c *EchoConfig) { metricsSkipper := makeMiddlewareSkipper(c.PrometheusConfig) w.Use(glmw.HTTPSRedirectWithConfig(glmw.HTTPSRedirectConfig{ Skipper: metricsSkipper, - Port: bindings.TlsPort, + Port: w.AddressPortConfig.TlsPort, })) if c.RedirectToWWW { -- cgit v1.2.3