Track power events

This commit is contained in:
DaneEveritt 2022-07-04 17:55:17 -04:00
parent 9eab08b92f
commit 0380488cd2
No known key found for this signature in database
GPG Key ID: EEA66103B3D71F53
2 changed files with 18 additions and 7 deletions

View File

@ -368,6 +368,10 @@ func (h *Handler) HandleInbound(ctx context.Context, m Message) error {
return nil return nil
} }
_ = h.ra.Save(h.server, server.ActivityPower, server.ActivityMeta{
"signal": string(action),
})
return err return err
} }
case SendServerLogsEvent: case SendServerLogsEvent:
@ -424,15 +428,10 @@ func (h *Handler) HandleInbound(ctx context.Context, m Message) error {
} }
} }
// Track this command sending event in the local database. _ = h.ra.Save(h.server, server.ActivityConsoleCommand, server.ActivityMeta{
e := h.ra.Event(server.ActivityCommandSent, server.ActivityMeta{
"command": strings.Join(m.Args, ""), "command": strings.Join(m.Args, ""),
}) })
if err := e.Save(); err != nil {
h.server.Log().WithField("error", err).Error("activity: failed to persist event to database")
}
return h.server.Environment.SendCommand(strings.Join(m.Args, "")) return h.server.Environment.SendCommand(strings.Join(m.Args, ""))
} }
} }

View File

@ -13,7 +13,8 @@ type Event string
type ActivityMeta map[string]interface{} type ActivityMeta map[string]interface{}
const ( const (
ActivityCommandSent = Event("command.sent") ActivityPower = Event("power")
ActivityConsoleCommand = Event("console_command")
) )
type Activity struct { type Activity struct {
@ -56,6 +57,17 @@ func (ra RequestActivity) Event(event Event, metadata ActivityMeta) Activity {
} }
} }
// Save creates a new event instance and saves it. If an error is encountered it is automatically
// logged to the provided server's error logging output. The error is also returned to the caller
// but can be ignored.
func (ra RequestActivity) Save(s *Server, event Event, metadata ActivityMeta) error {
if err := ra.Event(event, metadata).Save(); err != nil {
s.Log().WithField("error", err).WithField("event", event).Error("activity: failed to save event")
return errors.WithStack(err)
}
return nil
}
// IP returns the IP address associated with this entry. // IP returns the IP address associated with this entry.
func (ra RequestActivity) IP() string { func (ra RequestActivity) IP() string {
return ra.ip return ra.ip