diff --git a/watchdog/main.go b/watchdog/main.go index d22c7a52..dfcde9a2 100644 --- a/watchdog/main.go +++ b/watchdog/main.go @@ -1,6 +1,7 @@ package main import ( + "bytes" "io/ioutil" "log" "net/http" @@ -20,18 +21,31 @@ func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { if r.Method == "POST" { + process := os.Getenv("fprocess") + parts := strings.Split(process, " ") + targetCmd := exec.Command(parts[0], parts[1:]...) writer, _ := targetCmd.StdinPipe() + res, _ := ioutil.ReadAll(r.Body) + writer.Write(res) writer.Close() - out, err := targetCmd.Output() - if err != nil { - panic(err) - } + out, err := targetCmd.Output() + targetCmd.CombinedOutput() + if err != nil { + log.Println(targetCmd, err) + w.WriteHeader(500) + response := bytes.NewBufferString(err.Error()) + w.Write(response.Bytes()) + return + } + w.WriteHeader(200) + + // TODO: consider stdout to container as configurable via env-variable. os.Stdout.Write(out) w.Write(out) }