From ea7ee7d2c8600cfd514eae0d7ea7bd1cf2697cdd Mon Sep 17 00:00:00 2001 From: ProfMobius Date: Mon, 13 Oct 2014 17:58:46 +0200 Subject: [PATCH] Added support for UUID. The UUID will be sent before anything else upon connection to the Nexus so it can associate the connection with a proper db entry. --- src/main/java/mcp/mobius/opis/network/enums/Message.java | 3 ++- .../mcp/mobius/opis/network/rcon/nexus/NexusClient.java | 7 +++++++ .../opis/network/rcon/nexus/NexusInboundHandler.java | 8 ++++++-- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/main/java/mcp/mobius/opis/network/enums/Message.java b/src/main/java/mcp/mobius/opis/network/enums/Message.java index 6d43002..a0670cc 100644 --- a/src/main/java/mcp/mobius/opis/network/enums/Message.java +++ b/src/main/java/mcp/mobius/opis/network/enums/Message.java @@ -93,7 +93,8 @@ public enum Message { CLIENT_CLEAR_SELECTION, CLIENT_HIGHLIGHT_BLOCK, - SWING_TAB_CHANGED; + SWING_TAB_CHANGED, + NEXUS_UUID; private AccessLevel accessLevel = AccessLevel.NONE; private EnumSet tabEnum; diff --git a/src/main/java/mcp/mobius/opis/network/rcon/nexus/NexusClient.java b/src/main/java/mcp/mobius/opis/network/rcon/nexus/NexusClient.java index c2b95d5..6a599e1 100644 --- a/src/main/java/mcp/mobius/opis/network/rcon/nexus/NexusClient.java +++ b/src/main/java/mcp/mobius/opis/network/rcon/nexus/NexusClient.java @@ -14,6 +14,7 @@ import io.netty.channel.socket.nio.NioSocketChannel; import io.netty.handler.ssl.SslContext; import io.netty.handler.ssl.util.SelfSignedCertificate; import io.netty.handler.timeout.ReadTimeoutHandler; +import io.netty.handler.timeout.WriteTimeoutHandler; import java.io.File; import java.io.FileInputStream; @@ -58,6 +59,7 @@ public class NexusClient implements Runnable { //ch.pipeline().addLast(new RConHandshakeHandler()); //ch.pipeline().addLast(new JdkZlibDecoder()); //ch.pipeline().addLast(new JdkZlibEncoder()); + //ch.pipeline().addLast(new WriteTimeoutHandler(5)); ch.pipeline().addLast(new NexusMsgDecoder()); ch.pipeline().addLast(new NexusInboundHandler()); } @@ -78,6 +80,11 @@ public class NexusClient implements Runnable { public void run(){ this.readConfig(this.reverseprop); if (!this.active) return; + if (this.uuid.equals("")){ + modOpis.log.error("UUID not set properly."); + return; + } + modOpis.log.info(String.format("Connecting to OpixNexus %s:%s", this.host, this.port)); EventLoopGroup workerGroup = new NioEventLoopGroup(); diff --git a/src/main/java/mcp/mobius/opis/network/rcon/nexus/NexusInboundHandler.java b/src/main/java/mcp/mobius/opis/network/rcon/nexus/NexusInboundHandler.java index 2f46e02..8abac26 100644 --- a/src/main/java/mcp/mobius/opis/network/rcon/nexus/NexusInboundHandler.java +++ b/src/main/java/mcp/mobius/opis/network/rcon/nexus/NexusInboundHandler.java @@ -12,6 +12,7 @@ import com.mojang.authlib.GameProfile; import mcp.mobius.opis.modOpis; import mcp.mobius.opis.data.holders.basetypes.SerialLong; +import mcp.mobius.opis.data.holders.basetypes.SerialString; import mcp.mobius.opis.data.managers.StringCache; import mcp.mobius.opis.events.PlayerTracker; import mcp.mobius.opis.network.PacketBase; @@ -36,17 +37,20 @@ public class NexusInboundHandler extends ChannelInboundHandlerAdapter { RConHandler.fakePlayers.put(fakePlayer, ctx); PlayerTracker.INSTANCE.playersSwing.add(fakePlayer); - PlayerTracker.INSTANCE.playerTab.put(fakePlayer, SelectedTab.SUMMARY); + PlayerTracker.INSTANCE.playerTab.put(fakePlayer, SelectedTab.SUMMARY); + PacketManager.validateAndSend(new NetDataValue(Message.NEXUS_UUID, new SerialString(NexusClient.instance.uuid)), fakePlayer); PacketManager.validateAndSend(new NetDataValue(Message.STATUS_CURRENT_TIME, new SerialLong(System.currentTimeMillis())), fakePlayer); StringCache.INSTANCE.syncCache(fakePlayer); modOpis.log.info(String.format("FakePlayer %s with uuid %s created.", ctx.name(), fakeUUID)); } + + @Override public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) { cause.printStackTrace(); ctx.close(); - } + } }