From 3d435041f74d9cfe764730056e613570740bc5c7 Mon Sep 17 00:00:00 2001 From: Clemens Hering Date: Sun, 1 Mar 2026 09:04:26 +0100 Subject: [PATCH] More Fixes --- .gitignore | 2 +- cmd/server/main.go | 48 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 cmd/server/main.go diff --git a/.gitignore b/.gitignore index 8cf51ed..099fe75 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ .gocache/ .gomodcache/ -server +/server .DS_Store diff --git a/cmd/server/main.go b/cmd/server/main.go new file mode 100644 index 0000000..15d2147 --- /dev/null +++ b/cmd/server/main.go @@ -0,0 +1,48 @@ +package main + +import ( + "context" + "log" + "net/http" + "os" + "os/signal" + "syscall" + "time" + + "kubeviz/internal/config" + "kubeviz/internal/httpserver" +) + +func main() { + cfg := config.Load() + srv, err := httpserver.New(cfg) + if err != nil { + log.Fatalf("failed to initialize server: %v", err) + } + + httpSrv := &http.Server{ + Addr: cfg.Addr, + Handler: srv.Handler(), + ReadTimeout: 20 * time.Second, + WriteTimeout: 20 * time.Second, + IdleTimeout: 60 * time.Second, + } + + go func() { + log.Printf("kubeviz server listening on %s", cfg.Addr) + if err := httpSrv.ListenAndServe(); err != nil && err != http.ErrServerClosed { + log.Fatalf("server failure: %v", err) + } + }() + + quit := make(chan os.Signal, 1) + signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM) + <-quit + + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + srv.Shutdown(ctx) + if err := httpSrv.Shutdown(ctx); err != nil { + log.Printf("graceful shutdown failed: %v", err) + } +}