diff options
| author | Mikhail Osipov <mike.osipov@gmail.com> | 2020-05-27 17:29:59 +0300 |
|---|---|---|
| committer | Mikhail Osipov <mike.osipov@gmail.com> | 2020-05-27 17:29:59 +0300 |
| commit | e00995cf2a5968ae94d4dc0abfe21a66dae5cd54 (patch) | |
| tree | efc7c389818b9713d92dde5f231a71fde0185699 /pkg/server/hook/tee.go | |
| parent | a29c4614431c0f7b705ee793f0a98348cdd29595 (diff) | |
rename hook tee to dump
Diffstat (limited to 'pkg/server/hook/tee.go')
| -rw-r--r-- | pkg/server/hook/tee.go | 115 |
1 files changed, 0 insertions, 115 deletions
diff --git a/pkg/server/hook/tee.go b/pkg/server/hook/tee.go deleted file mode 100644 index 34b2eca..0000000 --- a/pkg/server/hook/tee.go +++ /dev/null @@ -1,115 +0,0 @@ -package hook - -import ( - "bytes" - "encoding/hex" - "fmt" - "os" - "path" - "time" - "tunnel/pkg/config" - "tunnel/pkg/server/env" - "tunnel/pkg/server/opts" - "tunnel/pkg/server/queue" -) - -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 - - 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) - w.Close() - - if _, err := t.f.Write(out.Bytes()); err != nil { - return err - } - - return nil -} - -func (t *tee) Send(rq, wq queue.Q) error { - for b := range rq { - t.dump(">", b) - wq <- b - } - - return nil -} - -func (t *tee) Recv(rq, wq queue.Q) error { - for b := range rq { - t.dump("<", b) - wq <- b - } - - return nil -} - -func (t *tee) Close() { - t.f.Close() -} - -func (h *teeHook) where(env env.Env) string { - if h.file != "" { - return h.file - } - - if v := env.GetLocal("tee.file"); v != "" { - return v - } - - return teeDefaultFile -} - -func (h *teeHook) Open(env env.Env) (interface{}, error) { - file := h.where(env) - dir := path.Dir(file) - - if err := os.MkdirAll(dir, 0755); err != nil { - return nil, err - } - - tid, sid := env.Get("tunnel"), env.Get("stream") - name := fmt.Sprintf("%s.%s.%s", file, tid, sid) - - t := &tee{h: h} - - if f, err := os.Create(name); err != nil { - return nil, err - } else { - t.f = f - } - - return t, nil -} - -func newTeeHook(opts opts.Opts) (hook, error) { - h := &teeHook{ - file: opts["file"], - time: opts.Bool("time"), - } - return h, nil -} - -func init() { - register("tee", newTeeHook) -} |
