audit

package
v0.0.4 Latest Latest
Warning

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

Go to latest
Published: Jul 28, 2025 License: AGPL-3.0 Imports: 7 Imported by: 0

Documentation

Overview

internal/audit/logger.go

Index

Constants

View Source
const (
	// Default audit retention period in days
	DefaultAuditRetentionDays = 7
	// Default audit statistics timeout in seconds
	DefaultAuditStatsTimeout = 5
	// Percentage multiplier for success rate calculation
	PercentageMultiplier = 100
)

Variables

View Source
var (
	// ErrAuditShutdownTimeout is returned when audit logger shutdown times out.
	ErrAuditShutdownTimeout = errors.New("audit logger shutdown timeout")
)

Functions

This section is empty.

Types

type AuditEntry

type AuditEntry struct {
	ID        string                 `json:"id"`
	Timestamp time.Time              `json:"timestamp"`
	Event     string                 `json:"event"`
	UserID    string                 `json:"user_id,omitempty"`
	ClientID  string                 `json:"client_id,omitempty"`
	IP        string                 `json:"ip_address,omitempty"`
	UserAgent string                 `json:"user_agent,omitempty"`
	Details   map[string]interface{} `json:"details,omitempty"`
	Success   bool                   `json:"success"`
	Error     string                 `json:"error,omitempty"`
}

type AuditFilter

type AuditFilter struct {
	Event     string    `json:"event,omitempty"`
	UserID    string    `json:"user_id,omitempty"`
	ClientID  string    `json:"client_id,omitempty"`
	Success   *bool     `json:"success,omitempty"`
	StartTime time.Time `json:"start_time,omitempty"`
	EndTime   time.Time `json:"end_time,omitempty"`
}

type AuditLogger

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

func NewAuditLogger

func NewAuditLogger(auditConfig *config.AuditConfig, logger *logging.Logger) *AuditLogger

func (*AuditLogger) GetEntries

func (al *AuditLogger) GetEntries(limit int, offset int, filter *AuditFilter) ([]AuditEntry, int, error)

func (*AuditLogger) GetStats

func (al *AuditLogger) GetStats() AuditStats

func (*AuditLogger) Log

func (al *AuditLogger) Log(event, userID, clientID, ip, userAgent string, success bool, details map[string]interface{}, err error)

func (*AuditLogger) LogOAuthTokenIssued

func (al *AuditLogger) LogOAuthTokenIssued(userID, clientID, ip, userAgent string, tokenType string, success bool, err error)

Helper methods for common audit events

func (*AuditLogger) LogOAuthTokenRevoked

func (al *AuditLogger) LogOAuthTokenRevoked(userID, clientID, ip, userAgent string, tokenType string, success bool, err error)

func (*AuditLogger) LogServerAccess

func (al *AuditLogger) LogServerAccess(userID, clientID, ip, userAgent string, serverName, scope string, success bool, err error)

func (*AuditLogger) LogUserLogin

func (al *AuditLogger) LogUserLogin(userID, ip, userAgent string, success bool, err error)

func (*AuditLogger) Shutdown

func (al *AuditLogger) Shutdown() error

Shutdown gracefully stops the audit logger

type AuditStats

type AuditStats struct {
	TotalEntries int            `json:"total_entries"`
	EventCounts  map[string]int `json:"event_counts"`
	SuccessRate  float64        `json:"success_rate"`
}

type Entry

type Entry struct {
	ID        string                 `json:"id"`
	Timestamp time.Time              `json:"timestamp"`
	Event     string                 `json:"event"`
	UserID    string                 `json:"user_id,omitempty"`
	ClientID  string                 `json:"client_id,omitempty"`
	IP        string                 `json:"ip_address,omitempty"`
	UserAgent string                 `json:"user_agent,omitempty"`
	Details   map[string]interface{} `json:"details,omitempty"`
	Success   bool                   `json:"success"`
	Error     string                 `json:"error,omitempty"`
}

type Logger

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

func NewLogger

func NewLogger(maxEntries int, maxAge string, events []string, logger *logging.Logger) *Logger

func (*Logger) GetEntries

func (l *Logger) GetEntries(limit, offset int) ([]Entry, int)

func (*Logger) Log

func (l *Logger) Log(event string, userID, clientID, ip, userAgent string, success bool, details map[string]interface{}, err error)

Jump to

Keyboard shortcuts

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