package main import ( "fmt" "log" "net" "net/http" "os" "git.giftfish.de/ston1th/godrop/v2" ) func main() { cfg := godrop.Config{ User: "nobody", Group: "nobody", Foreground: true, } err := godrop.Drop(cfg, func() (net.Listener, error) { return net.Listen("tcp", ":80") }) if err != nil { log.Fatal(err) } l, err := godrop.GetListener() if err != nil { log.Fatal("Failed to listen on FD 3:", err) } _, port, _ := net.SplitHostPort(l.Addr().String()) fmt.Printf("port %s\npid %d\nuid %d\ngid %d\n", port, os.Getpid(), os.Getuid(), os.Getgid()) http.Serve(l, http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "port %s\npid %d\nuid %d\ngid %d", port, os.Getpid(), os.Getuid(), os.Getgid()) })) }