From 839f53d9b15e2784d121c6dca1fd4dd79e1fbd06 Mon Sep 17 00:00:00 2001 From: David Scott Date: Fri, 17 Jun 2016 11:11:10 +0100 Subject: [PATCH] proxy: add interactive mode with `-i` This allows the proxy to be run easily from a terminal or other script without requiring fd 3 to be open and writable. Signed-off-by: David Scott --- alpine/packages/proxy/proxy.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/alpine/packages/proxy/proxy.go b/alpine/packages/proxy/proxy.go index 30d7b11be..c89ff8db2 100644 --- a/alpine/packages/proxy/proxy.go +++ b/alpine/packages/proxy/proxy.go @@ -12,8 +12,14 @@ import ( "proxy/libproxy" ) +var interactiveMode bool + + // sendError signals the error to the parent and quits the process. func sendError(err error) { + if interactiveMode { + log.Fatal("Failed to set up proxy", err) + } f := os.NewFile(3, "signal-parent") fmt.Fprintf(f, "1\n%s", err) @@ -23,6 +29,10 @@ func sendError(err error) { // sendOK signals the parent that the forward is running. func sendOK() { + if interactiveMode { + log.Println("Proxy running") + return + } f := os.NewFile(3, "signal-parent") fmt.Fprint(f, "0\n") f.Close() @@ -45,9 +55,11 @@ func parseHostContainerAddrs() (host net.Addr, port int, container net.Addr) { hostPort = flag.Int("host-port", -1, "host port") containerIP = flag.String("container-ip", "", "container ip") containerPort = flag.Int("container-port", -1, "container port") + interactive = flag.Bool("i", false, "print success/failure to stdout/stderr") ) flag.Parse() + interactiveMode = *interactive switch *proto { case "tcp":