unix socket support (useful behind nginx proxy) (#143)

This commit is contained in:
Boris Rybalkin
2024-03-25 08:21:22 +00:00
committed by GitHub
parent 02832f9de4
commit e7639c2720
2 changed files with 18 additions and 7 deletions

3
.gitignore vendored
View File

@@ -14,4 +14,5 @@ session.dat
config.yml config.yml
cookies.txt cookies.txt
__debug* __debug*
ui/ ui/
.idea

View File

@@ -7,10 +7,12 @@ import (
"io" "io"
"io/fs" "io/fs"
"log/slog" "log/slog"
"net"
"net/http" "net/http"
"net/rpc" "net/rpc"
"os" "os"
"os/signal" "os/signal"
"strings"
"syscall" "syscall"
"time" "time"
@@ -76,9 +78,20 @@ func RunBlocking(host string, port int, frontend fs.FS, dbPath string) {
go gracefulShutdown(srv, &mdb) go gracefulShutdown(srv, &mdb)
go autoPersist(time.Minute*5, &mdb, logger) go autoPersist(time.Minute*5, &mdb, logger)
logger.Info("yt-dlp-webui started", slog.Int("port", port)) network := "tcp"
address := fmt.Sprintf("%s:%d", host, port)
if strings.HasPrefix(host, "/") {
network = "unix"
address = host
}
listener, err := net.Listen(network, address)
if err != nil {
logger.Error("failed to listen", slog.String("err", err.Error()))
return
}
if err := srv.ListenAndServe(); err != nil { logger.Info("yt-dlp-webui started", slog.String("address", address))
if err := srv.Serve(listener); err != nil {
logger.Warn("http server stopped", slog.String("err", err.Error())) logger.Warn("http server stopped", slog.String("err", err.Error()))
} }
} }
@@ -135,10 +148,7 @@ func newServer(c serverConfig) *http.Server {
// Logging // Logging
r.Route("/log", logging.ApplyRouter()) r.Route("/log", logging.ApplyRouter())
return &http.Server{ return &http.Server{Handler: r}
Addr: fmt.Sprintf("%s:%d", c.host, c.port),
Handler: r,
}
} }
func gracefulShutdown(srv *http.Server, db *internal.MemoryDB) { func gracefulShutdown(srv *http.Server, db *internal.MemoryDB) {