From 6a9255e97b4891e9f81af66d028f26b3c2162d98 Mon Sep 17 00:00:00 2001 From: Ty Date: Fri, 1 Aug 2014 17:56:29 -0400 Subject: [PATCH] Add new Mineplex.ServerData library for interfacing with the ServerRepository, and modify Mineplex.ServerMonitor, Mineplex.Bungee.Mineplexer and Mineplex.Core to integrate changes. --- Plugins/BuildFiles/common.xml | 11 +- Plugins/Libraries/commons-pool2-2.2.jar | Bin 0 -> 108036 bytes Plugins/Libraries/jedis-2.4.2.jar | Bin 0 -> 301263 bytes Plugins/Mineplex.Bungee.Mineplexer/.classpath | 1 + .../bungee/lobbyBalancer/LobbyBalancer.java | 39 +- .../LobbyBalancerRepository.java | 140 ------ .../bungee/lobbyBalancer/LobbySorter.java | 28 +- .../lobbyBalancer/ServerStatusData.java | 11 - Plugins/Mineplex.Core/.classpath | 1 + .../core/portal/PortalRepository.java | 82 +--- .../core/status/ServerStatusData.java | 9 - .../core/status/ServerStatusManager.java | 78 ++-- .../core/status/ServerStatusRepository.java | 286 ------------ .../.externalToolBuilders/Translator.launch | 2 +- Plugins/Mineplex.Hub/.classpath | 1 + .../Mineplex.Hub/src/mineplex/hub/Hub.java | 8 +- .../src/mineplex/hub/HubClient.java | 2 +- .../src/mineplex/hub/HubRepository.java | 2 - .../mineplex/hub/server/ServerManager.java | 28 +- Plugins/Mineplex.ServerData/.classpath | 9 + .../.externalToolBuilders/New_Builder.launch | 17 + .../.externalToolBuilders/ServerData.launch | 17 + Plugins/Mineplex.ServerData/.project | 27 ++ .../Mineplex.ServerData.iml | 49 ++ Plugins/Mineplex.ServerData/build.xml | 76 +++ .../mineplex/serverdata/DedicatedServer.java | 99 ++++ .../serverdata/DedicatedServerSorter.java | 18 + .../mineplex/serverdata/MinecraftServer.java | 105 +++++ .../serverdata/RedisServerRepository.java | 314 +++++++++++++ .../src/mineplex/serverdata/Region.java | 13 + .../src/mineplex/serverdata/ServerGroup.java | 207 +++++++++ .../mineplex/serverdata/ServerManager.java | 49 ++ .../mineplex/serverdata/ServerRepository.java | 71 +++ .../src/mineplex/serverdata/Utility.java | 54 +++ Plugins/Mineplex.ServerMonitor/.classpath | 1 + .../servermonitor/DynamicServerData.java | 33 -- .../servermonitor/DynamicServerSorter.java | 30 -- .../servermonitor/GroupStatusData.java | 115 ----- .../mineplex/servermonitor/Repository.java | 437 ------------------ .../servermonitor/ServerGroupData.java | 17 - .../mineplex/servermonitor/ServerMonitor.java | 320 ++++++------- .../servermonitor/ServerStatusData.java | 13 - .../servermonitor/ServerTargetData.java | 8 - .../.externalToolBuilders/CB2.launch | 2 +- 44 files changed, 1381 insertions(+), 1449 deletions(-) create mode 100644 Plugins/Libraries/commons-pool2-2.2.jar create mode 100644 Plugins/Libraries/jedis-2.4.2.jar delete mode 100644 Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/lobbyBalancer/LobbyBalancerRepository.java delete mode 100644 Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/lobbyBalancer/ServerStatusData.java delete mode 100644 Plugins/Mineplex.Core/src/mineplex/core/status/ServerStatusData.java delete mode 100644 Plugins/Mineplex.Core/src/mineplex/core/status/ServerStatusRepository.java create mode 100644 Plugins/Mineplex.ServerData/.classpath create mode 100644 Plugins/Mineplex.ServerData/.externalToolBuilders/New_Builder.launch create mode 100644 Plugins/Mineplex.ServerData/.externalToolBuilders/ServerData.launch create mode 100644 Plugins/Mineplex.ServerData/.project create mode 100644 Plugins/Mineplex.ServerData/Mineplex.ServerData.iml create mode 100644 Plugins/Mineplex.ServerData/build.xml create mode 100644 Plugins/Mineplex.ServerData/src/mineplex/serverdata/DedicatedServer.java create mode 100644 Plugins/Mineplex.ServerData/src/mineplex/serverdata/DedicatedServerSorter.java create mode 100644 Plugins/Mineplex.ServerData/src/mineplex/serverdata/MinecraftServer.java create mode 100644 Plugins/Mineplex.ServerData/src/mineplex/serverdata/RedisServerRepository.java create mode 100644 Plugins/Mineplex.ServerData/src/mineplex/serverdata/Region.java create mode 100644 Plugins/Mineplex.ServerData/src/mineplex/serverdata/ServerGroup.java create mode 100644 Plugins/Mineplex.ServerData/src/mineplex/serverdata/ServerManager.java create mode 100644 Plugins/Mineplex.ServerData/src/mineplex/serverdata/ServerRepository.java create mode 100644 Plugins/Mineplex.ServerData/src/mineplex/serverdata/Utility.java delete mode 100644 Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/DynamicServerData.java delete mode 100644 Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/DynamicServerSorter.java delete mode 100644 Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/GroupStatusData.java delete mode 100644 Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/Repository.java delete mode 100644 Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/ServerGroupData.java delete mode 100644 Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/ServerStatusData.java delete mode 100644 Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/ServerTargetData.java diff --git a/Plugins/BuildFiles/common.xml b/Plugins/BuildFiles/common.xml index 484184d44..f9c85bffd 100644 --- a/Plugins/BuildFiles/common.xml +++ b/Plugins/BuildFiles/common.xml @@ -17,10 +17,12 @@ - + + + @@ -29,6 +31,8 @@ + + @@ -52,6 +56,9 @@ + + + @@ -61,6 +68,8 @@ + + diff --git a/Plugins/Libraries/commons-pool2-2.2.jar b/Plugins/Libraries/commons-pool2-2.2.jar new file mode 100644 index 0000000000000000000000000000000000000000..6a3eb38acb83a1c3440c834d2aaa9586e1156355 GIT binary patch literal 108036 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 literal 0 HcmV?d00001 diff --git a/Plugins/Libraries/jedis-2.4.2.jar b/Plugins/Libraries/jedis-2.4.2.jar new file mode 100644 index 0000000000000000000000000000000000000000..21fdcabf7c0cb607148483c3c2caa8de86bf9a1e GIT binary patch literal 301263 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%0DAajLX~%dwDDS5Qk15-c2 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 literal 0 HcmV?d00001 diff --git a/Plugins/Mineplex.Bungee.Mineplexer/.classpath b/Plugins/Mineplex.Bungee.Mineplexer/.classpath index 8ae052756..03e6db6ae 100644 --- a/Plugins/Mineplex.Bungee.Mineplexer/.classpath +++ b/Plugins/Mineplex.Bungee.Mineplexer/.classpath @@ -5,5 +5,6 @@ + diff --git a/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/lobbyBalancer/LobbyBalancer.java b/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/lobbyBalancer/LobbyBalancer.java index de31b23c2..e5276da05 100644 --- a/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/lobbyBalancer/LobbyBalancer.java +++ b/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/lobbyBalancer/LobbyBalancer.java @@ -3,10 +3,15 @@ package mineplex.bungee.lobbyBalancer; import java.io.File; import java.net.InetSocketAddress; import java.util.ArrayList; +import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.concurrent.TimeUnit; +import mineplex.serverdata.MinecraftServer; +import mineplex.serverdata.Region; +import mineplex.serverdata.ServerManager; +import mineplex.serverdata.ServerRepository; import net.md_5.bungee.api.event.ServerConnectEvent; import net.md_5.bungee.api.plugin.Listener; import net.md_5.bungee.api.plugin.Plugin; @@ -15,9 +20,9 @@ import net.md_5.bungee.event.EventHandler; public class LobbyBalancer implements Listener, Runnable { private Plugin _plugin; - private LobbyBalancerRepository _repository; + private ServerRepository _repository; - private List _sortedLobbies = new ArrayList(); + private List _sortedLobbies = new ArrayList(); private static Object _serverLock = new Object(); private int _bestServerIndex = 0; @@ -27,11 +32,9 @@ public class LobbyBalancer implements Listener, Runnable public LobbyBalancer(Plugin plugin) { _plugin = plugin; - _repository = new LobbyBalancerRepository(); - boolean us = !new File("eu.dat").exists(); - - _repository.initialize(us); + Region region = !new File("eu.dat").exists() ? Region.US : Region.EU; + _repository = ServerManager.getServerRepository(region); loadLobbyServers(); @@ -56,7 +59,7 @@ public class LobbyBalancer implements Listener, Runnable while (_bestServerIndex < _sortedLobbies.size()) { _bestServerIndex++; - _maxPlayersToSendToBestServer = (_sortedLobbies.get(_bestServerIndex).MaxPlayers - _sortedLobbies.get(_bestServerIndex).Players) / 10; + _maxPlayersToSendToBestServer = (_sortedLobbies.get(_bestServerIndex).getMaxPlayerCount() - _sortedLobbies.get(_bestServerIndex).getPlayerCount()) / 10; if (_maxPlayersToSendToBestServer > 0) break; @@ -68,14 +71,14 @@ public class LobbyBalancer implements Listener, Runnable _maxPlayersToSendToBestServer = 1; // Since we had to enter our dangerzone, update local data so if we have to enter it again we don't pick the same server over and over - _sortedLobbies.get(_bestServerIndex).Players += 5; + _sortedLobbies.get(_bestServerIndex).incrementPlayerCount(5); sort = true; } } if (_bestServerIndex < _sortedLobbies.size()) - event.setTarget(_plugin.getProxy().getServerInfo(_sortedLobbies.get(_bestServerIndex).Name)); + event.setTarget(_plugin.getProxy().getServerInfo(_sortedLobbies.get(_bestServerIndex).getName())); _playersSentToBestServer++; @@ -92,25 +95,25 @@ public class LobbyBalancer implements Listener, Runnable public void loadLobbyServers() { - List serverStatusDataList = _repository.retrieveServerStatuses(); + Collection servers = _repository.getServerStatuses(); synchronized (_serverLock) { _sortedLobbies.clear(); - for (ServerStatusData serverStatusData : serverStatusDataList) + for (MinecraftServer server : servers) { - if (serverStatusData.Name == null) + if (server.getName() == null) continue; - InetSocketAddress socketAddress = new InetSocketAddress(serverStatusData.Address, serverStatusData.Port); - _plugin.getProxy().getServers().put(serverStatusData.Name, _plugin.getProxy().constructServerInfo(serverStatusData.Name, socketAddress, "LobbyBalancer", false)); + InetSocketAddress socketAddress = new InetSocketAddress(server.getPublicAddress(), server.getPort()); + _plugin.getProxy().getServers().put(server.getName(), _plugin.getProxy().constructServerInfo(server.getName(), socketAddress, "LobbyBalancer", false)); - if (serverStatusData.Name.toUpperCase().contains("LOBBY")) + if (server.getName().toUpperCase().contains("LOBBY")) { - if (serverStatusData.Motd == null || !serverStatusData.Motd.contains("Restarting")) + if (server.getMotd() == null || !server.getMotd().contains("Restarting")) { - _sortedLobbies.add(serverStatusData); + _sortedLobbies.add(server); } } } @@ -121,7 +124,7 @@ public class LobbyBalancer implements Listener, Runnable _bestServerIndex = 0; if (_sortedLobbies.size() > 0) - _maxPlayersToSendToBestServer = (_sortedLobbies.get(_bestServerIndex).MaxPlayers - _sortedLobbies.get(_bestServerIndex).Players) / 10; + _maxPlayersToSendToBestServer = (_sortedLobbies.get(_bestServerIndex).getMaxPlayerCount() - _sortedLobbies.get(_bestServerIndex).getPlayerCount()) / 10; } } } diff --git a/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/lobbyBalancer/LobbyBalancerRepository.java b/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/lobbyBalancer/LobbyBalancerRepository.java deleted file mode 100644 index b953c41d4..000000000 --- a/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/lobbyBalancer/LobbyBalancerRepository.java +++ /dev/null @@ -1,140 +0,0 @@ -package mineplex.bungee.lobbyBalancer; - -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.List; - -public class LobbyBalancerRepository -{ - private Connection _connection = null; - private String _connectionString = "jdbc:mysql://db.mineplex.com:3306/ServerStatus?autoReconnect=true&failOverReadOnly=false&maxReconnects=10"; - private String _userName = "root"; - private String _password = "tAbechAk3wR7tuTh"; - private boolean _us; - - private static String CREATE_TABLE = "CREATE TABLE IF NOT EXISTS ServerStatus (id INT NOT NULL AUTO_INCREMENT, serverName VARCHAR(256), serverGroup VARCHAR(256), address VARCHAR(256), port VARCHAR(11), updated LONG, motd VARCHAR(256), players INT, maxPlayers INT, tps INT, ram INT, maxRam INT, PRIMARY KEY (id));"; - private static String RETRIEVE_SERVER_STATUSES = "SELECT ServerStatus.serverName, ServerStatus.address, ServerStatus.port, motd, players, maxPlayers, now(), updated FROM ServerStatus INNER JOIN DynamicServers ON ServerStatus.address = DynamicServers.privateAddress WHERE DynamicServers.US = ?;"; - - public void initialize(boolean us) - { - _us = us; - - PreparedStatement preparedStatement = null; - - try - { - if (_connection == null || _connection.isClosed()) - _connection = DriverManager.getConnection(_connectionString, _userName, _password); - - // Create table - preparedStatement = _connection.prepareStatement(CREATE_TABLE); - preparedStatement.execute(); - } - catch (Exception exception) - { - exception.printStackTrace(); - } - finally - { - if (preparedStatement != null) - { - try - { - preparedStatement.close(); - } - catch (SQLException e) - { - e.printStackTrace(); - } - } - } - - System.out.println("Initialized LobbyBalancer."); - } - - public List retrieveServerStatuses() - { - ResultSet resultSet = null; - PreparedStatement preparedStatement = null; - List serverData = new ArrayList(); - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - - try - { - if (_connection == null || _connection.isClosed()) - _connection = DriverManager.getConnection(_connectionString, _userName, _password); - - preparedStatement = _connection.prepareStatement(RETRIEVE_SERVER_STATUSES); - preparedStatement.setBoolean(1, _us); - - resultSet = preparedStatement.executeQuery(); - - while (resultSet.next()) - { - ServerStatusData serverStatusData = new ServerStatusData(); - - serverStatusData.Name = resultSet.getString(1); - - serverStatusData.Address = resultSet.getString(2); - serverStatusData.Port = Integer.parseInt(resultSet.getString(3)); - serverStatusData.Motd = resultSet.getString(4); - serverStatusData.Players = resultSet.getInt(5); - serverStatusData.MaxPlayers = resultSet.getInt(6); - - long current = dateFormat.parse(resultSet.getString(7)).getTime(); - long updated = dateFormat.parse(resultSet.getString(8)).getTime(); - - if (current - updated < 10000) - serverData.add(serverStatusData); - } - } - catch (Exception exception) - { - exception.printStackTrace(); - - try - { - Thread.sleep(10); - } - catch (InterruptedException e) - { - e.printStackTrace(); - } - - return retrieveServerStatuses(); - } - finally - { - if (preparedStatement != null) - { - try - { - preparedStatement.close(); - } - catch (SQLException e) - { - e.printStackTrace(); - } - } - - if (resultSet != null) - { - try - { - resultSet.close(); - } - catch (SQLException e) - { - e.printStackTrace(); - } - } - } - - return serverData; - } -} diff --git a/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/lobbyBalancer/LobbySorter.java b/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/lobbyBalancer/LobbySorter.java index 24ce32b0c..056d79af4 100644 --- a/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/lobbyBalancer/LobbySorter.java +++ b/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/lobbyBalancer/LobbySorter.java @@ -2,43 +2,45 @@ package mineplex.bungee.lobbyBalancer; import java.util.Comparator; -public class LobbySorter implements Comparator +import mineplex.serverdata.MinecraftServer; + +public class LobbySorter implements Comparator { @Override - public int compare(ServerStatusData first, ServerStatusData second) + public int compare(MinecraftServer first, MinecraftServer second) { - if (second.Players == 999) + if (second.getPlayerCount() == 999) return -1; - if (first.Players == 999) + if (first.getPlayerCount() == 999) return 1; - if (first.Players < (first.MaxPlayers / 2) && second.Players >= (second.MaxPlayers / 2)) + if (first.getPlayerCount() < (first.getMaxPlayerCount() / 2) && second.getPlayerCount() >= (second.getMaxPlayerCount() / 2)) return -1; - if (second.Players < (second.MaxPlayers / 2) && first.Players >= (first.MaxPlayers / 2)) + if (second.getPlayerCount() < (second.getMaxPlayerCount() / 2) && first.getPlayerCount() >= (first.getMaxPlayerCount() / 2)) return 1; - if (first.Players < (first.MaxPlayers / 2)) + if (first.getPlayerCount() < (first.getMaxPlayerCount() / 2)) { - if (first.Players > second.Players) + if (first.getPlayerCount() > second.getPlayerCount()) return -1; - if (second.Players > first.Players) + if (second.getPlayerCount() > first.getPlayerCount()) return 1; } else { - if (first.Players < second.Players) + if (first.getPlayerCount() < second.getPlayerCount()) return -1; - if (second.Players < first.Players) + if (second.getPlayerCount() < first.getPlayerCount()) return 1; } - if (Integer.parseInt(first.Name.split("-")[1]) < Integer.parseInt(second.Name.split("-")[1])) + if (Integer.parseInt(first.getName().split("-")[1]) < Integer.parseInt(second.getName().split("-")[1])) return -1; - else if (Integer.parseInt(second.Name.split("-")[1]) < Integer.parseInt(first.Name.split("-")[1])) + else if (Integer.parseInt(second.getName().split("-")[1]) < Integer.parseInt(first.getName().split("-")[1])) return 1; return 0; diff --git a/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/lobbyBalancer/ServerStatusData.java b/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/lobbyBalancer/ServerStatusData.java deleted file mode 100644 index 276239154..000000000 --- a/Plugins/Mineplex.Bungee.Mineplexer/src/mineplex/bungee/lobbyBalancer/ServerStatusData.java +++ /dev/null @@ -1,11 +0,0 @@ -package mineplex.bungee.lobbyBalancer; - -public class ServerStatusData -{ - public String Name; - public String Motd; - public int Players; - public int MaxPlayers; - public String Address; - public int Port; -} diff --git a/Plugins/Mineplex.Core/.classpath b/Plugins/Mineplex.Core/.classpath index eb468c95d..9aca4cd27 100644 --- a/Plugins/Mineplex.Core/.classpath +++ b/Plugins/Mineplex.Core/.classpath @@ -8,5 +8,6 @@ + diff --git a/Plugins/Mineplex.Core/src/mineplex/core/portal/PortalRepository.java b/Plugins/Mineplex.Core/src/mineplex/core/portal/PortalRepository.java index 70b8b6751..031e2e9dd 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/portal/PortalRepository.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/portal/PortalRepository.java @@ -5,18 +5,14 @@ import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.List; import mineplex.core.common.util.NautHashMap; -import mineplex.core.status.ServerStatusData; +import mineplex.serverdata.Region; +import mineplex.serverdata.ServerManager; import org.bukkit.Bukkit; import org.bukkit.entity.Player; -import com.mysql.jdbc.exceptions.jdbc4.CommunicationsException; - public class PortalRepository { private static Object _connectionLock = new Object(); @@ -32,10 +28,8 @@ public class PortalRepository private static String RETRIEVE_TRANSFER_RECORDS = "SELECT playerName, serverName FROM playerServerTransfer WHERE playerName IN "; private static String DELETE_TRANSFER_RECORDS = "DELETE FROM playerServerTransfer WHERE playerName = ?;"; private static String ADD_TRANSFER_RECORD = "INSERT INTO playerServerTransfer (playerName,serverName) VALUES(?,?);"; - private static String RETRIEVE_SERVER_STATUSES = "SELECT ServerStatus.serverName, motd, players, maxPlayers, now(), updated FROM ServerStatus INNER JOIN DynamicServers ON ServerStatus.address = DynamicServers.privateAddress WHERE DynamicServers.US = ? AND ServerStatus.serverName = ?;"; private Connection _connection = null; - private Connection _altConnection = null; public void initialize(boolean us, String altConnectString) { @@ -226,74 +220,8 @@ public class PortalRepository public boolean doesServerExist(String serverName) { - ResultSet resultSet = null; - PreparedStatement preparedStatement = null; - List serverData = new ArrayList(); - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - - try - { - if (_altConnection == null || _altConnection.isClosed()) - { - _altConnection = DriverManager.getConnection(_altConnectString, _userName, _password); - } - - preparedStatement = _altConnection.prepareStatement(RETRIEVE_SERVER_STATUSES); - preparedStatement.setBoolean(1, _us); - preparedStatement.setString(2, serverName); - - resultSet = preparedStatement.executeQuery(); - - while (resultSet.next()) - { - ServerStatusData serverStatusData = new ServerStatusData(); - - serverStatusData.Name = resultSet.getString(1); - serverStatusData.Motd = resultSet.getString(2); - serverStatusData.Players = resultSet.getInt(3); - serverStatusData.MaxPlayers = resultSet.getInt(4); - long current = dateFormat.parse(resultSet.getString(5)).getTime(); - long updated = dateFormat.parse(resultSet.getString(6)).getTime(); - - if (current - updated < 15000) - serverData.add(serverStatusData); - } - } - catch (CommunicationsException exception) - { - return doesServerExist(serverName); - } - catch (Exception exception) - { - exception.printStackTrace(); - } - finally - { - if (preparedStatement != null) - { - try - { - preparedStatement.close(); - } - catch (SQLException e) - { - e.printStackTrace(); - } - } - - if (resultSet != null) - { - try - { - resultSet.close(); - } - catch (SQLException e) - { - e.printStackTrace(); - } - } - } - - return !serverData.isEmpty(); + Region region = _us ? Region.US : Region.EU; + return ServerManager.getServerRepository(region).serverExists(serverName); } + } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/status/ServerStatusData.java b/Plugins/Mineplex.Core/src/mineplex/core/status/ServerStatusData.java deleted file mode 100644 index 6d19160c9..000000000 --- a/Plugins/Mineplex.Core/src/mineplex/core/status/ServerStatusData.java +++ /dev/null @@ -1,9 +0,0 @@ -package mineplex.core.status; - -public class ServerStatusData -{ - public String Name; - public String Motd; - public int Players; - public int MaxPlayers; -} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/status/ServerStatusManager.java b/Plugins/Mineplex.Core/src/mineplex/core/status/ServerStatusManager.java index 0e5e34a22..1c30acb86 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/status/ServerStatusManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/status/ServerStatusManager.java @@ -1,6 +1,7 @@ package mineplex.core.status; import java.io.File; +import java.util.Collection; import java.util.List; import org.bukkit.Bukkit; @@ -13,10 +14,17 @@ import mineplex.core.common.util.Callback; import mineplex.core.monitor.LagMeter; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; +import mineplex.serverdata.MinecraftServer; +import mineplex.serverdata.Region; +import mineplex.serverdata.ServerManager; +import mineplex.serverdata.ServerRepository; public class ServerStatusManager extends MiniPlugin { - private ServerStatusRepository _repository; + // The default timeout (in milliseconds) before the ServerStatus expires. + public final int DEFAULT_SERVER_TIMEOUT = 15000; + + private ServerRepository _repository; private LagMeter _lagMeter; private String _name; @@ -45,27 +53,8 @@ public class ServerStatusManager extends MiniPlugin _name = plugin.getConfig().getString("serverstatus.name"); _us = plugin.getConfig().getBoolean("serverstatus.us"); - try - { - _repository = new ServerStatusRepository( - plugin.getConfig().getString("serverstatus.connectionurl"), - plugin.getConfig().getString("serverstatus.username"), - plugin.getConfig().getString("serverstatus.password"), - _us, - _name, - plugin.getConfig().getString("serverstatus.group"), - address, - _plugin.getServer().getPort() + "", - event.getMaxPlayers() - ); - - if (_enabled) - _repository.initialize(); - } - catch (Exception ex) - { - ex.printStackTrace(); - } + Region region = _us ? Region.US : Region.EU; + _repository = ServerManager.getServerRepository(region); } private void setupConfigValues() @@ -98,7 +87,7 @@ public class ServerStatusManager extends MiniPlugin } } - public void retrieveServerStatuses(final Callback> callback) + public void retrieveServerStatuses(final Callback> callback) { if (!_enabled) return; @@ -109,7 +98,7 @@ public class ServerStatusManager extends MiniPlugin { if (callback != null) { - callback.run(_repository.retrieveServerStatuses()); + callback.run(_repository.getServerStatuses()); } } }); @@ -128,19 +117,48 @@ public class ServerStatusManager extends MiniPlugin if (!_alternateSeconds) return; - - final ServerListPingEvent listPingEvent = new ServerListPingEvent(null, GetPlugin().getServer().getMotd(), GetPlugin().getServer().getOnlinePlayers().length, GetPlugin().getServer().getMaxPlayers()); - - GetPluginManager().callEvent(listPingEvent); - + + saveServerStatus(); + } + + /** + * Save the current {@link MinecraftServer} snapshot of this server to + * the {@link ServerRepository}. + */ + private void saveServerStatus() + { + final MinecraftServer serverSnapshot = generateServerSnapshot(); GetPlugin().getServer().getScheduler().runTaskAsynchronously(GetPlugin(), new Runnable() { public void run() { - _repository.updatePlayerCountInDatabase(listPingEvent.getMotd(), Bukkit.getOnlinePlayers().length, listPingEvent.getMaxPlayers(), (int)_lagMeter.getTicksPerSecond()); + _repository.updataServerStatus(serverSnapshot, 15000); } }); } + + /** + * @return a newly instanced {@link MinecraftServer} snapshot that represents the + * current internal state of this minecraft server. + */ + private MinecraftServer generateServerSnapshot() + { + ServerListPingEvent event = new ServerListPingEvent(null, GetPlugin().getServer().getMotd(), GetPlugin().getServer().getOnlinePlayers().length, GetPlugin().getServer().getMaxPlayers()); + GetPluginManager().callEvent(event); + + String motd = event.getMotd(); + int playerCount = Bukkit.getOnlinePlayers().length; + int maxPlayerCount = event.getMaxPlayers(); + int tps = (int) _lagMeter.getTicksPerSecond(); + String address = Bukkit.getServer().getIp().isEmpty() ? "localhost" : Bukkit.getServer().getIp(); + int port = _plugin.getServer().getPort(); + String group = _plugin.getConfig().getString("serverstatus.group"); + int ram = (int) ((Runtime.getRuntime().maxMemory() - Runtime.getRuntime().freeMemory()) / 1048576); + int maxRam = (int) (Runtime.getRuntime().maxMemory() / 1048576); + + return new MinecraftServer(_name, group, motd, address, port, playerCount, + maxPlayerCount, tps, ram, maxRam); + } public String getCurrentServerName() { diff --git a/Plugins/Mineplex.Core/src/mineplex/core/status/ServerStatusRepository.java b/Plugins/Mineplex.Core/src/mineplex/core/status/ServerStatusRepository.java deleted file mode 100644 index b66fa0cf4..000000000 --- a/Plugins/Mineplex.Core/src/mineplex/core/status/ServerStatusRepository.java +++ /dev/null @@ -1,286 +0,0 @@ -package mineplex.core.status; - -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Statement; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.List; - -public class ServerStatusRepository -{ - private String _connectionString; - private String _userName; - private String _password; - - private static String CREATE_TABLE = "CREATE TABLE IF NOT EXISTS ServerStatus (id INT NOT NULL AUTO_INCREMENT, serverName VARCHAR(256), serverGroup VARCHAR(256), address VARCHAR(256), updated LONG, lastTimeWithPlayers LONG, motd VARCHAR(256), players INT, maxPlayers INT, tps INT, ram INT, maxRam INT, PRIMARY KEY (id));"; - private static String INSERT_PLAYER_COUNT = "INSERT INTO ServerStatus (serverName, serverGroup, address, port, updated, motd, players, maxPlayers, tps, ram, maxRam) values(?, ?, ?, ?, now(), 'Configuring server.', ?, ?, 0, ?, ?);"; - private static String UPDATE_PLAYER_COUNT_WITH_PLAYERS = "UPDATE ServerStatus SET updated = now(), serverName = ?, serverGroup = ?, motd = ?, players = ?, maxPlayers = ?, tps = ?, ram = ?, maxRam = ?, lastTimeWithPlayers = now() WHERE id = ?;"; - private static String UPDATE_PLAYER_COUNT_WITHOUT_PLAYERS = "UPDATE ServerStatus SET updated = now(), serverName = ?, serverGroup = ?, motd = ?, players = ?, maxPlayers = ?, tps = ?, ram = ?, maxRam = ? WHERE id = ?;"; - private static String RETRIEVE_ID = "SELECT id FROM ServerStatus WHERE address = ? AND port = ?;"; - private static String RETRIEVE_SERVER_STATUSES = "SELECT ServerStatus.serverName, motd, players, maxPlayers, now(), updated FROM ServerStatus INNER JOIN DynamicServers ON ServerStatus.address = DynamicServers.privateAddress WHERE DynamicServers.US = ?"; - - private int _id = -1; - private boolean _us; - private String _serverName; - private String _serverGroup; - private String _address; - private String _port; - private int _maxPlayers = 0; - - Connection _connection = null; - - public ServerStatusRepository(String connectionUrl, String username, String password, boolean us, String serverName, String serverGroup, String address, String port, int maxPlayers) - { - _connectionString = connectionUrl; - _userName = username; - _password = password; - _us = us; - _serverName = serverName; - _serverGroup = serverGroup; - _address = address; - _port = port; - _maxPlayers = maxPlayers; - } - - public void initialize() - { - ResultSet resultSet = null; - PreparedStatement preparedStatement = null; - PreparedStatement preparedStatementRetrieve = null; - PreparedStatement preparedStatementInsert = null; - - try - { - _connection = DriverManager.getConnection(_connectionString, _userName, _password); - - // Create table - preparedStatement = _connection.prepareStatement(CREATE_TABLE); - preparedStatement.execute(); - - - // Retrieve id - preparedStatementRetrieve = _connection.prepareStatement(RETRIEVE_ID); - preparedStatementRetrieve.setString(1, _address); - preparedStatementRetrieve.setString(2, _port); - resultSet = preparedStatementRetrieve.executeQuery(); - - while (resultSet.next()) - { - _id = resultSet.getInt("id"); - } - - // Insert if not there - if (_id == -1) - { - preparedStatementInsert = _connection.prepareStatement(INSERT_PLAYER_COUNT, Statement.RETURN_GENERATED_KEYS); - - preparedStatementInsert.setString(1, _serverName); - preparedStatementInsert.setString(2, _serverGroup); - preparedStatementInsert.setString(3, _address); - preparedStatementInsert.setString(4, _port); - preparedStatementInsert.setInt(5, 0); - preparedStatementInsert.setInt(6, _maxPlayers); - preparedStatementInsert.setInt(7, (int) ((Runtime.getRuntime().maxMemory() - Runtime.getRuntime().freeMemory()) / 1048576)); - preparedStatementInsert.setInt(8, (int) (Runtime.getRuntime().maxMemory() / 1048576)); - - int affectedRows = preparedStatementInsert.executeUpdate(); - - if (affectedRows == 0) - { - throw new SQLException("Creating server status failed, no rows affected."); - } - - resultSet.close(); - - resultSet = preparedStatementInsert.getGeneratedKeys(); - - if (resultSet.next()) - { - _id = resultSet.getInt(1); - } - } - - // Update stoof - updatePlayerCountInDatabase("Configuring server.", 0, _maxPlayers, 20); - } - catch (Exception exception) - { - exception.printStackTrace(); - } - finally - { - if (preparedStatement != null) - { - try - { - preparedStatement.close(); - } - catch (SQLException e) - { - e.printStackTrace(); - } - } - - if (preparedStatementRetrieve != null) - { - try - { - preparedStatementRetrieve.close(); - } - catch (SQLException e) - { - e.printStackTrace(); - } - } - - if (preparedStatementInsert != null) - { - try - { - preparedStatementInsert.close(); - } - catch (SQLException e) - { - e.printStackTrace(); - } - } - - if (resultSet != null) - { - try - { - resultSet.close(); - } - catch (SQLException e) - { - e.printStackTrace(); - } - } - } - } - - public boolean updatePlayerCountInDatabase(String motd, int players, int maxPlayers, int tps) - { - PreparedStatement preparedStatement = null; - - try - { - if (_connection.isClosed()) - { - _connection = DriverManager.getConnection(_connectionString, _userName, _password); - } - - preparedStatement = _connection.prepareStatement(players != 0 ? UPDATE_PLAYER_COUNT_WITH_PLAYERS : UPDATE_PLAYER_COUNT_WITHOUT_PLAYERS, Statement.RETURN_GENERATED_KEYS); - - preparedStatement.setString(1, _serverName); - preparedStatement.setString(2, _serverGroup); - preparedStatement.setString(3, motd); - preparedStatement.setInt(4, players); - preparedStatement.setInt(5, maxPlayers); - preparedStatement.setInt(6, tps); - preparedStatement.setInt(7, (int) ((Runtime.getRuntime().maxMemory() - Runtime.getRuntime().freeMemory()) / 1048576)); - preparedStatement.setInt(8, (int) (Runtime.getRuntime().maxMemory() / 1048576)); - preparedStatement.setInt(9, _id); - - int affectedRows = preparedStatement.executeUpdate(); - - if (affectedRows == 0) - { - throw new SQLException("Updating server status failed, no rows affected."); - } - - return true; - } - catch (Exception exception) - { - exception.printStackTrace(); - return false; - } - finally - { - if (preparedStatement != null) - { - try - { - preparedStatement.close(); - } - catch (SQLException e) - { - e.printStackTrace(); - } - } - } - } - - public List retrieveServerStatuses() - { - ResultSet resultSet = null; - PreparedStatement preparedStatement = null; - List serverData = new ArrayList(); - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - - try - { - if (_connection.isClosed()) - { - _connection = DriverManager.getConnection(_connectionString, _userName, _password); - } - - preparedStatement = _connection.prepareStatement(RETRIEVE_SERVER_STATUSES); - preparedStatement.setBoolean(1, _us); - - resultSet = preparedStatement.executeQuery(); - - while (resultSet.next()) - { - ServerStatusData serverStatusData = new ServerStatusData(); - - serverStatusData.Name = resultSet.getString(1); - serverStatusData.Motd = resultSet.getString(2); - serverStatusData.Players = resultSet.getInt(3); - serverStatusData.MaxPlayers = resultSet.getInt(4); - long current = dateFormat.parse(resultSet.getString(5)).getTime(); - long updated = dateFormat.parse(resultSet.getString(6)).getTime(); - - if (current - updated < 10000) - serverData.add(serverStatusData); - } - } - catch (Exception exception) - { - exception.printStackTrace(); - } - finally - { - if (preparedStatement != null) - { - try - { - preparedStatement.close(); - } - catch (SQLException e) - { - e.printStackTrace(); - } - } - - if (resultSet != null) - { - try - { - resultSet.close(); - } - catch (SQLException e) - { - e.printStackTrace(); - } - } - } - - return serverData; - } -} diff --git a/Plugins/Mineplex.EnjinTranslator/.externalToolBuilders/Translator.launch b/Plugins/Mineplex.EnjinTranslator/.externalToolBuilders/Translator.launch index 12d9261c3..124c318a1 100644 --- a/Plugins/Mineplex.EnjinTranslator/.externalToolBuilders/Translator.launch +++ b/Plugins/Mineplex.EnjinTranslator/.externalToolBuilders/Translator.launch @@ -10,5 +10,5 @@ - + diff --git a/Plugins/Mineplex.Hub/.classpath b/Plugins/Mineplex.Hub/.classpath index beaa043d0..30c63b3bc 100644 --- a/Plugins/Mineplex.Hub/.classpath +++ b/Plugins/Mineplex.Hub/.classpath @@ -10,5 +10,6 @@ + diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/Hub.java b/Plugins/Mineplex.Hub/src/mineplex/hub/Hub.java index e65d5966a..e4815d7af 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/Hub.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/Hub.java @@ -62,7 +62,7 @@ public class Hub extends JavaPlugin implements IRelation getConfig().addDefault(WEB_CONFIG, "http://accounts.mineplex.com/"); getConfig().set(WEB_CONFIG, getConfig().getString(WEB_CONFIG)); saveConfig(); - + String webServerAddress = getConfig().getString(WEB_CONFIG); Logger.initialize(this); @@ -87,7 +87,7 @@ public class Hub extends JavaPlugin implements IRelation NpcManager npcManager = new NpcManager(this, creature); PetManager petManager = new PetManager(this, clientManager, donationManager, creature, webServerAddress); new AntiStack(this); - + //Main Modules ServerStatusManager serverStatusManager = new ServerStatusManager(this, new LagMeter(this, clientManager)); PacketHandler packetHandler = new PacketHandler(this); @@ -97,9 +97,9 @@ public class Hub extends JavaPlugin implements IRelation AntiHack.Initialize(this, punish, portal); HubManager hubManager = new HubManager(this, new BlockRestore(this), clientManager, donationManager, new ConditionManager(this), new DisguiseManager(this, packetHandler), new TaskManager(this, webServerAddress), portal, partyManager, preferenceManager, petManager); new PlayerTracker(this, serverStatusManager.getCurrentServerName(), serverStatusManager.getUs()); - + QueueManager queueManager = new QueueManager(this, clientManager, donationManager, new EloManager(this), partyManager); - + new ServerManager(this, clientManager, donationManager, portal, partyManager, serverStatusManager, hubManager, new StackerManager(hubManager), queueManager); new Chat(this, clientManager, preferenceManager, serverStatusManager.getCurrentServerName()); new MemoryFix(this); diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/HubClient.java b/Plugins/Mineplex.Hub/src/mineplex/hub/HubClient.java index 876bdb71f..cdcebe79b 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/HubClient.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/HubClient.java @@ -10,7 +10,7 @@ public class HubClient public String PurchaseString = " Purchase Ultra Rank at mineplex.com to unlock all game benefits!"; public int PurchaseIndex = 0; - + public String UltraString = " Thank you for your support!"; public int UltraIndex = 0; diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/HubRepository.java b/Plugins/Mineplex.Hub/src/mineplex/hub/HubRepository.java index e8dffc1b3..e79a1691c 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/HubRepository.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/HubRepository.java @@ -11,8 +11,6 @@ import java.util.HashMap; import java.util.List; import mineplex.core.common.util.NautHashMap; -import mineplex.core.status.ServerStatusData; - import org.bukkit.Bukkit; import org.bukkit.entity.Player; diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/server/ServerManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/server/ServerManager.java index e509d7633..05c58faa2 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/server/ServerManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/server/ServerManager.java @@ -46,7 +46,6 @@ import mineplex.core.logger.Logger; import mineplex.core.portal.Portal; import mineplex.core.recharge.Recharge; import mineplex.core.shop.ShopBase; -import mineplex.core.status.ServerStatusData; import mineplex.core.status.ServerStatusManager; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; @@ -59,6 +58,7 @@ import mineplex.hub.queue.ui.QueueShop; import mineplex.hub.server.ui.LobbyShop; import mineplex.hub.server.ui.QuickShop; import mineplex.hub.server.ui.ServerNpcShop; +import mineplex.serverdata.MinecraftServer; public class ServerManager extends MiniPlugin { @@ -326,26 +326,26 @@ public class ServerManager extends MiniPlugin _retrieving = true; - _statusManager.retrieveServerStatuses(new Callback>() + _statusManager.retrieveServerStatuses(new Callback>() { - public void run(List serverStatusList) + public void run(Collection serverStatusList) { - for (ServerStatusData serverStatus : serverStatusList) + for (MinecraftServer serverStatus : serverStatusList) { - if (!_serverInfoMap.containsKey(serverStatus.Name)) + if (!_serverInfoMap.containsKey(serverStatus.getName())) { ServerInfo newServerInfo = new ServerInfo(); - newServerInfo.Name = serverStatus.Name; - _serverInfoMap.put(serverStatus.Name, newServerInfo); + newServerInfo.Name = serverStatus.getName(); + _serverInfoMap.put(serverStatus.getName(), newServerInfo); } - String[] args = serverStatus.Motd.split("\\|"); - String tag = (serverStatus.Name != null && serverStatus.Name.contains("-")) ? serverStatus.Name.split("-")[0] : "N/A"; + String[] args = serverStatus.getMotd().split("\\|"); + String tag = (serverStatus.getName() != null && serverStatus.getName().contains("-")) ? serverStatus.getName().split("-")[0] : "N/A"; - ServerInfo serverInfo = _serverInfoMap.get(serverStatus.Name); - serverInfo.MOTD = args.length > 0 ? args[0] : serverStatus.Motd; - serverInfo.CurrentPlayers = serverStatus.Players; - serverInfo.MaxPlayers = serverStatus.MaxPlayers; + ServerInfo serverInfo = _serverInfoMap.get(serverStatus.getName()); + serverInfo.MOTD = args.length > 0 ? args[0] : serverStatus.getMotd(); + serverInfo.CurrentPlayers = serverStatus.getPlayerCount(); + serverInfo.MaxPlayers = serverStatus.getMaxPlayerCount(); if (args.length > 1) serverInfo.ServerType = args[1]; @@ -356,7 +356,7 @@ public class ServerManager extends MiniPlugin if (args.length > 3) serverInfo.Map = args[3]; - _serverUpdate.put(serverStatus.Name, System.currentTimeMillis()); + _serverUpdate.put(serverStatus.getName(), System.currentTimeMillis()); if (_serverKeyTagMap.containsKey(tag)) { diff --git a/Plugins/Mineplex.ServerData/.classpath b/Plugins/Mineplex.ServerData/.classpath new file mode 100644 index 000000000..027819007 --- /dev/null +++ b/Plugins/Mineplex.ServerData/.classpath @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Plugins/Mineplex.ServerData/.externalToolBuilders/New_Builder.launch b/Plugins/Mineplex.ServerData/.externalToolBuilders/New_Builder.launch new file mode 100644 index 000000000..0c6e0f696 --- /dev/null +++ b/Plugins/Mineplex.ServerData/.externalToolBuilders/New_Builder.launch @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/Plugins/Mineplex.ServerData/.externalToolBuilders/ServerData.launch b/Plugins/Mineplex.ServerData/.externalToolBuilders/ServerData.launch new file mode 100644 index 000000000..a6e931a53 --- /dev/null +++ b/Plugins/Mineplex.ServerData/.externalToolBuilders/ServerData.launch @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/Plugins/Mineplex.ServerData/.project b/Plugins/Mineplex.ServerData/.project new file mode 100644 index 000000000..87c600cb6 --- /dev/null +++ b/Plugins/Mineplex.ServerData/.project @@ -0,0 +1,27 @@ + + + Mineplex.ServerData + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.ui.externaltools.ExternalToolBuilder + auto,full,incremental, + + + LaunchConfigHandle + <project>/.externalToolBuilders/ServerData.launch + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/Plugins/Mineplex.ServerData/Mineplex.ServerData.iml b/Plugins/Mineplex.ServerData/Mineplex.ServerData.iml new file mode 100644 index 000000000..c68cf7cf9 --- /dev/null +++ b/Plugins/Mineplex.ServerData/Mineplex.ServerData.iml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Plugins/Mineplex.ServerData/build.xml b/Plugins/Mineplex.ServerData/build.xml new file mode 100644 index 000000000..411a60854 --- /dev/null +++ b/Plugins/Mineplex.ServerData/build.xml @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Plugins/Mineplex.ServerData/src/mineplex/serverdata/DedicatedServer.java b/Plugins/Mineplex.ServerData/src/mineplex/serverdata/DedicatedServer.java new file mode 100644 index 000000000..d5d4cb40a --- /dev/null +++ b/Plugins/Mineplex.ServerData/src/mineplex/serverdata/DedicatedServer.java @@ -0,0 +1,99 @@ +package mineplex.serverdata; + +import java.util.HashMap; +import java.util.Map; + +public class DedicatedServer +{ + + // The default amount of available CPU usage. + public static final int DEFAULT_CPU = 32; + + // The default amount of available ram usage. + public static final int DEFAULT_RAM = 14000; + + // The unique name representing this server + private String _name; + public String getName() { return _name; } + + // The public I.P address used to connect to this server + private String _publicAddress; + public String getPublicAddress() { return _publicAddress; } + + // The private I.P address of this server + private String _privateAddress; + public String getPrivateAddress() { return _privateAddress; } + + // The geographical region that this dedicated server is located in + private Region _region; + public Region getRegion() { return _region; } + public boolean isUsRegion() { return _region == Region.US; } + + // The amount of available CPU usage on this server box. + private int _availableCpu; + public int getAvailableCpu() { return _availableCpu; } + + // The amount of available ram usage on this server box. + private int _availableRam; + public int getAvailableRam() { return _availableRam; } + + // A mapping of server group names (Key) to the number of server instances (Value) + private Map _serverCounts; + + /** + * Class constructor + * @param data - the set of serialized data values representing + * the internal state of this DedicatedServer. + */ + public DedicatedServer(Map data) + { + this._name = data.get("name"); + this._publicAddress = data.get("publicAddress"); + this._privateAddress = data.get("privateAddress"); + this._region = Region.valueOf(data.get("region").toUpperCase()); + this._availableCpu = Integer.valueOf(data.get("cpu")); + this._availableRam = Integer.valueOf(data.get("ram")); + this._serverCounts = new HashMap(); + } + + /** + * Set the number of {@link MinecraftServer} instances on this server + * for a specific {@link ServerGroup} type. + * @param serverGroup - the {@link ServerGroup} whose server instance count is being set. + * @param serverCount - the number of {@link MinecraftServer} instances active on this server. + */ + public void setServerCount(ServerGroup serverGroup, int serverCount) + { + if (_serverCounts.containsKey(serverGroup.getName())) + { + int currentAmount = _serverCounts.get(serverGroup.getName()); + this._availableCpu += serverGroup.getRequiredCpu() * currentAmount; + this._availableRam += serverGroup.getRequiredRam() * currentAmount; + } + + _serverCounts.put(serverGroup.getName(), serverCount); + this._availableCpu -= serverGroup.getRequiredCpu() * serverCount; + this._availableRam -= serverGroup.getRequiredRam() * serverCount; + } + + /** + * @param serverGroup - the server group whose server count on this dedicated server is being fetched. + * @return the number of active {@link MinecraftServer}s on this dedicated server + * that belong to {@code serverGroup}. + */ + public int getServerCount(ServerGroup serverGroup) + { + String groupName = serverGroup.getName(); + return _serverCounts.containsKey(groupName) ? _serverCounts.get(groupName) : 0; + } + + /** + * Increment the number of {@link MinecraftServer} instances on this server + * for a specific {@link ServerGroup} type by 1. + * @param serverGroup - the {@link ServerGroup} whose server instance count is being incremented + */ + public void incrementServerCount(ServerGroup serverGroup) + { + setServerCount(serverGroup, getServerCount(serverGroup) + 1); + } +} diff --git a/Plugins/Mineplex.ServerData/src/mineplex/serverdata/DedicatedServerSorter.java b/Plugins/Mineplex.ServerData/src/mineplex/serverdata/DedicatedServerSorter.java new file mode 100644 index 000000000..f6ef77ed6 --- /dev/null +++ b/Plugins/Mineplex.ServerData/src/mineplex/serverdata/DedicatedServerSorter.java @@ -0,0 +1,18 @@ +package mineplex.serverdata; + +import java.util.Comparator; + +public class DedicatedServerSorter implements Comparator +{ + @Override + public int compare(DedicatedServer first, DedicatedServer second) + { + if (second.getAvailableRam() <= 1024) return -1; + else if (first.getAvailableRam() <= 1024) return 1; + else if (first.getAvailableRam() > second.getAvailableRam()) return -1; + else if (second.getAvailableRam() > first.getAvailableRam()) return 1; + else if (first.getAvailableCpu() > second.getAvailableCpu()) return -1; + else if (second.getAvailableCpu() > first.getAvailableCpu()) return 1; + else return 0; + } +} \ No newline at end of file diff --git a/Plugins/Mineplex.ServerData/src/mineplex/serverdata/MinecraftServer.java b/Plugins/Mineplex.ServerData/src/mineplex/serverdata/MinecraftServer.java new file mode 100644 index 000000000..48f626d1a --- /dev/null +++ b/Plugins/Mineplex.ServerData/src/mineplex/serverdata/MinecraftServer.java @@ -0,0 +1,105 @@ +package mineplex.serverdata; + +/** + * A MinecraftServer represents a snapshot of the internal + * state of an active Minecraft host server. + * @author Ty + * + */ +public class MinecraftServer +{ + + // The name of this server. + private String _name; + public String getName() { return _name; } + + // The ServerGroup that this MinecraftServer belongs to. + private String _group; + public String getGroup() { return _group; } + + // The current message of the day (MOTD) of the server. + private String _motd; + public String getMotd() { return _motd; } + + // The number of players currently online. + private int _playerCount; + public int getPlayerCount() { return _playerCount; } + public void incrementPlayerCount(int amount) { this._playerCount += amount; } + + // The maximum number of players allowed on the server. + private int _maxPlayerCount; + public int getMaxPlayerCount() { return _maxPlayerCount; } + + // The ticks per second (TPS) of the server. + private int _tps; + public int getTps() { return _tps; } + + // The current amount of RAM allocated to the server. + private int _ram; + public int getRam() { return _ram; } + + // The maximum amount of available RAM that can be allocated to the server. + private int _maxRam; + public int getMaxRam() { return _maxRam; } + + // The public I.P address used by players to connect to the server. + private String _publicAddress; + public String getPublicAddress() { return _publicAddress; } + + // The port the server is currently running/listening on. + private int _port; + public int getPort() { return _port; } + + /** + * Class constructor + * @param name + * @param group + * @param motd + * @param publicAddress + * @param port + * @param playerCount + * @param maxPlayerCount + * @param tps + * @param ram + * @param maxRam + */ + public MinecraftServer(String name, String group, String motd, String publicAddress, int port, + int playerCount, int maxPlayerCount, int tps, int ram, int maxRam) + { + this._name = name; + this._group = group; + this._motd = motd; + this._playerCount = playerCount; + this._maxPlayerCount = maxPlayerCount; + this._tps = tps; + this._ram = ram; + this._maxRam = maxRam; + this._publicAddress = publicAddress; + this._port = port; + } + + /** + * @return true, if {@value _playerCount} equals 0, false otherwise. + */ + public boolean isEmpty() + { + return _playerCount == 0; + } + + /** + * @return true, if this server is currently joinable by players, false otherwise. + */ + public boolean isJoinable() + { + if (_motd != null && (_motd.contains("Starting") || _motd.contains("Recruiting") + || _motd.contains("Waiting") || _motd.contains("Cup") || _motd.isEmpty())) + { + if (_playerCount < _maxPlayerCount) + { + int availableSlots = _maxPlayerCount - _playerCount; + return _motd.isEmpty() ? (availableSlots > 20) : true; + } + } + return false; + } +} diff --git a/Plugins/Mineplex.ServerData/src/mineplex/serverdata/RedisServerRepository.java b/Plugins/Mineplex.ServerData/src/mineplex/serverdata/RedisServerRepository.java new file mode 100644 index 000000000..a23f72997 --- /dev/null +++ b/Plugins/Mineplex.ServerData/src/mineplex/serverdata/RedisServerRepository.java @@ -0,0 +1,314 @@ +package mineplex.serverdata; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import redis.clients.jedis.Jedis; +import redis.clients.jedis.JedisPool; +import redis.clients.jedis.JedisPoolConfig; +import redis.clients.jedis.Pipeline; +import redis.clients.jedis.Response; +import redis.clients.jedis.Transaction; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; + +/** + * RedisServerRepository offers a Redis-based implementation of {@link ServerRepository} + * using a mixture of hash and JSON encoded storage. + * @author Ty + * + */ +public class RedisServerRepository implements ServerRepository +{ + + // The delimiter character used for redis key paths + public final char KEY_DELIMITER = '.'; + + // The pool used to retrieve jedis instances. + private JedisPool _jedisPool; + + // The geographical region of the servers stored by this ServerRepository + private Region _region; + + /** + * Class constructor + * @param host + * @param port + */ + public RedisServerRepository(String host, int port, Region region) + { + this._jedisPool = new JedisPool(new JedisPoolConfig(), host, port); + this._region = region; + } + + @Override + public Collection getServerStatuses() + { + Collection servers = new HashSet(); + Jedis jedis = _jedisPool.getResource(); + + try + { + String setKey = concatenate("serverstatus", "minecraft", _region.toString()); + Pipeline pipeline = jedis.pipelined(); + + List> responses = new ArrayList>(); + for (String serverName : getActiveNames(setKey)) + { + String dataKey = concatenate(setKey, serverName); + responses.add(pipeline.get(dataKey)); + } + + pipeline.sync(); + + for (Response response : responses) + { + String serializedData = response.get(); + servers.add(Utility.deserialize(serializedData, MinecraftServer.class)); + } + } + finally + { + _jedisPool.returnResource(jedis); + } + + return servers; + } + + @Override + public MinecraftServer getServerStatus(String serverName) + { + MinecraftServer server = null; + Jedis jedis = _jedisPool.getResource(); + + try + { + String setKey = concatenate("serverstatus", "minecraft", _region.toString()); + String dataKey = concatenate(setKey, serverName); + String serializedData = jedis.get(dataKey); + server = Utility.deserialize(serializedData, MinecraftServer.class); + } + finally + { + _jedisPool.returnResource(jedis); + } + + return server; + } + + @Override + public void updataServerStatus(MinecraftServer serverData, int timeout) + { + Jedis jedis = _jedisPool.getResource(); + + try + { + String serializedData = Utility.serialize(serverData); + String serverName = serverData.getName(); + String setKey = concatenate("serverstatus", "minecraft", _region.toString()); + String dataKey = concatenate(setKey, serverName); + long expiry = System.currentTimeMillis() + timeout; + + Transaction transaction = jedis.multi(); + transaction.set(dataKey, serializedData); + transaction.zadd(setKey, expiry, serverName); + transaction.exec(); + } + finally + { + _jedisPool.returnResource(jedis); + } + } + + @Override + public void removeServerStatus(MinecraftServer serverData) + { + Jedis jedis = _jedisPool.getResource(); + + try + { + String serverName = serverData.getName(); + String setKey = concatenate("serverstatus", "minecraft", _region.toString()); + String dataKey = concatenate(setKey, serverName); + + Transaction transaction = jedis.multi(); + transaction.set(dataKey, null); + transaction.zrem(setKey, serverName); + transaction.exec(); + } + finally + { + _jedisPool.returnResource(jedis); + } + } + + @Override + public boolean serverExists(String serverName) + { + return getServerStatus(serverName) != null; + } + + @Override + public Collection getDedicatedServers() + { + Collection servers = new HashSet(); + Jedis jedis = _jedisPool.getResource(); + + try + { + String key = concatenate("serverstatus", "dedicated"); + Set serverNames = jedis.smembers(key); + Set>> serverDatas = new HashSet>>(); + + Pipeline pipeline = jedis.pipelined(); + + for (String serverName : serverNames) + { + String dataKey = concatenate(key, serverName); + serverDatas.add(pipeline.hgetAll(dataKey)); + } + + pipeline.sync(); + + for (Response> response : serverDatas) + { + Map data = response.get(); + DedicatedServer server = new DedicatedServer(data); + + if (server.getRegion() == _region) + { + servers.add(server); + } + } + + } + finally + { + _jedisPool.returnResource(jedis); + } + + Map serverGroups = new HashMap(); + for (ServerGroup serverGroup : getServerGroups()) + { + serverGroups.put(serverGroup.getName(), serverGroup); + } + + // TODO: Find cleaner way to prep dedicated server group counts? + for (DedicatedServer server : servers) + { + for (MinecraftServer minecraftServer : getServerStatuses()) + { + if (serverGroups.containsKey(minecraftServer.getGroup())) + { + ServerGroup serverGroup = serverGroups.get(minecraftServer.getGroup()); + server.incrementServerCount(serverGroup); + } + } + } + + return servers; + } + + @Override + public Collection getServerGroups() + { + Collection servers = new HashSet(); + Jedis jedis = _jedisPool.getResource(); + + try + { + String key = "servergroups"; + Set names = jedis.smembers(key); + + for (String groupName : names) + { + String dataKey = concatenate(key, groupName); + Map data = jedis.hgetAll(dataKey); + servers.add(new ServerGroup(data, _region)); + } + } + finally + { + _jedisPool.returnResource(jedis); + } + + return servers; + } + + @Override + public int clean() + { + // TODO: Clean out expired/dead MinecraftServers. + return 0; + } + + /** + * @param key - the key where the sorted set of server sessions is stored + * @return the {@link Set} of active server names stored at {@code key} for non-expired + * servers. + */ + protected Set getActiveNames(String key) + { + Set names = new HashSet(); + Jedis jedis = _jedisPool.getResource(); + + try + { + String min = "(" + System.currentTimeMillis(); + String max = "+inf"; + names = jedis.zrangeByScore(key, min, max); + } + finally + { + _jedisPool.returnResource(jedis); + } + + return names; + } + + /** + * @param elements - the elements to concatenate together + * @return the concatenated form of all {@code elements} + * separated by the delimiter {@value KEY_DELIMITER}. + */ + protected String concatenate(String... elements) + { + return Utility.concatenate(KEY_DELIMITER, elements); + } + + /* + * = "US" or "EU" + * serverstatus.minecraft.. stores the JSON encoded information of an active MinecraftServer instance. + * serverstatus.minecraft. stores a sorted set with the set of name's for MinecraftServers + * with a value of their expiry date (in ms) + * + * ----------------------- + * + * serverstatus.dedicated. stores the hash containing information of an active dedicated server instance + * serverstatus.dedicated stores the set of active dedicated server names. + * serverstatus.dedicated uses a hash with the following keys: + * name, publicAddress, privateAddress, region, cpu, ram + * + * Example commands for adding/creating a new dedicated server: + * 1. HMSET serverstatus.dedicated. name publicAddress privateAddress region cpu ram + * 2. SADD serverstatus.dedicated + * + * ------------------------ + * + * servergroups. stores the hash-set containing information for the server group type. + * servergroups stores the set of active server group names. + * servergroups. stores a hash of the following key name/values + * name, prefix, scriptName, ram, cpu, totalServers, joinableServers + * + * Example commands for adding/creating a new server group: + * + * 1. HMSET servergroups. name prefix scriptName ram cpu totalServers joinableServers + * 2. SADD servergroups + */ +} diff --git a/Plugins/Mineplex.ServerData/src/mineplex/serverdata/Region.java b/Plugins/Mineplex.ServerData/src/mineplex/serverdata/Region.java new file mode 100644 index 000000000..5c764c9a4 --- /dev/null +++ b/Plugins/Mineplex.ServerData/src/mineplex/serverdata/Region.java @@ -0,0 +1,13 @@ +package mineplex.serverdata; + +/** + * Region enumerates the various geographical regions where Mineplex servers are + * hosted. + * @author Ty + * + */ +public enum Region +{ + US, + EU; +} diff --git a/Plugins/Mineplex.ServerData/src/mineplex/serverdata/ServerGroup.java b/Plugins/Mineplex.ServerData/src/mineplex/serverdata/ServerGroup.java new file mode 100644 index 000000000..0cde76721 --- /dev/null +++ b/Plugins/Mineplex.ServerData/src/mineplex/serverdata/ServerGroup.java @@ -0,0 +1,207 @@ +package mineplex.serverdata; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + * A ServerGroup represents a set of associated requirements for a type of {@link MinecraftServer}. + * @author Ty + * + */ +public class ServerGroup +{ + + // The unique name identifying this ServerGroup. + private String _name; + public String getName() { return _name; } + + // The prefix used to desginate this type of ServerGroup. + private String _prefix; + public String getPrefix() { return _prefix; } + + // The name of the shell script used to start the minecraft server instance. + private String _scriptName; + public String getScriptName() { return _scriptName; } + + // The amount of ram required for a server instance of this group type + private int _requiredRam; + public int getRequiredRam() { return _requiredRam; } + + // The amount of cpu required for a server instance of this group type + private int _requiredCpu; + public int getRequiredCpu() { return _requiredCpu; } + + // The total amount of servers required to be active of this group type + private int _requiredTotalServers; + public int getRequiredTotalServers() { return _requiredTotalServers; } + + // The amount of joinable (non-full) servers required to be active for this group + private int _requiredJoinableServers; + public int getRequiredJoinableServers() { return _requiredJoinableServers; } + + // The set of active MinecraftServers that belong to this server group + private Set servers; + + /** + * Class constructor + * @param data - the set of serialized data values representing + * the internal state of this ServerGroup. + * @param region - the region from which to fetch active {@link MinecraftServer}s. + */ + public ServerGroup(Map data, Region region) + { + this._name = data.get("name"); + this._prefix = data.get("prefix"); + this._scriptName = data.get("scriptName"); + this._requiredRam = Integer.valueOf(data.get("ram")); + this._requiredCpu = Integer.valueOf(data.get("cpu")); + this._requiredTotalServers = Integer.valueOf(data.get("totalServers")); + this._requiredJoinableServers = Integer.valueOf(data.get("joinableServers")); + + fetchServers(region); + } + + /** + * @return the total number of currently active {@link MinecraftServer}s belonging + * to this server group. + */ + public int getServerCount() + { + return servers.size(); + } + + /** + * @return the total number of currently joinable (non-full) {@link MinecraftServer}s + * belonging to this server group. + */ + public int getJoinableCount() + { + int joinable = 0; + + for (MinecraftServer server : servers) + { + if (server.isJoinable()) + { + joinable++; + } + } + + return joinable; + } + + /** + * @return the total player count across all {@link MinecraftServer}s + * belonging to this server group. + */ + public int getPlayerCount() + { + int playerCount = 0; + + for (MinecraftServer server : servers) + { + playerCount += server.getPlayerCount(); + } + + return playerCount; + } + + /** + * @return the total maximum player count across all {@link MinecraftServer}s + * belonging to this server group. + */ + public int getMaxPlayerCount() + { + int maxPlayerCount = 0; + + for (MinecraftServer server : servers) + { + maxPlayerCount += server.getMaxPlayerCount(); + } + + return maxPlayerCount; + } + + /** + * @return a {@link Collection} of active but empty {@link MinecraftServer}s that belong + * to this server group. + */ + public Collection getEmptyServers() + { + Collection emptyServers = new HashSet(); + + for (MinecraftServer server : servers) + { + if (server.isEmpty()) + { + emptyServers.add(server); + } + } + + return emptyServers; + } + + /** + * Update & fetch all {@link MinecraftServer}s that belong to this server group and + * store them in {@code servers} field. + */ + private void fetchServers(Region region) + { + this.servers = new HashSet(); + ServerRepository repository = ServerManager.getServerRepository(region); + + for (MinecraftServer server : repository.getServerStatuses()) + { + if (_name.equals(server.getGroup())) + { + servers.add(server); + } + } + } + + /** + * @return a unique server name suffix id, unique to any servers in this ServerGroup. + */ + public int generateUniqueId() + { + int id = 0; + + while (true) + { + boolean uniqueId = true; + + for (MinecraftServer server : servers) + { + String serverName = server.getName(); + try + { + int serverNum = Integer.parseInt(serverName.split("-")[1]); + + if (serverNum == id) + { + uniqueId = false; + break; + } + } + catch (Exception exception) + { + exception.printStackTrace(); + } + } + + if (uniqueId) + { + return id; + } + else + { + id++; + } + } + } + +} diff --git a/Plugins/Mineplex.ServerData/src/mineplex/serverdata/ServerManager.java b/Plugins/Mineplex.ServerData/src/mineplex/serverdata/ServerManager.java new file mode 100644 index 000000000..e1a0f46b0 --- /dev/null +++ b/Plugins/Mineplex.ServerData/src/mineplex/serverdata/ServerManager.java @@ -0,0 +1,49 @@ +package mineplex.serverdata; + +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +/** + * ServerManager handles the creation/management of {@link ServerRepository}s for use. + * @author Ty + * + */ +public class ServerManager +{ + // The host of the default redis database used for server repository + private static String DEFAULT_REDIS_HOST = "10.33.53.16"; + + // The default port used by redis databases + private static int DEFAULT_REDIS_PORT = 6379; + + // The cached repository instances + private static Map repositories = new HashMap(); + + /** + * @param host - the host url used to connect to the database + * @param port - the port to connect to the repository + * @param region - the geographical region of the {@link ServerRepository}. + * @return a newly instanced (or cached) {@link ServerRepository} for the specified {@code region}. + */ + public static ServerRepository getServerRepository(String host, int port, Region region) + { + if (repositories.containsKey(region)) return repositories.get(region); + + ServerRepository repository = new RedisServerRepository(host, port, region); + repositories.put(region, repository); + return repository; + } + + /** + * {@code host} defaults to {@value DEFAULT_REDIS_HOST} and + * {@code port} defaults to {@value DEFAULT_REDIS_PORT}. + * + * @see #getServerRepository(String, int, Region) + */ + public static ServerRepository getServerRepository(Region region) + { + return getServerRepository(DEFAULT_REDIS_HOST, DEFAULT_REDIS_PORT, region); + } + +} diff --git a/Plugins/Mineplex.ServerData/src/mineplex/serverdata/ServerRepository.java b/Plugins/Mineplex.ServerData/src/mineplex/serverdata/ServerRepository.java new file mode 100644 index 000000000..c71ef60b9 --- /dev/null +++ b/Plugins/Mineplex.ServerData/src/mineplex/serverdata/ServerRepository.java @@ -0,0 +1,71 @@ +package mineplex.serverdata; + +import java.util.Collection; + +/** + * The ServerRepository is used for storing/retrieving active sessions + * for {@link MinecraftServer}s, {@link DedicatedServer}s, and {@link ServerGroup}s + * from a persistent database/repoistory. + * @author Ty + * + */ +public interface ServerRepository +{ + + /** + * @return a newly instanced snapshot {@link Collection} of all currently active + * {@link MinecraftServer}s in the repository. + */ + public Collection getServerStatuses(); + + /** + * @param serverName - the name of the {@link MinecraftServer} to be fetched. + * @return the currently active {@link MinecraftServer} with a matching {@code serverName}, + * if an active one exists, null otherwise. + */ + public MinecraftServer getServerStatus(String serverName); + + /** + * Update (or add, if it doesn't already exist) a {@link MinecraftServer}s data + * in the repository. + * + * A {@link MinecraftServer} must be updated within {@code timeout} milliseconds before + * it expires and is removed from the repository. + * @param serverData - the {@link MinecraftServer} to add/update in the repository. + * @param timeout - the timeout (in milliseconds) before the {@link MinecraftServer} session expires. + */ + public void updataServerStatus(MinecraftServer serverData, int timeout); + + /** + * Remove an active {@link MinecraftServer} from the repository. + * @param serverData - the {@link MinecraftServer} to be removed. + */ + public void removeServerStatus(MinecraftServer serverData); + + /** + * @param serverName - the name of the server whose existence is being checked. + * @return true, if there exists an active {@link MinecraftServer} session with a + * matching {@code serverName}, false otherwise. + */ + public boolean serverExists(String serverName); + + /** + * @return a newly instanced snapshot {@link Collection} of all the + * currently active {@link DedicatedServer}s in the repository. + */ + public Collection getDedicatedServers(); + + /** + * @return a newly instanced snapshot {@link Collection} of all the + * currently active {@link ServerGroup}s in the repository. + */ + public Collection getServerGroups(); + + /** + * Clean the repository by removing all expired server statuses that have + * passed their timeout period. + * @return the number of expired server statuses removed/cleared. + */ + public int clean(); + +} diff --git a/Plugins/Mineplex.ServerData/src/mineplex/serverdata/Utility.java b/Plugins/Mineplex.ServerData/src/mineplex/serverdata/Utility.java new file mode 100644 index 000000000..a7b3df1e1 --- /dev/null +++ b/Plugins/Mineplex.ServerData/src/mineplex/serverdata/Utility.java @@ -0,0 +1,54 @@ +package mineplex.serverdata; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; + +/** + * Utility offers various necessary utility-based methods for use in Mineplex.ServerData. + * @author Ty + * + */ +public class Utility +{ + + // The Gson instance used to serialize/deserialize objects in JSON form. + private static Gson _gson = new GsonBuilder().create(); + public static Gson getGson() { return _gson; } + + /** + * @param object - the (non-null) object to serialize + * @return the serialized form of {@code object}. + */ + public static String serialize(Object object) + { + return _gson.toJson(object); + } + + /** + * @param serializedData - the serialized data to be deserialized + * @param type - the resulting class type of the object to be deserialized + * @return the deserialized form of {@code serializedData} for class {@code type}. + */ + public static T deserialize(String serializedData, Class type) + { + return _gson.fromJson(serializedData, type); + } + + /** + * @param delimiter - the delimiter character used to separate the concatenated elements + * @param elements - the set of string elements to be concatenated and returned. + * @return the concatenated string of all {@code elements} separated by the {@code delimiter}. + */ + public static String concatenate(char delimiter, String... elements) + { + int length = elements.length; + String result = length > 0 ? elements[0] : new String(); + + for (int i = 1; i < length; i++) + { + result += delimiter + elements[i]; + } + + return result; + } +} diff --git a/Plugins/Mineplex.ServerMonitor/.classpath b/Plugins/Mineplex.ServerMonitor/.classpath index 3e7f9b554..20f5a834c 100644 --- a/Plugins/Mineplex.ServerMonitor/.classpath +++ b/Plugins/Mineplex.ServerMonitor/.classpath @@ -6,5 +6,6 @@ + diff --git a/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/DynamicServerData.java b/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/DynamicServerData.java deleted file mode 100644 index 4b9a86957..000000000 --- a/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/DynamicServerData.java +++ /dev/null @@ -1,33 +0,0 @@ -package mineplex.servermonitor; - -import java.util.HashMap; - -public class DynamicServerData -{ - public String Name; - public String Address; - public int AvailableCPU = 32; - public int AvailableRAM = 14000; - - public HashMap ServerGroupCount = new HashMap(); - public boolean US; - public String PrivateAddress; - - public void setServerGroupCount(ServerGroupData groupData, int count) - { - if (ServerGroupCount.containsKey(groupData.Name)) - { - AvailableCPU += groupData.RequiredCPU * ServerGroupCount.get(groupData.Name); - AvailableRAM += groupData.RequiredRAM * ServerGroupCount.get(groupData.Name); - } - - ServerGroupCount.put(groupData.Name, count); - AvailableCPU -= groupData.RequiredCPU * count; - AvailableRAM -= groupData.RequiredRAM * count; - } - - public void printInfo() - { - System.out.println("DynamicServerData - Name:" + Name + " Address:" + Address + " RAM:" + AvailableRAM + " CPU:" + AvailableCPU); - } -} diff --git a/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/DynamicServerSorter.java b/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/DynamicServerSorter.java deleted file mode 100644 index fbf37f8f3..000000000 --- a/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/DynamicServerSorter.java +++ /dev/null @@ -1,30 +0,0 @@ -package mineplex.servermonitor; - -import java.util.Comparator; - -public class DynamicServerSorter implements Comparator -{ - @Override - public int compare(DynamicServerData first, DynamicServerData second) - { - if (second.AvailableRAM <= 1024) - return -1; - - if (first.AvailableRAM <= 1024) - return 1; - - if (first.AvailableRAM > second.AvailableRAM) - return -1; - - if (second.AvailableRAM > first.AvailableRAM) - return 1; - - if (first.AvailableCPU > second.AvailableCPU) - return -1; - - if (second.AvailableCPU > first.AvailableCPU) - return 1; - - return 0; - } -} \ No newline at end of file diff --git a/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/GroupStatusData.java b/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/GroupStatusData.java deleted file mode 100644 index acfd4969b..000000000 --- a/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/GroupStatusData.java +++ /dev/null @@ -1,115 +0,0 @@ -package mineplex.servermonitor; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -public class GroupStatusData -{ - private int _serverNum = 0; - private int _totalCount = 0; - private int _joinableCount = 0; - - public int Players; - public int MaxPlayers; - public int MaxServerNumber; - - public List EmptyServers = new ArrayList(); - public List KillServers = new ArrayList(); - public HashMap Servers = new HashMap(); - - public void addServer(ServerStatusData serverStatusData) - { - if (Servers.containsKey(Integer.parseInt(serverStatusData.Name.split("-")[1]))) - { - ServerStatusData existingServer = Servers.get(Integer.parseInt(serverStatusData.Name.split("-")[1])); - int existingCount = existingServer.Players; - int newCount = serverStatusData.Players; - - if (newCount == 0 || newCount < existingCount) - { - KillServers.add(serverStatusData); - return; - } - else if (existingCount == 0 || newCount > existingCount) - { - KillServers.add(existingServer); - Players -= existingServer.Players; - MaxPlayers -= existingServer.MaxPlayers; - - if (existingServer.Motd != null && (existingServer.Motd.contains("Starting") || existingServer.Motd.contains("Recruiting") || existingServer.Motd.contains("Waiting") || existingServer.Motd.contains("Cup") || existingServer.Motd.isEmpty() || existingServer.Motd.equals(""))) - { - if (existingServer.Players < existingServer.MaxPlayers) - { - // Lobby joinable checking - if (existingServer.Motd.isEmpty() || existingServer.Motd.equals("")) - { - if (serverStatusData.MaxPlayers - serverStatusData.Players > 20) - _joinableCount--; - } - else - { - _joinableCount--; - } - } - } - } - } - - Players += serverStatusData.Players; - MaxPlayers += serverStatusData.MaxPlayers; - - if (serverStatusData.Motd != null && (serverStatusData.Motd.contains("Starting") || serverStatusData.Motd.contains("Recruiting") || serverStatusData.Motd.contains("Waiting") || serverStatusData.Motd.contains("Cup") || serverStatusData.Motd.isEmpty() || serverStatusData.Motd.equals(""))) - { - if (serverStatusData.Players < serverStatusData.MaxPlayers) - { - // Lobby joinable checking - if (serverStatusData.Motd.isEmpty() || serverStatusData.Motd.equals("")) - { - if (serverStatusData.MaxPlayers - serverStatusData.Players > 20) - { - _joinableCount++; - } - } - else - { - _joinableCount++; - } - } - } - - _totalCount++; - - if (serverStatusData.Empty) - { - EmptyServers.add(serverStatusData); - } - - Servers.put(Integer.parseInt(serverStatusData.Name.split("-")[1]), serverStatusData); - } - - public int getTotalServers() - { - return _totalCount; - } - - public int getJoinableCount() - { - return _joinableCount; - } - - public int getNextServerNumber() - { - _serverNum++; - - while (true) - { - if (!Servers.containsKey(_serverNum)) - { - return _serverNum; - } - - _serverNum++; - } - } -} diff --git a/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/Repository.java b/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/Repository.java deleted file mode 100644 index ad1daedc2..000000000 --- a/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/Repository.java +++ /dev/null @@ -1,437 +0,0 @@ -package mineplex.servermonitor; - -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.List; - -public class Repository -{ - private String _connectionString = "jdbc:mysql://db.mineplex.com:3306/ServerStatus?autoReconnect=true&failOverReadOnly=false&maxReconnects=10"; - private String _userName = "root"; - private String _password = "tAbechAk3wR7tuTh"; - private boolean _us = true; - - private static String CREATE_TABLE = "CREATE TABLE IF NOT EXISTS ServerStatus (id INT NOT NULL AUTO_INCREMENT, serverName VARCHAR(256), serverGroup VARCHAR(256), address VARCHAR(256), port VARCHAR(11), updated LONG, lastTimeWithPlayers LONG, motd VARCHAR(256), players INT, maxPlayers INT, tps INT, ram INT, maxRam INT, PRIMARY KEY (id));"; - private static String RETRIEVE_OLD_SERVER_STATUSES = "SELECT ServerStatus.serverName, DynamicServers.address, ServerStatus.address, ServerStatus.port, motd, players, maxPlayers, now(), updated FROM ServerStatus INNER JOIN DynamicServers ON ServerStatus.address = DynamicServers.privateAddress WHERE DynamicServers.US = ?;"; - - private static String CREATE_DYNAMIC_TABLE = "CREATE TABLE IF NOT EXISTS DynamicServers (id INT NOT NULL AUTO_INCREMENT, serverName VARCHAR(256), address VARCHAR(256), privateAddress VARCHAR(256), US BOOLEAN NOT NULL DEFAULT 'true', PRIMARY KEY (id));"; - private static String RETRIEVE_AVAILABLE_SERVERS = "SELECT DynamicServers.serverName, DynamicServers.address, DynamicServers.privateAddress, DynamicServers.US, DynamicServers.availableCpu, DynamicServers.availableRam, ServerStatus.serverGroup, COUNT(*) As serverCount FROM DynamicServers LEFT JOIN ServerStatus ON ServerStatus.address = DynamicServers.privateAddress WHERE DynamicServers.US = ? GROUP BY DynamicServers.address, ServerStatus.serverGroup;"; - private static String RETRIEVE_SERVERGROUP_STATUSES = "SELECT ServerStatus.serverName, serverGroup, motd, DynamicServers.address, ServerStatus.address, ServerStatus.port, players, maxPlayers, case when TIME_TO_SEC(TIMEDIFF(now(), ServerStatus.lastTimeWithPlayers)) > 300 then 1 else 0 end as empty, now(), updated FROM ServerStatus INNER JOIN DynamicServers ON ServerStatus.address = DynamicServers.privateAddress WHERE DynamicServers.US = ?"; - private static String RETRIEVE_SERVER_GROUP_DATA = "SELECT groupName, prefix, scriptName, requiredRam, cpuRequired, requiredTotal, requiredJoinable FROM ServerGroups;"; - private static String DELETE_SERVER_STATUS = "DELETE FROM ServerStatus WHERE address = ? AND port = ? AND serverName = ?;"; - - public static Connection connection; - - public void initialize(boolean us) - { - _us = us; - - PreparedStatement preparedStatement = null; - - try - { - Class.forName("com.mysql.jdbc.Driver"); - - if (connection == null || connection.isClosed()) - connection = DriverManager.getConnection(_connectionString, _userName, _password); - - // Create table - preparedStatement = connection.prepareStatement(CREATE_TABLE); - preparedStatement.execute(); - } - catch (Exception exception) - { - exception.printStackTrace(); - } - finally - { - if (preparedStatement != null) - { - try - { - preparedStatement.close(); - } - catch (SQLException e) - { - e.printStackTrace(); - } - } - } - - preparedStatement = null; - - try - { - Class.forName("com.mysql.jdbc.Driver"); - - // Create table - preparedStatement = connection.prepareStatement(CREATE_DYNAMIC_TABLE); - preparedStatement.execute(); - } - catch (Exception exception) - { - exception.printStackTrace(); - } - finally - { - if (preparedStatement != null) - { - try - { - preparedStatement.close(); - } - catch (SQLException e) - { - e.printStackTrace(); - } - } - } - } - - public List retrieveOldServerStatuses() - { - ResultSet resultSet = null; - PreparedStatement preparedStatement = null; - List serverData = new ArrayList(); - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - - try - { - if (connection == null || connection.isClosed()) - connection = DriverManager.getConnection(_connectionString, _userName, _password); - - preparedStatement = connection.prepareStatement(RETRIEVE_OLD_SERVER_STATUSES); - preparedStatement.setBoolean(1, _us); - - resultSet = preparedStatement.executeQuery(); - - while (resultSet.next()) - { - ServerStatusData serverStatusData = new ServerStatusData(); - - serverStatusData.Name = resultSet.getString(1); - - serverStatusData.Address = resultSet.getString(2); - serverStatusData.PrivateAddress = resultSet.getString(3); - serverStatusData.Port = Integer.parseInt(resultSet.getString(4)); - serverStatusData.Motd = resultSet.getString(5); - serverStatusData.Players = resultSet.getInt(6); - serverStatusData.MaxPlayers = resultSet.getInt(7); - - long current = dateFormat.parse(resultSet.getString(8)).getTime(); - long updated = dateFormat.parse(resultSet.getString(9)).getTime(); - - if (current - updated > 15000) - serverData.add(serverStatusData); - } - } - catch (Exception exception) - { - exception.printStackTrace(); - } - finally - { - if (preparedStatement != null) - { - try - { - preparedStatement.close(); - } - catch (SQLException e) - { - e.printStackTrace(); - } - } - - if (resultSet != null) - { - try - { - resultSet.close(); - } - catch (SQLException e) - { - e.printStackTrace(); - } - } - } - - return serverData; - } - - public HashMap retrieveGroupStatusData() - { - ResultSet resultSet = null; - PreparedStatement preparedStatement = null; - HashMap groupData = new HashMap(); - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - - try - { - if (connection == null || connection.isClosed()) - connection = DriverManager.getConnection(_connectionString, _userName, _password); - - preparedStatement = connection.prepareStatement(RETRIEVE_SERVERGROUP_STATUSES); - preparedStatement.setBoolean(1, _us); - - resultSet = preparedStatement.executeQuery(); - - while (resultSet.next()) - { - ServerStatusData serverStatusData = new ServerStatusData(); - - serverStatusData.Name = resultSet.getString(1); - String serverGroup = resultSet.getString(2); - serverStatusData.Motd = resultSet.getString(3); - serverStatusData.Address = resultSet.getString(4); - serverStatusData.PrivateAddress = resultSet.getString(5); - serverStatusData.Port = Integer.parseInt(resultSet.getString(6)); - serverStatusData.Players = resultSet.getInt(7); - serverStatusData.MaxPlayers = resultSet.getInt(8); - serverStatusData.Empty = resultSet.getBoolean(9); - - if (!groupData.containsKey(serverGroup)) - { - groupData.put(serverGroup, new GroupStatusData()); - } - - long current = dateFormat.parse(resultSet.getString(10)).getTime(); - long updated = dateFormat.parse(resultSet.getString(11)).getTime(); - - if (current - updated < 15000) - groupData.get(serverGroup).addServer(serverStatusData); - } - } - catch (Exception exception) - { - exception.printStackTrace(); - } - finally - { - if (preparedStatement != null) - { - try - { - preparedStatement.close(); - } - catch (SQLException e) - { - e.printStackTrace(); - } - } - - if (resultSet != null) - { - try - { - resultSet.close(); - } - catch (SQLException e) - { - e.printStackTrace(); - } - } - } - - return groupData; - } - - public Collection retrieveDynamicServers() - { - ResultSet resultSet = null; - PreparedStatement preparedStatement = null; - HashMap serverMap = new HashMap(); - HashMap serverGroupMap = new HashMap(); - - try - { - if (connection == null || connection.isClosed()) - connection = DriverManager.getConnection(_connectionString, _userName, _password); - - preparedStatement = connection.prepareStatement(RETRIEVE_SERVER_GROUP_DATA); - resultSet = preparedStatement.executeQuery(); - - while (resultSet.next()) - { - ServerGroupData serverGroupData = new ServerGroupData(); - - serverGroupData.Name = resultSet.getString(1); - serverGroupData.Prefix = resultSet.getString(2); - serverGroupData.ScriptName = resultSet.getString(3); - serverGroupData.RequiredRAM = resultSet.getInt(4); - serverGroupData.RequiredCPU = resultSet.getInt(5); - serverGroupData.RequiredTotalServers = resultSet.getInt(6); - serverGroupData.RequiredJoinableServers = resultSet.getInt(7); - - if (!serverGroupMap.containsKey(serverGroupData.Name)) - serverGroupMap.put(serverGroupData.Name, serverGroupData); - } - - preparedStatement.close(); - resultSet.close(); - - preparedStatement = connection.prepareStatement(RETRIEVE_AVAILABLE_SERVERS); - preparedStatement.setBoolean(1, _us); - - resultSet = preparedStatement.executeQuery(); - - while (resultSet.next()) - { - DynamicServerData dynamicServer = new DynamicServerData(); - - dynamicServer.Name = resultSet.getString(1); - dynamicServer.Address = resultSet.getString(2); - dynamicServer.PrivateAddress = resultSet.getString(3); - dynamicServer.US = resultSet.getBoolean(4); - dynamicServer.AvailableCPU = resultSet.getInt(5); - dynamicServer.AvailableRAM = resultSet.getInt(6); - - if (!serverMap.containsKey(dynamicServer.Name)) - serverMap.put(dynamicServer.Name, dynamicServer); - - String serverGroupName = resultSet.getString(7); - if (serverGroupMap.containsKey(serverGroupName)) - serverMap.get(dynamicServer.Name).setServerGroupCount(serverGroupMap.get(serverGroupName), resultSet.getInt(8)); - } - } - catch (Exception exception) - { - exception.printStackTrace(); - } - finally - { - if (preparedStatement != null) - { - try - { - preparedStatement.close(); - } - catch (SQLException e) - { - e.printStackTrace(); - } - } - - if (resultSet != null) - { - try - { - resultSet.close(); - } - catch (SQLException e) - { - e.printStackTrace(); - } - } - } - - return serverMap.values(); - } - - public Collection retrieveServerGroups() - { - - ResultSet resultSet = null; - PreparedStatement preparedStatement = null; - HashMap serverGroupMap = new HashMap(); - - try - { - if (connection == null || connection.isClosed()) - connection = DriverManager.getConnection(_connectionString, _userName, _password); - - preparedStatement = connection.prepareStatement(RETRIEVE_SERVER_GROUP_DATA); - resultSet = preparedStatement.executeQuery(); - - while (resultSet.next()) - { - ServerGroupData serverGroupData = new ServerGroupData(); - - serverGroupData.Name = resultSet.getString(1); - serverGroupData.Prefix = resultSet.getString(2); - serverGroupData.ScriptName = resultSet.getString(3); - serverGroupData.RequiredRAM = resultSet.getInt(4); - serverGroupData.RequiredCPU = resultSet.getInt(5); - serverGroupData.RequiredTotalServers = resultSet.getInt(6); - serverGroupData.RequiredJoinableServers = resultSet.getInt(7); - - if (!serverGroupMap.containsKey(serverGroupData.Name)) - serverGroupMap.put(serverGroupData.Name, serverGroupData); - } - } - catch (Exception exception) - { - exception.printStackTrace(); - } - finally - { - if (preparedStatement != null) - { - try - { - preparedStatement.close(); - } - catch (SQLException e) - { - e.printStackTrace(); - } - } - - if (resultSet != null) - { - try - { - resultSet.close(); - } - catch (SQLException e) - { - e.printStackTrace(); - } - } - } - - return serverGroupMap.values(); - } - - public void removeServerRecord(ServerStatusData serverToKill) - { - PreparedStatement preparedStatement = null; - - try - { - if (connection == null || connection.isClosed()) - connection = DriverManager.getConnection(_connectionString, _userName, _password); - - preparedStatement = connection.prepareStatement(DELETE_SERVER_STATUS); - preparedStatement.setString(1, serverToKill.PrivateAddress); - preparedStatement.setString(2, serverToKill.Port + ""); - preparedStatement.setString(3, serverToKill.Name); - preparedStatement.execute(); - } - catch (Exception exception) - { - exception.printStackTrace(); - } - finally - { - if (preparedStatement != null) - { - try - { - preparedStatement.close(); - } - catch (SQLException e) - { - e.printStackTrace(); - } - } - } - } -} diff --git a/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/ServerGroupData.java b/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/ServerGroupData.java deleted file mode 100644 index fa4fbaf8a..000000000 --- a/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/ServerGroupData.java +++ /dev/null @@ -1,17 +0,0 @@ -package mineplex.servermonitor; - -public class ServerGroupData -{ - public String Name; - public String Prefix; - public String ScriptName; - public int RequiredRAM; - public int RequiredCPU; - public int RequiredTotalServers; - public int RequiredJoinableServers; - - public void printInfo() - { - System.out.println("ServerGroupData - Name:" + Name + " Prefix:" + Prefix + " ScriptName:" + ScriptName + " RAM:" + RequiredRAM + " CPU:" + RequiredCPU + " ReqTotal:" + RequiredTotalServers + " ReqJoin:" + RequiredJoinableServers); - } -} diff --git a/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/ServerMonitor.java b/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/ServerMonitor.java index 977e0da1b..dee04c538 100644 --- a/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/ServerMonitor.java +++ b/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/ServerMonitor.java @@ -13,172 +13,141 @@ import java.util.Iterator; import java.util.List; import java.util.Map.Entry; +import mineplex.serverdata.DedicatedServer; +import mineplex.serverdata.DedicatedServerSorter; +import mineplex.serverdata.MinecraftServer; +import mineplex.serverdata.Region; +import mineplex.serverdata.ServerGroup; +import mineplex.serverdata.ServerManager; +import mineplex.serverdata.ServerRepository; + public class ServerMonitor { - private static boolean _us = true; - private static Repository _repository = new Repository(); + + private static ServerRepository _repository = null; private static int _count = 0; private static HashSet _processes = new HashSet(); private static HashMap _badServers = new HashMap(); public static void main (String args[]) { - _us = !new File("eu.dat").exists(); + Region region = !new File("eu.dat").exists() ? Region.US : Region.EU; + _repository = ServerManager.getServerRepository(region); // Fetches and connects to server repo - _repository.initialize(_us); HashMap> serverTracker = new HashMap>(); while (true) { - Collection serverGroups = _repository.retrieveServerGroups(); - HashMap groupStatusList = _repository.retrieveGroupStatusData(); + Collection serverGroups = _repository.getServerGroups(); + _repository.clean(); // Clean out old expired server entries + - for (ServerStatusData statusData : _repository.retrieveOldServerStatuses()) - { - /* - if (us) - { - if (!serverTracker.containsKey(statusData.Name)) + List dedicatedServers = new ArrayList(_repository.getDedicatedServers()); + + if (_count % 15 == 0) + { + _badServers.clear(); + + for (DedicatedServer serverData : dedicatedServers) + { + if (isServerOffline(serverData)) { - restartServer(statusData); - serverTracker.put(statusData.Name, new AbstractMap.SimpleEntry(statusData.Address, System.currentTimeMillis())); - } - else if (System.currentTimeMillis() - serverTracker.get(statusData.Name).getValue() > 15000) - { - serverTracker.remove(statusData.Name); - System.out.println("-=[SERVER RESTART TOO SLOW]=- " + statusData.Name + " (Putting back in restart queue)"); + System.out.println("------=[OFFLINE]=------=[" + serverData.getName() + ":" + serverData.getPublicAddress() + "]=------=[OFFLINE]=------"); + _badServers.put(serverData.getName(), true); } } - else - */ - killServer(statusData); + System.out.println(_badServers.size() + " bad servers."); } - /* - if (us) + for (Iterator iterator = dedicatedServers.iterator(); iterator.hasNext();) { - // Remove successfully restarted US servers - for (GroupStatusData groupStatus : groupStatusList.values()) + DedicatedServer serverData = iterator.next(); + + if (_badServers.containsKey(serverData.getName())) + iterator.remove(); + } + + // TODO: Check with Jonathan to see if we still need this duplication server code + /*for (GroupStatusData groupStatus : groupStatusList.values()) + { + for (ServerStatusData serverToKill : groupStatus.KillServers) { - for (ServerStatusData serverToKill : groupStatus.Servers.values()) - { - if (serverTracker.containsKey(serverToKill.Name)) - serverTracker.remove(serverToKill.Name); - } + System.out.println("----DUPLICATE SERVER----> " + serverToKill.Address + ", " + serverToKill.Name); + killServer(serverToKill); + } + + for (ServerStatusData serverToKill : groupStatus.Servers.values()) + { + if (serverTracker.containsKey(serverToKill.Name)) + serverTracker.remove(serverToKill.Name); + } + }*/ + + for (Iterator>> iterator = serverTracker.entrySet().iterator(); iterator.hasNext();) + { + Entry> entry = iterator.next(); + + if (System.currentTimeMillis() - entry.getValue().getValue() > 15000) + { + System.out.println("-=[SERVER STARTUP TOO SLOW]=- " + entry.getKey()); + + String serverName = entry.getKey(); + String serverAddress = entry.getValue().getKey(); + killServer(serverName, serverAddress, true); + iterator.remove(); } } - else + + for (ServerGroup serverGroup : serverGroups) { - */ - List dynamicServers = new ArrayList(_repository.retrieveDynamicServers()); - - if (_count % 15 == 0) - { - _badServers.clear(); - - for (DynamicServerData serverData : dynamicServers) - { - if (isServerOffline(serverData)) - { - System.out.println("------=[OFFLINE]=------=[" + serverData.Name + ":" + serverData.Address + "]=------=[OFFLINE]=------"); - _badServers.put(serverData.Name, true); - } - } - - System.out.println(_badServers.size() + " bad servers."); - } - - for (Iterator iterator = dynamicServers.iterator(); iterator.hasNext();) + int serverNum = serverGroup.generateUniqueId(); + //GroupStatusData groupStatus = groupStatusList.get(serverGroup.Name); + int requiredTotal = serverGroup.getRequiredTotalServers(); + int requiredJoinable = serverGroup.getRequiredJoinableServers(); + int joinableServers = serverGroup.getJoinableCount(); + int totalServers = serverGroup.getServerCount(); + int serversToAdd = Math.max(requiredTotal - totalServers, requiredJoinable - joinableServers); + int serversToKill = (totalServers > requiredTotal && joinableServers > requiredJoinable) ? Math.min(joinableServers - requiredJoinable, serverGroup.getEmptyServers().size()) : 0; + + // Minimum 1500 slot bufferzone + if (serverGroup.getName().equalsIgnoreCase("Lobby")) { - DynamicServerData serverData = iterator.next(); - - if (_badServers.containsKey(serverData.Name)) - iterator.remove(); - } - - for (GroupStatusData groupStatus : groupStatusList.values()) - { - for (ServerStatusData serverToKill : groupStatus.KillServers) - { - System.out.println("----DUPLICATE SERVER----> " + serverToKill.Address + ", " + serverToKill.Name); - killServer(serverToKill); - } - - for (ServerStatusData serverToKill : groupStatus.Servers.values()) - { - if (serverTracker.containsKey(serverToKill.Name)) - serverTracker.remove(serverToKill.Name); - } + if (serverGroup.getMaxPlayerCount() - serverGroup.getPlayerCount() < 1500) + serversToAdd = requiredJoinable; } - for (Iterator>> iterator = serverTracker.entrySet().iterator(); iterator.hasNext();) + while (serversToAdd > 0) { - Entry> entry = iterator.next(); + Collections.sort(dedicatedServers, new DedicatedServerSorter()); + DedicatedServer bestServer = getBestDedicatedServer(dedicatedServers, serverGroup); - if (System.currentTimeMillis() - entry.getValue().getValue() > 15000) - { - System.out.println("-=[SERVER STARTUP TOO SLOW]=- " + entry.getKey()); - - ServerStatusData serverToKill = new ServerStatusData(); - serverToKill.Name = entry.getKey(); - serverToKill.Address = entry.getValue().getKey(); - - killServer(serverToKill); - iterator.remove(); + if (bestServer == null) + { + System.out.println("No best dynamic server available for group " + serverGroup.getName()); + break; } + + if (serverTracker.containsKey(serverGroup.getPrefix() + "-" + serverNum)) + System.out.println("[WAITING] On " + serverGroup.getPrefix() + "-" + serverNum + " to finish starting..."); + else + { + startServer(bestServer, serverGroup, serverNum); + serverTracker.put(serverGroup.getPrefix() + "-" + serverNum, new AbstractMap.SimpleEntry(bestServer.getPublicAddress(), System.currentTimeMillis())); + } + + serversToAdd--; } - for (ServerGroupData serverGroup : serverGroups) + while (serversToKill > 0) { - if (!groupStatusList.containsKey(serverGroup.Name)) - { - groupStatusList.put(serverGroup.Name, new GroupStatusData()); - } - - GroupStatusData groupStatus = groupStatusList.get(serverGroup.Name); - - int serversToAdd = Math.max(serverGroup.RequiredTotalServers - groupStatus.getTotalServers(), serverGroup.RequiredJoinableServers - groupStatus.getJoinableCount()); - int serversToKill = (groupStatus.getTotalServers() > serverGroup.RequiredTotalServers && groupStatus.getJoinableCount() > serverGroup.RequiredJoinableServers) ? Math.min(groupStatus.getJoinableCount() - serverGroup.RequiredJoinableServers, groupStatus.EmptyServers.size()) : 0; - - // Minimum 1500 slot bufferzone - if (serverGroup.Name.equalsIgnoreCase("Lobby")) - { - if (groupStatus.MaxPlayers - groupStatus.Players < 1500) - serversToAdd = serverGroup.RequiredJoinableServers; - } - - while (serversToAdd > 0) - { - int serverNum = groupStatus.getNextServerNumber(); - Collections.sort(dynamicServers, new DynamicServerSorter()); - DynamicServerData bestServer = getBestDynamicServer(dynamicServers, serverGroup); - - if (bestServer == null) - { - System.out.println("No best dynamic server available for group " + serverGroup.Name); - break; - } - - if (serverTracker.containsKey(serverGroup.Prefix + "-" + serverNum)) - System.out.println("[WAITING] On " + serverGroup.Prefix + "-" + serverNum + " to finish starting..."); - else - { - startServer(bestServer, serverGroup, serverNum); - serverTracker.put(serverGroup.Prefix + "-" + serverNum, new AbstractMap.SimpleEntry(bestServer.Address, System.currentTimeMillis())); - } - - serversToAdd--; - } - - while (serversToKill > 0) - { - System.out.println("[" + groupStatus.EmptyServers.get(0).Name + ":" + groupStatus.EmptyServers.get(0).Address + "] Killing " + serverGroup.Name + " Req Total: " + serverGroup.RequiredTotalServers + " Req Joinable: " + serverGroup.RequiredJoinableServers + " | Actual Total: " + groupStatus.getTotalServers() + " Actual Joinable: " + groupStatus.getJoinableCount()); - killServer(groupStatus.EmptyServers.remove(0)); - serversToKill--; - } + List emptyServers = new ArrayList(serverGroup.getEmptyServers()); + MinecraftServer emptyServer = emptyServers.get(0); + System.out.println("[" + emptyServer.getName() + ":" + emptyServer.getPublicAddress() + "] Killing " + serverGroup.getName() + " Req Total: " + serverGroup.getRequiredTotalServers() + " Req Joinable: " + serverGroup.getRequiredJoinableServers() + " | Actual Total: " + serverGroup.getServerCount() + " Actual Joinable: " + serverGroup.getJoinableCount()); + killServer(emptyServer); + serversToKill--; } - //} + } int processWaits = 0; @@ -244,24 +213,31 @@ public class ServerMonitor } } - private static void killServer(final ServerStatusData serverToKill, final boolean announce) + private static void killServer(final String serverName, final String serverAddress, final boolean announce) { String cmd = "/home/mineplex/easyRemoteKillServer.sh"; - ProcessRunner pr = new ProcessRunner(new String[] {"/bin/sh", cmd, serverToKill.Address, serverToKill.Name}); + ProcessRunner pr = new ProcessRunner(new String[] {"/bin/sh", cmd, serverAddress, serverName}); pr.start(new GenericRunnable() { public void run(Boolean error) { if (!error) - _repository.removeServerRecord(serverToKill); + { + MinecraftServer server = _repository.getServerStatus(serverName); + + if (server != null) + { + _repository.removeServerStatus(server); + } + } if (announce) { if (error) - System.out.println("[" + serverToKill.Name + ":" + serverToKill.Address + "] Kill errored."); + System.out.println("[" + serverName + ":" + serverAddress + "] Kill errored."); else - System.out.println("Sent kill command to " + serverToKill.Address + " for " + serverToKill.Name + " completed"); + System.out.println("Sent kill command to " + serverAddress + " for " + serverName + " completed"); } } }); @@ -280,14 +256,14 @@ public class ServerMonitor _processes.add(pr); } - private static boolean isServerOffline(DynamicServerData serverData) + private static boolean isServerOffline(DedicatedServer serverData) { boolean success = false; Process process = null; String cmd = "/home/mineplex/isServerOnline.sh"; - ProcessBuilder processBuilder = new ProcessBuilder(new String[] {"/bin/sh", cmd, serverData.Address}); + ProcessBuilder processBuilder = new ProcessBuilder(new String[] {"/bin/sh", cmd, serverData.getPublicAddress()}); try { @@ -316,79 +292,47 @@ public class ServerMonitor return !success; } - private static DynamicServerData getBestDynamicServer(Collection dynamicServers, ServerGroupData serverGroup) + private static DedicatedServer getBestDedicatedServer(Collection dedicatedServers, ServerGroup serverGroup) { - DynamicServerData bestServer = null; + DedicatedServer bestServer = null; - for (DynamicServerData serverData : dynamicServers) + for (DedicatedServer serverData : dedicatedServers) { - if (serverData.AvailableRAM > serverGroup.RequiredRAM && serverData.AvailableCPU > serverGroup.RequiredCPU) + if (serverData.getAvailableRam() > serverGroup.getRequiredRam() + && serverData.getAvailableCpu() > serverGroup.getRequiredCpu()) { - if (bestServer == null) + if (bestServer == null + || serverData.getServerCount(serverGroup) < bestServer.getServerCount(serverGroup)) { bestServer = serverData; - - if (!serverData.ServerGroupCount.containsKey(serverGroup.Name)) - break; - } - else if (serverData.ServerGroupCount.containsKey(serverGroup.Name)) - { - if (serverData.ServerGroupCount.get(serverGroup.Name) < bestServer.ServerGroupCount.get(serverGroup.Name)) - bestServer = serverData; } } } return bestServer; } - - private static void restartServer(final ServerStatusData serverToKill) + + private static void killServer(final MinecraftServer serverToKill) { - String cmd = "/home/mineplex/restartServer.sh"; - - ProcessRunner pr = new ProcessRunner(new String[] {"/bin/sh", cmd, serverToKill.Address, serverToKill.Name}); - pr.start(new GenericRunnable() - { - public void run(Boolean error) - { - if (error) - System.out.println("Restart command to " + serverToKill.Address + " for " + serverToKill.Name + " failed"); - else - System.out.println("Restart command to " + serverToKill.Address + " for " + serverToKill.Name + " completed"); - } - }); - - try - { - pr.join(500); - } - catch (InterruptedException e1) - { - e1.printStackTrace(); - } - - if (!pr.isDone()) - _processes.add(pr); + killServer(serverToKill.getName(), serverToKill.getPublicAddress(), true); } - private static void killServer(final ServerStatusData serverToKill) - { - killServer(serverToKill, true); - } - - private static void startServer(final DynamicServerData serverSpace, final ServerGroupData serverGroup, final int serverNum) + private static void startServer(final DedicatedServer serverSpace, final ServerGroup serverGroup, final int serverNum) { String cmd = "/home/mineplex/easyRemoteStartServer.sh"; + final String groupPrefix = serverGroup.getPrefix(); + final String serverName = serverSpace.getName(); + final String serverAddress = serverSpace.getPublicAddress(); - ProcessRunner pr = new ProcessRunner(new String[] {"/bin/sh", cmd, serverSpace.Address, serverSpace.PrivateAddress, serverGroup.ScriptName, serverGroup.Prefix + "-" + serverNum, "1", serverSpace.US ? "us" : "eu"}); + ProcessRunner pr = new ProcessRunner(new String[] {"/bin/sh", cmd, serverSpace.getPublicAddress(), serverSpace.getPrivateAddress(), serverGroup.getScriptName(), groupPrefix + "-" + serverNum, "1", serverSpace.isUsRegion() ? "us" : "eu"}); pr.start(new GenericRunnable() { public void run(Boolean error) { if (error) - System.out.println("[" + serverSpace.Name + ":" + serverSpace.Address + "] Errored " + serverGroup.Name + "(" + serverGroup.Prefix + "-" + serverNum + ")"); + System.out.println("[" + serverName + ":" + serverAddress + "] Errored " + serverName + "(" + groupPrefix+ "-" + serverNum + ")"); else - System.out.println("[" + serverSpace.Name + ":" + serverSpace.Address + "] Added " + serverGroup.Name + "(" + serverGroup.Prefix + "-" + serverNum + ")"); + System.out.println("[" + serverName + ":" + serverAddress + "] Added " + serverName + "(" + groupPrefix+ "-" + serverNum + ")"); } }); @@ -401,7 +345,7 @@ public class ServerMonitor e1.printStackTrace(); } - serverSpace.setServerGroupCount(serverGroup, serverSpace.ServerGroupCount.containsKey(serverGroup.Name) ? (serverSpace.ServerGroupCount.get(serverGroup.Name) + 1) : 1); + serverSpace.incrementServerCount(serverGroup); if (!pr.isDone()) _processes.add(pr); diff --git a/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/ServerStatusData.java b/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/ServerStatusData.java deleted file mode 100644 index 1412dff80..000000000 --- a/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/ServerStatusData.java +++ /dev/null @@ -1,13 +0,0 @@ -package mineplex.servermonitor; - -public class ServerStatusData -{ - public String Name; - public String Motd; - public int Players; - public int MaxPlayers; - public String Address; - public String PrivateAddress; - public int Port; - public boolean Empty = false; -} diff --git a/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/ServerTargetData.java b/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/ServerTargetData.java deleted file mode 100644 index df81111a7..000000000 --- a/Plugins/Mineplex.ServerMonitor/src/mineplex/servermonitor/ServerTargetData.java +++ /dev/null @@ -1,8 +0,0 @@ -package mineplex.servermonitor; - -public class ServerTargetData -{ - public DynamicServerData DedicatedServer; - public int ServerNumber; - public String ServerGroup; -} diff --git a/Plugins/Nautilus.Core.CraftBukkit/.externalToolBuilders/CB2.launch b/Plugins/Nautilus.Core.CraftBukkit/.externalToolBuilders/CB2.launch index 4067ec440..00db81307 100644 --- a/Plugins/Nautilus.Core.CraftBukkit/.externalToolBuilders/CB2.launch +++ b/Plugins/Nautilus.Core.CraftBukkit/.externalToolBuilders/CB2.launch @@ -10,7 +10,7 @@ - +