Help us shape the future of Go! Take the 2026 Go Developer Survey

activity

package
v0.81.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 19, 2026 License: BSD-3-Clause, AGPL-3.0 Imports: 4 Imported by: 15

Documentation

Index

Constants

View Source
const (
	SystemInitiator = "sys"
)

Variables

This section is empty.

Functions

func RegisterActivityMap added in v0.26.1

func RegisterActivityMap(codes map[Activity]Code)

RegisterActivityMap adds new codes to the activity map

Types

type Activity

type Activity int

Activity that triggered an Event

const (
	// PeerAddedByUser indicates that a user added a new peer to the system
	PeerAddedByUser Activity = 0
	// PeerAddedWithSetupKey indicates that a new peer joined the system using a setup key
	PeerAddedWithSetupKey Activity = 1
	// UserJoined indicates that a new user joined the account
	UserJoined Activity = 2
	// UserInvited indicates that a new user was invited to join the account
	UserInvited Activity = 3
	// AccountCreated indicates that a new account has been created
	AccountCreated Activity = 4
	// PeerRemovedByUser indicates that a user removed a peer from the system
	PeerRemovedByUser Activity = 5
	// RuleAdded indicates that a user added a new rule
	RuleAdded Activity = 6
	// RuleUpdated indicates that a user updated a rule
	RuleUpdated Activity = 7
	// RuleRemoved indicates that a user removed a rule
	RuleRemoved Activity = 8
	// PolicyAdded indicates that a user added a new policy
	PolicyAdded Activity = 9
	// PolicyUpdated indicates that a user updated a policy
	PolicyUpdated Activity = 10
	// PolicyRemoved indicates that a user removed a policy
	PolicyRemoved Activity = 11
	// SetupKeyCreated indicates that a user created a new setup key
	SetupKeyCreated Activity = 12
	// SetupKeyUpdated indicates that a user updated a setup key
	SetupKeyUpdated Activity = 13
	// SetupKeyRevoked indicates that a user revoked a setup key
	SetupKeyRevoked Activity = 14
	// SetupKeyOverused indicates that setup key usage exhausted
	SetupKeyOverused Activity = 15
	// GroupCreated indicates that a user created a group
	GroupCreated Activity = 16
	// GroupUpdated indicates that a user updated a group
	GroupUpdated Activity = 17
	// GroupAddedToPeer indicates that a user added group to a peer
	GroupAddedToPeer Activity = 18
	// GroupRemovedFromPeer indicates that a user removed peer group
	GroupRemovedFromPeer Activity = 19
	// GroupAddedToUser indicates that a user added group to a user
	GroupAddedToUser Activity = 20
	// GroupRemovedFromUser indicates that a user removed a group from a user
	GroupRemovedFromUser Activity = 21
	// UserRoleUpdated indicates that a user changed the role of a user
	UserRoleUpdated Activity = 22
	// GroupAddedToSetupKey indicates that a user added group to a setup key
	GroupAddedToSetupKey Activity = 23
	// GroupRemovedFromSetupKey indicates that a user removed a group from a setup key
	GroupRemovedFromSetupKey Activity = 24
	// GroupAddedToDisabledManagementGroups indicates that a user added a group to the DNS setting Disabled management groups
	GroupAddedToDisabledManagementGroups Activity = 25
	// GroupRemovedFromDisabledManagementGroups indicates that a user removed a group from the DNS setting Disabled management groups
	GroupRemovedFromDisabledManagementGroups Activity = 26
	// RouteCreated indicates that a user created a route
	RouteCreated Activity = 27
	// RouteRemoved indicates that a user deleted a route
	RouteRemoved Activity = 28
	// RouteUpdated indicates that a user updated a route
	RouteUpdated Activity = 29
	// PeerSSHEnabled indicates that a user enabled SSH server on a peer
	PeerSSHEnabled Activity = 30
	// PeerSSHDisabled indicates that a user disabled SSH server on a peer
	PeerSSHDisabled Activity = 31
	// PeerRenamed indicates that a user renamed a peer
	PeerRenamed Activity = 32
	// PeerLoginExpirationEnabled indicates that a user enabled login expiration of a peer
	PeerLoginExpirationEnabled Activity = 33
	// PeerLoginExpirationDisabled indicates that a user disabled login expiration of a peer
	PeerLoginExpirationDisabled Activity = 34
	// NameserverGroupCreated indicates that a user created a nameservers group
	NameserverGroupCreated Activity = 35
	// NameserverGroupDeleted indicates that a user deleted a nameservers group
	NameserverGroupDeleted Activity = 36
	// NameserverGroupUpdated indicates that a user updated a nameservers group
	NameserverGroupUpdated Activity = 37
	// AccountPeerLoginExpirationEnabled indicates that a user enabled peer login expiration for the account
	AccountPeerLoginExpirationEnabled Activity = 38
	// AccountPeerLoginExpirationDisabled indicates that a user disabled peer login expiration for the account
	AccountPeerLoginExpirationDisabled Activity = 39
	// AccountPeerLoginExpirationDurationUpdated indicates that a user updated peer login expiration duration for the account
	AccountPeerLoginExpirationDurationUpdated Activity = 40
	// PersonalAccessTokenCreated indicates that a user created a personal access token
	PersonalAccessTokenCreated Activity = 41
	// PersonalAccessTokenDeleted indicates that a user deleted a personal access token
	PersonalAccessTokenDeleted Activity = 42
	// ServiceUserCreated indicates that a user created a service user
	ServiceUserCreated Activity = 43
	// ServiceUserDeleted indicates that a user deleted a service user
	ServiceUserDeleted Activity = 44
	// UserBlocked indicates that a user blocked another user
	UserBlocked Activity = 45
	// UserUnblocked indicates that a user unblocked another user
	UserUnblocked Activity = 46
	// UserDeleted indicates that a user deleted another user
	UserDeleted Activity = 47
	// GroupDeleted indicates that a user deleted group
	GroupDeleted Activity = 48
	// UserLoggedInPeer indicates that user logged in their peer with an interactive SSO login
	UserLoggedInPeer Activity = 49
	// PeerLoginExpired indicates that the user peer login has been expired and peer disconnected
	PeerLoginExpired Activity = 50
	// DashboardLogin indicates that the user logged in to the dashboard
	DashboardLogin Activity = 51
	// IntegrationCreated indicates that the user created an integration
	IntegrationCreated Activity = 52
	// IntegrationUpdated indicates that the user updated an integration
	IntegrationUpdated Activity = 53
	// IntegrationDeleted indicates that the user deleted an integration
	IntegrationDeleted Activity = 54
	// AccountPeerApprovalEnabled indicates that the user enabled peer approval for the account
	AccountPeerApprovalEnabled Activity = 55
	// AccountPeerApprovalDisabled indicates that the user disabled peer approval for the account
	AccountPeerApprovalDisabled Activity = 56
	// PeerApproved indicates that the peer has been approved
	PeerApproved Activity = 57
	// PeerApprovalRevoked indicates that the peer approval has been revoked
	PeerApprovalRevoked Activity = 58
	// TransferredOwnerRole indicates that the user transferred the owner role of the account
	TransferredOwnerRole Activity = 59
	// PostureCheckCreated indicates that the user created a posture check
	PostureCheckCreated Activity = 60
	// PostureCheckUpdated indicates that the user updated a posture check
	PostureCheckUpdated Activity = 61
	// PostureCheckDeleted indicates that the user deleted a posture check
	PostureCheckDeleted Activity = 62

	PeerInactivityExpirationEnabled  Activity = 63
	PeerInactivityExpirationDisabled Activity = 64

	AccountPeerInactivityExpirationEnabled         Activity = 65
	AccountPeerInactivityExpirationDisabled        Activity = 66
	AccountPeerInactivityExpirationDurationUpdated Activity = 67

	SetupKeyDeleted Activity = 68

	UserGroupPropagationEnabled  Activity = 69
	UserGroupPropagationDisabled Activity = 70

	AccountRoutingPeerDNSResolutionEnabled  Activity = 71
	AccountRoutingPeerDNSResolutionDisabled Activity = 72

	NetworkCreated Activity = 73
	NetworkUpdated Activity = 74
	NetworkDeleted Activity = 75

	NetworkResourceCreated Activity = 76
	NetworkResourceUpdated Activity = 77
	NetworkResourceDeleted Activity = 78

	NetworkRouterCreated Activity = 79
	NetworkRouterUpdated Activity = 80
	NetworkRouterDeleted Activity = 81

	ResourceAddedToGroup     Activity = 82
	ResourceRemovedFromGroup Activity = 83

	AccountDNSDomainUpdated Activity = 84

	AccountLazyConnectionEnabled  Activity = 85
	AccountLazyConnectionDisabled Activity = 86

	AccountNetworkRangeUpdated Activity = 87
	PeerIPUpdated              Activity = 88
	UserApproved               Activity = 89
	UserRejected               Activity = 90
	UserCreated                Activity = 91

	AccountAutoUpdateVersionUpdated Activity = 92

	IdentityProviderCreated Activity = 93
	IdentityProviderUpdated Activity = 94
	IdentityProviderDeleted Activity = 95

	DNSZoneCreated Activity = 96
	DNSZoneUpdated Activity = 97
	DNSZoneDeleted Activity = 98

	DNSRecordCreated Activity = 99
	DNSRecordUpdated Activity = 100
	DNSRecordDeleted Activity = 101

	JobCreatedByUser Activity = 102

	UserPasswordChanged Activity = 103

	UserInviteLinkCreated     Activity = 104
	UserInviteLinkAccepted    Activity = 105
	UserInviteLinkRegenerated Activity = 106
	UserInviteLinkDeleted     Activity = 107

	ServiceCreated Activity = 108
	ServiceUpdated Activity = 109
	ServiceDeleted Activity = 110

	// PeerServiceExposed indicates that a peer exposed a service via the reverse proxy
	PeerServiceExposed Activity = 111
	// PeerServiceUnexposed indicates that a peer-exposed service was removed
	PeerServiceUnexposed Activity = 112
	// PeerServiceExposeExpired indicates that a peer-exposed service was removed due to TTL expiration
	PeerServiceExposeExpired Activity = 113

	// AccountPeerExposeEnabled indicates that a user enabled peer expose for the account
	AccountPeerExposeEnabled Activity = 114
	// AccountPeerExposeDisabled indicates that a user disabled peer expose for the account
	AccountPeerExposeDisabled Activity = 115

	// AccountAutoUpdateAlwaysEnabled indicates that a user enabled always auto-update for the account
	AccountAutoUpdateAlwaysEnabled Activity = 116
	// AccountAutoUpdateAlwaysDisabled indicates that a user disabled always auto-update for the account
	AccountAutoUpdateAlwaysDisabled Activity = 117

	// DomainAdded indicates that a user added a custom domain
	DomainAdded Activity = 118
	// DomainDeleted indicates that a user deleted a custom domain
	DomainDeleted Activity = 119
	// DomainValidated indicates that a custom domain was validated
	DomainValidated Activity = 120
	// AccountIPv6Enabled indicates that a user enabled IPv6 overlay for the account
	AccountIPv6Enabled Activity = 121
	// AccountIPv6Disabled indicates that a user disabled IPv6 overlay for the account
	AccountIPv6Disabled Activity = 122

	// AccountLocalMfaEnabled indicates that a user enabled TOTP MFA for local users
	AccountLocalMfaEnabled Activity = 123
	// AccountLocalMfaDisabled indicates that a user disabled TOTP MFA for local users
	AccountLocalMfaDisabled Activity = 124
	// UserExtendedPeerSession indicates that a user refreshed their peer's
	// SSO session deadline via ExtendAuthSession without re-establishing the
	// tunnel. Distinct from UserLoggedInPeer (full interactive login).
	UserExtendedPeerSession Activity = 125

	// AgentNetworkProviderCreated indicates that a user created an Agent Network provider
	AgentNetworkProviderCreated Activity = 126
	// AgentNetworkProviderUpdated indicates that a user updated an Agent Network provider
	AgentNetworkProviderUpdated Activity = 127
	// AgentNetworkProviderDeleted indicates that a user deleted an Agent Network provider
	AgentNetworkProviderDeleted Activity = 128

	// AgentNetworkPolicyCreated indicates that a user created an Agent Network policy
	AgentNetworkPolicyCreated Activity = 129
	// AgentNetworkPolicyUpdated indicates that a user updated an Agent Network policy
	AgentNetworkPolicyUpdated Activity = 130
	// AgentNetworkPolicyDeleted indicates that a user deleted an Agent Network policy
	AgentNetworkPolicyDeleted Activity = 131

	// AgentNetworkGuardrailCreated indicates that a user created an Agent Network guardrail
	AgentNetworkGuardrailCreated Activity = 132
	// AgentNetworkGuardrailUpdated indicates that a user updated an Agent Network guardrail
	AgentNetworkGuardrailUpdated Activity = 133
	// AgentNetworkGuardrailDeleted indicates that a user deleted an Agent Network guardrail
	AgentNetworkGuardrailDeleted Activity = 134

	// AgentNetworkBudgetRuleCreated indicates that a user created an Agent Network budget rule
	AgentNetworkBudgetRuleCreated Activity = 135
	// AgentNetworkBudgetRuleUpdated indicates that a user updated an Agent Network budget rule
	AgentNetworkBudgetRuleUpdated Activity = 136
	// AgentNetworkBudgetRuleDeleted indicates that a user deleted an Agent Network budget rule
	AgentNetworkBudgetRuleDeleted Activity = 137

	// AgentNetworkSettingsUpdated indicates that a user updated Agent Network account settings
	AgentNetworkSettingsUpdated Activity = 139

	// AccountMetricsPushEnabled indicates that a user enabled metrics push for the account
	AccountMetricsPushEnabled Activity = 140
	// AccountMetricsPushDisabled indicates that a user disabled metrics push for the account
	AccountMetricsPushDisabled Activity = 141

	// AgentNetworkSettingsDeleted indicates that a user deleted the Agent Network account settings, releasing the endpoint
	AgentNetworkSettingsDeleted Activity = 142

	// CustomDomainValidationExpired indicates that an unvalidated domain registration expired.
	CustomDomainValidationExpired Activity = 143

	// AccountPeerHostnameCollisionRejectionEnabled indicates that a user enabled rejecting peer hostname collisions for the account
	AccountPeerHostnameCollisionRejectionEnabled Activity = 144
	// AccountPeerHostnameCollisionRejectionDisabled indicates that a user disabled rejecting peer hostname collisions for the account
	AccountPeerHostnameCollisionRejectionDisabled Activity = 145

	AccountDeleted Activity = 99999
)

