Support listening on a unix socket

This commit is contained in:
Vojtěch Káně
2021-11-01 00:21:37 +01:00
parent 08c6afeecd
commit 04563d3c28

View File

@@ -5,9 +5,11 @@ import (
"html/template" "html/template"
"io/fs" "io/fs"
"log" "log"
"net"
"net/http" "net/http"
"net/url" "net/url"
"os" "os"
"strings"
"time" "time"
"vkane.cz/tinyquiz/pkg/model" "vkane.cz/tinyquiz/pkg/model"
"vkane.cz/tinyquiz/pkg/model/ent" "vkane.cz/tinyquiz/pkg/model/ent"
@@ -35,8 +37,14 @@ func setDefaultTemplateData(td *templateData) {
func main() { func main() {
var addr string var addr string
var socket bool
if env, ok := os.LookupEnv("TINYQUIZ_LISTEN"); ok { if env, ok := os.LookupEnv("TINYQUIZ_LISTEN"); ok {
addr = env addr = env
const unixPrefix = "unix:"
if strings.HasPrefix(addr, unixPrefix) {
socket = true
addr = strings.TrimPrefix(addr, unixPrefix)
}
} else { } else {
addr = "[::1]:8080" addr = "[::1]:8080"
} }
@@ -127,6 +135,13 @@ func main() {
Handler: mux, Handler: mux,
} }
log.Printf("Starting server on %s\n", addr) log.Printf("Starting server on %s\n", addr)
err := srv.ListenAndServe() if socket {
log.Fatal(err) if listener, err := net.Listen("unix", addr); err == nil {
log.Fatal(srv.Serve(listener))
} else {
errorLog.Fatal(err)
}
} else {
errorLog.Fatal(srv.ListenAndServe())
}
} }