diff options
author | Toni Uhlig <matzeton@googlemail.com> | 2020-09-02 18:53:39 +0200 |
---|---|---|
committer | Toni Uhlig <matzeton@googlemail.com> | 2020-09-02 18:57:58 +0200 |
commit | 001f84af3b9bfd8427c99af1a380d40b6577489a (patch) | |
tree | 66840c24bd8a23c5b933cba6046c3d2d87a72431 /examples/go-dashboard | |
parent | 0a03293d16ca0fc9f493a58748da1c43d35782e4 (diff) |
go-dashboard: Added event structs and JSON unmarshal semantic.
Signed-off-by: Toni Uhlig <matzeton@googlemail.com>
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) |