From 3812ce4492d378de86219e934ba441541e1da76e Mon Sep 17 00:00:00 2001 From: Jean-Louis Huynen Date: Mon, 3 Feb 2020 14:47:44 +0100 Subject: [PATCH] add: [sshd] oldest / newest entries --- logparser/sshd.go | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/logparser/sshd.go b/logparser/sshd.go index a6770a7..f78032c 100644 --- a/logparser/sshd.go +++ b/logparser/sshd.go @@ -71,6 +71,43 @@ func (s *SshdParser) Parse(logline string) error { // Daily dstr := fmt.Sprintf("%v%v%v", parsedTime.Year(), fmt.Sprintf("%02d", int(parsedTime.Month())), fmt.Sprintf("%02d", int(parsedTime.Day()))) + + // Check current entry date as oldest if older than the current + var oldest string + if oldest, err = redis.String(r.Do("GET", "oldest")); err == redis.ErrNil { + r.Do("SET", "oldest", dstr) + } else if err != nil { + r.Close() + return err + } else { + // Check if dates are the same + if oldest != dstr { + // Check who is the oldest + parsedOldest, _ := time.Parse("2006-01-02", oldest) + if parsedTime.Before(parsedOldest) { + r.Do("SET", "oldest", dstr) + } + } + } + + // Check current entry date as oldest if older than the current + var newest string + if newest, err = redis.String(r.Do("GET", "newest")); err == redis.ErrNil { + r.Do("SET", "newest", dstr) + } else if err != nil { + r.Close() + return err + } else { + // Check if dates are the same + if newest != dstr { + // Check who is the newest + parsedNewest, _ := time.Parse("2006-01-02", newest) + if parsedTime.After(parsedNewest) { + r.Do("SET", "newest", dstr) + } + } + } + err = compileStats(s, dstr, "daily", md["src"], md["username"], md["host"]) if err != nil { r.Close()