diff options
Diffstat (limited to 'main.go')
| -rw-r--r-- | main.go | 40 |
1 files changed, 40 insertions, 0 deletions
@@ -0,0 +1,40 @@ +package main + +import ( + "context" + "log/slog" + "os" + "os/signal" + "syscall" + + "sdns/internal/server" +) + +func main() { + logger := slog.New(slog.NewJSONHandler(os.Stderr, &slog.HandlerOptions{ + Level: slog.LevelInfo, + })) + + addr := os.Getenv("SDNS_LISTEN") + if addr == "" { + addr = ":5353" + } + + ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM) + defer stop() + + srv, err := server.New(addr, logger) + if err != nil { + logger.Error("create server failed", "err", err) + os.Exit(1) + } + defer srv.Close() + + logger.Info("sdns starting", "addr", addr) + + if err := srv.Run(ctx); err != nil && err != context.Canceled { + logger.Error("server stopped with error", "err", err) + os.Exit(1) + } + logger.Info("sdns stopped cleanly") +} |
