diff --git a/agent/pkg/api/entry_streamer_socket_connector.go b/agent/pkg/api/entry_streamer_socket_connector.go index a8923cd34..e7d26f1eb 100644 --- a/agent/pkg/api/entry_streamer_socket_connector.go +++ b/agent/pkg/api/entry_streamer_socket_connector.go @@ -22,7 +22,7 @@ func (e *DefaultEntryStreamerSocketConnector) SendEntry(socketId int, entry *tap if params.EnableFullEntries { message, _ = models.CreateFullEntryWebSocketMessage(entry) } else { - protocol, ok := protocolsMap[entry.ProtocolId] + protocol, ok := protocolsMap[entry.Protocol.ToString()] if !ok { return fmt.Errorf("protocol not found, protocol: %v", protocol) } diff --git a/agent/pkg/api/main.go b/agent/pkg/api/main.go index 0a5f4aba3..c08a6bf47 100644 --- a/agent/pkg/api/main.go +++ b/agent/pkg/api/main.go @@ -126,7 +126,7 @@ func startReadingChannel(outputItems <-chan *tapApi.OutputChannelItem, extension serviceMapGenerator.NewTCPEntry(mizuEntry.Source, mizuEntry.Destination, &item.Protocol) oasGenerator := dependency.GetInstance(dependency.OasGeneratorDependency).(oas.OasGeneratorSink) - oasGenerator.HandleEntry(mizuEntry, &item.Protocol) + oasGenerator.HandleEntry(mizuEntry) } } diff --git a/agent/pkg/controllers/service_map_controller_test.go b/agent/pkg/controllers/service_map_controller_test.go index b990530e9..41d595f8f 100644 --- a/agent/pkg/controllers/service_map_controller_test.go +++ b/agent/pkg/controllers/service_map_controller_test.go @@ -36,11 +36,13 @@ var ( ) var ProtocolHttp = &tapApi.Protocol{ - Name: "http", + ProtocolSummary: tapApi.ProtocolSummary{ + Name: "http", + Version: "1.1", + Abbreviation: "HTTP", + }, LongName: "Hypertext Transfer Protocol -- HTTP/1.1", - Abbreviation: "HTTP", Macro: "http", - Version: "1.1", BackgroundColor: "#205cf5", ForegroundColor: "#ffffff", FontSize: 12, diff --git a/agent/pkg/entries/entries_provider.go b/agent/pkg/entries/entries_provider.go index b20f2c6f1..09973a299 100644 --- a/agent/pkg/entries/entries_provider.go +++ b/agent/pkg/entries/entries_provider.go @@ -38,7 +38,7 @@ func (e *BasenineEntriesProvider) GetEntries(entriesRequest *models.EntriesReque return nil, nil, err } - protocol, ok := app.ProtocolsMap[entry.ProtocolId] + protocol, ok := app.ProtocolsMap[entry.Protocol.ToString()] if !ok { return nil, nil, fmt.Errorf("protocol not found, protocol: %v", protocol) } @@ -77,7 +77,7 @@ func (e *BasenineEntriesProvider) GetEntry(singleEntryRequest *models.SingleEntr return nil, errors.New(string(bytes)) } - protocol, ok := app.ProtocolsMap[entry.ProtocolId] + protocol, ok := app.ProtocolsMap[entry.Protocol.ToString()] if !ok { return nil, fmt.Errorf("protocol not found, protocol: %v", protocol) } diff --git a/agent/pkg/oas/oas_generator.go b/agent/pkg/oas/oas_generator.go index e1d755d03..b007d06cf 100644 --- a/agent/pkg/oas/oas_generator.go +++ b/agent/pkg/oas/oas_generator.go @@ -16,7 +16,7 @@ var ( ) type OasGeneratorSink interface { - HandleEntry(mizuEntry *api.Entry, protocol *api.Protocol) + HandleEntry(mizuEntry *api.Entry) } type OasGenerator interface { @@ -58,12 +58,12 @@ func (g *defaultOasGenerator) IsStarted() bool { return g.started } -func (g *defaultOasGenerator) HandleEntry(mizuEntry *api.Entry, protocol *api.Protocol) { +func (g *defaultOasGenerator) HandleEntry(mizuEntry *api.Entry) { if !g.started { return } - if protocol.Name == "http" { + if mizuEntry.Protocol.Name == "http" { dest := mizuEntry.Destination.Name if dest == "" { logger.Log.Debugf("OAS: Unresolved entry %d", mizuEntry.Id) @@ -85,7 +85,7 @@ func (g *defaultOasGenerator) HandleEntry(mizuEntry *api.Entry, protocol *api.Pr g.handleHARWithSource(entryWSource) } else { - logger.Log.Debugf("OAS: Unsupported protocol in entry %d: %s", mizuEntry.Id, protocol.Name) + logger.Log.Debugf("OAS: Unsupported protocol in entry %d: %s", mizuEntry.Id, mizuEntry.Protocol.Name) } } diff --git a/agent/pkg/providers/stats_provider_test.go b/agent/pkg/providers/stats_provider_test.go index e8890a3a1..96f227f8d 100644 --- a/agent/pkg/providers/stats_provider_test.go +++ b/agent/pkg/providers/stats_provider_test.go @@ -26,7 +26,7 @@ func TestEntryAddedCount(t *testing.T) { entryBucketKey := time.Date(2021, 1, 1, 10, 0, 0, 0, time.UTC) valueLessThanBucketThreshold := time.Second * 130 - mockSummery := &api.BaseEntry{Protocol: api.Protocol{Name: "mock"}, Method: "mock-method", Timestamp: entryBucketKey.Add(valueLessThanBucketThreshold).UnixNano()} + mockSummery := &api.BaseEntry{Protocol: api.Protocol{ProtocolSummary: api.ProtocolSummary{Name: "mock"}}, Method: "mock-method", Timestamp: entryBucketKey.Add(valueLessThanBucketThreshold).UnixNano()} for _, entriesCount := range tests { t.Run(fmt.Sprintf("%d", entriesCount), func(t *testing.T) { for i := 0; i < entriesCount; i++ { @@ -61,7 +61,7 @@ func TestEntryAddedVolume(t *testing.T) { var expectedEntriesCount int var expectedVolumeInGB float64 - mockSummery := &api.BaseEntry{Protocol: api.Protocol{Name: "mock"}, Method: "mock-method", Timestamp: time.Date(2021, 1, 1, 10, 0, 0, 0, time.UTC).UnixNano()} + mockSummery := &api.BaseEntry{Protocol: api.Protocol{ProtocolSummary: api.ProtocolSummary{Name: "mock"}}, Method: "mock-method", Timestamp: time.Date(2021, 1, 1, 10, 0, 0, 0, time.UTC).UnixNano()} for _, data := range tests { t.Run(fmt.Sprintf("%d", len(data)), func(t *testing.T) { diff --git a/agent/pkg/servicemap/servicemap_test.go b/agent/pkg/servicemap/servicemap_test.go index 8840a87d4..2106b00c4 100644 --- a/agent/pkg/servicemap/servicemap_test.go +++ b/agent/pkg/servicemap/servicemap_test.go @@ -50,11 +50,13 @@ var ( IP: fmt.Sprintf("%s.%s", Ip, UnresolvedNodeName), } ProtocolHttp = &tapApi.Protocol{ - Name: "http", + ProtocolSummary: tapApi.ProtocolSummary{ + Name: "http", + Version: "1.1", + Abbreviation: "HTTP", + }, LongName: "Hypertext Transfer Protocol -- HTTP/1.1", - Abbreviation: "HTTP", Macro: "http", - Version: "1.1", BackgroundColor: "#205cf5", ForegroundColor: "#ffffff", FontSize: 12, @@ -63,11 +65,13 @@ var ( Priority: 0, } ProtocolRedis = &tapApi.Protocol{ - Name: "redis", + ProtocolSummary: tapApi.ProtocolSummary{ + Name: "redis", + Version: "3.x", + Abbreviation: "REDIS", + }, LongName: "Redis Serialization Protocol", - Abbreviation: "REDIS", Macro: "redis", - Version: "3.x", BackgroundColor: "#a41e11", ForegroundColor: "#ffffff", FontSize: 11, diff --git a/tap/api/api.go b/tap/api/api.go index 5a5b4f050..8c5a829ae 100644 --- a/tap/api/api.go +++ b/tap/api/api.go @@ -2,6 +2,7 @@ package api import ( "bufio" + "fmt" "net" "sync" "time" @@ -14,12 +15,20 @@ const UnknownNamespace = "" var UnknownIp = net.IP{0, 0, 0, 0} var UnknownPort uint16 = 0 +type ProtocolSummary struct { + Name string `json:"name"` + Version string `json:"version"` + Abbreviation string `json:"abbr"` +} + +func (protocol *ProtocolSummary) ToString() string { + return fmt.Sprintf("%s?%s?%s", protocol.Name, protocol.Version, protocol.Abbreviation) +} + type Protocol struct { - Name string `json:"name"` + ProtocolSummary LongName string `json:"longName"` - Abbreviation string `json:"abbr"` Macro string `json:"macro"` - Version string `json:"version"` BackgroundColor string `json:"backgroundColor"` ForegroundColor string `json:"foregroundColor"` FontSize int8 `json:"fontSize"` @@ -151,7 +160,7 @@ func (e *Emitting) Emit(item *OutputChannelItem) { type Entry struct { Id string `json:"id"` - ProtocolId string `json:"protocol"` + Protocol ProtocolSummary `json:"protocol"` Capture Capture `json:"capture"` Source *TCP `json:"src"` Destination *TCP `json:"dst"` diff --git a/tap/extensions/amqp/Makefile b/tap/extensions/amqp/Makefile index ddafae017..2f6ad538c 100644 --- a/tap/extensions/amqp/Makefile +++ b/tap/extensions/amqp/Makefile @@ -13,4 +13,4 @@ test-pull-bin: test-pull-expect: @mkdir -p expect - @[ "${skipexpect}" ] && echo "Skipping downloading expected JSONs" || gsutil -o 'GSUtil:parallel_process_count=5' -o 'GSUtil:parallel_thread_count=5' -m cp -r gs://static.up9.io/mizu/test-pcap/expect14/amqp/\* expect + @[ "${skipexpect}" ] && echo "Skipping downloading expected JSONs" || gsutil -o 'GSUtil:parallel_process_count=5' -o 'GSUtil:parallel_thread_count=5' -m cp -r gs://static.up9.io/mizu/test-pcap/expect15/amqp/\* expect diff --git a/tap/extensions/amqp/main.go b/tap/extensions/amqp/main.go index 2b0e61bc4..ffd8ad12e 100644 --- a/tap/extensions/amqp/main.go +++ b/tap/extensions/amqp/main.go @@ -13,11 +13,13 @@ import ( ) var protocol = api.Protocol{ - Name: "amqp", + ProtocolSummary: api.ProtocolSummary{ + Name: "amqp", + Version: "0-9-1", + Abbreviation: "AMQP", + }, LongName: "Advanced Message Queuing Protocol 0-9-1", - Abbreviation: "AMQP", Macro: "amqp", - Version: "0-9-1", BackgroundColor: "#ff6600", ForegroundColor: "#ffffff", FontSize: 12, @@ -27,7 +29,7 @@ var protocol = api.Protocol{ } var protocolsMap = map[string]*api.Protocol{ - fmt.Sprintf("%s/%s/%s", protocol.Name, protocol.Version, protocol.Abbreviation): &protocol, + protocol.ToString(): &protocol, } type dissecting string @@ -222,8 +224,8 @@ func (d dissecting) Analyze(item *api.OutputChannelItem, resolvedSource string, reqDetails["method"] = request["method"] return &api.Entry{ - ProtocolId: fmt.Sprintf("%s/%s/%s", protocol.Name, protocol.Version, protocol.Abbreviation), - Capture: item.Capture, + Protocol: protocol.ProtocolSummary, + Capture: item.Capture, Source: &api.TCP{ Name: resolvedSource, IP: item.ConnectionInfo.ClientIP, @@ -285,7 +287,7 @@ func (d dissecting) Summarize(entry *api.Entry) *api.BaseEntry { return &api.BaseEntry{ Id: entry.Id, - Protocol: *protocolsMap[entry.ProtocolId], + Protocol: *protocolsMap[entry.Protocol.ToString()], Capture: entry.Capture, Summary: summary, SummaryQuery: summaryQuery, @@ -329,7 +331,7 @@ func (d dissecting) Represent(request map[string]interface{}, response map[strin func (d dissecting) Macros() map[string]string { return map[string]string{ - `amqp`: fmt.Sprintf(`protocol == "%s/%s/%s"`, protocol.Name, protocol.Version, protocol.Abbreviation), + `amqp`: fmt.Sprintf(`protocol.name == "%s"`, protocol.Name), } } diff --git a/tap/extensions/amqp/main_test.go b/tap/extensions/amqp/main_test.go index 9b2727282..7cd0dd7fd 100644 --- a/tap/extensions/amqp/main_test.go +++ b/tap/extensions/amqp/main_test.go @@ -44,7 +44,7 @@ func TestRegister(t *testing.T) { func TestMacros(t *testing.T) { expectedMacros := map[string]string{ - "amqp": `protocol == "amqp/0-9-1/AMQP"`, + "amqp": `protocol.name == "amqp"`, } dissector := NewDissector() macros := dissector.Macros() diff --git a/tap/extensions/http/Makefile b/tap/extensions/http/Makefile index 022628cb2..8394dbdba 100644 --- a/tap/extensions/http/Makefile +++ b/tap/extensions/http/Makefile @@ -13,4 +13,4 @@ test-pull-bin: test-pull-expect: @mkdir -p expect - @[ "${skipexpect}" ] && echo "Skipping downloading expected JSONs" || gsutil -o 'GSUtil:parallel_process_count=5' -o 'GSUtil:parallel_thread_count=5' -m cp -r gs://static.up9.io/mizu/test-pcap/expect14/http/\* expect + @[ "${skipexpect}" ] && echo "Skipping downloading expected JSONs" || gsutil -o 'GSUtil:parallel_process_count=5' -o 'GSUtil:parallel_thread_count=5' -m cp -r gs://static.up9.io/mizu/test-pcap/expect15/http/\* expect diff --git a/tap/extensions/http/main.go b/tap/extensions/http/main.go index a8c3ac896..0b42a907d 100644 --- a/tap/extensions/http/main.go +++ b/tap/extensions/http/main.go @@ -15,11 +15,13 @@ import ( ) var http10protocol = api.Protocol{ - Name: "http", + ProtocolSummary: api.ProtocolSummary{ + Name: "http", + Version: "1.0", + Abbreviation: "HTTP", + }, LongName: "Hypertext Transfer Protocol -- HTTP/1.0", - Abbreviation: "HTTP", Macro: "http", - Version: "1.0", BackgroundColor: "#205cf5", ForegroundColor: "#ffffff", FontSize: 12, @@ -29,11 +31,13 @@ var http10protocol = api.Protocol{ } var http11protocol = api.Protocol{ - Name: "http", + ProtocolSummary: api.ProtocolSummary{ + Name: "http", + Version: "1.1", + Abbreviation: "HTTP", + }, LongName: "Hypertext Transfer Protocol -- HTTP/1.1", - Abbreviation: "HTTP", Macro: "http", - Version: "1.1", BackgroundColor: "#205cf5", ForegroundColor: "#ffffff", FontSize: 12, @@ -43,11 +47,13 @@ var http11protocol = api.Protocol{ } var http2Protocol = api.Protocol{ - Name: "http", + ProtocolSummary: api.ProtocolSummary{ + Name: "http", + Version: "2.0", + Abbreviation: "HTTP/2", + }, LongName: "Hypertext Transfer Protocol Version 2 (HTTP/2)", - Abbreviation: "HTTP/2", Macro: "http2", - Version: "2.0", BackgroundColor: "#244c5a", ForegroundColor: "#ffffff", FontSize: 11, @@ -57,11 +63,13 @@ var http2Protocol = api.Protocol{ } var grpcProtocol = api.Protocol{ - Name: "http", + ProtocolSummary: api.ProtocolSummary{ + Name: "http", + Version: "2.0", + Abbreviation: "gRPC", + }, LongName: "Hypertext Transfer Protocol Version 2 (HTTP/2) [ gRPC over HTTP/2 ]", - Abbreviation: "gRPC", Macro: "grpc", - Version: "2.0", BackgroundColor: "#244c5a", ForegroundColor: "#ffffff", FontSize: 11, @@ -71,11 +79,13 @@ var grpcProtocol = api.Protocol{ } var graphQL1Protocol = api.Protocol{ - Name: "http", + ProtocolSummary: api.ProtocolSummary{ + Name: "http", + Version: "1.1", + Abbreviation: "GQL", + }, LongName: "Hypertext Transfer Protocol -- HTTP/1.1 [ GraphQL over HTTP/1.1 ]", - Abbreviation: "GQL", Macro: "gql", - Version: "1.1", BackgroundColor: "#e10098", ForegroundColor: "#ffffff", FontSize: 12, @@ -85,11 +95,13 @@ var graphQL1Protocol = api.Protocol{ } var graphQL2Protocol = api.Protocol{ - Name: "http", + ProtocolSummary: api.ProtocolSummary{ + Name: "http", + Version: "2.0", + Abbreviation: "GQL", + }, LongName: "Hypertext Transfer Protocol Version 2 (HTTP/2) [ GraphQL over HTTP/2 ]", - Abbreviation: "GQL", Macro: "gql", - Version: "2.0", BackgroundColor: "#e10098", ForegroundColor: "#ffffff", FontSize: 12, @@ -99,12 +111,12 @@ var graphQL2Protocol = api.Protocol{ } var protocolsMap = map[string]*api.Protocol{ - fmt.Sprintf("%s/%s/%s", http10protocol.Name, http10protocol.Version, http10protocol.Abbreviation): &http10protocol, - fmt.Sprintf("%s/%s/%s", http11protocol.Name, http11protocol.Version, http11protocol.Abbreviation): &http11protocol, - fmt.Sprintf("%s/%s/%s", http2Protocol.Name, http2Protocol.Version, http2Protocol.Abbreviation): &http2Protocol, - fmt.Sprintf("%s/%s/%s", grpcProtocol.Name, grpcProtocol.Version, grpcProtocol.Abbreviation): &grpcProtocol, - fmt.Sprintf("%s/%s/%s", graphQL1Protocol.Name, graphQL1Protocol.Version, graphQL1Protocol.Abbreviation): &graphQL1Protocol, - fmt.Sprintf("%s/%s/%s", graphQL2Protocol.Name, graphQL2Protocol.Version, graphQL2Protocol.Abbreviation): &graphQL2Protocol, + http10protocol.ToString(): &http10protocol, + http11protocol.ToString(): &http11protocol, + http2Protocol.ToString(): &http2Protocol, + grpcProtocol.ToString(): &grpcProtocol, + graphQL1Protocol.ToString(): &graphQL1Protocol, + graphQL2Protocol.ToString(): &graphQL2Protocol, } const ( @@ -294,8 +306,8 @@ func (d dissecting) Analyze(item *api.OutputChannelItem, resolvedSource string, } return &api.Entry{ - ProtocolId: fmt.Sprintf("%s/%s/%s", item.Protocol.Name, item.Protocol.Version, item.Protocol.Abbreviation), - Capture: item.Capture, + Protocol: item.Protocol.ProtocolSummary, + Capture: item.Capture, Source: &api.TCP{ Name: resolvedSource, IP: item.ConnectionInfo.ClientIP, @@ -328,7 +340,7 @@ func (d dissecting) Summarize(entry *api.Entry) *api.BaseEntry { return &api.BaseEntry{ Id: entry.Id, - Protocol: *protocolsMap[entry.ProtocolId], + Protocol: *protocolsMap[entry.Protocol.ToString()], Capture: entry.Capture, Summary: summary, SummaryQuery: summaryQuery, @@ -515,10 +527,10 @@ func (d dissecting) Represent(request map[string]interface{}, response map[strin func (d dissecting) Macros() map[string]string { return map[string]string{ - `http`: fmt.Sprintf(`protocol == "%s/%s/%s" or protocol == "%s/%s/%s"`, http10protocol.Name, http10protocol.Version, http10protocol.Abbreviation, http11protocol.Name, http11protocol.Version, http11protocol.Abbreviation), - `http2`: fmt.Sprintf(`protocol == "%s/%s/%s"`, http2Protocol.Name, http2Protocol.Version, http2Protocol.Abbreviation), - `grpc`: fmt.Sprintf(`protocol == "%s/%s/%s"`, grpcProtocol.Name, grpcProtocol.Version, grpcProtocol.Abbreviation), - `gql`: fmt.Sprintf(`protocol == "%s/%s/%s" or protocol == "%s/%s/%s"`, graphQL1Protocol.Name, graphQL1Protocol.Version, graphQL1Protocol.Abbreviation, graphQL2Protocol.Name, graphQL2Protocol.Version, graphQL2Protocol.Abbreviation), + `http`: fmt.Sprintf(`protocol.abbr == "%s"`, http11protocol.Abbreviation), + `http2`: fmt.Sprintf(`protocol.abbr == "%s"`, http2Protocol.Abbreviation), + `grpc`: fmt.Sprintf(`protocol.abbr == "%s"`, grpcProtocol.Abbreviation), + `gql`: fmt.Sprintf(`protocol.abbr == "%s"`, graphQL1Protocol.Abbreviation), } } diff --git a/tap/extensions/http/main_test.go b/tap/extensions/http/main_test.go index dc969ee68..7b2a0c8fd 100644 --- a/tap/extensions/http/main_test.go +++ b/tap/extensions/http/main_test.go @@ -44,10 +44,10 @@ func TestRegister(t *testing.T) { func TestMacros(t *testing.T) { expectedMacros := map[string]string{ - "http": `protocol == "http/1.0/HTTP" or protocol == "http/1.1/HTTP"`, - "http2": `protocol == "http/2.0/HTTP/2"`, - "grpc": `protocol == "http/2.0/gRPC"`, - "gql": `protocol == "http/1.1/GQL" or protocol == "http/2.0/GQL"`, + "http": `protocol.abbr == "HTTP"`, + "http2": `protocol.abbr == "HTTP/2"`, + "grpc": `protocol.abbr == "gRPC"`, + "gql": `protocol.abbr == "GQL"`, } dissector := NewDissector() macros := dissector.Macros() diff --git a/tap/extensions/kafka/Makefile b/tap/extensions/kafka/Makefile index 180004d00..dcd0724ae 100644 --- a/tap/extensions/kafka/Makefile +++ b/tap/extensions/kafka/Makefile @@ -13,4 +13,4 @@ test-pull-bin: test-pull-expect: @mkdir -p expect - @[ "${skipexpect}" ] && echo "Skipping downloading expected JSONs" || gsutil -o 'GSUtil:parallel_process_count=5' -o 'GSUtil:parallel_thread_count=5' -m cp -r gs://static.up9.io/mizu/test-pcap/expect14/kafka/\* expect + @[ "${skipexpect}" ] && echo "Skipping downloading expected JSONs" || gsutil -o 'GSUtil:parallel_process_count=5' -o 'GSUtil:parallel_thread_count=5' -m cp -r gs://static.up9.io/mizu/test-pcap/expect15/kafka/\* expect diff --git a/tap/extensions/kafka/main.go b/tap/extensions/kafka/main.go index 895e09480..4fe2160f7 100644 --- a/tap/extensions/kafka/main.go +++ b/tap/extensions/kafka/main.go @@ -11,11 +11,13 @@ import ( ) var _protocol = api.Protocol{ - Name: "kafka", + ProtocolSummary: api.ProtocolSummary{ + Name: "kafka", + Version: "12", + Abbreviation: "KAFKA", + }, LongName: "Apache Kafka Protocol", - Abbreviation: "KAFKA", Macro: "kafka", - Version: "12", BackgroundColor: "#000000", ForegroundColor: "#ffffff", FontSize: 11, @@ -25,7 +27,7 @@ var _protocol = api.Protocol{ } var protocolsMap = map[string]*api.Protocol{ - fmt.Sprintf("%s/%s/%s", _protocol.Name, _protocol.Version, _protocol.Abbreviation): &_protocol, + _protocol.ToString(): &_protocol, } type dissecting string @@ -70,8 +72,8 @@ func (d dissecting) Analyze(item *api.OutputChannelItem, resolvedSource string, elapsedTime = 0 } return &api.Entry{ - ProtocolId: fmt.Sprintf("%s/%s/%s", _protocol.Name, _protocol.Version, _protocol.Abbreviation), - Capture: item.Capture, + Protocol: _protocol.ProtocolSummary, + Capture: item.Capture, Source: &api.TCP{ Name: resolvedSource, IP: item.ConnectionInfo.ClientIP, @@ -195,7 +197,7 @@ func (d dissecting) Summarize(entry *api.Entry) *api.BaseEntry { return &api.BaseEntry{ Id: entry.Id, - Protocol: *protocolsMap[entry.ProtocolId], + Protocol: *protocolsMap[entry.Protocol.ToString()], Capture: entry.Capture, Summary: summary, SummaryQuery: summaryQuery, @@ -250,7 +252,7 @@ func (d dissecting) Represent(request map[string]interface{}, response map[strin func (d dissecting) Macros() map[string]string { return map[string]string{ - `kafka`: fmt.Sprintf(`protocol == "%s/%s/%s"`, _protocol.Name, _protocol.Version, _protocol.Abbreviation), + `kafka`: fmt.Sprintf(`protocol.name == "%s"`, _protocol.Name), } } diff --git a/tap/extensions/kafka/main_test.go b/tap/extensions/kafka/main_test.go index 41016d008..eda159cbb 100644 --- a/tap/extensions/kafka/main_test.go +++ b/tap/extensions/kafka/main_test.go @@ -44,7 +44,7 @@ func TestRegister(t *testing.T) { func TestMacros(t *testing.T) { expectedMacros := map[string]string{ - "kafka": `protocol == "kafka/12/KAFKA"`, + "kafka": `protocol.name == "kafka"`, } dissector := NewDissector() macros := dissector.Macros() diff --git a/tap/extensions/redis/Makefile b/tap/extensions/redis/Makefile index eac30a4b8..0ae92052c 100644 --- a/tap/extensions/redis/Makefile +++ b/tap/extensions/redis/Makefile @@ -13,4 +13,4 @@ test-pull-bin: test-pull-expect: @mkdir -p expect - @[ "${skipexpect}" ] && echo "Skipping downloading expected JSONs" || gsutil -o 'GSUtil:parallel_process_count=5' -o 'GSUtil:parallel_thread_count=5' -m cp -r gs://static.up9.io/mizu/test-pcap/expect14/redis/\* expect + @[ "${skipexpect}" ] && echo "Skipping downloading expected JSONs" || gsutil -o 'GSUtil:parallel_process_count=5' -o 'GSUtil:parallel_thread_count=5' -m cp -r gs://static.up9.io/mizu/test-pcap/expect15/redis/\* expect diff --git a/tap/extensions/redis/main.go b/tap/extensions/redis/main.go index 57201a6e1..bda4fe04a 100644 --- a/tap/extensions/redis/main.go +++ b/tap/extensions/redis/main.go @@ -11,11 +11,13 @@ import ( ) var protocol = api.Protocol{ - Name: "redis", + ProtocolSummary: api.ProtocolSummary{ + Name: "redis", + Version: "3.x", + Abbreviation: "REDIS", + }, LongName: "Redis Serialization Protocol", - Abbreviation: "REDIS", Macro: "redis", - Version: "3.x", BackgroundColor: "#a41e11", ForegroundColor: "#ffffff", FontSize: 11, @@ -25,7 +27,7 @@ var protocol = api.Protocol{ } var protocolsMap = map[string]*api.Protocol{ - fmt.Sprintf("%s/%s/%s", protocol.Name, protocol.Version, protocol.Abbreviation): &protocol, + protocol.ToString(): &protocol, } type dissecting string @@ -78,8 +80,8 @@ func (d dissecting) Analyze(item *api.OutputChannelItem, resolvedSource string, elapsedTime = 0 } return &api.Entry{ - ProtocolId: fmt.Sprintf("%s/%s/%s", protocol.Name, protocol.Version, protocol.Abbreviation), - Capture: item.Capture, + Protocol: protocol.ProtocolSummary, + Capture: item.Capture, Source: &api.TCP{ Name: resolvedSource, IP: item.ConnectionInfo.ClientIP, @@ -123,7 +125,7 @@ func (d dissecting) Summarize(entry *api.Entry) *api.BaseEntry { return &api.BaseEntry{ Id: entry.Id, - Protocol: *protocolsMap[entry.ProtocolId], + Protocol: *protocolsMap[entry.Protocol.ToString()], Capture: entry.Capture, Summary: summary, SummaryQuery: summaryQuery, @@ -151,7 +153,7 @@ func (d dissecting) Represent(request map[string]interface{}, response map[strin func (d dissecting) Macros() map[string]string { return map[string]string{ - `redis`: fmt.Sprintf(`protocol == "%s/%s/%s"`, protocol.Name, protocol.Version, protocol.Abbreviation), + `redis`: fmt.Sprintf(`protocol.name == "%s"`, protocol.Name), } } diff --git a/tap/extensions/redis/main_test.go b/tap/extensions/redis/main_test.go index 474df0b69..08f1cab6d 100644 --- a/tap/extensions/redis/main_test.go +++ b/tap/extensions/redis/main_test.go @@ -45,7 +45,7 @@ func TestRegister(t *testing.T) { func TestMacros(t *testing.T) { expectedMacros := map[string]string{ - "redis": `protocol == "redis/3.x/REDIS"`, + "redis": `protocol.name == "redis"`, } dissector := NewDissector() macros := dissector.Macros()