Files
VenueaxeRedirect/main.go
2026-10-15 00:29:42 -04:00

66 lines
1.4 KiB
Go

package main
import (
"context"
"log"
"net/http"
"os"
"os/signal"
"syscall"
"time"
)
const defaultTargetURL = "https://venueaxe.app"
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")
}