package utils import ( "regexp" "strings" rotatelogs "github.com/lestrrat-go/file-rotatelogs" ) const ( EndTag = "NNNN" Expression = "(?s)ZCZC.*NNNN" ) var buffer []byte var RawLog *rotatelogs.RotateLogs func Append(data []byte) bool { buffer = append(buffer, data...) if buffer[len(buffer)-1] == '\r' { buffer = append(buffer, '\n') } return check() } func check() bool { teleString := string(buffer) if strings.Index(teleString, EndTag) > 0 { exp, _ := regexp.Compile(Expression) telegram := exp.FindString(string(buffer)) if len(telegram) > 0 { // Log.Info("telegram ", zap.String("text", telegram)) telegram = removeEmpty(telegram) + "\n" RawLog.Write([]byte(telegram)) buffer = nil InsertTelegram(telegram) return true } } return false } func removeEmpty(s string) string { return regexp.MustCompile(`[\t\r\n]+`).ReplaceAllString(strings.TrimSpace(s), "\n") }