mirror of
https://github.com/getAlby/lndhub.go.git
synced 2026-02-23 22:04:23 +01:00
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:
10
main.go
10
main.go
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user