From 5af6e4d1ec870ec1c688cc8a89c41ebf8f5976a3 Mon Sep 17 00:00:00 2001 From: Cameron Moore Date: Fri, 27 Dec 2019 12:01:12 -0600 Subject: [PATCH] Open listener port earlier --- webhook.go | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/webhook.go b/webhook.go index 2902030..f87be2c 100644 --- a/webhook.go +++ b/webhook.go @@ -112,6 +112,23 @@ func main() { hooksFiles = append(hooksFiles, "hooks.json") } + addr := fmt.Sprintf("%s:%d", *ip, *port) + + // Open listener early so we can drop privileges. + ln, err := net.Listen("tcp", addr) + if err != nil { + log.Printf("error listening on port: %s", err) + return + } + + if *setUID != 0 { + err := dropPrivileges(*setUID, *setGID) + if err != nil { + log.Printf("error dropping privileges: %s", err) + return + } + } + if *logPath != "" { file, err := os.OpenFile(*logPath, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666) if err != nil { @@ -217,29 +234,12 @@ func main() { r.HandleFunc(hooksURL, hookHandler) - addr := fmt.Sprintf("%s:%d", *ip, *port) - // Create common HTTP server settings svr := &http.Server{ Addr: addr, Handler: r, } - // Open listener - ln, err := net.Listen("tcp", addr) - if err != nil { - log.Printf("error listening on port: %s", err) - return - } - - if *setUID != 0 { - err := dropPrivileges(*setUID, *setGID) - if err != nil { - log.Printf("error dropping privileges: %s", err) - return - } - } - // Serve HTTP if !*secure { log.Printf("serving hooks on http://%s%s", addr, hooksURL)