diff --git a/Plugins/Mineplex.Core/src/mineplex/core/antihack/AntiHack.java b/Plugins/Mineplex.Core/src/mineplex/core/antihack/AntiHack.java index 3d2ed939e..d87ded383 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/antihack/AntiHack.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/antihack/AntiHack.java @@ -60,6 +60,8 @@ public class AntiHack extends MiniPlugin public int FlightTriggerCancel = 2000; public ArrayList _detectors; + + private AntiHackRepository _repository; protected AntiHack(JavaPlugin plugin, Punish punish, Portal portal) { @@ -68,8 +70,8 @@ public class AntiHack extends MiniPlugin Punish = punish; Portal = portal; - //_repository = new AntiHackRepository(this, plugin.getConfig().getString("serverstatus.name")); - //_repository.initialize(); + _repository = new AntiHackRepository(plugin.getConfig().getString("serverstatus.name")); + _repository.initialize(); _detectors = new ArrayList(); @@ -187,23 +189,20 @@ public class AntiHack extends MiniPlugin public void addSuspicion(Player player, String type) { //Add Offense - //synchronized (getOffensesSynch()) - { - if (!_suspicion.containsKey(player)) - _suspicion.put(player, new HashMap>()); + if (!_suspicion.containsKey(player)) + _suspicion.put(player, new HashMap>()); - if (!_suspicion.get(player).containsKey(type)) - _suspicion.get(player).put(type, new ArrayList()); + if (!_suspicion.get(player).containsKey(type)) + _suspicion.get(player).put(type, new ArrayList()); - _suspicion.get(player).get(type).add(System.currentTimeMillis()); - } + _suspicion.get(player).get(type).add(System.currentTimeMillis()); for (Player admin : UtilServer.getPlayers()) if (admin.isOp() && admin.getGameMode() == GameMode.CREATIVE) UtilPlayer.message(admin, C.cGold + C.Bold + player.getName() + " suspected for " + type + "."); - //Print (Debug) - //System.out.println("[Offense] " + player.getName() + " received suspicion for " + type + "."); + // Print (Debug) + System.out.println("[Offense] " + player.getName() + " received suspicion for " + type + "."); } @EventHandler @@ -290,7 +289,7 @@ public class AntiHack extends MiniPlugin if (severity.equals("Extreme")) player.kickPlayer(C.cRed + "MAC" + C.cWhite + " - " + C.cYellow + "You were kicked for suspicious movement."); - //XXX Send to Database for Staff + _repository.saveOffense(player, report, severity); } private void ResetAll(Player player) @@ -331,4 +330,9 @@ public class AntiHack extends MiniPlugin } } } + + public HashMap>> getOffenses() + { + return _offense; + } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/antihack/AntiHackRepository.java b/Plugins/Mineplex.Core/src/mineplex/core/antihack/AntiHackRepository.java index f61fb43e1..3421721e6 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/antihack/AntiHackRepository.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/antihack/AntiHackRepository.java @@ -4,26 +4,23 @@ import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; -import java.util.Map.Entry; import org.bukkit.entity.Player; public class AntiHackRepository { - private AntiHack _plugin; private String _serverName; - private Connection _connection; - private String _connectionString = "jdbc:mysql://db.mineplex.com:3306/Mineplex"; + private static Connection _connection; + private String _connectionString = "jdbc:mysql://sqlstats.mineplex.com:3306/Mineplex"; private String _userName = "root"; private String _password = "tAbechAk3wR7tuTh"; private static String CREATE_TABLE = "CREATE TABLE IF NOT EXISTS AntiHack (id INT NOT NULL AUTO_INCREMENT, serverName VARCHAR(256) NOT NULL, hackType VARCHAR(256) NOT NULL, playerName VARCHAR(256) NOT NULL, hackCount INT, updated LONG, PRIMARY KEY (id), UNIQUE KEY serverName_hackType_playerName (serverName, hackType, playerName));"; private static String UPDATE_PLAYER_OFFENSES = "REPLACE INTO AntiHack (serverName, playerName, hackType, hackCount, updated) VALUES (?, ?, ?, ?, now());"; - public AntiHackRepository(AntiHack plugin, String serverName) + public AntiHackRepository(String serverName) { - _plugin = plugin; _serverName = serverName; } @@ -60,7 +57,7 @@ public class AntiHackRepository } } - public void saveOffenses() + public void saveOffense(final Player player, final String report, final String severity) { new Thread(new Runnable() { @@ -70,30 +67,17 @@ public class AntiHackRepository try { - _connection = DriverManager.getConnection(_connectionString, _userName, _password); + if (_connection == null || _connection.isClosed()) + _connection = DriverManager.getConnection(_connectionString, _userName, _password); preparedStatement = _connection.prepareStatement(UPDATE_PLAYER_OFFENSES); - - /* XXX - synchronized (_plugin.getOffensesSynch()) - { - for (Player offender : _plugin.getOffenses().keySet()) - { - for (Entry hackEntry : _plugin.getOffenses().get(offender).entrySet()) - { - preparedStatement.setString(1, _serverName); - preparedStatement.setString(2, offender.getName()); - preparedStatement.setString(3, hackEntry.getKey()); - preparedStatement.setInt(4, hackEntry.getValue()); - preparedStatement.addBatch(); - } - } - - _plugin.getOffenses().clear(); - } - */ - - preparedStatement.executeBatch(); + + preparedStatement.setString(1, _serverName); + preparedStatement.setString(2, player.getName()); + preparedStatement.setString(3, report); + preparedStatement.setString(4, severity); + + preparedStatement.execute(); } catch (Exception exception) { diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/server/LobbySorter.java b/Plugins/Mineplex.Hub/src/mineplex/hub/server/LobbySorter.java index 346bc4f35..66cd8df6c 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/server/LobbySorter.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/server/LobbySorter.java @@ -4,7 +4,7 @@ import java.util.Comparator; public class LobbySorter implements Comparator { - public int compare(ServerInfo a, ServerInfo b) + public int compare(ServerInfo a, ServerInfo b) { if (Integer.parseInt(a.Name.split("-")[1]) < Integer.parseInt(b.Name.split("-")[1])) return -1;