diff options
Diffstat (limited to 'examples/go-dashboard')
-rw-r--r-- | examples/go-dashboard/main.go | 75 |
1 files changed, 73 insertions, 2 deletions
diff --git a/examples/go-dashboard/main.go b/examples/go-dashboard/main.go index 89ec9adef..c3ae62b37 100644 --- a/examples/go-dashboard/main.go +++ b/examples/go-dashboard/main.go @@ -22,6 +22,48 @@ var ( nDPIsrvd_JSON_BYTES uint16 = 4 ) +type packet_event struct { + ThreadID uint8 `json:"thread_id"` + PacketID uint64 `json:"packet_id"` + + FlowID uint32 `json:"flow_id"` + FlowPacketID uint64 `json:"flow_packet_id"` + MaxPackets uint8 `json:"max_packets"` + + PacketEventID uint8 `json:"packet_event_id"` + PacketEventName string `json:"packet_event_name"` + PacketOversize bool `json:"pkt_oversize"` + PacketTimestamp uint64 `json:"pkt_ts"` + PacketLength uint32 `json:"pkt_len"` + Packet string `json:"pkt"` + PacketCaptureLength uint32 `json:"pkt_caplen"` + PacketType uint32 `json:"pkt_type"` + PacketIpOffset uint32 `json:"pkt_ipoffset"` +} + +type flow_event struct { + ThreadID uint8 `json:"thread_id"` + PacketID uint64 `json:"packet_id"` + + FlowID uint32 `json:"flow_id"` + FlowPacketID uint64 `json:"flow_packet_id"` + FlowFirstSeen uint64 `json:"flow_first_seen"` + FlowLastSeen uint64 `json:"flow_last_seen"` + FlowTotalLayer4DataLength uint64 `json:"flow_tot_l4_data_len"` + FlowMinLayer4DataLength uint64 `json:"flow_min_l4_data_len"` + FlowMaxLayer4DataLength uint64 `json:"flow_max_l4_data_len"` + FlowAvgLayer4DataLength uint64 `json:"flow_avg_l4_data_len"` + IsMidstreamFlow uint32 `json:"midstream"` +} + +type basic_event struct { + ThreadID uint8 `json:"thread_id"` + PacketID uint64 `json:"packet_id"` + + BasicEventID uint8 `json:"basic_event_id"` + BasicEventName string `json:"basic_event_name"` +} + func main() { ui.Init() @@ -29,7 +71,11 @@ func main() { WarningLogger = log.New(os.Stderr, "WARNING: ", log.Ldate|log.Ltime|log.Lshortfile) ErrorLogger = log.New(os.Stderr, "ERROR: ", log.Ldate|log.Ltime|log.Lshortfile) - conn, _ := net.Dial("tcp", "127.0.0.1:7000") + conn, err := net.Dial("tcp", "127.0.0.1:7000") + if err != nil { + ErrorLogger.Printf("Connection failed: %v\n", err) + os.Exit(1) + } buf := make([]byte, NETWORK_BUFFER_MAX_SIZE) var jsonStr string @@ -94,7 +140,32 @@ func main() { ErrorLogger.Printf("BUG: JSON error: %v\n", err) os.Exit(1) } - InfoLogger.Printf("JSON map: %v\n-------------------------------------------------------\n", jsonMap) + if jsonMap["packet_event_id"] != nil { + pe := packet_event{} + if err := json.Unmarshal([]byte(jsonStr[nDPIsrvd_JSON_BYTES:nDPIsrvd_JSON_BYTES+jsonLen]), &pe); err != nil { + ErrorLogger.Printf("BUG: JSON Unmarshal error: %v\n", err) + os.Exit(1) + } + InfoLogger.Printf("PACKET EVENT %v\n", pe) + } else if jsonMap["flow_event_id"] != nil { + fe := flow_event{} + if err := json.Unmarshal([]byte(jsonStr[nDPIsrvd_JSON_BYTES:nDPIsrvd_JSON_BYTES+jsonLen]), &fe); err != nil { + ErrorLogger.Printf("BUG: JSON Unmarshal error: %v\n", err) + os.Exit(1) + } + InfoLogger.Printf("FLOW EVENT %v\n", fe) + } else if jsonMap["basic_event_id"] != nil { + be := basic_event{} + if err := json.Unmarshal([]byte(jsonStr[nDPIsrvd_JSON_BYTES:nDPIsrvd_JSON_BYTES+jsonLen]), &be); err != nil { + ErrorLogger.Printf("BUG: JSON Unmarshal error: %v\n", err) + os.Exit(1) + } + InfoLogger.Printf("BASIC EVENT %v\n", be) + } else { + ErrorLogger.Printf("BUG: Unknown JSON: %v\n", jsonStr[nDPIsrvd_JSON_BYTES:nDPIsrvd_JSON_BYTES+jsonLen]) + os.Exit(1) + } + //InfoLogger.Printf("JSON map: %v\n-------------------------------------------------------\n", jsonMap) jsonStr = jsonStr[jsonLen+nDPIsrvd_JSON_BYTES:] jsonStrLen -= (jsonLen + nDPIsrvd_JSON_BYTES) |