Skip to content

Commit 0e573bb

Browse files
committed
server: add support for systemd-sockets
Signed-off-by: Oli Strik <[email protected]>
1 parent 73650f6 commit 0e573bb

File tree

1 file changed

+16
-1
lines changed

1 file changed

+16
-1
lines changed

tsidp-server.go

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import (
1919
"net/http"
2020
"os"
2121
"os/signal"
22+
"strconv"
2223
"strings"
2324
"time"
2425

@@ -197,7 +198,21 @@ func main() {
197198

198199
slog.Info("tsidp server started", slog.String("server_url", srv.ServerURL()))
199200

200-
if *flagUnixSocket != "" {
201+
if fdStr := os.Getenv("LISTEN_FDS"); fdStr != "" {
202+
fds, err := strconv.Atoi(fdStr)
203+
if err != nil {
204+
slog.Error("failed to listen on systemd socket", slog.Any("error", err))
205+
}
206+
// systemd socket activation starts at fd 3
207+
for fd := 3; fd < 3+fds; fd++ {
208+
file := os.NewFile(uintptr(fd), "systemd-socket")
209+
ln, err := net.FileListener(file)
210+
if err != nil {
211+
slog.Error("failed to listen on systemd socket", slog.Any("error", err))
212+
}
213+
lns = append(lns, ln)
214+
}
215+
} else if *flagUnixSocket != "" {
201216
socketPath := *flagUnixSocket
202217
info, err := os.Stat(socketPath)
203218
if err == nil && (info.Mode()&os.ModeSocket) != 0 {

0 commit comments

Comments
 (0)