Redo hwid bans - reduce amount of db queries on login

Works by loading all hwid bans on startup and querying the collection in memory
rather than making calls on every login.
This commit is contained in:
P0nk
2024-10-01 07:04:25 +02:00
parent 7661cd0f75
commit af02f8b744
20 changed files with 235 additions and 55 deletions

View File

@@ -7,7 +7,9 @@ import config.YamlConfig;
import lombok.extern.slf4j.Slf4j;
import net.packet.Packet;
import net.server.Server;
import net.server.coordinator.session.Hwid;
import server.TimerManager;
import server.ban.HwidBanManager;
import server.ban.IpBanManager;
import tools.PacketCreator;
@@ -21,11 +23,14 @@ public class BanService {
private final AccountService accountService;
private final TransitionService transitionService;
private final IpBanManager ipBanManager;
private final HwidBanManager hwidBanManager;
public BanService(AccountService accountService, TransitionService transitionService, IpBanManager ipBanManager) {
public BanService(AccountService accountService, TransitionService transitionService, IpBanManager ipBanManager,
HwidBanManager hwidBanManager) {
this.accountService = accountService;
this.transitionService = transitionService;
this.ipBanManager = ipBanManager;
this.hwidBanManager = hwidBanManager;
}
public void autoban(Character chr, AutobanFactory type, String reason) {
@@ -116,11 +121,16 @@ public class BanService {
}
public boolean isBanned(Client c) {
return isIpBanned(c);
return isIpBanned(c) || isHwidBanned(c);
}
private boolean isIpBanned(Client c) {
String ip = c.getRemoteAddress();
return ip != null && ipBanManager.isBanned(ip);
}
private boolean isHwidBanned(Client c) {
Hwid hwid = c.getHwid();
return hwid != null && hwidBanManager.isBanned(hwid);
}
}