Redo ip bans - reduce amount of db queries on login
Works by loading all ip bans on startup and querying the collection in memory rather than making calls on every login.
This commit is contained in:
@@ -8,6 +8,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import net.packet.Packet;
|
||||
import net.server.Server;
|
||||
import server.TimerManager;
|
||||
import server.ban.IpBanManager;
|
||||
import tools.PacketCreator;
|
||||
|
||||
import java.time.Duration;
|
||||
@@ -19,10 +20,12 @@ import java.util.concurrent.TimeUnit;
|
||||
public class BanService {
|
||||
private final AccountService accountService;
|
||||
private final TransitionService transitionService;
|
||||
private final IpBanManager ipBanManager;
|
||||
|
||||
public BanService(AccountService accountService, TransitionService transitionService) {
|
||||
public BanService(AccountService accountService, TransitionService transitionService, IpBanManager ipBanManager) {
|
||||
this.accountService = accountService;
|
||||
this.transitionService = transitionService;
|
||||
this.ipBanManager = ipBanManager;
|
||||
}
|
||||
|
||||
public void autoban(Character chr, AutobanFactory type, String reason) {
|
||||
@@ -111,4 +114,13 @@ public class BanService {
|
||||
}
|
||||
accountService.ban(accountId, bannedUntil, reason, description);
|
||||
}
|
||||
|
||||
public boolean isBanned(Client c) {
|
||||
return isIpBanned(c);
|
||||
}
|
||||
|
||||
private boolean isIpBanned(Client c) {
|
||||
String ip = c.getRemoteAddress();
|
||||
return ip != null && ipBanManager.isBanned(ip);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user