mirror of
https://github.com/bettercap/bettercap
synced 2025-07-16 10:03:39 -07:00
new: added events.on (and other related commands) to trigger specific actions when an events happens
This commit is contained in:
parent
78c341c2b3
commit
1492bf5e40
24 changed files with 4475 additions and 0 deletions
|
@ -29,6 +29,7 @@ type EventsStream struct {
|
|||
output *os.File
|
||||
rotation rotation
|
||||
ignoreList *IgnoreList
|
||||
triggerList *TriggerList
|
||||
waitFor string
|
||||
waitChan chan *session.Event
|
||||
eventListener <-chan session.Event
|
||||
|
@ -45,6 +46,7 @@ func NewEventsStream(s *session.Session) *EventsStream {
|
|||
waitChan: make(chan *session.Event),
|
||||
waitFor: "",
|
||||
ignoreList: NewIgnoreList(),
|
||||
triggerList: NewTriggerList(),
|
||||
}
|
||||
|
||||
mod.AddHandler(session.NewModuleHandler("events.stream on", "",
|
||||
|
@ -70,6 +72,38 @@ func NewEventsStream(s *session.Session) *EventsStream {
|
|||
return mod.Show(limit)
|
||||
}))
|
||||
|
||||
on := session.NewModuleHandler("events.on TAG COMMANDS", `events\.on ([^\s]+) (.+)`,
|
||||
"Run COMMANDS when an event with the specified TAG is triggered.",
|
||||
func(args []string) error {
|
||||
return mod.addTrigger(args[0], args[1])
|
||||
})
|
||||
|
||||
on.Complete("events.on", s.EventsCompleter)
|
||||
|
||||
mod.AddHandler(on)
|
||||
|
||||
mod.AddHandler(session.NewModuleHandler("events.triggers", "",
|
||||
"Show the list of event triggers created by the events.on command.",
|
||||
func(args []string) error {
|
||||
return mod.showTriggers()
|
||||
}))
|
||||
|
||||
onClear := session.NewModuleHandler("events.trigger.delete TRIGGER_ID", `events\.trigger\.delete ([^\s]+)`,
|
||||
"Remove an event trigger given its TRIGGER_ID (use events.triggers to see the list of triggers).",
|
||||
func(args []string) error {
|
||||
return mod.clearTrigger(args[0])
|
||||
})
|
||||
|
||||
onClear.Complete("events.trigger.delete", mod.triggerList.Completer)
|
||||
|
||||
mod.AddHandler(onClear)
|
||||
|
||||
mod.AddHandler(session.NewModuleHandler("events.triggers.clear", "",
|
||||
"Remove all event triggers (use events.triggers to see the list of triggers).",
|
||||
func(args []string) error {
|
||||
return mod.clearTrigger("")
|
||||
}))
|
||||
|
||||
mod.AddHandler(session.NewModuleHandler("events.waitfor TAG TIMEOUT?", `events.waitfor ([^\s]+)([\s\d]*)`,
|
||||
"Wait for an event with the given tag either forever or for a timeout in seconds.",
|
||||
func(args []string) error {
|
||||
|
@ -242,6 +276,10 @@ func (mod *EventsStream) Start() error {
|
|||
mod.View(e, true)
|
||||
}
|
||||
|
||||
// this could generate sys.log events and lock the whole
|
||||
// events.stream, make it async
|
||||
go mod.dispatchTriggers(e)
|
||||
|
||||
case <-mod.quit:
|
||||
return
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue