Skip to content

Commit abf36b2

Browse files
committed
use canonical url notation
1 parent 6c27fa6 commit abf36b2

File tree

3 files changed

+23
-23
lines changed

3 files changed

+23
-23
lines changed

cmd/root.go

+21-13
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import (
1414
"syscall"
1515
"time"
1616

17+
"github.com/pkg/errors"
1718
"github.com/sirupsen/logrus"
1819
"github.com/spf13/cobra"
1920
)
@@ -27,7 +28,9 @@ var rootCmd = &cobra.Command{
2728
func init() {
2829
rootCmd.Flags().BoolP("quiet", "q", false, "Quiet mode")
2930
rootCmd.Flags().StringP("source", "s", "", "Source address")
31+
rootCmd.MarkFlagRequired("source")
3032
rootCmd.Flags().StringP("destination", "d", "", "Destination address")
33+
rootCmd.MarkFlagRequired("destination")
3134
}
3235

3336
func Execute() {
@@ -47,14 +50,18 @@ var (
4750
SIGTERM = syscall.Signal(0xf)
4851
)
4952

50-
func listen(addr string) (net.Listener, error) {
51-
//listen
52-
network := "tcp"
53-
if strings.HasPrefix(addr, "unix:") {
54-
network = "unix"
55-
addr = strings.TrimPrefix(addr, "unix:")
53+
func listen(url string) (net.Listener, error) {
54+
parts := strings.SplitN(url, "://", 2)
55+
if len(parts) != 2 {
56+
return nil, errors.Errorf("invalid url: %s", url)
5657
}
57-
return net.Listen(network, addr)
58+
proto := parts[0]
59+
addr := parts[1]
60+
listener, err := net.Listen(proto, addr)
61+
if err != nil {
62+
return nil, errors.WithStack(err)
63+
}
64+
return listener, err
5865
}
5966

6067
func runAction(cmd *cobra.Command, args []string) error {
@@ -120,13 +127,14 @@ var pool = sync.Pool{
120127
},
121128
}
122129

123-
func dial(destination string) (net.Conn, error) {
124-
network := "tcp"
125-
if strings.HasPrefix(destination, "unix:") {
126-
network = "unix"
127-
destination = strings.TrimPrefix(destination, "unix:")
130+
func dial(url string) (net.Conn, error) {
131+
parts := strings.SplitN(url, "://", 2)
132+
if len(parts) != 2 {
133+
return nil, errors.Errorf("invalid url: %s", url)
128134
}
129-
return net.Dial(network, destination)
135+
proto := parts[0]
136+
addr := parts[1]
137+
return net.Dial(proto, addr)
130138
}
131139

132140
func fwd(uconn net.Conn, destination string, quiet bool) {

go.mod

+1-4
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,13 @@ module github.com/robberphex/sockfwd
33
go 1.17
44

55
require (
6-
github.com/jpillora/opts v1.2.0
6+
github.com/pkg/errors v0.8.1
77
github.com/sirupsen/logrus v1.8.1
88
github.com/spf13/cobra v1.2.1
99
)
1010

1111
require (
12-
github.com/hashicorp/errwrap v1.0.0 // indirect
13-
github.com/hashicorp/go-multierror v1.0.0 // indirect
1412
github.com/inconshreveable/mousetrap v1.0.0 // indirect
15-
github.com/posener/complete v1.2.2-0.20190308074557-af07aa5181b3 // indirect
1613
github.com/spf13/pflag v1.0.5 // indirect
1714
golang.org/x/sys v0.0.0-20210510120138-977fb7262007 // indirect
1815
)

go.sum

+1-6
Original file line numberDiff line numberDiff line change
@@ -139,12 +139,10 @@ github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORR
139139
github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
140140
github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q=
141141
github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8=
142-
github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA=
143142
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
144143
github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=
145144
github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60=
146145
github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM=
147-
github.com/hashicorp/go-multierror v1.0.0 h1:iVjPR7a6H0tWELX5NxNe7bYopibicUzc7uPribsnS6o=
148146
github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk=
149147
github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU=
150148
github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU=
@@ -163,8 +161,6 @@ github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:
163161
github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
164162
github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM=
165163
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
166-
github.com/jpillora/opts v1.2.0 h1:H8vWooV3P9nsqmCcPgxNZyIa7GPOWA1KQFsfAzIkCtE=
167-
github.com/jpillora/opts v1.2.0/go.mod h1:7p7X/vlpKZmtaDFYKs956EujFqA6aCrOkcCaS6UBcR4=
168164
github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
169165
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
170166
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
@@ -192,13 +188,12 @@ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lN
192188
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
193189
github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
194190
github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
191+
github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=
195192
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
196193
github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI=
197194
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
198195
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
199196
github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI=
200-
github.com/posener/complete v1.2.2-0.20190308074557-af07aa5181b3 h1:GqpA1/5oN1NgsxoSA4RH0YWTaqvUlQNeOpHXD/JRbOQ=
201-
github.com/posener/complete v1.2.2-0.20190308074557-af07aa5181b3/go.mod h1:6gapUrK/U1TAN7ciCoNRIdVC5sbdBTUh1DKN0g6uH7E=
202197
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
203198
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
204199
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=

0 commit comments

Comments
 (0)