package launchserver.auth.limiter;
import launcher.LauncherAPI;
import launchserver.LaunchServer;
import java.util.HashMap;
public class AuthLimiter
{
@LauncherAPI
public static final long TIMEOUT = 10 * 60 * 1000; //10 минут
public final int rateLimit;
public final int rateLimitMilis;
private final HashMap<String, AuthEntry> map;
public AuthLimiter(LaunchServer srv)
{
map = new HashMap<>();
rateLimit = srv.config.authLimitConfig.authRateLimit;
rateLimitMilis = srv.config.authLimitConfig.authRateLimitMilis;
}
public boolean isLimit(String ip)
{
if (map.containsKey(ip))
{
AuthEntry rate = map.get(ip);
long currenttime = System.currentTimeMillis();
if (rate.ts + rateLimitMilis < currenttime)
{
rate.value = 0;
}
if (rate.value >= rateLimit && rateLimit > 0)
{
rate.value++;
rate.ts = currenttime;
return true;
}
rate.value++;
rate.ts = currenttime;
return false;
}
map.put(ip, new AuthEntry(1, System.currentTimeMillis()));
return false;
}
}