feat(tfstated): bootstrap webui listening on a second port

This commit is contained in:
Julien Dessaux 2025-01-02 19:43:53 +01:00
parent 99ff8441da
commit 24bca7067b
Signed by: adyxax
GPG key ID: F92E51B86E07177E
4 changed files with 78 additions and 2 deletions

45
pkg/webui/run.go Normal file
View file

@ -0,0 +1,45 @@
package webui
import (
"context"
"log/slog"
"net"
"net/http"
"git.adyxax.org/adyxax/tfstated/pkg/database"
"git.adyxax.org/adyxax/tfstated/pkg/logger"
)
func Run(
ctx context.Context,
db *database.DB,
getenv func(string) string,
) *http.Server {
mux := http.NewServeMux()
addRoutes(
mux,
db,
)
host := getenv("TFSTATED_WEBUI_HOST")
if host == "" {
host = "127.0.0.1"
}
port := getenv("TFSTATED_WEBUI_PORT")
if port == "" {
port = "8081"
}
httpServer := &http.Server{
Addr: net.JoinHostPort(host, port),
Handler: logger.Middleware(mux, false),
}
go func() {
slog.Info("webui http server listening", "address", httpServer.Addr)
if err := httpServer.ListenAndServe(); err != nil && err != http.ErrServerClosed {
slog.Error("error listening and serving webui http server", "address", httpServer.Addr, "error", err)
}
}()
return httpServer
}