middleware

package
v0.64.2 Latest Latest
Warning

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

Go to latest
Published: Jan 27, 2026 License: BSD-3-Clause, AGPL-3.0 Imports: 19 Imported by: 3

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type APIRateLimiter added in v0.59.13

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

APIRateLimiter manages rate limiting for API tokens

func NewAPIRateLimiter added in v0.59.13

func NewAPIRateLimiter(config *RateLimiterConfig) *APIRateLimiter

NewAPIRateLimiter creates a new API rate limiter with the given configuration

func (*APIRateLimiter) Allow added in v0.59.13

func (rl *APIRateLimiter) Allow(key string) bool

Allow checks if a request for the given key (token) is allowed

func (*APIRateLimiter) Middleware added in v0.64.2

func (rl *APIRateLimiter) Middleware(next http.Handler) http.Handler

Middleware returns an HTTP middleware that rate limits requests by client IP. Returns 429 Too Many Requests if the rate limit is exceeded.

func (*APIRateLimiter) Reset added in v0.59.13

func (rl *APIRateLimiter) Reset(key string)

Reset removes the rate limiter for a specific key

func (*APIRateLimiter) Stop added in v0.59.13

func (rl *APIRateLimiter) Stop()

Stop stops the cleanup goroutine

func (*APIRateLimiter) Wait added in v0.59.13

func (rl *APIRateLimiter) Wait(ctx context.Context, key string) error

Wait blocks until the rate limiter allows another request for the given key Returns an error if the context is canceled

type AuthMiddleware added in v0.15.0

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

AuthMiddleware middleware to verify personal access tokens (PAT) and JWT tokens

func NewAuthMiddleware added in v0.15.0

func NewAuthMiddleware(
	authManager serverauth.Manager,
	ensureAccount EnsureAccountFunc,
	syncUserJWTGroups SyncUserJWTGroupsFunc,
	getUserFromUserAuth GetUserFromUserAuthFunc,
	rateLimiterConfig *RateLimiterConfig,
	meter metric.Meter,
) *AuthMiddleware

NewAuthMiddleware instance constructor

func (*AuthMiddleware) Handler added in v0.15.0

func (m *AuthMiddleware) Handler(h http.Handler) http.Handler

Handler method of the middleware which authenticates a user either by JWT claims or by PAT

type EnsureAccountFunc added in v0.37.0

type EnsureAccountFunc func(ctx context.Context, userAuth auth.UserAuth) (string, string, error)

type GetUserFromUserAuthFunc added in v0.42.0

type GetUserFromUserAuthFunc func(ctx context.Context, userAuth auth.UserAuth) (*types.User, error)

type PATUsageTracker added in v0.60.5

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

PATUsageTracker tracks PAT usage metrics

func NewPATUsageTracker added in v0.60.5

func NewPATUsageTracker(ctx context.Context, meter metric.Meter) (*PATUsageTracker, error)

NewPATUsageTracker creates a new PAT usage tracker with metrics

func (*PATUsageTracker) IncrementUsage added in v0.60.5

func (t *PATUsageTracker) IncrementUsage(token string)

IncrementUsage increments the usage counter for a given token

func (*PATUsageTracker) Stop added in v0.60.5

func (t *PATUsageTracker) Stop()

Stop stops the reporting goroutine

type RateLimiterConfig added in v0.59.13

type RateLimiterConfig struct {
	// RequestsPerMinute defines the rate at which tokens are replenished
	RequestsPerMinute float64
	// Burst defines the maximum number of requests that can be made in a burst
	Burst int
	// CleanupInterval defines how often to clean up old limiters (how often garbage collection runs)
	CleanupInterval time.Duration
	// LimiterTTL defines how long a limiter should be kept after last use (age threshold for removal)
	LimiterTTL time.Duration
}

RateLimiterConfig holds configuration for the API rate limiter

func DefaultRateLimiterConfig added in v0.59.13

func DefaultRateLimiterConfig() *RateLimiterConfig

DefaultRateLimiterConfig returns a default configuration

type SyncUserJWTGroupsFunc added in v0.37.0

type SyncUserJWTGroupsFunc func(ctx context.Context, userAuth auth.UserAuth) error

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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