MCPcopy
hub / github.com/AdguardTeam/dnsproxy / newRatelimitMw

Method newRatelimitMw

internal/cmd/proxy.go:140–156  ·  view source on GitHub ↗

newRatelimitMw returns the ratelimit middleware. In case of invalid ratelimit configuration returns an error. l must not be nil.

(l *slog.Logger)

Source from the content-addressed store, hash-verified

138// newRatelimitMw returns the ratelimit middleware. In case of invalid
139// ratelimit configuration returns an error. l must not be nil.
140func (conf *configuration) newRatelimitMw(l *slog.Logger) (mw proxy.Middleware, err error) {
141 if conf.Ratelimit == 0 {
142 return proxy.MiddlewareFunc(proxy.PassThrough), nil
143 }
144
145 rlConf := &ratelimit.Config{
146 Logger: l.With(slogutil.KeyPrefix, "ratelimit"),
147 Ratelimit: conf.Ratelimit,
148 SubnetLenIPv4: conf.RatelimitSubnetLenIPv4,
149 SubnetLenIPv6: conf.RatelimitSubnetLenIPv6,
150 }
151 if err = rlConf.Validate(); err != nil {
152 return nil, fmt.Errorf("invalid configuration: %w", err)
153 }
154
155 return ratelimit.NewMiddleware(rlConf), nil
156}
157
158// defaultLocalTimeout is the default timeout for local operations.
159const defaultLocalTimeout = 1 * time.Second

Callers 1

createProxyConfigFunction · 0.80

Calls 3

ValidateMethod · 0.95
MiddlewareFuncFuncType · 0.92
NewMiddlewareFunction · 0.92

Tested by

no test coverage detected