From e2bee352dc2c3fbcb4c7f25c19061b95df7adec1 Mon Sep 17 00:00:00 2001 From: Daniel Langesten Date: Mon, 18 May 2015 12:44:38 +0200 Subject: bug fixes --- stdin.go | 58 +++++++++++++++++++++++++++++++++++----------------------- whois.go | 3 +++ 2 files changed, 38 insertions(+), 23 deletions(-) diff --git a/stdin.go b/stdin.go index 50976b7..2c9645f 100644 --- a/stdin.go +++ b/stdin.go @@ -49,34 +49,46 @@ func parseRawData(in <-chan []byte, cfg *Config) <-chan []RawData { } go func() { rDat := make([]RawData, 0) + relevant := false for line := range in { - if len(string(line)) > 0 && !strings.HasPrefix(string(line), "{") { - stlogger.Println("Got message:", strings.TrimSpace(string(line))) - //This should be a break in the output from pmacct - //so we deploy our collected data and set a new timeBin - ival, err := cfg.getInterval() - if err != nil { - stlogger.Println("Could not parse interval: ", err) + if relevant { + if strings.Contains(string(line), "END") { + relevant = false + continue } - timeBin = time.Now().Add(ival / -2) //Make sure we are inside the correct timeBin - //Send the data if we have something to send - if len(rDat) > 0 { - out <- rDat - rDat = make([]RawData, 0) + if len(string(line)) > 0 && !strings.HasPrefix(string(line), "{") { + stlogger.Println("Got message:", strings.TrimSpace(string(line))) + //This should be a break in the output from pmacct + //so we deploy our collected data and set a new timeBin + ival, err := cfg.getInterval() + if err != nil { + stlogger.Println("Could not parse interval: ", err) + } + timeBin = time.Now().Add(ival / -2) //Make sure we are inside the correct timeBin + //Send the data if we have something to send + if len(rDat) > 0 { + out <- rDat + rDat = make([]RawData, 0) + } + continue } - continue - } - var rd RawData - err := json.Unmarshal(line, &rd) - if err != nil { - stlogger.Println("Failed in parsing json:", err) - close(out) - return - } - rd.time = timeBin + var rd RawData + err := json.Unmarshal(line, &rd) + if err != nil { + stlogger.Println("Failed in parsing json:", err) + stlogger.Println("Line failed was:", string(line)) + continue + } + rd.time = timeBin - rDat = append(rDat, rd) + rDat = append(rDat, rd) + } else { + if strings.Contains(string(line), "START") { + relevant = true + continue + } + } } //If there is any unsent data after in is closed we make sure to send it. if len(rDat) > 0 { diff --git a/whois.go b/whois.go index 7e0a50e..bd4377e 100644 --- a/whois.go +++ b/whois.go @@ -59,6 +59,9 @@ func findIPBlock(domains ...string) (pairs map[string]string, err error) { pairs = make(map[string]string, len(lines)-2) for _, line := range lines[1 : len(lines)-1] { content := strings.Split(line, "|") + if len(content) < 3 { + continue + } ipaddr := strings.TrimSpace(content[1]) ipb := strings.TrimSpace(content[2]) pairs[ipaddr] = ipb -- cgit v1.1