diff options
| author | Mikhail Osipov <mike.osipov@gmail.com> | 2020-12-16 15:27:48 +0300 |
|---|---|---|
| committer | Mikhail Osipov <mike.osipov@gmail.com> | 2020-12-16 15:27:48 +0300 |
| commit | 6fed9dd0dd62718f78eca11e30a71c2712636fbd (patch) | |
| tree | 8d1f90b96efbe8ea8aea350c283325adc216ef9d /pkg/server/socket/dial.go | |
| parent | 050ea053dd549f0dd01beddfcd74989858391fd7 (diff) | |
hook and socket args check fix, tests
Diffstat (limited to 'pkg/server/socket/dial.go')
| -rw-r--r-- | pkg/server/socket/dial.go | 29 |
1 files changed, 11 insertions, 18 deletions
diff --git a/pkg/server/socket/dial.go b/pkg/server/socket/dial.go index 7623084..b2df3b7 100644 --- a/pkg/server/socket/dial.go +++ b/pkg/server/socket/dial.go @@ -4,36 +4,25 @@ import ( "fmt" "log" "net" - "strings" "time" + "tunnel/pkg/server/env" ) const defaultTimeout = 5 * time.Second type dialSocket struct { - proto, addr string -} - -func newDialSocket(proto, addr string) (S, error) { - return &dialSocket{proto: proto, addr: addr}, nil + Proto string `opts:"default:tcp"` + Addr string `opts:"required"` } func (s *dialSocket) String() string { - return fmt.Sprintf("%s/%s", s.proto, s.addr) + return fmt.Sprintf("%s/%s", s.Proto, s.Addr) } -func (s *dialSocket) Open(e env.Env) (Conn, error) { - addr := e.Expand(s.addr) - - switch s.proto { - case "tcp", "udp": - if !strings.Contains(addr, ":") { - addr = "localhost:" + addr - } - } - - conn, err := net.DialTimeout(s.proto, addr, defaultTimeout) +func (s *dialSocket) New(e env.Env) (Conn, error) { + proto, addr := parseProtoAddr(s.Proto, e.Expand(s.Addr)) + conn, err := net.DialTimeout(proto, addr, defaultTimeout) if err != nil { return nil, err } @@ -49,3 +38,7 @@ func (s *dialSocket) Open(e env.Env) (Conn, error) { func (s *dialSocket) Close() { } + +func init() { + register("dial", dialSocket{}) +} |
