mirror of
https://github.com/netbirdio/netbird.git
synced 2024-11-23 16:43:29 +01:00
5c0b8a46f0
This PR adds system activity tracking. The management service records events like add/remove peer, group, rule, route, etc. The activity events are stored in the SQLite event store and can be queried by the HTTP API.
43 lines
1.0 KiB
Go
43 lines
1.0 KiB
Go
package activity
|
|
|
|
import (
|
|
"time"
|
|
)
|
|
|
|
// Event represents a network/system activity event.
|
|
type Event struct {
|
|
// Timestamp of the event
|
|
Timestamp time.Time
|
|
// Activity that was performed during the event
|
|
Activity Activity
|
|
// ID of the event (can be empty, meaning that it wasn't yet generated)
|
|
ID uint64
|
|
// InitiatorID is the ID of an object that initiated the event (e.g., a user)
|
|
InitiatorID string
|
|
// TargetID is the ID of an object that was effected by the event (e.g., a peer)
|
|
TargetID string
|
|
// AccountID is the ID of an account where the event happened
|
|
AccountID string
|
|
// Meta of the event, e.g. deleted peer information like name, IP, etc
|
|
Meta map[string]any
|
|
}
|
|
|
|
// Copy the event
|
|
func (e *Event) Copy() *Event {
|
|
|
|
meta := make(map[string]any, len(e.Meta))
|
|
for key, value := range e.Meta {
|
|
meta[key] = value
|
|
}
|
|
|
|
return &Event{
|
|
Timestamp: e.Timestamp,
|
|
Activity: e.Activity,
|
|
ID: e.ID,
|
|
InitiatorID: e.InitiatorID,
|
|
TargetID: e.TargetID,
|
|
AccountID: e.AccountID,
|
|
Meta: meta,
|
|
}
|
|
}
|