Move some autoban logic to new BanService

This commit is contained in:
P0nk
2023-08-10 22:48:10 +02:00
parent cb31121fe7
commit cd75e85bec
15 changed files with 139 additions and 85 deletions

View File

@@ -644,7 +644,7 @@ public class Character extends AbstractCharacterObject {
}
public void ban(String reason) {
this.isbanned = true;
setBanned();
try (Connection con = DatabaseConnection.getConnection();
PreparedStatement ps = con.prepareStatement("UPDATE accounts SET banned = 1, banreason = ? WHERE id = ?")) {
ps.setString(1, reason);
@@ -10015,23 +10015,6 @@ public class Character extends AbstractCharacterObject {
return area_info;
}
public void autoban(String reason) {
if (this.isGM() || this.isBanned()) { // thanks RedHat for noticing GM's being able to get banned
return;
}
this.ban(reason);
sendPacket(PacketCreator.sendPolice(String.format("You have been blocked by the#b %s Police for HACK reason.#k", "Cosmic")));
TimerManager.getInstance().schedule(new Runnable() {
@Override
public void run() {
client.disconnect(false, false);
}
}, 5000);
Server.getInstance().broadcastGMMessage(this.getWorld(), PacketCreator.serverNotice(6, Character.makeMapleReadable(this.name) + " was autobanned for " + reason));
}
public void block(int reason, int days, String desc) {
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, days);

View File

@@ -88,10 +88,6 @@ public enum AutobanFactory {
return expiretime;
}
public void addPoint(AutobanManager ban, String reason) {
ban.addPoint(this, reason);
}
public void alert(Character chr, String reason) {
if (YamlConfig.config.server.USE_AUTOBAN) {
if (chr != null && isIgnored(chr.getId())) {
@@ -105,13 +101,6 @@ public enum AutobanFactory {
}
}
public void autoban(Character chr, String value) {
if (YamlConfig.config.server.USE_AUTOBAN) {
chr.autoban("Autobanned for (" + this.name() + ": " + value + ")");
//chr.sendPolice("You will be disconnected for (" + this.name() + ": " + value + ")");
}
}
/**
* Toggle ignored status for a character id.
* An ignored character will not trigger GM alerts.

View File

@@ -36,35 +36,27 @@ public class AutobanManager {
this.chr = chr;
}
public void addPoint(AutobanFactory fac, String reason) {
if (YamlConfig.config.server.USE_AUTOBAN) {
if (chr.isGM() || chr.isBanned()) {
return;
}
if (lastTime.containsKey(fac)) {
if (lastTime.get(fac) < (Server.getInstance().getCurrentTime() - fac.getExpire())) {
points.put(fac, points.get(fac) / 2); //So the points are not completely gone.
}
}
if (fac.getExpire() != -1) {
lastTime.put(fac, Server.getInstance().getCurrentTime());
}
if (points.containsKey(fac)) {
points.put(fac, points.get(fac) + 1);
} else {
points.put(fac, 1);
}
if (points.get(fac) >= fac.getMaximum()) {
chr.autoban(reason);
/**
* @return true if the added point should result in an autoban
*/
public boolean addPoint(AutobanFactory fac) {
if (lastTime.containsKey(fac)) {
if (lastTime.get(fac) < (Server.getInstance().getCurrentTime() - fac.getExpire())) {
points.put(fac, points.get(fac) / 2); //So the points are not completely gone.
}
}
if (YamlConfig.config.server.USE_AUTOBAN_LOG) {
// Lets log every single point too.
log.info("Autoban - chr {} caused {} {}", Character.makeMapleReadable(chr.getName()), fac.name(), reason);
if (fac.getExpire() != -1) {
lastTime.put(fac, Server.getInstance().getCurrentTime());
}
if (points.containsKey(fac)) {
points.put(fac, points.get(fac) + 1);
} else {
points.put(fac, 1);
}
return points.get(fac) >= fac.getMaximum();
}
public void addMiss() {