From 0380488cd2e12848f3d9de086cd2991035202ad2 Mon Sep 17 00:00:00 2001 From: DaneEveritt Date: Mon, 4 Jul 2022 17:55:17 -0400 Subject: [PATCH] Track power events --- router/websocket/websocket.go | 11 +++++------ server/activity.go | 14 +++++++++++++- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/router/websocket/websocket.go b/router/websocket/websocket.go index 8864686..3beb715 100644 --- a/router/websocket/websocket.go +++ b/router/websocket/websocket.go @@ -368,6 +368,10 @@ func (h *Handler) HandleInbound(ctx context.Context, m Message) error { return nil } + _ = h.ra.Save(h.server, server.ActivityPower, server.ActivityMeta{ + "signal": string(action), + }) + return err } 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. - e := h.ra.Event(server.ActivityCommandSent, server.ActivityMeta{ + _ = h.ra.Save(h.server, server.ActivityConsoleCommand, server.ActivityMeta{ "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, "")) } } diff --git a/server/activity.go b/server/activity.go index deba89f..0b2a3c9 100644 --- a/server/activity.go +++ b/server/activity.go @@ -13,7 +13,8 @@ type Event string type ActivityMeta map[string]interface{} const ( - ActivityCommandSent = Event("command.sent") + ActivityPower = Event("power") + ActivityConsoleCommand = Event("console_command") ) 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. func (ra RequestActivity) IP() string { return ra.ip