mirror of
https://github.com/HavocFramework/Havoc
synced 2026-06-08 11:13:29 +00:00
65 lines
1.1 KiB
Go
65 lines
1.1 KiB
Go
package logr
|
|
|
|
import (
|
|
"bufio"
|
|
"log"
|
|
"os"
|
|
"regexp"
|
|
|
|
"Havoc/pkg/logger"
|
|
)
|
|
|
|
func strip(str []byte) []byte {
|
|
var (
|
|
ansi = "[\u001B\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[a-zA-Z\\d]*)*)?\u0007)|(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PRZcf-ntqry=><~]))"
|
|
re = regexp.MustCompile(ansi)
|
|
)
|
|
|
|
return []byte(re.ReplaceAllString(string(str), ""))
|
|
}
|
|
|
|
func (l Logr) ServerStdOutInit() {
|
|
var (
|
|
PathStdOut = l.Path + "/teamserver.log"
|
|
OldStdout = os.Stdout
|
|
|
|
StdRead, StdWrite, _ = os.Pipe()
|
|
)
|
|
|
|
File, err := os.OpenFile(PathStdOut, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
os.Stdout = StdWrite
|
|
|
|
logger.LoggerInstance = logger.NewLogger(StdWrite)
|
|
|
|
go func() {
|
|
var Reader = bufio.NewReader(StdRead)
|
|
|
|
for {
|
|
if Reader.Size() > 0 {
|
|
var (
|
|
rawLine, _, _ = Reader.ReadLine()
|
|
line = []byte(string(rawLine) + "\n")
|
|
)
|
|
|
|
if l.LogrSendText != nil {
|
|
l.LogrSendText(string(strip(rawLine)))
|
|
}
|
|
|
|
_, err := File.Write(strip(line))
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
_, err = OldStdout.Write(line)
|
|
if err != nil {
|
|
return
|
|
}
|
|
}
|
|
}
|
|
}()
|
|
}
|