Skip to content

Commit b95f511

Browse files
authored
Merge pull request #4 from thebinary/issue-2
add -to support for port only
2 parents 175cd29 + 3778160 commit b95f511

1 file changed

Lines changed: 27 additions & 1 deletion

File tree

main.go

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,14 @@ package main
22

33
import (
44
"flag"
5+
"fmt"
56
"log"
7+
"net"
68
"os"
79
"os/signal"
810
"os/user"
911
"path"
12+
"strconv"
1013
"strings"
1114
)
1215

@@ -22,6 +25,23 @@ var logReqHeader bool
2225
var logRespHeader bool
2326
var logRespBody bool
2427

28+
const flagToDescr = `local service adddress
29+
supported address formats:
30+
- [port]
31+
- :[port]
32+
- [ip]:[port]
33+
Note: [port] format (without colon) signifies 127.0.0.1:8080
34+
`
35+
36+
func sanitizeLocalAddress(addr string) (serviceAddr string, err error) {
37+
// if address has only digits consider it as port
38+
if port, err := strconv.Atoi(addr); err == nil {
39+
return fmt.Sprintf("127.0.0.1:%d", port), nil
40+
}
41+
_, _, err = net.SplitHostPort(addr)
42+
return addr, err
43+
}
44+
2545
func init() {
2646
// get current system user info
2747
cuUser, err := user.Current()
@@ -33,7 +53,7 @@ func init() {
3353
flag.StringVar(&porter, "using", "http://localhost:8888", "porter server address; API endpoint address")
3454
flag.StringVar(&serviceName, "as", "", "service name; defaults to what is given by porter server")
3555
flag.StringVar(&tunnelAddr, "via", "", "porter tunnel endpoint adddress; SSH address; defaults to 'using_host:22'")
36-
flag.StringVar(&localAddr, "to", "127.0.0.1:8080", "local listener adddress; local service listening address")
56+
flag.StringVar(&localAddr, "to", "127.0.0.1:8080", flagToDescr)
3757
flag.StringVar(&userName, "with-user", cuUser.Username, "username to use for porter")
3858
flag.StringVar(&keyFile, "with-key", defKeyFile, "private key to use for porter")
3959
//TODO: this remoteAddr should be handled by porter
@@ -43,6 +63,12 @@ func init() {
4363
flag.BoolVar(&logRespBody, "log.response.body", false, "log request body")
4464
flag.Parse()
4565

66+
localAddr, err = sanitizeLocalAddress(localAddr)
67+
if err != nil {
68+
fmt.Errorf("invalid form of -to address: ")
69+
os.Exit(1)
70+
}
71+
4672
// extract default tunnelAddr from porter url
4773
// eg: http://ported.example.com:8888 -> extract and convert -> ported.example.com:22
4874
if tunnelAddr == "" {

0 commit comments

Comments
 (0)