diff --git a/tap/api/api.go b/tap/api/api.go index d83c05f96..77151ca33 100644 --- a/tap/api/api.go +++ b/tap/api/api.go @@ -6,7 +6,7 @@ type Extension struct { Name string Path string Plug *plugin.Plugin - Port string + Ports []string Dissector Dissector } diff --git a/tap/extensions/amqp/main.go b/tap/extensions/amqp/main.go index 9cb9c3797..c539ee9bd 100644 --- a/tap/extensions/amqp/main.go +++ b/tap/extensions/amqp/main.go @@ -15,11 +15,11 @@ type dissecting string func (g dissecting) Register(extension *api.Extension) { fmt.Printf("extension: %v\n", extension) - extension.Port = "5672" + extension.Ports = []string{"5671", "5672"} } func (g dissecting) Ping() { - fmt.Printf("pong\n") + fmt.Printf("pong AMQP\n") } // exported as symbol named "Greeter" diff --git a/tap/extensions/http/main.go b/tap/extensions/http/main.go index 92cb1d27c..e4de0d020 100644 --- a/tap/extensions/http/main.go +++ b/tap/extensions/http/main.go @@ -15,11 +15,11 @@ type dissecting string func (g dissecting) Register(extension *api.Extension) { fmt.Printf("extension: %v\n", extension) - extension.Port = "80" + extension.Ports = []string{"80", "8080", "443"} } func (g dissecting) Ping() { - fmt.Printf("pong\n") + fmt.Printf("pong HTTP\n") } // exported as symbol named "Greeter" diff --git a/tap/extensions/kafka/main.go b/tap/extensions/kafka/main.go index c61f63056..a67cd4185 100644 --- a/tap/extensions/kafka/main.go +++ b/tap/extensions/kafka/main.go @@ -15,11 +15,11 @@ type dissecting string func (g dissecting) Register(extension *api.Extension) { fmt.Printf("extension: %v\n", extension) - extension.Port = "9092" + extension.Ports = []string{"9092"} } func (g dissecting) Ping() { - fmt.Printf("pong\n") + fmt.Printf("pong Kafka\n") } // exported as symbol named "Greeter" diff --git a/tap/tcp_stream_factory.go b/tap/tcp_stream_factory.go index 8e62696dd..76dd8e22b 100644 --- a/tap/tcp_stream_factory.go +++ b/tap/tcp_stream_factory.go @@ -26,10 +26,19 @@ type tcpStreamFactory struct { const checkTLSPacketAmount = 100 +func containsPort(ports []string, port string) bool { + for _, x := range ports { + if x == port { + return true + } + } + return false +} + func (h *tcpStream) run(wg *sync.WaitGroup) { defer wg.Done() for _, extension := range extensions { - if extension.Port == h.transport.Dst().String() { + if containsPort(extension.Ports, h.transport.Dst().String()) { extension.Dissector.Ping() } }