diff options
| author | Mikhail Osipov <mike.osipov@gmail.com> | 2020-02-23 05:20:04 +0300 |
|---|---|---|
| committer | Mikhail Osipov <mike.osipov@gmail.com> | 2020-02-23 05:20:04 +0300 |
| commit | de868930e2301b68a50bde088dd83dc575b72c54 (patch) | |
| tree | 9f3df0bbdb5035100311fe7194aef66186478ec4 /pkg/server/socket/socket.go | |
| parent | 7c7fafefef94c5fb8bfe319e7745d80a1e88205d (diff) | |
prepare to auth
Diffstat (limited to 'pkg/server/socket/socket.go')
| -rw-r--r-- | pkg/server/socket/socket.go | 26 |
1 files changed, 9 insertions, 17 deletions
diff --git a/pkg/server/socket/socket.go b/pkg/server/socket/socket.go index bf754cf..c6219a5 100644 --- a/pkg/server/socket/socket.go +++ b/pkg/server/socket/socket.go @@ -2,6 +2,8 @@ package socket import ( "tunnel/pkg/server/queue" + "tunnel/pkg/server/opts" + "tunnel/pkg/server/env" "strings" "sync" "fmt" @@ -16,7 +18,7 @@ type Channel interface { } type S interface { - Open() (Channel, error) + Open(env env.Env) (Channel, error) Close() } @@ -106,7 +108,7 @@ func newListenSocket(proto, addr string) (S, error) { return s, nil } -func (s *listenSocket) Open() (Channel, error) { +func (s *listenSocket) Open(env env.Env) (Channel, error) { conn, err := s.listen.Accept() if err != nil { return nil, err @@ -137,7 +139,7 @@ func (s *dialSocket) String() string { return fmt.Sprintf("%s/%s", s.proto, s.addr) } -func (s *dialSocket) Open() (Channel, error) { +func (s *dialSocket) Open(env env.Env) (Channel, error) { conn, err := net.Dial(s.proto, s.addr) if err != nil { return nil, err @@ -148,19 +150,9 @@ func (s *dialSocket) Open() (Channel, error) { func (s *dialSocket) Close() { } -func New(name string) (S, error) { - vv := strings.Split(name, ",") - args := strings.Split(vv[0], "/") - opts := map[string]string{} - - for _, v := range vv[1:] { - ss := strings.SplitN(v, "=", 2) - if len(ss) < 2 { - opts[ss[0]] = "" - } else { - opts[ss[0]] = ss[1] - } - } +func New(desc string, env env.Env) (S, error) { + base, opts := opts.Parse(desc) + args := strings.Split(base, "/") var proto string var addr string @@ -176,7 +168,7 @@ func New(name string) (S, error) { } if addr == "" { - return nil, fmt.Errorf("bad socket '%s'", name) + return nil, fmt.Errorf("bad socket '%s'", desc) } if _, ok := opts["listen"]; ok { |
