summaryrefslogtreecommitdiff
path: root/pkg/server/socket/dial.go
diff options
context:
space:
mode:
authorMikhail Osipov <mike.osipov@gmail.com>2020-12-16 15:27:48 +0300
committerMikhail Osipov <mike.osipov@gmail.com>2020-12-16 15:27:48 +0300
commit6fed9dd0dd62718f78eca11e30a71c2712636fbd (patch)
tree8d1f90b96efbe8ea8aea350c283325adc216ef9d /pkg/server/socket/dial.go
parent050ea053dd549f0dd01beddfcd74989858391fd7 (diff)
hook and socket args check fix, tests
Diffstat (limited to 'pkg/server/socket/dial.go')
-rw-r--r--pkg/server/socket/dial.go29
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{})
+}