summaryrefslogtreecommitdiff
path: root/pkg/server/hook/proxy.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/server/hook/proxy.go')
-rw-r--r--pkg/server/hook/proxy.go28
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{})
}