From 9b9c9b71416b2a5ea4c0fde0aee5dc75dffcd806 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vojt=C4=9Bch=20K=C3=A1n=C4=9B?= Date: Mon, 5 Oct 2026 16:54:59 +0200 Subject: [PATCH] Make the listen address configurable and allow unix domain socket and inetd style listeners --- main.go | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/main.go b/main.go index 7a4997e..cbb452a 100644 --- a/main.go +++ b/main.go @@ -4,8 +4,10 @@ import ( "encoding/json" "io" "log" + "net" "net/http" "os" + "strings" "sync" "github.com/gorilla/websocket" @@ -120,5 +122,34 @@ func main() { } } }) - log.Println(http.ListenAndServe(":8080", mux)) + + var addr string + if env, ok := os.LookupEnv("FANCYN_LISTEN"); ok { + addr = env + } else { + addr = "[::1]:8080" + } + var listener net.Listener + if addr == "inetd" { + if l, err := net.FileListener(os.Stdin); err == nil { + listener = l + } else { + log.Fatal(err) + } + } else if strings.HasPrefix(addr, "unix:") { + if l, err := net.Listen("unix", strings.TrimPrefix(addr, "unix:")); err == nil { + listener = l + } else { + log.Fatal(err) + } + } else { + if l, err := net.Listen("tcp", addr); err == nil { + listener = l + } else { + log.Fatal(err) + } + } + defer listener.Close() + log.Printf("Starting server on %s\n", addr) + log.Println(http.Serve(listener, mux)) }