auto restart system

master
Alex 2021-12-27 20:03:50 +01:00
parent 9743f674a4
commit b565237206
2 changed files with 51 additions and 49 deletions

View File

@ -1,16 +1,7 @@
package net.krakatoa.proxy.command; package net.krakatoa.proxy.command;
import de.dytanic.cloudnet.driver.CloudNetDriver;
import de.dytanic.cloudnet.driver.service.ServiceInfoSnapshot;
import de.dytanic.cloudnet.ext.bridge.BridgeServiceProperty;
import de.dytanic.cloudnet.ext.bridge.player.ICloudPlayer;
import de.dytanic.cloudnet.ext.bridge.player.IPlayerManager;
import de.dytanic.cloudnet.ext.bridge.player.ServicePlayer;
import java.security.SecureRandom; import java.security.SecureRandom;
import java.util.HashMap;
import java.util.UUID;
import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.chat.TextComponent;
import net.md_5.bungee.api.connection.ProxiedPlayer; import net.md_5.bungee.api.connection.ProxiedPlayer;
import net.md_5.bungee.api.plugin.Command; import net.md_5.bungee.api.plugin.Command;
@ -20,8 +11,6 @@ public class CodeCommand extends Command {
super(name); super(name);
} }
HashMap<String, UUID> playersServer = new HashMap<>();
@Override @Override
public void execute(CommandSender commandSender, String[] strings) { public void execute(CommandSender commandSender, String[] strings) {
if (commandSender instanceof ProxiedPlayer) { if (commandSender instanceof ProxiedPlayer) {
@ -50,29 +39,6 @@ public class CodeCommand extends Command {
// TODO: add url and copy text // TODO: add url and copy text
//proxiedPlayer.sendMessage(new TextComponent("§eNeuer Code §c§l" + voiceWebCode)); //proxiedPlayer.sendMessage(new TextComponent("§eNeuer Code §c§l" + voiceWebCode));
ServiceInfoSnapshot serviceInfoSnapshot = CloudNetDriver.getInstance()
.getCloudServiceProvider().getCloudServiceByName("lobby-1");
IPlayerManager playerManager = CloudNetDriver.getInstance().getServicesRegistry()
.getFirstService(IPlayerManager.class);
assert serviceInfoSnapshot != null;
serviceInfoSnapshot.getProperty(BridgeServiceProperty.PLAYERS).ifPresent(players -> {
for (ServicePlayer player : players) {
System.out.println("player " + player.getName());
playersServer.put("lobby-1", player.getUniqueId());
ICloudPlayer cloudPlayer = playerManager.getOnlinePlayer(
player.getUniqueId());
assert cloudPlayer != null;
cloudPlayer.getPlayerExecutor().connect("NewYork-1");
}
});
proxiedPlayer.sendMessage(
new TextComponent("players "));
} }
} }

View File

@ -1,7 +1,14 @@
package net.krakatoa.proxy.listener; package net.krakatoa.proxy.listener;
import de.dytanic.cloudnet.driver.CloudNetDriver;
import de.dytanic.cloudnet.driver.service.ServiceInfoSnapshot;
import de.dytanic.cloudnet.ext.bridge.BridgeServiceProperty;
import de.dytanic.cloudnet.ext.bridge.player.IPlayerManager;
import de.dytanic.cloudnet.ext.bridge.player.ServicePlayer;
import earth.krakatao.events.KraSocketClientEventInterface; import earth.krakatao.events.KraSocketClientEventInterface;
import earth.krakatao.protocol.KraSocketClientProtocolMessage; import earth.krakatao.protocol.KraSocketClientProtocolMessage;
import java.util.HashMap;
import java.util.UUID;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import net.krakatoa.proxy.ProxySystem; import net.krakatoa.proxy.ProxySystem;
import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.ProxyServer;
@ -11,6 +18,10 @@ import org.java_websocket.handshake.ServerHandshake;
public class SocketClientMessageListener implements KraSocketClientEventInterface { public class SocketClientMessageListener implements KraSocketClientEventInterface {
private HashMap<String, UUID> playersServer = new HashMap<>();
private final IPlayerManager playerManager = CloudNetDriver.getInstance().getServicesRegistry()
.getFirstService(IPlayerManager.class);
@Override @Override
public void onOpen(ServerHandshake serverHandshake) { public void onOpen(ServerHandshake serverHandshake) {
for (ProxiedPlayer proxiedPlayer : ProxyServer.getInstance().getPlayers()) { for (ProxiedPlayer proxiedPlayer : ProxyServer.getInstance().getPlayers()) {
@ -32,25 +43,50 @@ public class SocketClientMessageListener implements KraSocketClientEventInterfac
"consumer ids " + ProxySystem.getInstance().getKraSocketClientProtocol() "consumer ids " + ProxySystem.getInstance().getKraSocketClientProtocol()
.getConsumerHashMap().keySet()); .getConsumerHashMap().keySet());
// test - mobile or voice socket connected switch (kraProtocolMessage.getCmdNumber()) {
if (kraProtocolMessage.getCmdNumber() == 15) { case 15: // @Deprecated: test - mobile or voice socket connected
ProxyServer.getInstance().getScheduler().runAsync(ProxySystem.getInstance(), () -> { ProxyServer.getInstance().getScheduler().runAsync(ProxySystem.getInstance(), () -> {
System.out.println(ProxySystem.getInstance().getFormatter() System.out.println(ProxySystem.getInstance().getFormatter()
.stringToUuid(kraProtocolMessage.getUuid())); .stringToUuid(kraProtocolMessage.getUuid()));
ProxiedPlayer proxiedPlayer = ProxySystem.getInstance().getProxy() ProxiedPlayer proxiedPlayer = ProxySystem.getInstance().getProxy()
.getPlayer(ProxySystem.getInstance().getFormatter() .getPlayer(ProxySystem.getInstance().getFormatter()
.stringToUuid(kraProtocolMessage.getUuid())); .stringToUuid(kraProtocolMessage.getUuid()));
if (proxiedPlayer != null) { if (proxiedPlayer != null) {
if (kraProtocolMessage.getArgs().equals("1")) { if (kraProtocolMessage.getArgs().equals("1")) {
proxiedPlayer.sendMessage(new TextComponent("§5Mobile §8» §cConnection lost!")); proxiedPlayer.sendMessage(new TextComponent("§5Mobile §8» §cConnection lost!"));
} else { } else {
proxiedPlayer.sendMessage( proxiedPlayer.sendMessage(
new TextComponent("§bVoice §8» §cConnection lost!")); new TextComponent("§bVoice §8» §cConnection lost!"));
}
} }
});
break;
case 33329: // server auto restart
ServiceInfoSnapshot serviceInfoSnapshot = CloudNetDriver.getInstance()
.getCloudServiceProvider().getCloudServiceByName(kraProtocolMessage.getArgs());
if (serviceInfoSnapshot != null) {
serviceInfoSnapshot.getProperty(BridgeServiceProperty.PLAYERS).ifPresent(players -> {
for (ServicePlayer player : players) {
playersServer.put(kraProtocolMessage.getArgs(), player.getUniqueId());
/*ICloudPlayer cloudPlayer = playerManager.getOnlinePlayer(
player.getUniqueId());
if (cloudPlayer != null) {
cloudPlayer.getPlayerExecutor().connect(kraProtocolMessage.getArgs());
}*/
}
// stop target server
CloudNetDriver.getInstance().getCloudServiceProvider(serviceInfoSnapshot).stop();
});
} }
}); break;
default:
break;
} }
ProxySystem.getInstance().getKraSocketClientProtocol().getConsumerHashMap() ProxySystem.getInstance().getKraSocketClientProtocol().getConsumerHashMap()