2019-04-25 04:52:08 +07:00
|
|
|
package regulation
|
|
|
|
|
|
|
|
import (
|
2022-06-14 14:20:13 +07:00
|
|
|
"context"
|
|
|
|
"net"
|
|
|
|
|
2022-03-02 13:40:26 +07:00
|
|
|
"github.com/authelia/authelia/v4/internal/configuration/schema"
|
2021-08-11 08:04:35 +07:00
|
|
|
"github.com/authelia/authelia/v4/internal/storage"
|
|
|
|
"github.com/authelia/authelia/v4/internal/utils"
|
2019-04-25 04:52:08 +07:00
|
|
|
)
|
|
|
|
|
|
|
|
// Regulator an authentication regulator preventing attackers to brute force the service.
|
|
|
|
type Regulator struct {
|
|
|
|
// Is the regulation enabled.
|
|
|
|
enabled bool
|
2022-03-02 13:40:26 +07:00
|
|
|
|
|
|
|
config schema.RegulationConfiguration
|
2019-04-25 04:52:08 +07:00
|
|
|
|
2021-11-23 16:45:38 +07:00
|
|
|
storageProvider storage.RegulatorProvider
|
2019-11-25 03:27:59 +07:00
|
|
|
|
|
|
|
clock utils.Clock
|
2019-04-25 04:52:08 +07:00
|
|
|
}
|
2022-06-14 14:20:13 +07:00
|
|
|
|
|
|
|
// 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)
|
|
|
|
}
|