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:
P0nk
2024-09-30 07:18:01 +02:00
parent 167937bb88
commit 7661cd0f75
15 changed files with 228 additions and 36 deletions

View File

@@ -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);
}
}