diff options
Diffstat (limited to 'pkg/server')
| -rw-r--r-- | pkg/server/hook/tee.go | 21 | ||||
| -rw-r--r-- | pkg/server/socket/sys.go | 2 |
2 files changed, 16 insertions, 7 deletions
diff --git a/pkg/server/hook/tee.go b/pkg/server/hook/tee.go index 3f61b50..34b2eca 100644 --- a/pkg/server/hook/tee.go +++ b/pkg/server/hook/tee.go @@ -6,6 +6,8 @@ import ( "fmt" "os" "path" + "time" + "tunnel/pkg/config" "tunnel/pkg/server/env" "tunnel/pkg/server/opts" "tunnel/pkg/server/queue" @@ -15,16 +17,23 @@ const teeDefaultFile = "/tmp/tunnel/dump" type tee struct { f *os.File + h *teeHook } type teeHook struct { file string + time bool } func (t *tee) dump(s string, p []byte) error { var out bytes.Buffer - fmt.Fprintln(&out, s, len(p)) + if t.h.time { + now := time.Now().Format(config.TimeMsFormat) + fmt.Fprintln(&out, now, s, len(p)) + } else { + fmt.Fprintln(&out, s, len(p)) + } w := hex.Dumper(&out) w.Write(p) @@ -82,7 +91,7 @@ func (h *teeHook) Open(env env.Env) (interface{}, error) { tid, sid := env.Get("tunnel"), env.Get("stream") name := fmt.Sprintf("%s.%s.%s", file, tid, sid) - var t tee + t := &tee{h: h} if f, err := os.Create(name); err != nil { return nil, err @@ -90,13 +99,13 @@ func (h *teeHook) Open(env env.Env) (interface{}, error) { t.f = f } - return &t, nil + return t, nil } func newTeeHook(opts opts.Opts) (hook, error) { - h := &teeHook{} - if file, ok := opts["file"]; ok { - h.file = file + h := &teeHook{ + file: opts["file"], + time: opts.Bool("time"), } return h, nil } diff --git a/pkg/server/socket/sys.go b/pkg/server/socket/sys.go index 70b59a6..03ab6f3 100644 --- a/pkg/server/socket/sys.go +++ b/pkg/server/socket/sys.go @@ -158,7 +158,7 @@ func setSocketTransparent(fd int) error { func setConnTransparent(conn interface{}) error { f := func(fd int) error { - return setSocketTransparent(fd) + return setSocketTransparent(fd) } if err := withConnControl(conn, f); err != nil { |
