diff --git a/modules/events_stream/events_stream.go b/modules/events_stream/events_stream.go index 5b4ec5f0..1acbcc52 100644 --- a/modules/events_stream/events_stream.go +++ b/modules/events_stream/events_stream.go @@ -88,17 +88,25 @@ func NewEventsStream(s *session.Session) *EventsStream { return mod.startWaitingFor(tag, timeout) })) - mod.AddHandler(session.NewModuleHandler("events.ignore FILTER", "events.ignore ([^\\s]+)", + ignore := session.NewModuleHandler("events.ignore FILTER", "events.ignore ([^\\s]+)", "Events with an identifier matching this filter will not be shown (use multiple times to add more filters).", func(args []string) error { return mod.ignoreList.Add(args[0]) - })) + }) - mod.AddHandler(session.NewModuleHandler("events.include FILTER", "events.include ([^\\s]+)", + ignore.Complete("events.ignore", s.EventsCompleter) + + mod.AddHandler(ignore) + + include := session.NewModuleHandler("events.include FILTER", "events.include ([^\\s]+)", "Used to remove filters passed with the events.ignore command.", func(args []string) error { return mod.ignoreList.Remove(args[0]) - })) + }) + + include.Complete("events.include", s.EventsCompleter) + + mod.AddHandler(include) mod.AddHandler(session.NewModuleHandler("events.filters", "", "Print the list of filters used to ignore events.", diff --git a/session/session.go b/session/session.go index c531b2e8..f019838b 100644 --- a/session/session.go +++ b/session/session.go @@ -210,6 +210,62 @@ func (s *Session) HIDCompleter(prefix string) []string { return macs } +func (s *Session) EventsCompleter(prefix string) []string { + events := []string{""} + all := []string{ + "sys.log", + "session.started", + "session.closing", + "update.available", + "mod.started", + "mod.stopped", + "endpoint.new", + "endpoint.lost", + "wifi.client.lost", + "wifi.client.probe", + "wifi.client.new", + "wifi.client.handshake", + "wifi.ap.new", + "wifi.ap.lost", + "ble.device.service.discovered", + "ble.device.characteristic.discovered", + "ble.device.connected", + "ble.device.new", + "ble.device.lost", + "ble.connection.timeout", + "hid.device.new", + "hid.device.lost", + "http.spoofed-request", + "http.spoofed-response", + "https.spoofed-request", + "https.spoofed-response", + "syn.scan", + "net.sniff.mdns", + "net.sniff.mdns", + "net.sniff.dot11", + "net.sniff.tcp", + "net.sniff.upnp", + "net.sniff.ntlm", + "net.sniff.ftp", + "net.sniff.udp", + "net.sniff.krb5", + "net.sniff.dns", + "net.sniff.teamviewer", + "net.sniff.http.request", + "net.sniff.http.response", + "net.sniff.sni", + } + + for _, e := range all { + if prefix == "" || strings.HasPrefix(e, prefix) { + events = append(events, e) + } + + } + + return events +} + func (s *Session) Module(name string) (err error, mod Module) { for _, m := range s.Modules { if m.Name() == name {