Make the listen address configurable and allow unix domain socket and inetd style listeners

This commit is contained in:
Vojtěch Káně
2026-10-05 16:54:59 +02:00
parent 7f3f3e487a
commit 9b9c9b7141
+32 -1
View File
@@ -4,8 +4,10 @@ import (
"encoding/json" "encoding/json"
"io" "io"
"log" "log"
"net"
"net/http" "net/http"
"os" "os"
"strings"
"sync" "sync"
"github.com/gorilla/websocket" "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))
} }