bettercap/modules/events_view.go
2018-02-01 10:52:03 +01:00

79 lines
1.7 KiB
Go

package modules
import (
"fmt"
"sort"
"strings"
"github.com/evilsocket/bettercap-ng/core"
"github.com/evilsocket/bettercap-ng/net"
"github.com/evilsocket/bettercap-ng/session"
)
const eventTimeFormat = "2006-01-02 15:04:05"
func (s EventsStream) viewLogEvent(e session.Event) {
fmt.Printf("[%s] [%s] (%s) %s\n",
e.Time.Format(eventTimeFormat),
core.Green(e.Tag),
e.Label(),
e.Data.(session.LogMessage).Message)
}
func (s EventsStream) viewTargetEvent(e session.Event) {
t := e.Data.(*net.Endpoint)
fmt.Printf("[%s] [%s] %s\n",
e.Time.Format(eventTimeFormat),
core.Green(e.Tag),
t)
}
func (s EventsStream) viewModuleEvent(e session.Event) {
fmt.Printf("[%s] [%s] %s\n",
e.Time.Format(eventTimeFormat),
core.Green(e.Tag),
e.Data)
}
func (s EventsStream) viewSnifferEvent(e session.Event) {
se := e.Data.(SnifferEvent)
fmt.Printf("[%s] [%s] %s > %s | ",
e.Time.Format(eventTimeFormat),
core.Green(e.Tag),
se.Source,
se.Destination)
keys := make([]string, 0)
for k, _ := range se.Data {
keys = append(keys, k)
}
sort.Strings(keys)
for _, k := range keys {
fmt.Printf("%s=%s ", core.Green(k), se.Data[k])
}
fmt.Println()
}
func (s *EventsStream) View(e session.Event, refresh bool) {
if s.filter == "" || strings.Contains(e.Tag, s.filter) {
if e.Tag == "sys.log" {
s.viewLogEvent(e)
} else if strings.HasPrefix(e.Tag, "target.") {
s.viewTargetEvent(e)
} else if strings.HasPrefix(e.Tag, "mod.") {
s.viewModuleEvent(e)
} else if strings.HasPrefix(e.Tag, "net.sniff.") {
s.viewSnifferEvent(e)
} else {
fmt.Printf("[%s] [%s] %v\n", e.Time.Format(eventTimeFormat), core.Green(e.Tag), e)
}
if refresh {
s.Session.Refresh()
}
}
}