112 lines
3.3 KiB
Go
112 lines
3.3 KiB
Go
package domain
|
|
|
|
import "time"
|
|
|
|
// GamePlayer is a local game identity and is never a platform console user.
|
|
type GamePlayer struct {
|
|
ID string
|
|
ServerInstanceID string
|
|
GamePlayerID string
|
|
DisplayName string
|
|
FirstSeenAt time.Time
|
|
LastSeenAt time.Time
|
|
LastEventAt time.Time
|
|
CreatedAt time.Time
|
|
UpdatedAt time.Time
|
|
}
|
|
type GamePlayerFilter struct {
|
|
ServerInstanceID string
|
|
Search string
|
|
Limit int
|
|
}
|
|
|
|
// GamePlayerAlias preserves a bounded name history for one local game player.
|
|
type GamePlayerAlias struct {
|
|
ID string
|
|
GamePlayerRecordID string
|
|
ServerInstanceID string
|
|
Alias string
|
|
FirstSeenAt time.Time
|
|
LastSeenAt time.Time
|
|
}
|
|
type GamePlayerAliasFilter struct {
|
|
GamePlayerRecordID string
|
|
ServerInstanceID string
|
|
Limit int
|
|
}
|
|
|
|
// GamePlayerSession records a successful, bounded SCUM session. No raw network data is present.
|
|
type GamePlayerSession struct {
|
|
ID string
|
|
GamePlayerRecordID string
|
|
ServerInstanceID string
|
|
SourceSessionID string
|
|
StartedAt time.Time
|
|
EndedAt time.Time
|
|
EndReason string
|
|
LastEventAt time.Time
|
|
}
|
|
type GamePlayerSessionFilter struct {
|
|
GamePlayerRecordID string
|
|
ServerInstanceID string
|
|
OpenOnly bool
|
|
Limit int
|
|
}
|
|
|
|
// GameAccessAttempt is review evidence. NetworkCorrelationKey is an irreversible server-local HMAC output.
|
|
type GameAccessAttempt struct {
|
|
ID string
|
|
ServerInstanceID string
|
|
GamePlayerRecordID string
|
|
EventID string
|
|
OccurredAt time.Time
|
|
Outcome string
|
|
Reason string
|
|
NetworkCorrelationKey string
|
|
ExpiresAt time.Time
|
|
}
|
|
type GameAccessAttemptFilter struct {
|
|
ServerInstanceID string
|
|
GamePlayerRecordID string
|
|
Limit int
|
|
}
|
|
type GameSecuritySignalStatus string
|
|
|
|
const (
|
|
GameSecuritySignalOpen GameSecuritySignalStatus = "open"
|
|
GameSecuritySignalReviewRequired GameSecuritySignalStatus = "review-required"
|
|
GameSecuritySignalExpired GameSecuritySignalStatus = "expired"
|
|
)
|
|
|
|
// GameSecuritySignal is evidence for manual review; it carries no enforcement action.
|
|
type GameSecuritySignal struct {
|
|
ID string
|
|
ServerInstanceID string
|
|
GamePlayerRecordID string
|
|
RuleKey string
|
|
Status GameSecuritySignalStatus
|
|
EvidenceCount int
|
|
Summary string
|
|
FirstObservedAt time.Time
|
|
LastObservedAt time.Time
|
|
ExpiresAt time.Time
|
|
}
|
|
type GameSecuritySignalFilter struct {
|
|
ServerInstanceID string
|
|
GamePlayerRecordID string
|
|
Limit int
|
|
}
|
|
type GamePlayerProfile struct {
|
|
Player GamePlayer
|
|
Aliases []GamePlayerAlias
|
|
Sessions []GamePlayerSession
|
|
AccessAttempts []GameAccessAttempt
|
|
SecuritySignals []GameSecuritySignal
|
|
}
|
|
|
|
func CopyGamePlayer(v GamePlayer) GamePlayer { return v }
|
|
func CopyGamePlayerAlias(v GamePlayerAlias) GamePlayerAlias { return v }
|
|
func CopyGamePlayerSession(v GamePlayerSession) GamePlayerSession { return v }
|
|
func CopyGameAccessAttempt(v GameAccessAttempt) GameAccessAttempt { return v }
|
|
func CopyGameSecuritySignal(v GameSecuritySignal) GameSecuritySignal { return v }
|