summaryrefslogtreecommitdiff
path: root/cmd/www-golangid/main.go
diff options
context:
space:
mode:
authorShulhan <m.shulhan@gmail.com>2026-02-02 21:37:02 +0700
committerShulhan <m.shulhan@gmail.com>2026-02-02 21:37:08 +0700
commit55e0b6e54a7ff0612646648fa3a5d3e7ff557ddb (patch)
tree3f0de6b7e1b2be7fa4627afcc714a7cf0676a3f3 /cmd/www-golangid/main.go
parent017a3b749fdb977bb1a99176989a8e148985ade1 (diff)
downloadgolang-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/main.go')
-rw-r--r--cmd/www-golangid/main.go16
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 {