diff options
| author | Shulhan <m.shulhan@gmail.com> | 2026-02-02 21:37:02 +0700 |
|---|---|---|
| committer | Shulhan <m.shulhan@gmail.com> | 2026-02-02 21:37:08 +0700 |
| commit | 55e0b6e54a7ff0612646648fa3a5d3e7ff557ddb (patch) | |
| tree | 3f0de6b7e1b2be7fa4627afcc714a7cf0676a3f3 /cmd/www-golangid | |
| parent | 017a3b749fdb977bb1a99176989a8e148985ade1 (diff) | |
| download | golang-id-web-55e0b6e54a7ff0612646648fa3a5d3e7ff557ddb.tar.xz | |
cmd/www-golangid: implement socket based activation using systemd
This allow running www-golangid only when activated by systemd in
local environment.
While at it, update all dependencies.
Diffstat (limited to 'cmd/www-golangid')
| -rw-r--r-- | cmd/www-golangid/main.go | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/cmd/www-golangid/main.go b/cmd/www-golangid/main.go index 36ca528..dcf2f42 100644 --- a/cmd/www-golangid/main.go +++ b/cmd/www-golangid/main.go @@ -11,6 +11,7 @@ import ( "git.sr.ht/~shulhan/ciigo" "git.sr.ht/~shulhan/pakakeh.go/lib/memfs" + "git.sr.ht/~shulhan/pakakeh.go/lib/systemd" ) var memFS *memfs.MemFS @@ -56,6 +57,21 @@ func main() { case cmdEmbed: err = ciigo.GoEmbed(embedOpts) default: + listeners, err := systemd.Listeners(true) + if err != nil { + log.Fatal(err) + } + if len(listeners) > 1 { + log.Fatal(`too many listeners received for activation`) + } + if len(listeners) == 1 { + serveOpts.Listener = listeners[0] + gotAddr := serveOpts.Listener.Addr().String() + if gotAddr != serveOpts.Address { + log.Fatalf(`invalid Listener address, got %s, want %s`, + gotAddr, serveOpts.Address) + } + } err = ciigo.Serve(serveOpts) } if err != nil { |
