summaryrefslogtreecommitdiff
path: root/pkg/server/hook/hook.go
diff options
context:
space:
mode:
authorMikhail Osipov <mike.osipov@gmail.com>2020-05-19 01:47:49 +0300
committerMikhail Osipov <mike.osipov@gmail.com>2020-05-23 01:14:11 +0300
commit1c4c61c90272fe251245da5f30b6134ba5a410f1 (patch)
treed2809dd944de691e66422aec1becb4acc17b9a19 /pkg/server/hook/hook.go
parent2c5259a594f5d8ddf12691deb6a79a0b566f024e (diff)
add redirect listen option
Diffstat (limited to 'pkg/server/hook/hook.go')
-rw-r--r--pkg/server/hook/hook.go13
1 files changed, 7 insertions, 6 deletions
diff --git a/pkg/server/hook/hook.go b/pkg/server/hook/hook.go
index 6ac51a1..3065cbe 100644
--- a/pkg/server/hook/hook.go
+++ b/pkg/server/hook/hook.go
@@ -10,12 +10,13 @@ import (
"tunnel/pkg/server/queue"
)
-type hookInitFunc func(opts.Opts, env.Env) (hook, error)
+type hookInitFunc func(opts.Opts) (hook, error)
var hooks = map[string]hookInitFunc{}
type Pipe struct {
priv interface{}
+ Hook H
Send Func
Recv Func
}
@@ -67,7 +68,7 @@ func (w *wrapper) Open(env env.Env) (*Pipe, error) {
return nil, err
}
- pipe := &Pipe{priv: it}
+ pipe := &Pipe{priv: it, Hook: w}
if s, ok := it.(Sender); ok {
pipe.Send = s.Send
@@ -90,7 +91,7 @@ func (p *Pipe) Close() {
}
}
-func New(desc string, env env.Env) (H, error) {
+func New(desc string) (H, error) {
name, opts := opts.Parse(desc)
reverse := false
@@ -101,8 +102,8 @@ func New(desc string, env env.Env) (H, error) {
if f, ok := hooks[name]; !ok {
return nil, fmt.Errorf("unknown hook '%s'", name)
- } else if h, err := f(opts, env); err != nil {
- return nil, err
+ } else if h, err := f(opts); err != nil {
+ return nil, fmt.Errorf("%s: %w", name, err)
} else {
w := &wrapper{
hook: h,
@@ -122,7 +123,7 @@ func register(name string, f hookInitFunc) {
}
func registerFunc(name string, p Func) {
- register(name, func(opts.Opts, env.Env) (hook, error) {
+ register(name, func(opts.Opts) (hook, error) {
return p, nil
})
}