Documentation
¶
Overview ¶
Package ratelimit provides per-client rate limiting middleware.
Index ¶
- func MiddlewareWithConfig(cfg Config) echo.MiddlewareFunc
- type AuthConfig
- type AuthLimiter
- func (a *AuthLimiter) AllowLogin(key string) bool
- func (a *AuthLimiter) AllowMFA(key string) bool
- func (a *AuthLimiter) AllowPasswordReset(key string) bool
- func (a *AuthLimiter) Block(key string)
- func (a *AuthLimiter) IsBlocked(key string) bool
- func (a *AuthLimiter) LoginMiddleware() echo.MiddlewareFunc
- func (a *AuthLimiter) MFAMiddleware() echo.MiddlewareFunc
- func (a *AuthLimiter) PasswordResetMiddleware() echo.MiddlewareFunc
- func (a *AuthLimiter) Stop()
- func (a *AuthLimiter) Unblock(key string)
- type Config
- type Limiter
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func MiddlewareWithConfig ¶
func MiddlewareWithConfig(cfg Config) echo.MiddlewareFunc
MiddlewareWithConfig creates a rate limiting middleware with the given config.
Types ¶
type AuthConfig ¶
type AuthConfig struct {
// LoginRate is the number of login attempts allowed per window.
LoginRate int
// LoginWindow is the time window for login rate limiting.
LoginWindow time.Duration
// PasswordResetRate is the number of password reset requests allowed per window.
PasswordResetRate int
// PasswordResetWindow is the time window for password reset rate limiting.
PasswordResetWindow time.Duration
// MFARate is the number of MFA attempts allowed per window.
MFARate int
// MFAWindow is the time window for MFA rate limiting.
MFAWindow time.Duration
// BlockDuration is how long to block after exceeding limits.
BlockDuration time.Duration
}
AuthConfig holds configuration for authentication rate limiting.
func DefaultAuthConfig ¶
func DefaultAuthConfig() AuthConfig
DefaultAuthConfig returns the default authentication rate limiting configuration.
type AuthLimiter ¶
type AuthLimiter struct {
// contains filtered or unexported fields
}
AuthLimiter provides specialized rate limiting for authentication endpoints.
func NewAuthLimiter ¶
func NewAuthLimiter(cfg AuthConfig) *AuthLimiter
NewAuthLimiter creates a new authentication rate limiter.
func (*AuthLimiter) AllowLogin ¶
func (a *AuthLimiter) AllowLogin(key string) bool
AllowLogin checks if a login attempt is allowed.
func (*AuthLimiter) AllowMFA ¶
func (a *AuthLimiter) AllowMFA(key string) bool
AllowMFA checks if an MFA attempt is allowed.
func (*AuthLimiter) AllowPasswordReset ¶
func (a *AuthLimiter) AllowPasswordReset(key string) bool
AllowPasswordReset checks if a password reset request is allowed.
func (*AuthLimiter) Block ¶
func (a *AuthLimiter) Block(key string)
Block blocks a key for the configured duration.
func (*AuthLimiter) IsBlocked ¶
func (a *AuthLimiter) IsBlocked(key string) bool
IsBlocked checks if a key is currently blocked.
func (*AuthLimiter) LoginMiddleware ¶
func (a *AuthLimiter) LoginMiddleware() echo.MiddlewareFunc
LoginMiddleware returns middleware for login rate limiting.
func (*AuthLimiter) MFAMiddleware ¶
func (a *AuthLimiter) MFAMiddleware() echo.MiddlewareFunc
MFAMiddleware returns middleware for MFA rate limiting.
func (*AuthLimiter) PasswordResetMiddleware ¶
func (a *AuthLimiter) PasswordResetMiddleware() echo.MiddlewareFunc
PasswordResetMiddleware returns middleware for password reset rate limiting.
func (*AuthLimiter) Unblock ¶
func (a *AuthLimiter) Unblock(key string)
Unblock removes a block for a key.
type Config ¶
type Config struct {
// Rate is the number of requests allowed per window.
Rate int
// Window is the time window for rate limiting.
Window time.Duration
// KeyFunc extracts the client identifier from the request.
// If nil, uses the client IP address.
KeyFunc func(c echo.Context) string
// ExceededHandler is called when rate limit is exceeded.
// If nil, returns 429 Too Many Requests.
ExceededHandler echo.HandlerFunc
// CleanupInterval is how often to clean up expired entries.
CleanupInterval time.Duration
}
Config holds rate limiter configuration.
func DefaultConfig ¶
func DefaultConfig() Config
DefaultConfig returns a default rate limiter configuration.
type Limiter ¶
type Limiter struct {
// contains filtered or unexported fields
}
Limiter implements per-client rate limiting.
func (*Limiter) Middleware ¶
func (l *Limiter) Middleware() echo.MiddlewareFunc
Middleware returns an Echo middleware for rate limiting.