summaryrefslogtreecommitdiff
path: root/pkg/server/hook/tee.go
diff options
context:
space:
mode:
authorMikhail Osipov <mike.osipov@gmail.com>2020-05-27 17:29:59 +0300
committerMikhail Osipov <mike.osipov@gmail.com>2020-05-27 17:29:59 +0300
commite00995cf2a5968ae94d4dc0abfe21a66dae5cd54 (patch)
treeefc7c389818b9713d92dde5f231a71fde0185699 /pkg/server/hook/tee.go
parenta29c4614431c0f7b705ee793f0a98348cdd29595 (diff)
rename hook tee to dump
Diffstat (limited to 'pkg/server/hook/tee.go')
-rw-r--r--pkg/server/hook/tee.go115
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)
-}