diff options
Diffstat (limited to 'pkg/server/hook/proxy.go')
| -rw-r--r-- | pkg/server/hook/proxy.go | 28 |
1 files changed, 7 insertions, 21 deletions
diff --git a/pkg/server/hook/proxy.go b/pkg/server/hook/proxy.go index bc6da18..4276d9a 100644 --- a/pkg/server/hook/proxy.go +++ b/pkg/server/hook/proxy.go @@ -3,12 +3,11 @@ package hook import ( "bufio" "bytes" - "errors" "fmt" "regexp" + "tunnel/pkg/http" "tunnel/pkg/server/env" - "tunnel/pkg/server/opts" "tunnel/pkg/server/queue" ) @@ -16,8 +15,8 @@ var addrPattern = "^([0-9a-zA-Z-.]+|\\[[0-9a-fA-F:]*\\]):[0-9]+$" var isGoodAddr = regexp.MustCompile(addrPattern).MatchString type proxyHook struct { - addr string - auth string + Addr string `opts:"required"` + Auth string } type proxy struct { @@ -67,15 +66,15 @@ func (p *proxy) Recv(rq, wq queue.Q) error { return queue.IoCopy(r, wq.Writer()) } -func (h *proxyHook) Open(env env.Env) (interface{}, error) { - addr := env.Expand(h.addr) +func (h *proxyHook) New(env env.Env) (interface{}, error) { + addr := env.Expand(h.Addr) if !isGoodAddr(addr) { return nil, fmt.Errorf("invalid addr '%s'", addr) } p := &proxy{ addr: addr, - auth: h.auth, + auth: h.Auth, c: make(chan bool), env: env, } @@ -87,19 +86,6 @@ func (h *proxyHook) Open(env env.Env) (interface{}, error) { return p, nil } -func newProxyHook(opts opts.Opts) (hook, error) { - h := &proxyHook{ - addr: opts["addr"], - auth: opts["auth"], - } - - if h.addr == "" { - return nil, errors.New("expected addr") - } - - return h, nil -} - func init() { - register("proxy", newProxyHook) + register("proxy", proxyHook{}) } |
