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()); }