use of cloud.timo.TimoCloud.common.protocol.MessageType in project TimoCloud by TimoCloud.
the class BungeeStringHandler method handleMessage.
@Override
public void handleMessage(Message message, String originalMessage, Channel channel) {
if (message == null) {
TimoCloudBungee.getInstance().severe("Error while parsing json (json is null): " + originalMessage);
return;
}
String server = (String) message.get("name");
MessageType type = message.getType();
Object data = message.getData();
switch(type) {
case PROXY_HANDSHAKE_SUCCESS:
TimoCloudBungee.getInstance().onHandshakeSuccess();
break;
case API_DATA:
((TimoCloudUniversalAPIBungeeImplementation) TimoCloudAPI.getUniversalAPI()).setData((Map<String, Object>) data);
break;
case EVENT_FIRED:
try {
EventType eventType = EnumUtil.valueOf(EventType.class, (String) message.get("eT"));
((EventManager) TimoCloudAPI.getEventAPI()).callEvent(((TimoCloudUniversalAPIBasicImplementation) TimoCloudAPI.getUniversalAPI()).getObjectMapper().readValue((String) data, EventUtil.getClassByEventType(eventType)));
} catch (Exception e) {
System.err.println("Error while parsing event from json: ");
TimoCloudBungee.getInstance().severe(e);
}
break;
case CORE_SEND_MESSAGE_TO_COMMAND_SENDER:
{
TimoCloudBungee.getInstance().getTimoCloudCommand().sendMessage((String) message.get("sender"), (String) data);
}
case PROXY_EXECUTE_COMMAND:
TimoCloudBungee.getInstance().getProxy().getPluginManager().dispatchCommand(TimoCloudBungee.getInstance().getProxy().getConsole(), (String) data);
break;
case PROXY_SEND_PLAYER:
{
Map<String, Object> information = (Map<String, Object>) data;
String playerUUID = (String) information.get("playerUUID");
String serverObject = (String) information.get("serverObject");
ProxiedPlayer proxiedPlayer = TimoCloudBungee.getInstance().getProxy().getPlayer(UUID.fromString(playerUUID));
if (Objects.isNull(proxiedPlayer))
return;
proxiedPlayer.connect(TimoCloudBungee.getInstance().getProxy().getServerInfo(serverObject));
break;
}
case PROXY_SEND_MESSAGE:
Map<String, Object> information = (Map<String, Object>) data;
String playerUUID = (String) information.get("playerUUID");
String chatMessage = (String) information.get("chatMessage");
ProxiedPlayer proxiedPlayer = TimoCloudBungee.getInstance().getProxy().getPlayer(UUID.fromString(playerUUID));
if (Objects.isNull(proxiedPlayer))
return;
try {
proxiedPlayer.sendMessage(ComponentSerializer.parse(chatMessage));
} catch (Exception e) {
proxiedPlayer.sendMessage(TextComponent.fromLegacyText(chatMessage));
}
break;
case PROXY_ADD_SERVER:
TimoCloudBungee.getInstance().getProxy().getServers().put(server, TimoCloudBungee.getInstance().getProxy().constructServerInfo(server, new InetSocketAddress((String) message.get("address"), ((Number) message.get("port")).intValue()), "", false));
break;
case PROXY_REMOVE_SERVER:
TimoCloudBungee.getInstance().getProxy().getServers().remove(server);
break;
case CORD_SET_IP:
try {
TimoCloudBungee.getInstance().getIpManager().setAddresses(InetAddressUtil.getSocketAddressByName((String) message.get("CHANNEL_ADDRESS")), InetAddressUtil.getSocketAddressByName((String) message.get("CLIENT_ADDRESS")));
} catch (Exception e) {
TimoCloudBungee.getInstance().severe("Error while parsing IP addresses (" + message.get("CHANNEL_ADDRESS") + ", " + message.get("CLIENT_ADDRESS") + "): ");
TimoCloudBungee.getInstance().severe(e);
}
break;
case ON_PLUGIN_MESSAGE:
{
AddressedPluginMessage addressedPluginMessage = PluginMessageSerializer.deserialize((Map) data);
((TimoCloudMessageAPIBasicImplementation) TimoCloudAPI.getMessageAPI()).onMessage(addressedPluginMessage);
break;
}
case PROXY_STOP:
{
TimoCloudBungee.getInstance().stop();
break;
}
default:
TimoCloudBungee.getInstance().severe("Could not categorize json message: " + message);
}
}
use of cloud.timo.TimoCloud.common.protocol.MessageType in project TimoCloud by TimoCloud.
the class BaseStringHandler method handleMessage.
@Override
public void handleMessage(Message message, String originalMessage, Channel channel) {
MessageType type = message.getType();
Object data = message.getData();
switch(type) {
case BASE_HANDSHAKE_SUCCESS:
TimoCloudBase.getInstance().onHandshakeSuccess();
break;
case BASE_INSTANCE_KILL:
{
TimoCloudBase.getInstance().getInstanceManager().killInstanceScreen((String) data);
break;
}
case BASE_PID_EXIST_REQUEST:
{
String id = (String) message.get("id");
int pid = ((Number) message.get("pid")).intValue();
SystemInfo si = new SystemInfo();
final OSProcess process = si.getOperatingSystem().getProcess(pid);
TimoCloudBase.getInstance().getSocketMessageManager().sendMessage(Message.create().setType(MessageType.BASE_PID_EXIST_RESPONSE).setTarget(id).set("requestedPid", pid).set("running", Objects.nonNull(process)));
break;
}
case BASE_START_SERVER:
{
String serverName = (String) message.get("name");
String id = (String) message.get("id");
int ram = ((Number) message.get("ram")).intValue();
boolean isStatic = (Boolean) message.get("static");
String group = (String) message.get("group");
String map = (String) message.get("map");
Map<String, Object> templateHash = (Map<String, Object>) message.get("templateHash");
Map<String, Object> mapHash = message.containsKey("mapHash") ? (Map<String, Object>) message.get("mapHash") : null;
Map<String, Object> globalHash = (Map<String, Object>) message.get("globalHash");
List<String> javaParameters = (List<String>) message.get("javaParameters");
List<String> spigotParameters = (List<String>) message.get("spigotParameters");
String jrePath = (String) message.get("jrePath");
int timeout = ((Number) message.get("timeout")).intValue();
TimoCloudBase.getInstance().getInstanceManager().addToServerQueue(new BaseServerObject(serverName, id, ram, isStatic, map, group, templateHash, mapHash, globalHash, javaParameters, spigotParameters, jrePath, timeout));
TimoCloudBase.getInstance().info("Added server " + serverName + " to queue.");
break;
}
case BASE_START_PROXY:
{
String proxyName = (String) message.get("name");
String id = (String) message.get("id");
int ram = ((Number) message.get("ram")).intValue();
boolean isStatic = (Boolean) message.get("static");
String group = (String) message.get("group");
String motd = (String) message.get("motd");
int maxPlayers = ((Number) message.get("maxplayers")).intValue();
int maxPlayersPerProxy = ((Number) message.get("maxplayersperproxy")).intValue();
Map<String, Object> templateHash = (Map<String, Object>) message.get("templateHash");
Map<String, Object> globalHash = (Map<String, Object>) message.get("globalHash");
List<String> javaParameters = (List<String>) message.get("javaParameters");
String jrePath = (String) message.get("jrePath");
TimoCloudBase.getInstance().getInstanceManager().addToProxyQueue(new BaseProxyObject(proxyName, id, ram, isStatic, group, motd, maxPlayers, maxPlayersPerProxy, templateHash, globalHash, javaParameters, jrePath));
TimoCloudBase.getInstance().info("Added proxy " + proxyName + " to queue.");
break;
}
case BASE_SERVER_STOPPED:
TimoCloudBase.getInstance().getInstanceManager().onServerStopped((String) data);
break;
case BASE_PROXY_STOPPED:
TimoCloudBase.getInstance().getInstanceManager().onProxyStopped((String) data);
break;
case BASE_DELETE_DIRECTORY:
File dir = new File((String) data);
if (dir.exists() && dir.isDirectory())
FileDeleteStrategy.FORCE.deleteQuietly(dir);
break;
case TRANSFER_TEMPLATE:
try {
InputStream inputStream = new ByteArrayInputStream(stringToByteArray((String) message.get("file")));
switch((String) message.get("transferType")) {
case "SERVER_TEMPLATE":
TimoCloudBase.getInstance().getTemplateManager().extractFiles(inputStream, new File(TimoCloudBase.getInstance().getFileManager().getServerTemplatesDirectory(), (String) message.get("template")));
TimoCloudBase.getInstance().getSocketMessageManager().sendMessage(Message.create().setType(MessageType.SERVER_TRANSFER_FINISHED).setTarget(message.getTarget()));
break;
case "SERVER_GLOBAL_TEMPLATE":
TimoCloudBase.getInstance().getTemplateManager().extractFiles(inputStream, TimoCloudBase.getInstance().getFileManager().getServerGlobalDirectory());
TimoCloudBase.getInstance().getSocketMessageManager().sendMessage(Message.create().setType(MessageType.SERVER_TRANSFER_FINISHED).setTarget(message.getTarget()));
break;
case "PROXY_TEMPLATE":
TimoCloudBase.getInstance().getTemplateManager().extractFiles(inputStream, new File(TimoCloudBase.getInstance().getFileManager().getProxyTemplatesDirectory(), (String) message.get("template")));
TimoCloudBase.getInstance().getSocketMessageManager().sendMessage(Message.create().setType(MessageType.PROXY_TRANSFER_FINISHED).setTarget(message.getTarget()));
break;
case "PROXY_GLOBAL_TEMPLATE":
TimoCloudBase.getInstance().getTemplateManager().extractFiles(inputStream, TimoCloudBase.getInstance().getFileManager().getProxyGlobalDirectory());
TimoCloudBase.getInstance().getSocketMessageManager().sendMessage(Message.create().setType(MessageType.PROXY_TRANSFER_FINISHED).setTarget(message.getTarget()));
break;
}
TimoCloudBase.getInstance().getInstanceManager().setDownloadingTemplate(false);
break;
} catch (Exception e) {
TimoCloudBase.getInstance().severe("Error while unpacking transferred files: ");
TimoCloudBase.getInstance().severe(e);
}
default:
TimoCloudBase.getInstance().severe("Could not categorize json message: " + originalMessage);
}
}
use of cloud.timo.TimoCloud.common.protocol.MessageType in project TimoCloud by TimoCloud.
the class Proxy method onMessage.
@Override
public void onMessage(Message message, Communicatable sender) {
if (getChannel() != null && sender.getChannel().id().equals(getChannel().id())) {
// communicate
lastContact = System.currentTimeMillis();
}
MessageType type = message.getType();
Object data = message.getData();
switch(type) {
case PROXY_STOP:
stop();
break;
case BASE_PROXY_STARTED:
setPort(((Number) message.get("port")).intValue());
setPid(((Number) message.get("pid")).intValue());
try {
setPublicKey(RSAKeyUtil.publicKeyFromBase64((String) message.get("publicKey")));
} catch (Exception e) {
TimoCloudCore.getInstance().severe(String.format("Error while setting public key of proxy %s, please report this!", getName()));
TimoCloudCore.getInstance().severe(e);
}
break;
case BASE_PROXY_NOT_STARTED:
// unregister();
break;
case PROXY_EXECUTE_COMMAND:
executeCommand((String) data);
break;
case PROXY_SET_PLAYER_COUNT:
setOnlinePlayerCount(((Number) data).intValue());
break;
case PROXY_TRANSFER_FINISHED:
getTemplateUpdate().addOne();
break;
case PROXY_LOG_ENTRY:
if (isRegistered() && sender instanceof Base)
break;
LogEntry logEntry = JsonConverter.convertMapIfNecessary(data, LogEntry.class);
logStorage.addEntry(logEntry);
break;
case BASE_PID_EXIST_RESPONSE:
final boolean running = (boolean) message.get("running");
if (!running) {
unregister();
TimoCloudCore.getInstance().info("Process of Proxy " + getName() + " not found.");
onShutdown();
}
break;
default:
sendMessage(message);
}
}
use of cloud.timo.TimoCloud.common.protocol.MessageType in project TimoCloud by TimoCloud.
the class BukkitStringHandler method handleMessage.
@Override
public void handleMessage(Message message, String originalMessage, Channel channel) {
if (message == null) {
TimoCloudBukkit.getInstance().severe("Error while parsing json (json is null): " + originalMessage);
return;
}
MessageType type = message.getType();
Object data = message.getData();
switch(type) {
case SERVER_HANDSHAKE_SUCCESS:
TimoCloudBukkit.getInstance().onHandshakeSuccess();
break;
case API_DATA:
((TimoCloudUniversalAPIBukkitImplementation) TimoCloudAPI.getUniversalAPI()).setData((Map<String, Object>) data);
break;
case EVENT_FIRED:
try {
EventType eventType = EnumUtil.valueOf(EventType.class, (String) message.get("eT"));
((EventManager) TimoCloudAPI.getEventAPI()).callEvent(((TimoCloudUniversalAPIBasicImplementation) TimoCloudAPI.getUniversalAPI()).getObjectMapper().readValue((String) data, EventUtil.getClassByEventType(eventType)));
} catch (Exception e) {
System.err.println("Error while parsing event from json: ");
TimoCloudBukkit.getInstance().severe(e);
}
break;
case SERVER_EXECUTE_COMMAND:
Bukkit.getScheduler().runTask(TimoCloudBukkit.getInstance(), () -> TimoCloudBukkit.getInstance().getServer().dispatchCommand(TimoCloudBukkit.getInstance().getServer().getConsoleSender(), (String) data));
break;
case ON_PLUGIN_MESSAGE:
{
AddressedPluginMessage addressedPluginMessage = PluginMessageSerializer.deserialize((Map) data);
((TimoCloudMessageAPIBasicImplementation) TimoCloudAPI.getMessageAPI()).onMessage(addressedPluginMessage);
break;
}
case SERVER_STOP:
{
TimoCloudBukkit.getInstance().stop();
break;
}
default:
TimoCloudBukkit.getInstance().severe("Error: Could not categorize json message: " + message);
}
}
use of cloud.timo.TimoCloud.common.protocol.MessageType in project TimoCloud by TimoCloud.
the class VelocityStringHandler method handleMessage.
@Override
public void handleMessage(Message message, String originalMessage, Channel channel) {
if (message == null) {
TimoCloudVelocity.getInstance().severe("Error while parsing json (json is null): " + originalMessage);
return;
}
String server = (String) message.get("name");
MessageType type = message.getType();
Object data = message.getData();
switch(type) {
case PROXY_HANDSHAKE_SUCCESS:
TimoCloudVelocity.getInstance().onHandshakeSuccess();
break;
case API_DATA:
((TimoCloudUniversalAPIVelocityImplementation) TimoCloudAPI.getUniversalAPI()).setData((Map<String, Object>) data);
break;
case EVENT_FIRED:
try {
EventType eventType = EnumUtil.valueOf(EventType.class, (String) message.get("eT"));
((EventManager) TimoCloudAPI.getEventAPI()).callEvent(((TimoCloudUniversalAPIBasicImplementation) TimoCloudAPI.getUniversalAPI()).getObjectMapper().readValue((String) data, EventUtil.getClassByEventType(eventType)));
} catch (Exception e) {
System.err.println("Error while parsing event from json: ");
TimoCloudVelocity.getInstance().severe(e);
}
break;
case CORE_SEND_MESSAGE_TO_COMMAND_SENDER:
{
TimoCloudVelocity.getInstance().getTimoCloudCommand().sendMessage((String) message.get("sender"), (String) data);
}
case PROXY_EXECUTE_COMMAND:
TimoCloudVelocity.getInstance().getServer().getCommandManager().executeImmediatelyAsync(TimoCloudVelocity.getInstance().getServer().getConsoleCommandSource(), (String) data);
break;
case PROXY_SEND_PLAYER:
{
Map<String, Object> information = (Map<String, Object>) data;
String playerUUID = (String) information.get("playerUUID");
String serverObject = (String) information.get("serverObject");
Optional<Player> player = TimoCloudVelocity.getInstance().getServer().getPlayer(UUID.fromString(playerUUID));
player.ifPresent(it -> it.createConnectionRequest(TimoCloudVelocity.getInstance().getServer().getServer(serverObject).get()).fireAndForget());
break;
}
case PROXY_SEND_MESSAGE:
Map<String, Object> information = (Map<String, Object>) data;
String playerUUID = (String) information.get("playerUUID");
String chatMessage = (String) information.get("chatMessage");
Optional<Player> player = TimoCloudVelocity.getInstance().getServer().getPlayer(UUID.fromString(playerUUID));
player.ifPresent(it -> it.sendMessage(Component.text(chatMessage)));
break;
case PROXY_ADD_SERVER:
TimoCloudVelocity.getInstance().getServer().registerServer(new ServerInfo(server, new InetSocketAddress((String) message.get("address"), ((Number) message.get("port")).intValue())));
break;
case PROXY_REMOVE_SERVER:
TimoCloudVelocity.getInstance().getServer().unregisterServer(TimoCloudVelocity.getInstance().getServer().getServer(server).get().getServerInfo());
break;
case CORD_SET_IP:
try {
TimoCloudVelocity.getInstance().getIpManager().setAddresses(InetAddressUtil.getSocketAddressByName((String) message.get("CHANNEL_ADDRESS")), InetAddressUtil.getSocketAddressByName((String) message.get("CLIENT_ADDRESS")));
} catch (Exception e) {
TimoCloudVelocity.getInstance().severe("Error while parsing IP addresses (" + message.get("CHANNEL_ADDRESS") + ", " + message.get("CLIENT_ADDRESS") + "): ");
TimoCloudVelocity.getInstance().severe(e);
}
break;
case ON_PLUGIN_MESSAGE:
{
AddressedPluginMessage addressedPluginMessage = PluginMessageSerializer.deserialize((Map) data);
((TimoCloudMessageAPIBasicImplementation) TimoCloudAPI.getMessageAPI()).onMessage(addressedPluginMessage);
break;
}
case PROXY_STOP:
{
TimoCloudVelocity.getInstance().stop();
break;
}
default:
TimoCloudVelocity.getInstance().severe("Could not categorize json message: " + message);
}
}
Aggregations