authelia/internal/regulation/types.go
James Elliott 001589cd6d
feat(metrics): implement prometheus metrics (#3234)
Adds ability to record metrics and gather them for Prometheus.
2022-06-14 17:20:13 +10:00

36 lines
779 B
Go

package regulation
import (
"context"
"net"
"github.com/authelia/authelia/v4/internal/configuration/schema"
"github.com/authelia/authelia/v4/internal/storage"
"github.com/authelia/authelia/v4/internal/utils"
)
// Regulator an authentication regulator preventing attackers to brute force the service.
type Regulator struct {
// Is the regulation enabled.
enabled bool
config schema.RegulationConfiguration
storageProvider storage.RegulatorProvider
clock utils.Clock
}
// Context represents a regulator context.
type Context interface {
context.Context
MetricsRecorder
RemoteIP() (ip net.IP)
}
// MetricsRecorder represents the methods used to record regulation.
type MetricsRecorder interface {
RecordAuthentication(success, banned bool, authType string)
}