fix: Add uri to rate limiter request key

This commit is contained in:
oSumAtrIX 2024-07-08 05:28:28 +02:00
parent a6008a2fb6
commit e8c2488bc6
No known key found for this signature in database
GPG Key ID: A9B3094ACDB604B4

View File

@ -5,6 +5,7 @@ import io.ktor.server.application.*
import io.ktor.server.plugins.*
import io.ktor.server.plugins.cors.routing.*
import io.ktor.server.plugins.ratelimit.*
import io.ktor.server.request.*
import org.koin.ktor.ext.get
import kotlin.time.Duration.Companion.minutes
@ -19,13 +20,19 @@ fun Application.configureHTTP() {
}
install(RateLimit) {
register(RateLimitName("weak")) {
rateLimiter(limit = 30, refillPeriod = 2.minutes)
requestKey { it.request.origin.remoteAddress }
fun rateLimit(name: String, block: RateLimitProviderConfig.() -> Unit) = register(RateLimitName(name)) {
requestKey {
it.request.uri + it.request.origin.remoteAddress
}
block()
}
register(RateLimitName("strong")) {
rateLimit("weak") {
rateLimiter(limit = 30, refillPeriod = 2.minutes)
}
rateLimit("strong") {
rateLimiter(limit = 5, refillPeriod = 1.minutes)
requestKey { it.request.origin.remoteHost }
}
}
}