From d57db71789b5eeceae45af01106849b5f2817954 Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Mon, 5 Jun 2017 12:54:14 +0300 Subject: [PATCH] =?UTF-8?q?MCSM:=20=D0=BE=D1=82=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=BA=D0=BE=D0=BC=D0=BC=D0=B0=D0=BD=D0=B4=20(ne?= =?UTF-8?q?ed=20fixed)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mcserver-manager/build.gradle | 2 +- .../src/main/java/asys/mcsmanager/Manager.java | 16 ++++++++++++++++ .../mcsmanager/server/ServerPacketHandler.java | 3 ++- .../asys/mcsmanager/websocket/FrameHandler.java | 6 ++++-- 4 files changed, 23 insertions(+), 4 deletions(-) diff --git a/mcserver-manager/build.gradle b/mcserver-manager/build.gradle index c629a24..b45f816 100644 --- a/mcserver-manager/build.gradle +++ b/mcserver-manager/build.gradle @@ -1,5 +1,5 @@ group = 'asys' -version = '0.8.10-SNAPSHOT' +version = '0.8.11-SNAPSHOT' apply plugin: 'osgi' diff --git a/mcserver-manager/src/main/java/asys/mcsmanager/Manager.java b/mcserver-manager/src/main/java/asys/mcsmanager/Manager.java index 032af85..4f06e68 100644 --- a/mcserver-manager/src/main/java/asys/mcsmanager/Manager.java +++ b/mcserver-manager/src/main/java/asys/mcsmanager/Manager.java @@ -6,6 +6,7 @@ package asys.mcsmanager; import asys.mcsmanager.packets.CS_ConsoleMessage; import asys.mcsmanager.packets.CS_Ping; +import asys.mcsmanager.packets.SC_Command; import io.netty.channel.Channel; import io.netty.handler.codec.http.websocketx.TextWebSocketFrame; import org.slf4j.Logger; @@ -41,6 +42,21 @@ public class Manager { } } + public boolean sendCommand(String clientId, String command) { +/* + if (serverChannels.containsKey(clientId)) { + serverChannels.get(clientId).writeAndFlush(new SC_Command(command)); + return true; + } else { + return false; + } +*/ + //FIXME временный костыль + Channel channel = serverChannels.entrySet().iterator().next().getValue(); + channel.writeAndFlush(new SC_Command(command)); + return true; + } + /** * Дополнить информация о сервере. * Если сервер отсутствует в списке, информация будет потеряна. diff --git a/mcserver-manager/src/main/java/asys/mcsmanager/server/ServerPacketHandler.java b/mcserver-manager/src/main/java/asys/mcsmanager/server/ServerPacketHandler.java index fa25259..241a64f 100644 --- a/mcserver-manager/src/main/java/asys/mcsmanager/server/ServerPacketHandler.java +++ b/mcserver-manager/src/main/java/asys/mcsmanager/server/ServerPacketHandler.java @@ -27,7 +27,8 @@ class ServerPacketHandler extends ChannelInboundHandlerAdapter implements IPacke private static final BiMap> pingPackets = ImmutableBiMap.of( 3, CS_Ping.class, - 4, CS_ConsoleMessage.class + 4, CS_ConsoleMessage.class, + 5, SC_Command.class ); private static Map, IPacketHandler> pingHandlers; diff --git a/mcserver-manager/src/main/java/asys/mcsmanager/websocket/FrameHandler.java b/mcserver-manager/src/main/java/asys/mcsmanager/websocket/FrameHandler.java index 74bffe0..1dbd305 100644 --- a/mcserver-manager/src/main/java/asys/mcsmanager/websocket/FrameHandler.java +++ b/mcserver-manager/src/main/java/asys/mcsmanager/websocket/FrameHandler.java @@ -31,8 +31,10 @@ public class FrameHandler extends SimpleChannelInboundHandler { protected void channelRead0(ChannelHandlerContext ctx, WebSocketFrame frame) throws Exception { if (frame instanceof TextWebSocketFrame) { String requestText = ((TextWebSocketFrame)frame).text(); - logger.debug("{} received {}", ctx.channel(), requestText); - ctx.channel().writeAndFlush(new TextWebSocketFrame(""+requestText)); + if (requestText.startsWith(":")) { + //FIXME убрать костыли + manager.sendCommand(null, requestText.substring(1)); + } } else { logger.warn("unsupport frame type: {}", frame.getClass().getName()); }