xfy911 a136b07bb9 docs: add documentation comments for exported constants and variables
- Fix gjson/gjson.go package comments and constant documentation
- Fix internal/config/config.go constant documentation
- Fix internal/utils/httperror.go variable documentation
- Fix internal/matcher/matcher.go constant documentation
- Fix internal/middleware/compression/compression.go constant documentation
- Fix internal/middleware/limitrate/limitrate.go constant documentation
- Fix internal/middleware/rewrite/rewrite.go constant documentation
- Fix internal/middleware/security/access.go and auth.go constant documentation
- Fix internal/ssl/client_verify.go constant documentation
- Fix internal/variable/builtin.go and ssl.go constant documentation
- Fix internal/lua/api_log.go HTTP and log level constant documentation
- Fix internal/benchmark/tools/tools.go constant documentation
- Include author attribution (xfy)
2026-06-03 15:28:53 +08:00

50 lines
1.2 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Package limitrate 提供基于令牌桶算法的请求速率限制功能。
//
// 包含速率限制器相关的逻辑,用于控制请求处理速率。
//
// 作者xfy
package limitrate
import (
"github.com/valyala/fasthttp"
"rua.plus/lolly/internal/config"
)
const (
// LargeFileStrategySkip 大文件策略:跳过(不限制)。
LargeFileStrategySkip = "skip"
// LargeFileStrategyCoarse 大文件策略:粗略限制。
LargeFileStrategyCoarse = "coarse"
)
// Middleware 速率限制中间件
type Middleware struct {
config *config.LimitRateConfig
}
// NewMiddleware 创建速率限制中间件
func NewMiddleware(cfg *config.LimitRateConfig) *Middleware {
return &Middleware{config: cfg}
}
// Name 返回中间件名称
func (m *Middleware) Name() string {
return "limit_rate"
}
// Process 处理请求
func (m *Middleware) Process(next fasthttp.RequestHandler) fasthttp.RequestHandler {
return func(ctx *fasthttp.RequestCtx) {
// 如果未配置限速,直接放行
if m.config == nil || m.config.Rate <= 0 {
next(ctx)
return
}
// 包装响应写入器
// 注意fasthttp 的响应写入比较复杂,这里简化实现
// 实际生产环境需要更精细的控制
next(ctx)
}
}