summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--stdin.go58
-rw-r--r--whois.go3
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