Skip to content

Commit

Permalink
Allow custom formatting of server directories in SubCreator
Browse files Browse the repository at this point in the history
  • Loading branch information
ME1312 committed Jul 30, 2019
1 parent c6d6118 commit 3ff2459
Show file tree
Hide file tree
Showing 5 changed files with 59 additions and 26 deletions.
Expand Up @@ -3,6 +3,7 @@
import com.google.common.collect.Range;
import net.ME1312.Galaxi.Library.*;
import net.ME1312.Galaxi.Library.Callback.Callback;
import net.ME1312.Galaxi.Library.Callback.ReturnCallback;
import net.ME1312.SubData.Server.SubDataClient;
import net.ME1312.SubServers.Bungee.Event.SubCreateEvent;
import net.ME1312.SubServers.Bungee.Host.*;
Expand Down Expand Up @@ -94,18 +95,22 @@ public boolean create(UUID player, String name, ServerTemplate template, Version
final SubCreateEvent event = new SubCreateEvent(player, host, name, template, version, port);
host.plugin.getPluginManager().callEvent(event);
if (!event.isCancelled()) {
Container<String> address = new Container<>("$address$");
ReturnCallback<Object, Object> conversion = obj -> convert(obj, new NamedContainer<>("$player$", (player == null)?"":player.toString()), new NamedContainer<>("$name$", name),
new NamedContainer<>("$template$", template.getName()), new NamedContainer<>("$type$", template.getType().toString()), new NamedContainer<>("$version$", (version != null)?version.toString().replace(" ", "@"):""),
new NamedContainer<>("$address$", address.get()), new NamedContainer<>("$port$", Integer.toString(fport)));

logger.start();
host.queue(new PacketExCreateServer(name, template, version, port, logger.getExternalAddress(), data -> {
host.queue(new PacketExCreateServer(name, template, version, port, (template.getConfigOptions().contains("Directory"))?conversion.run(template.getConfigOptions().getRawString("Directory")).toString():name, logger.getExternalAddress(), data -> {
try {
if (data.getInt(0x0001) == 0) {
Logger.get(prefix).info("Saving...");
address.set(data.getRawString(0x0003));
if (host.plugin.exServers.keySet().contains(name.toLowerCase()))
host.plugin.exServers.remove(name.toLowerCase());

ObjectMap<String> server = new ObjectMap<String>();
ObjectMap<String> config = new ObjectMap<String>((Map<String, ?>) convert(data.getMap(0x0002).get(), new NamedContainer<>("$player$", (player == null)?"":player.toString()), new NamedContainer<>("$name$", name),
new NamedContainer<>("$template$", template.getName()), new NamedContainer<>("$type$", template.getType().toString()), new NamedContainer<>("$version$", (version != null)?version.toString().replace(" ", "@"):""),
new NamedContainer<>("$address$", new ObjectMap<String>((Map<String, ?>) data.getObject(0x0002)).getRawString("\033address", "null")), new NamedContainer<>("$port$", Integer.toString(fport))));
ObjectMap<String> config = new ObjectMap<String>((Map<String, ?>) conversion.run(data.getMap(0x0002).get()));

config.remove("\033address");

Expand Down Expand Up @@ -149,7 +154,7 @@ public boolean create(UUID player, String name, ServerTemplate template, Version
ew.printStackTrace();
}
} else {
Logger.get(prefix).info(data.getString(0x0003));
Logger.get(prefix).info(data.getString(0x0004));
}
} catch (Exception e) {
e.printStackTrace();
Expand Down Expand Up @@ -216,7 +221,7 @@ public boolean update(UUID player, SubServer server, Version version, Callback<S
ew.printStackTrace();
}
} else {
Logger.get(prefix).info(data.getString(0x0003));
Logger.get(prefix).info(data.getString(0x0004));
}
} catch (Exception e) {
e.printStackTrace();
Expand Down
Expand Up @@ -4,6 +4,7 @@
import com.google.gson.Gson;
import net.ME1312.Galaxi.Library.*;
import net.ME1312.Galaxi.Library.Callback.Callback;
import net.ME1312.Galaxi.Library.Callback.ReturnCallback;
import net.ME1312.Galaxi.Library.Config.YAMLSection;
import net.ME1312.Galaxi.Library.Map.ObjectMapValue;
import net.ME1312.SubServers.Bungee.Event.SubCreateEvent;
Expand Down Expand Up @@ -199,7 +200,12 @@ private ObjectMap<String> build(File dir, ServerTemplate template, List<ServerTe
}

public void run() {
File dir = (update != null)?new File(update.getFullPath()):new File(host.getPath(), name);
ReturnCallback<Object, Object> conversion = obj -> convert(obj, new NamedContainer<>("$player$", (player == null)?"":player.toString()), new NamedContainer<>("$name$", name),
new NamedContainer<>("$template$", template.getName()), new NamedContainer<>("$type$", template.getType().toString()), new NamedContainer<>("$version$", (version != null)?version.toString().replace(" ", "@"):""),
new NamedContainer<>("$address$", host.getAddress().getHostAddress()), new NamedContainer<>("$port$", Integer.toString(port)));

File dir = (update != null)?new File(update.getFullPath()):new File(host.getPath(),
(template.getConfigOptions().contains("Directory"))?conversion.run(template.getConfigOptions().getRawString("Directory")).toString():name);
dir.mkdirs();
ObjectMap<String> server = new ObjectMap<String>();
ObjectMap<String> config;
Expand All @@ -222,9 +228,7 @@ public void run() {
if (host.plugin.exServers.keySet().contains(name.toLowerCase()))
host.plugin.exServers.remove(name.toLowerCase());

config = new ObjectMap<String>((Map<String, ?>) convert(config.get(), new NamedContainer<>("$player$", (player == null)?"":player.toString()), new NamedContainer<>("$name$", name),
new NamedContainer<>("$template$", template.getName()), new NamedContainer<>("$type$", template.getType().toString()), new NamedContainer<>("$version$", version.toString().replace(" ", "@")),
new NamedContainer<>("$address$", host.getAddress().getHostAddress()), new NamedContainer<>("$port$", Integer.toString(port))));
config = new ObjectMap<String>((Map<String, ?>) conversion.run(config.get()));

server.set("Enabled", true);
server.set("Display", "");
Expand Down
Expand Up @@ -22,6 +22,7 @@ public class PacketExCreateServer implements PacketObjectIn<Integer>, PacketObje
private SubCreator.ServerTemplate template;
private Version version;
private int port;
private String dir;
private UUID log;
private UUID tracker = null;

Expand All @@ -47,6 +48,7 @@ public PacketExCreateServer(SubServer server, Version version, UUID log, Callbac
this.template = server.getTemplate();
this.version = version;
this.port = server.getAddress().getPort();
this.dir = server.getPath();
this.log = log;
this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID);
callbacks.put(tracker, callback);
Expand All @@ -59,16 +61,18 @@ public PacketExCreateServer(SubServer server, Version version, UUID log, Callbac
* @param template Server Template
* @param version Server Version
* @param port Server Port Number
* @param directory Server Directory
* @param log Log Address
* @param callback Callbacks
*/
@SafeVarargs
public PacketExCreateServer(String name, SubCreator.ServerTemplate template, Version version, int port, UUID log, Callback<ObjectMap<Integer>>... callback) {
public PacketExCreateServer(String name, SubCreator.ServerTemplate template, Version version, int port, String directory, UUID log, Callback<ObjectMap<Integer>>... callback) {
if (Util.isNull(name, template, port, log, callback)) throw new NullPointerException();
this.name = name;
this.template = template;
this.version = version;
this.port = port;
this.dir = directory;
this.log = log;
this.tracker = Util.getNew(callbacks.keySet(), UUID::randomUUID);
callbacks.put(tracker, callback);
Expand All @@ -85,7 +89,8 @@ public ObjectMap<Integer> send(SubDataClient client) {
data.set(0x0003, template.getName());
data.set(0x0004, version);
data.set(0x0005, port);
data.set(0x0006, log);
data.set(0x0006, dir);
data.set(0x0007, log);
}
return data;
}
Expand Down
Expand Up @@ -201,18 +201,20 @@ private class CreatorTask extends Thread {
private final ServerTemplate template;
private final Version version;
private final int port;
private final File dir;
private final UUID address;
private final UUID tracker;
private final SubLogger log;
private Process process;

private CreatorTask(String name, ServerTemplate template, Version version, int port, UUID address, UUID tracker) {
private CreatorTask(String name, ServerTemplate template, Version version, int port, String dir, UUID address, UUID tracker) {
super(SubAPI.getInstance().getAppInfo().getName() + "::SubCreator_Process_Handler(" + name + ')');
this.update = host.servers.getOrDefault(name.toLowerCase(), null);
this.name = name;
this.template = template;
this.version = version;
this.port = port;
this.dir = new File(host.host.getRawString("Directory"), dir.replace("$address$", host.config.get().getMap("Settings").getRawString("Server-Bind")));
this.log = new SubLogger(null, this, name + File.separator + ((update == null)?"Creator":"Updater"), address, new Container<Boolean>(true), null);
this.address = address;
this.tracker = tracker;
Expand Down Expand Up @@ -351,7 +353,6 @@ private ObjectMap<String> build(File dir, ServerTemplate template, List<ServerTe
}

public void run() {
File dir = new File(host.host.getRawString("Directory"), (update != null)?update.getDirectory():name);
dir.mkdirs();
ObjectMap<String> server;
try {
Expand All @@ -365,12 +366,11 @@ public void run() {
log.logger.error.println(e);
}
ObjectMap<String> config = template.getConfigOptions().clone();
config.set("\033address", host.config.get().getMap("Settings").getRawString("Server-Bind"));
if (server != null) {
((SubDataClient) SubAPI.getInstance().getSubDataNetwork()[0]).sendPacket(new PacketExCreateServer(0, null, config, tracker));
((SubDataClient) SubAPI.getInstance().getSubDataNetwork()[0]).sendPacket(new PacketExCreateServer(0, null, config, host.config.get().getMap("Settings").getRawString("Server-Bind"), tracker));
} else {
log.logger.info.println("Couldn't build the server jar. Check the SubCreator logs for more detail.");
((SubDataClient) SubAPI.getInstance().getSubDataNetwork()[0]).sendPacket(new PacketExCreateServer(-1, "Couldn't build the server jar. Check the SubCreator logs for more detail.", config, tracker));
((SubDataClient) SubAPI.getInstance().getSubDataNetwork()[0]).sendPacket(new PacketExCreateServer(-1, "Couldn't build the server jar. Check the SubCreator logs for more detail.", tracker));
}
SubCreator.this.thread.remove(name.toLowerCase());
}
Expand All @@ -387,9 +387,9 @@ public SubCreator(ExHost host) {
this.thread = new TreeMap<>();
}

public boolean create(String name, ServerTemplate template, Version version, int port, UUID address, UUID tracker) {
if (Util.isNull(name, template, port, address)) throw new NullPointerException();
CreatorTask task = new CreatorTask(name, template, version, port, address, tracker);
public boolean create(String name, ServerTemplate template, Version version, int port, String dir, UUID address, UUID tracker) {
if (Util.isNull(name, template, port, dir, address)) throw new NullPointerException();
CreatorTask task = new CreatorTask(name, template, version, port, dir, address, tracker);
this.thread.put(name.toLowerCase(), task);
task.start();
return true;
Expand Down
Expand Up @@ -18,6 +18,7 @@ public class PacketExCreateServer implements PacketObjectIn<Integer>, PacketObje
private int response;
private String message;
private ObjectMap<String> info;
private String address;
private UUID tracker;

/**
Expand All @@ -30,19 +31,35 @@ public PacketExCreateServer(ExHost host) {
this.host = host;
}

/**
* New PacketCreateServer (Out)
*
* @param response Response ID
* @param message Message
* @param tracker Receiver ID
*/
public PacketExCreateServer(int response, String message, UUID tracker) {
if (Util.isNull(response)) throw new NullPointerException();
this.response = response;
this.message = message;
this.tracker = tracker;
}

/**
* New PacketCreateServer (Out)
*
* @param response Response ID
* @param message Message
* @param info Creator Info
* @param address Internal Server Address
* @param tracker Receiver ID
*/
public PacketExCreateServer(int response, String message, ObjectMap<String> info, UUID tracker) {
public PacketExCreateServer(int response, String message, ObjectMap<String> info, String address, UUID tracker) {
if (Util.isNull(response)) throw new NullPointerException();
this.response = response;
this.message = message;
this.info = info;
this.address = address;
this.tracker = tracker;
}

Expand All @@ -51,8 +68,9 @@ public ObjectMap<Integer> send(SubDataClient client) {
ObjectMap<Integer> data = new ObjectMap<Integer>();
if (tracker != null) data.set(0x0000, tracker);
data.set(0x0001, response);
data.set(0x0002, info);
if (message != null) data.set(0x0003, message);
if (info != null) data.set(0x0002, info);
if (address != null) data.set(0x0003, address);
if (message != null) data.set(0x0004, message);
return data;
}

Expand All @@ -66,16 +84,17 @@ public void receive(SubDataClient client, ObjectMap<Integer> data) {
} else {
host.creator.terminate();
}
client.sendPacket(new PacketExCreateServer(1, null, null, tracker));
client.sendPacket(new PacketExCreateServer(1, null, tracker));
} else {
String name = data.getRawString(0x0002);
String template = data.getRawString(0x0003);
Version version = (data.contains(0x0004)?data.getVersion(0x0004):null);
Integer port = data.getInt(0x0005);
UUID log = data.getUUID(0x0006);
String dir = data.getRawString(0x0006);
UUID log = data.getUUID(0x0007);

host.creator.create(name, host.templates.get(template.toLowerCase()), version,
port, log, tracker);
port, dir, log, tracker);
}
} catch (Throwable e) {
host.log.error.println(e);
Expand Down

0 comments on commit 3ff2459

Please sign in to comment.