use of de.dytanic.cloudnet.lib.server.template.Template in project CloudNet by Dytanic.
the class CloudNet method startGameServerAsync.
public void startGameServerAsync(ServerGroup serverGroup, ServerConfig config, int memory, boolean prioritystop, String url, String[] processParameters, boolean onlineMode, Collection<ServerInstallablePlugin> plugins, String customServerName, Properties serverProperties) {
Wrapper wrapper = fetchPerformanceWrapper(memory, toWrapperInstances(serverGroup.getWrapper()));
if (wrapper == null)
return;
if (serverGroup.getTemplates().size() == 0)
return;
Map<String, Integer> templateMap = new WeakHashMap<>();
Collection<Integer> collection = CollectionWrapper.getCollection(wrapper.getServers(), new Catcher<Integer, MinecraftServer>() {
@Override
public Integer doCatch(MinecraftServer key) {
return key.getServerInfo().getPort();
}
});
collection.addAll(wrapper.getBinndedPorts());
CollectionWrapper.iterator(getServers(serverGroup.getName()), new Runnabled<MinecraftServer>() {
@Override
public void run(MinecraftServer obj) {
Template template = obj.getProcessMeta().getTemplate();
if (!templateMap.containsKey(template.getName()))
templateMap.put(template.getName(), 1);
else
templateMap.put(template.getName(), templateMap.get(template.getName()) + 1);
}
});
CollectionWrapper.iterator(wrapper.getWaitingServices().values(), new Runnabled<Quad<Integer, Integer, ServiceId, Template>>() {
@Override
public void run(Quad<Integer, Integer, ServiceId, Template> obj) {
Template template = obj.getFourth();
if (template != null) {
if (!templateMap.containsKey(template.getName()))
templateMap.put(template.getName(), 1);
else
templateMap.put(template.getName(), templateMap.get(template.getName()) + 1);
}
}
});
for (Template template : serverGroup.getTemplates()) {
if (!templateMap.containsKey(template.getName()))
templateMap.put(template.getName(), 1);
else
templateMap.put(template.getName(), templateMap.get(template.getName()) + 1);
}
Map.Entry<String, Integer> entry = null;
for (Map.Entry<String, Integer> values : templateMap.entrySet()) {
if (entry == null) {
entry = values;
} else {
if (entry.getValue() >= values.getValue()) {
entry = values;
}
}
}
Template template = null;
for (Template t : serverGroup.getTemplates()) {
if (entry.getKey().equalsIgnoreCase(t.getName())) {
template = t;
break;
}
}
if (template == null)
return;
int startport = wrapper.getWrapperInfo().getStartPort();
startport = (startport + NetworkUtils.RANDOM.nextInt(20) + 1);
while (collection.contains(startport)) {
startport = (startport + NetworkUtils.RANDOM.nextInt(20) + 1);
}
ServerProcessMeta serverProcessMeta = new ServerProcessMeta(newServiceId(serverGroup, wrapper), memory, prioritystop, url, processParameters, onlineMode, plugins, config, customServerName, startport, serverProperties, template);
wrapper.startGameServerAsync(serverProcessMeta);
}
use of de.dytanic.cloudnet.lib.server.template.Template in project CloudNet by Dytanic.
the class CloudNet method startGameServer.
public void startGameServer(ServerGroup serverGroup, ServerConfig config, int memory, boolean prioritystop, String url, String[] processParameters, boolean onlineMode, Collection<ServerInstallablePlugin> plugins, String customServerName, Properties serverProperties) {
if (serverGroup.getMaxOnlineServers() != -1 && serverGroup.getMaxOnlineServers() != 0 && CloudNet.getInstance().getServersAndWaitings(serverGroup.getName()).size() >= serverGroup.getMaxOnlineServers())
return;
Wrapper wrapper = fetchPerformanceWrapper(memory, toWrapperInstances(serverGroup.getWrapper()));
if (wrapper == null)
return;
if (serverGroup.getTemplates().size() == 0)
return;
Map<String, Integer> templateMap = new WeakHashMap<>();
Collection<Integer> collection = CollectionWrapper.getCollection(wrapper.getServers(), new Catcher<Integer, MinecraftServer>() {
@Override
public Integer doCatch(MinecraftServer key) {
return key.getServerInfo().getPort();
}
});
collection.addAll(wrapper.getBinndedPorts());
CollectionWrapper.iterator(getServers(serverGroup.getName()), new Runnabled<MinecraftServer>() {
@Override
public void run(MinecraftServer obj) {
Template template = obj.getProcessMeta().getTemplate();
if (!templateMap.containsKey(template.getName()))
templateMap.put(template.getName(), 1);
else
templateMap.put(template.getName(), templateMap.get(template.getName()) + 1);
}
});
CollectionWrapper.iterator(wrapper.getWaitingServices().values(), new Runnabled<Quad<Integer, Integer, ServiceId, Template>>() {
@Override
public void run(Quad<Integer, Integer, ServiceId, Template> obj) {
Template template = obj.getFourth();
if (template != null) {
if (!templateMap.containsKey(template.getName()))
templateMap.put(template.getName(), 1);
else
templateMap.put(template.getName(), templateMap.get(template.getName()) + 1);
}
}
});
for (Template template : serverGroup.getTemplates()) {
if (!templateMap.containsKey(template.getName()))
templateMap.put(template.getName(), 1);
else
templateMap.put(template.getName(), templateMap.get(template.getName()) + 1);
}
Map.Entry<String, Integer> entry = null;
for (Map.Entry<String, Integer> values : templateMap.entrySet()) {
if (entry == null)
entry = values;
else {
if (entry.getValue() >= values.getValue()) {
entry = values;
}
}
}
Template template = null;
for (Template t : serverGroup.getTemplates()) if (entry.getKey().equalsIgnoreCase(t.getName())) {
template = t;
break;
}
if (template == null)
return;
int startport = wrapper.getWrapperInfo().getStartPort();
startport = (startport + NetworkUtils.RANDOM.nextInt(20) + 1);
while (collection.contains(startport)) {
startport = (startport + NetworkUtils.RANDOM.nextInt(20) + 1);
}
ServerProcessMeta serverProcessMeta;
if (customServerName != null)
serverProcessMeta = new ServerProcessMeta(newServiceId(serverGroup, wrapper, customServerName), memory, prioritystop, url, processParameters, onlineMode, plugins, config, customServerName, startport, serverProperties, template);
else
serverProcessMeta = new ServerProcessMeta(newServiceId(serverGroup, wrapper), memory, prioritystop, url, processParameters, onlineMode, plugins, config, customServerName, startport, serverProperties, template);
wrapper.startGameServer(serverProcessMeta);
}
use of de.dytanic.cloudnet.lib.server.template.Template in project CloudNet by Dytanic.
the class CloudNet method startGameServer.
public void startGameServer(Wrapper wrapper, ServerGroup serverGroup, ServerConfig config, int memory, boolean prioritystop, String url, String[] processParameters, boolean onlineMode, Collection<ServerInstallablePlugin> plugins, String customServerName, Properties serverProperties) {
if (serverGroup.getMaxOnlineServers() != -1 && serverGroup.getMaxOnlineServers() != 0 && CloudNet.getInstance().getServersAndWaitings(serverGroup.getName()).size() >= serverGroup.getMaxOnlineServers())
return;
if (wrapper == null)
return;
if (serverGroup.getTemplates().size() == 0)
return;
Map<String, Integer> templateMap = new WeakHashMap<>();
Collection<Integer> collection = CollectionWrapper.getCollection(wrapper.getServers(), new Catcher<Integer, MinecraftServer>() {
@Override
public Integer doCatch(MinecraftServer key) {
return key.getServerInfo().getPort();
}
});
collection.addAll(wrapper.getBinndedPorts());
CollectionWrapper.iterator(getServers(serverGroup.getName()), new Runnabled<MinecraftServer>() {
@Override
public void run(MinecraftServer obj) {
Template template = obj.getProcessMeta().getTemplate();
if (!templateMap.containsKey(template.getName()))
templateMap.put(template.getName(), 1);
else
templateMap.put(template.getName(), templateMap.get(template.getName()) + 1);
}
});
CollectionWrapper.iterator(wrapper.getWaitingServices().values(), new Runnabled<Quad<Integer, Integer, ServiceId, Template>>() {
@Override
public void run(Quad<Integer, Integer, ServiceId, Template> obj) {
Template template = obj.getFourth();
if (template != null) {
if (!templateMap.containsKey(template.getName()))
templateMap.put(template.getName(), 1);
else
templateMap.put(template.getName(), templateMap.get(template.getName()) + 1);
}
}
});
for (Template template : serverGroup.getTemplates()) {
if (!templateMap.containsKey(template.getName()))
templateMap.put(template.getName(), 1);
else
templateMap.put(template.getName(), templateMap.get(template.getName()) + 1);
}
Map.Entry<String, Integer> entry = null;
for (Map.Entry<String, Integer> values : templateMap.entrySet()) {
if (entry == null) {
entry = values;
} else {
if (entry.getValue() >= values.getValue()) {
entry = values;
}
}
}
Template template = null;
for (Template t : serverGroup.getTemplates()) {
if (entry.getKey().equalsIgnoreCase(t.getName())) {
template = t;
break;
}
}
if (template == null)
return;
int startport = wrapper.getWrapperInfo().getStartPort();
startport = (startport + NetworkUtils.RANDOM.nextInt(20) + 1);
while (collection.contains(startport)) {
startport = (startport + NetworkUtils.RANDOM.nextInt(20) + 1);
}
ServerProcessMeta serverProcessMeta;
if (customServerName != null)
serverProcessMeta = new ServerProcessMeta(newServiceId(serverGroup, wrapper, customServerName), memory, prioritystop, url, processParameters, onlineMode, plugins, config, customServerName, startport, serverProperties, template);
else
serverProcessMeta = new ServerProcessMeta(newServiceId(serverGroup, wrapper), memory, prioritystop, url, processParameters, onlineMode, plugins, config, customServerName, startport, serverProperties, template);
wrapper.startGameServer(serverProcessMeta);
}
use of de.dytanic.cloudnet.lib.server.template.Template in project CloudNet by Dytanic.
the class PacketInCreateTemplate method handleInput.
@Override
public void handleInput(Document data, PacketSender packetSender) {
if (data.getString("type").equals(DefaultType.BUKKIT.name())) {
ServerGroup serverGroup = data.getObject("serverGroup", new TypeToken<ServerGroup>() {
}.getType());
try {
for (Template template : serverGroup.getTemplates()) {
if (!Files.exists(Paths.get("local/templates/" + serverGroup.getName() + NetworkUtils.SLASH_STRING + template.getName()))) {
System.out.println("Creating GroupTemplate for " + serverGroup.getName() + " " + template.getName() + "...");
Files.createDirectories(Paths.get("local/templates/" + serverGroup.getName() + NetworkUtils.SLASH_STRING + template.getName() + ""));
}
if (!Files.exists(Paths.get("local/templates/" + serverGroup.getName() + NetworkUtils.SLASH_STRING + template.getName() + "/server.properties"))) {
FileCopy.insertData("files/server.properties", "local/templates/" + serverGroup.getName() + NetworkUtils.SLASH_STRING + template.getName() + "/server.properties");
}
if (!Files.exists(Paths.get("local/templates/" + serverGroup.getName() + NetworkUtils.SLASH_STRING + template.getName() + "/plugins"))) {
new File("local/templates/" + serverGroup.getName() + NetworkUtils.SLASH_STRING + template.getName() + "/plugins").mkdir();
}
}
Template template = serverGroup.getGlobalTemplate();
if (!Files.exists(Paths.get("local/templates/" + serverGroup.getName() + NetworkUtils.SLASH_STRING + template.getName()))) {
System.out.println("Creating GroupTemplate for " + serverGroup.getName() + " " + template.getName() + "...");
Files.createDirectories(Paths.get("local/templates/" + serverGroup.getName() + NetworkUtils.SLASH_STRING + template.getName() + ""));
}
if (!Files.exists(Paths.get("local/templates/" + serverGroup.getName() + NetworkUtils.SLASH_STRING + template.getName() + "/server.properties"))) {
FileCopy.insertData("files/server.properties", "local/templates/" + serverGroup.getName() + NetworkUtils.SLASH_STRING + template.getName() + "/server.properties");
}
if (!Files.exists(Paths.get("local/templates/" + serverGroup.getName() + NetworkUtils.SLASH_STRING + template.getName() + "/plugins"))) {
new File("local/templates/" + serverGroup.getName() + NetworkUtils.SLASH_STRING + template.getName() + "/plugins").mkdir();
}
} catch (IOException e) {
e.printStackTrace();
}
if (serverGroup.getServerType().equals(ServerGroupType.CAULDRON)) {
for (Template template : serverGroup.getTemplates()) {
if (!Files.exists(Paths.get("local/templates/" + serverGroup.getName() + NetworkUtils.SLASH_STRING + template.getName() + "/cauldron.jar"))) {
try {
System.out.println("Downloading cauldron.zip...");
File file = new File("local/templates/" + serverGroup.getName() + NetworkUtils.SLASH_STRING + template.getName() + "/cauldron.zip");
URLConnection connection = new URL("https://yivesmirror.com/files/cauldron/cauldron-1.7.10-2.1403.1.54.zip").openConnection();
connection.setUseCaches(false);
connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11");
connection.connect();
Files.copy(connection.getInputStream(), Paths.get("local/templates/" + serverGroup.getName() + NetworkUtils.SLASH_STRING + template.getName() + "/cauldron.zip"));
System.out.println("Downloading Complete!");
ZipFile zip = new ZipFile(file);
Enumeration<? extends ZipEntry> entryEnumeration = zip.entries();
while (entryEnumeration.hasMoreElements()) {
ZipEntry entry = entryEnumeration.nextElement();
if (!entry.isDirectory()) {
extractEntry(zip, entry, "local/templates/" + serverGroup.getName() + NetworkUtils.SLASH_STRING + template.getName());
}
}
zip.close();
file.delete();
new File("local/templates/" + serverGroup.getName() + NetworkUtils.SLASH_STRING + template.getName() + "/cauldron-1.7.10-2.1403.1.54-server.jar").renameTo(new File("local/templates/" + serverGroup.getName() + NetworkUtils.SLASH_STRING + template.getName() + "/cauldron.jar"));
System.out.println("Using a cauldron.jar for your minecraft service template " + serverGroup.getName() + ", please copy a eula.txt into the template or into the global folder");
} catch (Exception e) {
e.printStackTrace();
}
}
}
Template template = serverGroup.getGlobalTemplate();
if (!Files.exists(Paths.get("local/templates/" + serverGroup.getName() + NetworkUtils.SLASH_STRING + template.getName() + "/cauldron.jar"))) {
try {
System.out.println("Downloading cauldron.zip...");
File file = new File("local/templates/" + serverGroup.getName() + NetworkUtils.SLASH_STRING + template.getName() + "/cauldron.zip");
URLConnection connection = new URL("https://yivesmirror.com/files/cauldron/cauldron-1.7.10-2.1403.1.54.zip").openConnection();
connection.setUseCaches(false);
connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11");
connection.connect();
Files.copy(connection.getInputStream(), Paths.get("local/templates/" + serverGroup.getName() + NetworkUtils.SLASH_STRING + template.getName() + "/cauldron.zip"));
System.out.println("Download was completed successfully!");
ZipFile zip = new ZipFile(file);
Enumeration<? extends ZipEntry> entryEnumeration = zip.entries();
while (entryEnumeration.hasMoreElements()) {
ZipEntry entry = entryEnumeration.nextElement();
if (!entry.isDirectory()) {
extractEntry(zip, entry, "local/templates/" + serverGroup.getName() + NetworkUtils.SLASH_STRING + template.getName());
}
}
zip.close();
file.delete();
new File("local/templates/" + serverGroup.getName() + NetworkUtils.SLASH_STRING + template.getName() + "/cauldron-1.7.10-2.1403.1.54-server.jar").renameTo(new File("local/templates/" + serverGroup.getName() + NetworkUtils.SLASH_STRING + template.getName() + "/cauldron.jar"));
System.out.println("Using a cauldron.jar for your minecraft service template " + serverGroup.getName() + ", please copy a eula.txt into the template or into the global folder");
} catch (Exception e) {
e.printStackTrace();
}
}
}
if (serverGroup.getServerType().equals(ServerGroupType.GLOWSTONE)) {
for (Template template : serverGroup.getTemplates()) {
Path path = Paths.get("local/templates/" + serverGroup.getName() + NetworkUtils.SLASH_STRING + template.getName() + "/glowstone.jar");
if (!Files.exists(path)) {
try {
URLConnection connection = new URL("https://yivesmirror.com/grab/glowstone/Glowstone-latest.jar").openConnection();
connection.setUseCaches(false);
connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11");
connection.connect();
System.out.println("Downloading glowstone.jar...");
Files.copy(connection.getInputStream(), path);
System.out.println("Download was completed successfully");
((HttpURLConnection) connection).disconnect();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
Template template = serverGroup.getGlobalTemplate();
Path path = Paths.get("local/templates/" + serverGroup.getName() + NetworkUtils.SLASH_STRING + template.getName() + "/glowstone.jar");
if (!Files.exists(path)) {
try {
URLConnection connection = new URL("https://yivesmirror.com/grab/glowstone/Glowstone-latest.jar").openConnection();
connection.setUseCaches(false);
connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11");
connection.connect();
System.out.println("Downloading glowstone.jar...");
Files.copy(connection.getInputStream(), path);
System.out.println("Download was completed successfully");
((HttpURLConnection) connection).disconnect();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
} else {
ProxyGroup proxyGroup = data.getObject("proxyGroup", new TypeToken<ProxyGroup>() {
}.getType());
try {
if (!Files.exists(Paths.get("local/templates/" + proxyGroup.getName()))) {
System.out.println("Creating GroupTemplate for " + proxyGroup.getName() + " DEFAULT...");
Files.createDirectories(Paths.get("local/templates/" + proxyGroup.getName() + "/plugins"));
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
use of de.dytanic.cloudnet.lib.server.template.Template in project CloudNet by Dytanic.
the class CommandCloud method execute.
@Override
public void execute(CommandSender commandSender, String[] args) {
if (args.length > 2) {
if (args[0].equalsIgnoreCase("cmds") && commandSender.hasPermission("cloudnet.command.cloud.commandserver")) {
if (CloudProxy.getInstance().getCachedServers().containsKey(args[1])) {
StringBuilder builder = new StringBuilder();
for (short i = 2; i < args.length; i++) builder.append(args[i]).append(NetworkUtils.SPACE_STRING);
CloudAPI.getInstance().sendConsoleMessage(DefaultType.BUKKIT, args[1], builder.substring(0, builder.length() - 1));
commandSender.sendMessage(CloudAPI.getInstance().getPrefix() + "The information was sent to the cloud");
return;
}
}
if (args[0].equalsIgnoreCase("cmdp") && commandSender.hasPermission("cloudnet.command.cloud.commandproxy")) {
StringBuilder builder = new StringBuilder();
for (short i = 2; i < args.length; i++) builder.append(args[i]).append(NetworkUtils.SPACE_STRING);
CloudAPI.getInstance().sendConsoleMessage(DefaultType.BUNGEE_CORD, args[1], builder.substring(0, builder.length() - 1));
commandSender.sendMessage(CloudAPI.getInstance().getPrefix() + "The information was sent to the cloud");
return;
}
}
switch(args.length) {
case 1:
if (args[0].equalsIgnoreCase("help")) {
commandSender.sendMessages(NetworkUtils.SPACE_STRING, CloudAPI.getInstance().getPrefix() + "All command arguments", "§7/cloud toggle autoslot", "§7/cloud toggle maintenance", "§7/cloud toggle maintenance <time>", "§7/cloud setMaxPlayers <maxonlinecount>", "§7/cloud whitelist <add : remove> <name>", "§7/cloud start <group> <count>", "§7/cloud start <group> <template>", "§7/cloud startcs <name> <memory> <priorityStop>", "§7/cloud cmds (command server) <server> <command>", "§7/cloud cmdp (command proxy) <proxy> <command>", "§7/cloud stop <serverId>", "§7/cloud stopGroup <group>", "§7/cloud ustopGroup <group>", "§7/cloud listProxys", "§7/cloud listOnline", "§7/cloud listServers", "§7/cloud log <server>", "§7/cloud listGroups", "§7/cloud rl", "§7/cloud rlconfig", "§7/cloud list", "§7/cloud maintenance <group>", "§7/cloud copy <server>", "§7/cloud copy <server> <directory>", "§7/cloud version", "§7/cloud statistics", NetworkUtils.SPACE_STRING);
return;
}
if (args[0].equalsIgnoreCase("rl") && commandSender.hasPermission("cloudnet.command.cloud.reload")) {
CloudAPI.getInstance().sendCloudCommand("reload all");
commandSender.sendMessage(CloudAPI.getInstance().getPrefix() + "The information was sent to the cloud");
return;
}
if (args[0].equalsIgnoreCase("statistics") && commandSender.hasPermission("cloudnet.ommand.cloud.statistics")) {
Document document = CloudAPI.getInstance().getStatistics();
commandSender.sendMessage(CloudAPI.getInstance().getPrefix() + "Statistics");
for (String key : document.keys()) if (!Database.UNIQUE_NAME_KEY.equalsIgnoreCase(key))
commandSender.sendMessage("§3" + key + "§8| §e " + document.get(key).toString());
return;
}
if (args[0].equalsIgnoreCase("version") && commandSender.hasPermission("cloudnet.command.cloud.version")) {
commandSender.sendMessage("CloudNet " + NetworkUtils.class.getPackage().getSpecificationVersion() + " #" + NetworkUtils.class.getPackage().getImplementationVersion() + " by Dytanic");
return;
}
if (args[0].equalsIgnoreCase("rlconfig") && commandSender.hasPermission("cloudnet.command.cloud.reloadconfig")) {
CloudAPI.getInstance().sendCloudCommand("reload config");
commandSender.sendMessage(CloudAPI.getInstance().getPrefix() + "The information was sent to the cloud");
return;
}
if (args[0].equalsIgnoreCase("list") && commandSender.hasPermission("cloudnet.command.cloud.list")) {
commandSender.sendMessage(NetworkUtils.SPACE_STRING);
int maxMemory = 0;
int usedMemory = 0;
Map<String, Collection<ServerInfo>> groupSorted = new LinkedHashMap<>();
for (WrapperInfo cnsInfo : CloudAPI.getInstance().getWrappers()) {
commandSender.sendMessage("§8[§7" + cnsInfo.getServerId() + "§8/§7" + cnsInfo.getHostName() + "§8] §7Cores: " + cnsInfo.getAvailableProcessors());
maxMemory = maxMemory + cnsInfo.getMemory();
}
commandSender.sendMessage(NetworkUtils.SPACE_STRING);
for (ProxyInfo simpleProxyInfo : CloudAPI.getInstance().getProxys()) {
commandSender.sendMessage("§8[§c" + simpleProxyInfo.getServiceId().getServerId() + "§8] §8(§e" + simpleProxyInfo.getOnlineCount() + "§8) : §7" + simpleProxyInfo.getMemory() + "MB");
usedMemory = usedMemory + simpleProxyInfo.getMemory();
}
commandSender.sendMessage(NetworkUtils.SPACE_STRING);
for (ServerInfo simpleProxyInfo : CloudAPI.getInstance().getServers()) {
if (simpleProxyInfo.getServiceId().getGroup() != null) {
if (!groupSorted.containsKey(simpleProxyInfo.getServiceId().getGroup()))
groupSorted.put(simpleProxyInfo.getServiceId().getGroup(), new ArrayList<>());
groupSorted.get(simpleProxyInfo.getServiceId().getGroup()).add(simpleProxyInfo);
continue;
}
TextComponent textComponent = new TextComponent(TextComponent.fromLegacyText("§8[§c" + simpleProxyInfo.getServiceId().getServerId() + "§8] §8(§e" + simpleProxyInfo.getOnlineCount() + "§8) §e" + simpleProxyInfo.getServerState().name() + " §8: §7" + simpleProxyInfo.getMemory() + "MB"));
textComponent.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/server " + simpleProxyInfo.getServiceId().getServerId()));
commandSender.sendMessage(textComponent);
usedMemory = usedMemory + simpleProxyInfo.getMemory();
}
commandSender.sendMessage(NetworkUtils.SPACE_STRING);
for (Map.Entry<String, Collection<ServerInfo>> entry : groupSorted.entrySet()) {
commandSender.sendMessage("§7Group: §e" + entry.getKey());
for (ServerInfo serverInfo : entry.getValue()) {
TextComponent textComponent = new TextComponent(TextComponent.fromLegacyText("§8[§c" + serverInfo.getServiceId().getServerId() + "§8] §8(§e" + serverInfo.getOnlineCount() + "§8) §e" + serverInfo.getServerState().name() + " §8: §7" + serverInfo.getMemory() + "MB"));
textComponent.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/server " + serverInfo.getServiceId().getServerId()));
commandSender.sendMessage(textComponent);
usedMemory = usedMemory + serverInfo.getMemory();
}
commandSender.sendMessage(NetworkUtils.SPACE_STRING);
}
commandSender.sendMessage("§7Memory in use: " + usedMemory + "§8/§7" + maxMemory + "MB");
}
if (args[0].equalsIgnoreCase("listProxys") && commandSender.hasPermission("cloudnet.command.listproxys")) {
commandSender.sendMessage(CloudAPI.getInstance().getPrefix() + "Proxys:");
for (ProxyInfo proxy : CloudAPI.getInstance().getProxys()) {
commandSender.sendMessage("§7- " + (proxy.isOnline() ? "§e" : "§c") + proxy.getServiceId().getServerId() + " §8(§e" + proxy.getOnlineCount() + "§8) ");
}
return;
}
if (args[0].equalsIgnoreCase("listServers") && commandSender.hasPermission("cloudnet.command.cloud.listservers")) {
commandSender.sendMessage(CloudAPI.getInstance().getPrefix() + "Server:");
for (ServerInfo server : CloudProxy.getInstance().getCachedServers().values()) {
TextComponent textComponent = new TextComponent(TextComponent.fromLegacyText("§7- " + (server.isOnline() ? "§e" : "§c") + server.getServiceId().getServerId() + "§8(" + server.getOnlineCount() + "§8) §7State: " + server.getServerState()));
textComponent.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/server " + server.getServiceId().getServerId()));
commandSender.sendMessage(textComponent);
}
return;
}
if (args[0].equalsIgnoreCase("listOnline") && commandSender.hasPermission("cloudnet.command.cloud.listonline")) {
for (CloudPlayer playerWhereAmI : CloudAPI.getInstance().getOnlinePlayers()) {
commandSender.sendMessage("§7- §e" + playerWhereAmI.getName() + " §7on §e" + playerWhereAmI.getServer() + NetworkUtils.SLASH_STRING + playerWhereAmI.getProxy());
}
return;
}
if (args[0].equalsIgnoreCase("listGroups") && commandSender.hasPermission("cloudnet.command.cloud.listgroups")) {
StringBuilder builder = new StringBuilder();
for (SimpleServerGroup group : CloudAPI.getInstance().getCloudNetwork().getServerGroups().values()) {
builder.append((!group.isMaintenance() ? "§e" : "§c")).append(group.getName()).append("§7, ");
}
commandSender.sendMessage("§7The following server groups are registered:");
commandSender.sendMessage(builder.substring(0));
return;
}
break;
case 2:
if (args[0].equalsIgnoreCase("toggle")) {
switch(args[1].toLowerCase()) {
case "autoslot":
{
if (commandSender.hasPermission("cloudnet.command.cloud.autoslot")) {
ProxyGroup proxyGroup = CloudProxy.getInstance().getProxyGroup();
proxyGroup.getProxyConfig().setAutoSlot(new AutoSlot(proxyGroup.getProxyConfig().getAutoSlot().getDynamicSlotSize(), !proxyGroup.getProxyConfig().getAutoSlot().isEnabled()));
CloudAPI.getInstance().updateProxyGroup(proxyGroup);
commandSender.sendMessage(CloudAPI.getInstance().getPrefix() + "The autoslot state was updated.");
}
}
return;
case "maintenance":
{
if (commandSender.hasPermission("cloudnet.command.cloud.maintenance")) {
ProxyGroup proxyGroup = CloudProxy.getInstance().getProxyGroup();
proxyGroup.getProxyConfig().setMaintenance(!proxyGroup.getProxyConfig().isMaintenance());
CloudAPI.getInstance().updateProxyGroup(proxyGroup);
commandSender.sendMessage(CloudAPI.getInstance().getPrefix() + "The maintenance state was updated.");
}
return;
}
}
return;
}
if (args[0].equalsIgnoreCase("log") && commandSender.hasPermission("cloudnet.command.cloud.log")) {
if (CloudProxy.getInstance().getCachedServers().containsKey(args[1]) || CollectionWrapper.filter(CloudAPI.getInstance().getProxys(), new Acceptable<ProxyInfo>() {
@Override
public boolean isAccepted(ProxyInfo proxyInfo) {
return proxyInfo.getServiceId().getServerId().equalsIgnoreCase(args[1]);
}
}) != null) {
String url = CloudAPI.getInstance().createServerLogUrl(args[1]);
TextComponent textComponent = new TextComponent(TextComponent.fromLegacyText("§n§l§b" + url));
textComponent.setClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, url));
commandSender.sendMessage(new TextComponent(TextComponent.fromLegacyText(CloudAPI.getInstance().getPrefix() + "You can review the log at: ")), textComponent);
commandSender.sendMessage(CloudAPI.getInstance().getPrefix() + "The log is dynamic and will be deleted on 10 minutes");
} else {
commandSender.sendMessage(CloudAPI.getInstance().getPrefix() + "The server doesn't exist.");
}
return;
}
if (args[0].equalsIgnoreCase("setMaxPlayers") && commandSender.hasPermission("cloudnet.command.cloud.setmaxplayers")) {
if (checkAsNumber(args[1])) {
ProxyGroup proxyGroup = CloudProxy.getInstance().getProxyGroup();
proxyGroup.getProxyConfig().setMaxPlayers(Integer.parseInt(args[1]));
CloudAPI.getInstance().updateProxyGroup(proxyGroup);
commandSender.sendMessage(CloudAPI.getInstance().getPrefix() + "The maximum onlinecount was updated.");
} else {
commandSender.sendMessage("§7The second argument is not a number.");
}
return;
}
if (args[0].equalsIgnoreCase("start") && commandSender.hasPermission("cloudnet.command.cloud.start")) {
if (CloudAPI.getInstance().getCloudNetwork().getServerGroups().containsKey(args[1])) {
CloudAPI.getInstance().startGameServer(CloudAPI.getInstance().getServerGroupData(args[1]), new ServerConfig(false, "extra", new Document(), System.currentTimeMillis()), true);
commandSender.sendMessage(CloudAPI.getInstance().getPrefix() + "The information was sent to the cloud");
} else if (CloudAPI.getInstance().getCloudNetwork().getProxyGroups().containsKey(args[1])) {
CloudAPI.getInstance().startProxy(CloudAPI.getInstance().getProxyGroupData(args[1]));
commandSender.sendMessage(CloudAPI.getInstance().getPrefix() + "The information was sent to the cloud");
} else {
commandSender.sendMessage(CloudAPI.getInstance().getPrefix() + "The group doesn't exist.");
}
return;
}
if (args[0].equalsIgnoreCase("maintenance") && commandSender.hasPermission("cloudnet.command.cloud.maintenancegroup")) {
if (CloudAPI.getInstance().getServerGroupMap().containsKey(args[1])) {
ServerGroup serverGroup = CloudAPI.getInstance().getServerGroup(args[1]);
serverGroup.setMaintenance(!serverGroup.isMaintenance());
CloudAPI.getInstance().updateServerGroup(serverGroup);
commandSender.sendMessage(CloudAPI.getInstance().getPrefix() + "The information was sent to the cloud");
} else {
commandSender.sendMessage(CloudAPI.getInstance().getPrefix() + "The group doesn't exist.");
}
return;
}
if (args[0].equalsIgnoreCase("stop") && commandSender.hasPermission("cloudnet.command.cloud.stop")) {
if (CloudProxy.getInstance().getCachedServers().containsKey(args[1])) {
CloudAPI.getInstance().stopServer(args[1]);
commandSender.sendMessage(CloudAPI.getInstance().getPrefix() + "The information was sent to the cloud");
} else if (CollectionWrapper.filter(CloudAPI.getInstance().getProxys(), new Acceptable<ProxyInfo>() {
@Override
public boolean isAccepted(ProxyInfo proxyInfo) {
return proxyInfo.getServiceId().getServerId().equalsIgnoreCase(args[1]);
}
}) != null) {
CloudAPI.getInstance().stopProxy(args[1]);
commandSender.sendMessage(CloudAPI.getInstance().getPrefix() + "The information was sent to the cloud");
} else {
commandSender.sendMessage(CloudAPI.getInstance().getPrefix() + "The specified server isn't online.");
}
return;
}
if (args[0].equalsIgnoreCase("stopGroup") && commandSender.hasPermission("cloudnet.command.cloud.stopgroup")) {
if (CloudAPI.getInstance().getServerGroupMap().containsKey(args[1])) {
List<String> servers = CloudProxy.getInstance().getServers(args[1]);
for (String server : servers) CloudAPI.getInstance().stopServer(server);
commandSender.sendMessage(CloudAPI.getInstance().getPrefix() + "The information was sent to the cloud");
return;
}
if (CloudAPI.getInstance().getProxyGroupMap().containsKey(args[1])) {
Collection<ProxyInfo> servers = CloudAPI.getInstance().getProxys();
for (ProxyInfo proxyInfo : servers) if (proxyInfo.getServiceId().getGroup().equalsIgnoreCase(args[1]))
CloudAPI.getInstance().stopProxy(proxyInfo.getServiceId().getServerId());
commandSender.sendMessage(CloudAPI.getInstance().getPrefix() + "The information was sent to the cloud");
return;
}
return;
}
if (args[0].equalsIgnoreCase("ustopGroup") && commandSender.hasPermission("cloudnet.command.cloud.useless-stopgroup")) {
if (CloudAPI.getInstance().getServerGroupMap().containsKey(args[1])) {
Collection<ServerInfo> servers = CollectionWrapper.filterMany(CloudProxy.getInstance().getCachedServers().values(), new Acceptable<ServerInfo>() {
@Override
public boolean isAccepted(ServerInfo serverInfo) {
return serverInfo.getServiceId().getGroup() != null && serverInfo.getServiceId().getGroup().equalsIgnoreCase(args[1]);
}
});
for (ServerInfo server : servers) if (server.getOnlineCount() == 0)
CloudAPI.getInstance().stopServer(server.getServiceId().getServerId());
commandSender.sendMessage(CloudAPI.getInstance().getPrefix() + "The information was sent to the cloud");
return;
}
if (CloudAPI.getInstance().getProxyGroupMap().containsKey(args[1])) {
Collection<ProxyInfo> servers = CloudAPI.getInstance().getProxys();
for (ProxyInfo proxyInfo : servers) if (proxyInfo.getServiceId().getGroup().equalsIgnoreCase(args[1]) && proxyInfo.getOnlineCount() == 0)
CloudAPI.getInstance().stopProxy(proxyInfo.getServiceId().getServerId());
commandSender.sendMessage(CloudAPI.getInstance().getPrefix() + "The information was sent to the cloud");
return;
}
return;
}
if (args[0].equalsIgnoreCase("copy") && commandSender.hasPermission("cloudnet.command.cloud.copy")) {
CloudAPI.getInstance().sendCloudCommand("copy " + args[1]);
commandSender.sendMessage(CloudAPI.getInstance().getPrefix() + "The information was sent to the cloud");
return;
}
break;
case 3:
if (args[0].equalsIgnoreCase("copy")) {
if (!CloudProxy.getInstance().getCachedServers().containsKey(args[1])) {
commandSender.sendMessage(CloudAPI.getInstance().getPrefix() + "The server doesn't exists");
return;
}
CloudAPI.getInstance().copyDirectory(CloudProxy.getInstance().getCachedServers().get(args[1]), args[2]);
commandSender.sendMessage(CloudAPI.getInstance().getPrefix() + "The wrapper tried to copy the directory...");
return;
}
if (args[0].equalsIgnoreCase("toggle")) {
switch(args[1].toLowerCase()) {
case "maintenance":
{
if (commandSender.hasPermission("cloudnet.command.cloud.maintenance")) {
if (!NetworkUtils.checkIsNumber(args[2]))
return;
ProxyServer.getInstance().getScheduler().schedule(CloudProxy.getInstance().getPlugin(), new Runnable() {
@Override
public void run() {
ProxyGroup proxyGroup = CloudProxy.getInstance().getProxyGroup();
proxyGroup.getProxyConfig().setMaintenance(!proxyGroup.getProxyConfig().isMaintenance());
CloudAPI.getInstance().updateProxyGroup(proxyGroup);
commandSender.sendMessage(CloudAPI.getInstance().getPrefix() + "The maintenance state was updated.");
}
}, Integer.parseInt(args[2]), TimeUnit.SECONDS);
commandSender.sendMessage(CloudAPI.getInstance().getPrefix() + "The maintenance will be changed in " + args[2] + " seconds");
}
return;
}
}
return;
}
if (args[0].equalsIgnoreCase("start") && commandSender.hasPermission("cloudnet.command.cloud.start")) {
if (CloudAPI.getInstance().getServerGroupMap().containsKey(args[1])) {
if (checkAsNumber(args[2])) {
for (short i = 0; i < Integer.parseInt(args[2]); i++) {
CloudAPI.getInstance().startGameServer(CloudAPI.getInstance().getServerGroupData(args[1]), new ServerConfig(false, "extra", new Document(), System.currentTimeMillis()), true);
}
commandSender.sendMessage(CloudAPI.getInstance().getPrefix() + "The information was sent to the cloud");
} else {
ServerGroup serverGroup = CloudAPI.getInstance().getServerGroup(args[1]);
if (CollectionWrapper.filter(serverGroup.getTemplates(), new Acceptable<Template>() {
@Override
public boolean isAccepted(Template value) {
return value.getName().equalsIgnoreCase(args[2]);
}
}) != null) {
CloudAPI.getInstance().startGameServer(CloudAPI.getInstance().getServerGroupData(args[1]), new ServerConfig(false, "extra", new Document(), System.currentTimeMillis()), true, CollectionWrapper.filter(serverGroup.getTemplates(), new Acceptable<Template>() {
@Override
public boolean isAccepted(Template value) {
return value.getName().equalsIgnoreCase(args[2]);
}
}));
commandSender.sendMessage(CloudAPI.getInstance().getPrefix() + "The information was sent to the cloud");
}
}
} else if (CloudAPI.getInstance().getProxyGroupMap().containsKey(args[1])) {
if (checkAsNumber(args[2])) {
for (short i = 0; i < Integer.parseInt(args[2]); i++) {
CloudAPI.getInstance().startProxy(CloudAPI.getInstance().getProxyGroupData(args[1]));
}
commandSender.sendMessage(CloudAPI.getInstance().getPrefix() + "The information was sent to the cloud");
} else {
CloudAPI.getInstance().startProxy(CloudAPI.getInstance().getProxyGroupData(args[1]));
commandSender.sendMessage(CloudAPI.getInstance().getPrefix() + "The information was sent to the cloud");
}
} else {
commandSender.sendMessage(CloudAPI.getInstance().getPrefix() + "The group doesn't exist.");
}
} else if (args[0].equalsIgnoreCase("whitelist") && commandSender.hasPermission("cloudnet.command.cloud.whitelist")) {
if (args[1].equalsIgnoreCase("add")) {
ProxyGroup proxyGroup = CloudProxy.getInstance().getProxyGroup();
if (proxyGroup.getProxyConfig().getWhitelist().contains(args[2])) {
commandSender.sendMessage(CloudAPI.getInstance().getPrefix() + " The user " + args[2] + " is already on the whitelist.");
return;
}
proxyGroup.getProxyConfig().getWhitelist().add(args[2]);
CloudAPI.getInstance().updateProxyGroup(proxyGroup);
commandSender.sendMessage(CloudAPI.getInstance().getPrefix() + " You added " + args[2] + " to the whitelist of the maintenance mode.");
} else if (args[1].equalsIgnoreCase("remove")) {
ProxyGroup proxyGroup = CloudProxy.getInstance().getProxyGroup();
proxyGroup.getProxyConfig().getWhitelist().remove(args[2]);
CloudAPI.getInstance().updateProxyGroup(proxyGroup);
commandSender.sendMessage(CloudAPI.getInstance().getPrefix() + " You removed " + args[2] + " from the whitelist of the maintenance mode.");
}
}
break;
case 4:
if (args[0].equalsIgnoreCase("startcs") && commandSender.hasPermission("cloudnet.command.cloud.startcs")) {
if (NetworkUtils.checkIsNumber(args[2]) && Integer.parseInt(args[2]) > 128) {
CloudAPI.getInstance().startCloudServer(args[1], Integer.parseInt(args[2]), args[3].equalsIgnoreCase("true"));
commandSender.sendMessage(CloudAPI.getInstance().getPrefix() + "The information was sent to the cloud");
} else {
commandSender.sendMessage("Invalid arguments!");
}
}
break;
default:
commandSender.sendMessage(CloudAPI.getInstance().getPrefix() + "Use /cloud help");
break;
}
}
Aggregations