diff --git a/main.go b/main.go index c0396eae67b0a9add4f32fa039559287aa5b49f0..84e6f6dc0688347920580d126381830d861fe71e 100644 --- a/main.go +++ b/main.go @@ -9,6 +9,7 @@ import ( "log" "log/syslog" "os" + "strings" "time" "github.com/elastic/go-libaudit" @@ -19,7 +20,6 @@ import ( var ( reasmBufferSize = flag.Int("reassembler-buffer", 8192, "reassembler buffer size") reasmHorizon = flag.Duration("reassembler-timeout", 10*time.Second, "reassembled EOE event timeout") - idLookup = flag.Bool("id", true, "lookup uid and gid values in messages (requires -i)") ) func main() { @@ -36,24 +36,21 @@ func processLogs() error { if err != nil { return err } - defer output.Close() + defer output.Close() // nolint reassembler, err := libaudit.NewReassembler(*reasmBufferSize, *reasmHorizon, &streamHandler{output}) if err != nil { return fmt.Errorf("failed to create reassembler: %v", err) } - defer reassembler.Close() + defer reassembler.Close() // nolint // Start goroutine to periodically purge timed-out events. go func() { t := time.NewTicker(500 * time.Millisecond) defer t.Stop() - for { - select { - case <-t.C: - if reassembler.Maintain() != nil { - return - } + for range t.C { + if reassembler.Maintain() != nil { + return } } }() @@ -63,6 +60,14 @@ func processLogs() error { for s.Scan() { line := s.Text() + // Remove anything before the log type. + p := strings.Index(line, "type=") + if p < 0 { + continue + } else if p > 0 { + line = line[p:] + } + auditMsg, err := auparse.ParseLogLine(line) if err != nil { log.Printf("failed to parse message header: %v", err) @@ -97,9 +102,6 @@ func (s *streamHandler) EventsLost(count int) { log.Printf("detected the loss of %v sequences", count) } -func outputMultipleMessages(msgs []*auparse.AuditMessage) { -} - func printJSON(w io.Writer, v interface{}) error { lbuf := []byte("@cee:") jsonBytes, err := json.Marshal(v)