Skip to content

Commit 1203333

Browse files
committed
Added RateLimitMiddleware
1 parent 0d5e565 commit 1203333

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

src/main/java/org/javawebstack/webutils/middlewares/RateLimitMiddleware.java

+6-3
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,18 @@ public RateLimitMiddleware(long millis){
2424
}
2525

2626
public Object handle(Exchange exchange) {
27+
String ip = exchange.rawRequest().getRemoteAddr();
28+
if (exchange.header("X-Forwarded-For") != null)
29+
ip = exchange.header("X-Forwarded-For");
2730
RateLimit rateLimit = null;
28-
if (rateLimits.containsKey(exchange.rawRequest().getRemoteAddr())) {
29-
rateLimit = rateLimits.get(exchange.rawRequest().getRemoteAddr());
31+
if (rateLimits.containsKey(ip)) {
32+
rateLimit = rateLimits.get(ip);
3033
if (rateLimit.stillAlive() && rateLimit.getAndDecrease() <= 1)
3134
throw new RateLimitException();
3235
}
3336
if (rateLimit == null || !rateLimit.stillAlive())
3437
rateLimit = new RateLimit(System.currentTimeMillis() + millis, this.rateLimit);
35-
rateLimits.put(exchange.rawRequest().getRemoteAddr(), rateLimit);
38+
rateLimits.put(ip, rateLimit);
3639
exchange.header("X-Rate-Limit-Limit", String.valueOf(this.rateLimit));
3740
exchange.header("X-Rate-Limit-Remaining", String.valueOf(rateLimit.getRateLimitLeft()));
3841
exchange.header("X-Rate-Limit-Reset", String.valueOf(rateLimit.getTimeMillis()/1000));

0 commit comments

Comments
 (0)