Unify rate limit settings

We always treat the rate limit settings as requests per second and not every second.
The default rate limit is set globally
additionally we set a strict rate limit for sending payments
This commit is contained in:
Michael Bumann
2023-05-19 18:47:44 +02:00
parent 6dad11c794
commit 797fbf438f

10
main.go
View File

@@ -125,7 +125,8 @@ func main() {
}
e.Use(middleware.Recover())
e.Use(middleware.BodyLimit("250K"))
e.Use(middleware.RateLimiter(middleware.NewRateLimiterMemoryStore(20)))
// set the default rate limit defining the overal max requests/second
e.Use(middleware.RateLimiter(middleware.NewRateLimiterMemoryStore(rate.Limit(c.DefaultRateLimit))))
e.Logger = logger
e.Use(middleware.RequestID())
@@ -184,8 +185,9 @@ func main() {
InvoicePubSub: service.NewPubsub(),
}
// strict rate limit for requests for sending payments
strictRateLimitMiddleware := createRateLimitMiddleware(c.StrictRateLimit, c.BurstRateLimit)
secured := e.Group("", tokens.Middleware(c.JWTSecret), middleware.RateLimiter(middleware.NewRateLimiterMemoryStore(rate.Limit(c.DefaultRateLimit))))
secured := e.Group("", tokens.Middleware(c.JWTSecret))
securedWithStrictRateLimit := e.Group("", tokens.Middleware(c.JWTSecret), strictRateLimitMiddleware)
RegisterLegacyEndpoints(svc, e, secured, securedWithStrictRateLimit, strictRateLimitMiddleware, tokens.AdminTokenMiddleware(c.AdminToken))
@@ -304,9 +306,9 @@ func main() {
svc.Logger.Info("LNDhub exiting gracefully. Goodbye.")
}
func createRateLimitMiddleware(seconds int, burst int) echo.MiddlewareFunc {
func createRateLimitMiddleware(requestsPerSecond int, burst int) echo.MiddlewareFunc {
config := middleware.RateLimiterMemoryStoreConfig{
Rate: rate.Every(time.Duration(seconds) * time.Second),
Rate: rate.Limit(requestsPerSecond),
Burst: burst,
}
return middleware.RateLimiter(middleware.NewRateLimiterMemoryStoreWithConfig(config))