package main import ( "context" "log" "net/http" "os" "os/signal" "syscall" "time" ) const defaultTargetURL = "https://venueaxe.com" func getEnv(key, fallback string) string { if value := os.Getenv(key); value != "" { return value } return fallback } func redirectHandler(targetURL string) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { http.Redirect(w, r, targetURL, http.StatusMovedPermanently) } } func main() { port := getEnv("PORT", "8080") targetURL := getEnv("TARGET_URL", defaultTargetURL) mux := http.NewServeMux() mux.HandleFunc("/", redirectHandler(targetURL)) server := &http.Server{ Addr: ":" + port, Handler: mux, ReadTimeout: 5 * time.Second, WriteTimeout: 10 * time.Second, IdleTimeout: 120 * time.Second, } // Channel to listen for interrupt signals for graceful shutdown stop := make(chan os.Signal, 1) signal.Notify(stop, os.Interrupt, syscall.SIGTERM) go func() { log.Printf("Starting redirect server on :%s -> %s", port, targetURL) if err := server.ListenAndServe(); err != nil && err != http.ErrServerClosed { log.Fatalf("HTTP server error: %v\n", err) } }() <-stop log.Println("Shutting down server gracefully...") ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) defer cancel() if err := server.Shutdown(ctx); err != nil { log.Fatalf("Server shutdown failed: %+v", err) } log.Println("Server exited") }