From bc964ba711f03a2cb593d7af966303b847839dbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miroslav=20=C5=A0ediv=C3=BD?= Date: Sun, 6 Apr 2025 18:00:26 +0200 Subject: [PATCH] https: if we have legacy mode, we need to start local http server too. --- server/internal/http/manager.go | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/server/internal/http/manager.go b/server/internal/http/manager.go index b5753811..acea79db 100644 --- a/server/internal/http/manager.go +++ b/server/internal/http/manager.go @@ -2,6 +2,7 @@ package http import ( "context" + "net" "net/http" "os" @@ -56,11 +57,6 @@ func New(WebSocketManager types.WebSocketManager, ApiManager types.ApiManager, c return config.AllowOrigin(r.Header.Get("Origin")) })) - // Legacy handler - if viper.GetBool("legacy") { - legacy.New(config.Bind).Route(router) - } - batch := batchHandler{ Router: router, PathPrefix: "/api", @@ -122,6 +118,24 @@ func (manager *HttpManagerCtx) Start() { } }() manager.logger.Info().Msgf("https listening on %s", manager.http.Addr) + + // if we have legacy mode, we need to start local http server too + if viper.GetBool("legacy") { + // create a listener for the API server with a random port + listener, err := net.Listen("tcp", "127.0.0.1:0") + if err != nil { + manager.logger.Panic().Err(err).Msg("unable to start legacy http proxy") + } + + go func() { + if err := http.Serve(listener, manager.router); err != http.ErrServerClosed { + manager.logger.Panic().Err(err).Msg("unable to start http server") + } + }() + manager.logger.Info().Msgf("legacy proxy listening on %s", listener.Addr().String()) + + legacy.New(listener.Addr().String()).Route(manager.router) + } } else { go func() { if err := manager.http.ListenAndServe(); err != http.ErrServerClosed { @@ -129,6 +143,11 @@ func (manager *HttpManagerCtx) Start() { } }() manager.logger.Info().Msgf("http listening on %s", manager.http.Addr) + + // start legacy proxy if enabled + if viper.GetBool("legacy") { + legacy.New(manager.http.Addr).Route(manager.router) + } } }