diff --git a/handlers/packet_logger.go b/handlers/packet_logger.go index fb480ec..6fb5ed6 100644 --- a/handlers/packet_logger.go +++ b/handlers/packet_logger.go @@ -48,11 +48,6 @@ var MutedPackets = []string{ "packet.PlaySound", } -var ( - FLog io.Writer - dmpLock sync.Mutex -) - func dmpStruct(level int, inputStruct any, withType bool, isInList bool) (s string) { tBase := strings.Repeat("\t", level) @@ -173,15 +168,6 @@ func dmpStruct(level int, inputStruct any, withType bool, isInList bool) (s stri return s } -func DumpStruct(data interface{}) { - if FLog == nil { - return - } - - FLog.Write([]byte(dmpStruct(0, data, true, false))) - FLog.Write([]byte("\n\n\n")) -} - var dirS2C = color.GreenString("S") + "->" + color.CyanString("C") var dirC2S = color.CyanString("C") + "->" + color.GreenString("S") var pool = packet.NewPool() @@ -189,6 +175,7 @@ var pool = packet.NewPool() func NewDebugLogger(extraVerbose bool) *utils.ProxyHandler { var logPlain, logCrypt, logCryptEnc io.WriteCloser var packetsLogF *bufio.Writer + var dmpLock sync.Mutex if extraVerbose { // open plain text log @@ -196,19 +183,14 @@ func NewDebugLogger(extraVerbose bool) *utils.ProxyHandler { if err != nil { logrus.Error(err) } - // open gpg log - logCrypt, err := os.Create("packets.log.gpg") + logCryptEnc, err = crypt.Encer("packets.log.gpg") if err != nil { logrus.Error(err) - } else { - // encrypter for the log - logCryptEnc, err = crypt.Encer("packets.log", logCrypt) - if err != nil { - logrus.Error(err) - } } - packetsLogF = bufio.NewWriter(io.MultiWriter(logPlain, logCryptEnc)) + if logPlain != nil || logCryptEnc != nil { + packetsLogF = bufio.NewWriter(io.MultiWriter(logPlain, logCryptEnc)) + } } var proxy *utils.ProxyContext @@ -233,7 +215,7 @@ func NewDebugLogger(extraVerbose bool) *utils.ProxyHandler { }() pk.Marshal(protocol.NewReader(bytes.NewBuffer(payload), 0)) - if extraVerbose { + if packetsLogF != nil { dmpLock.Lock() packetsLogF.Write([]byte(dmpStruct(0, pk, true, false) + "\n\n\n")) dmpLock.Unlock() diff --git a/utils/crypt/crypt.go b/utils/crypt/crypt.go index 241af19..93bba7c 100644 --- a/utils/crypt/crypt.go +++ b/utils/crypt/crypt.go @@ -4,6 +4,7 @@ import ( "bytes" _ "embed" "io" + "os" "time" "golang.org/x/crypto/openpgp" @@ -42,9 +43,13 @@ func Enc(name string, data []byte) ([]byte, error) { return w.Bytes(), nil } -func Encer(name string, w io.Writer) (io.WriteCloser, error) { +func Encer(filename string) (io.WriteCloser, error) { + w, err := os.Create(filename) + if err != nil { + return nil, err + } wc, err := openpgp.Encrypt(w, recipients, nil, &openpgp.FileHints{ - IsBinary: true, FileName: name, ModTime: time.Now(), + IsBinary: true, FileName: filename, ModTime: time.Now(), }, nil) return wc, err }