dnscrypt-proxy/dnscrypt-proxy/systemd_linux.go

31 lines
749 B
Go

package main
import (
"net"
"github.com/coreos/go-systemd/activation"
"github.com/coreos/go-systemd/daemon"
"github.com/jedisct1/dlog"
)
func (proxy *Proxy) SystemDListeners() error {
files := activation.Files(true)
for i, file := range files {
if listener, err := net.FileListener(file); err == nil {
dlog.Noticef("Wiring systemd TCP socket #%d, %s, %s", i, file.Name(), listener.Addr())
go proxy.tcpListener(listener.(*net.TCPListener))
} else if pc, err := net.FilePacketConn(file); err == nil {
dlog.Noticef("Wiring systemd UDP socket #%d, %s, %s", i, file.Name(), pc.LocalAddr())
go proxy.udpListener(pc.(*net.UDPConn))
}
file.Close()
}
return nil
}
func SystemDNotify() {
daemon.SdNotify(false, "READY=1")
}