Existing consts must not be changed, as this will break the compatibility with the existing data

func (Activity) Message

func (a Activity) Message() string

Message returns a string representation of an activity

func (Activity) StringCode

func (a Activity) StringCode() string

StringCode returns a string code of the activity

type ActivityDescriber added in v0.26.1

type ActivityDescriber interface {
	StringCode() string
	Message() string
}

ActivityDescriber is an interface that describes an activity

type Code added in v0.22.7

type Code struct {
	Message string
	Code    string
}

Code is an activity string representation

type DeletedUser added in v0.45.0

type DeletedUser struct {
	ID      string `gorm:"primaryKey"`
	Email   string `gorm:"not null"`
	Name    string
	EncAlgo string `gorm:"not null"`
}

type Event

type Event struct {
	// Timestamp of the event
	Timestamp time.Time
	// Activity that was performed during the event
	Activity Activity `gorm:"type:integer"`
	// ID of the event (can be empty, meaning that it wasn't yet generated)
	ID uint64 `gorm:"primaryKey;autoIncrement"`
	// InitiatorID is the ID of an object that initiated the event (e.g., a user)
	InitiatorID string
	// InitiatorName is the name of an object that initiated the event.
	InitiatorName string `gorm:"-"`
	// InitiatorEmail is the email address of an object that initiated the event.
	InitiatorEmail string `gorm:"-"`
	// 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 `gorm:"index"`

	// Meta of the event, e.g. deleted peer information like name, IP, etc
	Meta map[string]any `gorm:"serializer:json"`
}

Event represents a network/system activity event.

func (*Event) Copy

func (e *Event) Copy() *Event

Copy the event

type InMemoryEventStore

type InMemoryEventStore struct {
	// contains filtered or unexported fields
}

InMemoryEventStore implements the Store interface storing data in-memory

func (*InMemoryEventStore) Close

func (store *InMemoryEventStore) Close(_ context.Context) error

Close cleans up the event list

func (*InMemoryEventStore) Get

func (store *InMemoryEventStore) Get(_ context.Context, accountID string, offset, limit int, descending bool) ([]*Event, error)

Get returns a list of ALL events that belong to the given accountID without taking offset, limit and order into consideration

func (*InMemoryEventStore) Save

func (store *InMemoryEventStore) Save(_ context.Context, event *Event) (*Event, error)

Save sets the Event.ID to 1

type Store

type Store interface {
	// Save an event in the store
	Save(ctx context.Context, event *Event) (*Event, error)
	// Get returns "limit" number of events from the "offset" index ordered descending or ascending by a timestamp
	Get(ctx context.Context, accountID string, offset, limit int, descending bool) ([]*Event, error)
	// Close the sink flushing events if necessary
	Close(ctx context.Context) error
}

Store provides an interface to store or stream events.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL