Code householding, add tests to TempbanManager

- Delegate event firing to BukkitService
- Write tests for IP banning function
- Update comments on tempban properties in config.yml
This commit is contained in:
ljacqu
2016-06-14 21:52:43 +02:00
parent 3411450ff1
commit 5cbb83e153
9 changed files with 130 additions and 24 deletions
+5 -9
View File
@@ -7,8 +7,6 @@ import fr.xephi.authme.settings.NewSetting;
import fr.xephi.authme.settings.properties.SecuritySettings;
import fr.xephi.authme.util.BukkitService;
import fr.xephi.authme.util.Utils;
import org.bukkit.BanList;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import javax.inject.Inject;
@@ -21,13 +19,11 @@ import java.util.concurrent.ConcurrentHashMap;
// TODO Gnat008 20160613: Figure out the best way to remove entries based on time
public class TempbanManager implements SettingsDependent {
private static final long MINUTE_IN_MILLISECONDS = 60000;
private final ConcurrentHashMap<String, Integer> ipLoginFailureCounts;
private final long MINUTE_IN_MILLISECONDS = 60000;
private BukkitService bukkitService;
private Messages messages;
private final BukkitService bukkitService;
private final Messages messages;
private boolean isEnabled;
private int threshold;
@@ -102,7 +98,7 @@ public class TempbanManager implements SettingsDependent {
bukkitService.scheduleSyncDelayedTask(new Runnable() {
@Override
public void run() {
Bukkit.getServer().getBanList(BanList.Type.IP).addBan(ip, reason, expires, "AuthMe");
bukkitService.banIp(ip, reason, expires, "AuthMe");
player.kickPlayer(reason);
}
});
@@ -124,7 +124,7 @@ public class AsynchronousJoin implements AsynchronousProcess {
// Protect inventory
if (service.getProperty(PROTECT_INVENTORY_BEFORE_LOGIN) && plugin.inventoryProtector != null) {
ProtectInventoryEvent ev = new ProtectInventoryEvent(player);
plugin.getServer().getPluginManager().callEvent(ev);
bukkitService.callEvent(ev);
if (ev.isCancelled()) {
plugin.inventoryProtector.sendInventoryPacket(player);
if (!service.getProperty(SecuritySettings.REMOVE_SPAM_FROM_CONSOLE)) {
@@ -133,7 +133,7 @@ public class ProcessSyncPlayerLogin implements SynchronousProcess {
}
// The Login event now fires (as intended) after everything is processed
Bukkit.getServer().getPluginManager().callEvent(new LoginEvent(player));
bukkitService.callEvent(new LoginEvent(player));
player.saveData();
if (service.getProperty(HooksSettings.BUNGEECORD)) {
sendBungeeMessage(player);
@@ -124,7 +124,7 @@ public class ProcessSyncPasswordRegister implements SynchronousProcess {
}
// The LoginEvent now fires (as intended) after everything is processed
plugin.getServer().getPluginManager().callEvent(new LoginEvent(player));
bukkitService.callEvent(new LoginEvent(player));
player.saveData();
if (!service.getProperty(SecuritySettings.REMOVE_SPAM_FROM_CONSOLE)) {
@@ -2,6 +2,8 @@ package fr.xephi.authme.util;
import fr.xephi.authme.AuthMe;
import fr.xephi.authme.ConsoleLogger;
import org.bukkit.BanEntry;
import org.bukkit.BanList;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
import org.bukkit.World;
@@ -15,6 +17,7 @@ import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.Set;
/**
@@ -206,4 +209,20 @@ public class BukkitService {
return false;
}
/**
* Adds a ban to the this list. If a previous ban exists, this will
* update the previous entry.
*
* @param ip the ip of the ban
* @param reason reason for the ban, null indicates implementation default
* @param expires date for the ban's expiration (unban), or null to imply
* forever
* @param source source of the ban, null indicates implementation default
* @return the entry for the newly created ban, or the entry for the
* (updated) previous ban
*/
public BanEntry banIp(String ip, String reason, Date expires, String source) {
return Bukkit.getServer().getBanList(BanList.Type.IP).addBan(ip, reason, expires, source);
}
}