From dd7153c8d87b21b044eb61d6495811b092893e37 Mon Sep 17 00:00:00 2001 From: Jochen Christ Date: Thu, 24 Oct 2019 09:00:32 +0200 Subject: [PATCH] Provide option to listen on specific TCP address https://github.com/cllunsford/aws-signing-proxy/issues/32 --- README.md | 1 + main.go | 9 +++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9b90776..f26c8c9 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,7 @@ General: * `-target` - AWS service to send requests to. Required. * `-port` - Port for the proxy to LISTEN on (will forward to whatever port you specify in target), default: `8080`. + * `-listen` - TCP address to listen on, e.g. `:8080` or `127.0.0.1:8080`. Optional. When specified, -port is ignored. * `-service` - The AWS service type you are sending to, default: `es`. This is required for the signing process. HTTP Connection Tuning: diff --git a/main.go b/main.go index 32ad538..ecd5538 100644 --- a/main.go +++ b/main.go @@ -24,7 +24,8 @@ import ( type EnvConfig struct { Target string - Port int `default:"8080"` + Port int `default:"8080"` + Listen string Service string `default:"es"` } @@ -143,6 +144,7 @@ func main() { var targetFlag = flag.String("target", e.Target, "target url to proxy to") var portFlag = flag.Int("port", e.Port, "listening port for proxy") + var listenFlag = flag.String("listen", e.Listen, "TCP address to listen on, e.g. :8080 or 127.0.0.1:8080. Optional. When specified, the port is ignored.") var serviceFlag = flag.String("service", e.Service, "AWS Service.") var regionFlag = flag.String("region", os.Getenv("AWS_REGION"), "AWS region for credentials") var flushInterval = flag.Duration("flush-interval", 0, "Flush interval to flush to the client while copying the response body.") @@ -186,7 +188,10 @@ func main() { // Start the proxy server proxy := NewSigningProxy(targetURL, creds, region, appC) - listenString := fmt.Sprintf(":%v", *portFlag) + listenString := *listenFlag + if len(listenString) == 0 { + listenString = fmt.Sprintf(":%v", *portFlag) + } fmt.Printf("Listening on %v\n", listenString) http.ListenAndServe(listenString, proxy) }