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") }