45 lines
902 B
Go
45 lines
902 B
Go
package webui
|
|
|
|
import (
|
|
"context"
|
|
"log/slog"
|
|
"net"
|
|
"net/http"
|
|
|
|
"git.adyxax.org/adyxax/tfstated/pkg/database"
|
|
"git.adyxax.org/adyxax/tfstated/pkg/middlewares/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
|
|
}
|