diff --git a/broker/src/main/java/com/xiaoleilu/loServer/action/admin/AliasPutAction.java b/broker/src/main/java/com/xiaoleilu/loServer/action/admin/AliasPutAction.java index bb487350..e05d9d4b 100755 --- a/broker/src/main/java/com/xiaoleilu/loServer/action/admin/AliasPutAction.java +++ b/broker/src/main/java/com/xiaoleilu/loServer/action/admin/AliasPutAction.java @@ -51,14 +51,7 @@ public class AliasPutAction extends AdminAction { ByteBuf byteBuf = Unpooled.buffer(); byteBuf.writeBytes(result); ErrorCode errorCode = ErrorCode.fromCode(byteBuf.readByte()); - if (errorCode == ErrorCode.ERROR_CODE_SUCCESS) { - byte[] data = new byte[byteBuf.readableBytes()]; - byteBuf.readBytes(data); - String channelId = new String(data); - return new Result(ErrorCode.ERROR_CODE_SUCCESS, new OutputCreateChannel(channelId)); - } else { - return new Result(errorCode); - } + return new Result(errorCode); }); return false; } else { diff --git a/broker/src/main/java/com/xiaoleilu/loServer/action/admin/CreateChannelAction.java b/broker/src/main/java/com/xiaoleilu/loServer/action/admin/CreateChannelAction.java index a6c8cde9..8af51356 100755 --- a/broker/src/main/java/com/xiaoleilu/loServer/action/admin/CreateChannelAction.java +++ b/broker/src/main/java/com/xiaoleilu/loServer/action/admin/CreateChannelAction.java @@ -53,8 +53,11 @@ public class CreateChannelAction extends AdminAction { if (errorCode == ErrorCode.ERROR_CODE_SUCCESS) { byte[] data = new byte[byteBuf.readableBytes()]; byteBuf.readBytes(data); - String channelId = new String(data); - return new Result(ErrorCode.ERROR_CODE_SUCCESS, new OutputCreateChannel(channelId)); + String str = new String(data); + String[] ss = str.split("\\|"); + String channelId = ss[0]; + String secret = ss[1]; + return new Result(ErrorCode.ERROR_CODE_SUCCESS, new OutputCreateChannel(channelId, secret)); } else { return new Result(errorCode); } diff --git a/broker/src/main/java/io/moquette/imhandler/CreateChannelHandler.java b/broker/src/main/java/io/moquette/imhandler/CreateChannelHandler.java index d2237d64..8d932f5f 100644 --- a/broker/src/main/java/io/moquette/imhandler/CreateChannelHandler.java +++ b/broker/src/main/java/io/moquette/imhandler/CreateChannelHandler.java @@ -16,6 +16,7 @@ import io.netty.buffer.ByteBuf; import cn.wildfirechat.common.ErrorCode; import win.liyufan.im.IMTopic; +import static cn.wildfirechat.proto.ProtoConstants.RequestSourceType.Request_From_Admin; import static win.liyufan.im.IMTopic.PutUserSettingTopic; import static win.liyufan.im.UserSettingScope.kUserSettingMyChannels; @@ -42,7 +43,13 @@ public class CreateChannelHandler extends GroupHandler { if (errorCode == ErrorCode.ERROR_CODE_SUCCESS) { WFCMessage.ModifyUserSettingReq modifyUserSettingReq = WFCMessage.ModifyUserSettingReq.newBuilder().setScope(kUserSettingMyChannels).setKey(request.getTargetId()).setValue("1").build(); mServer.onApiMessage(fromUser, null, modifyUserSettingReq.toByteArray(), 0, fromUser, PutUserSettingTopic, requestSourceType); - byte[] data = request.getTargetId().getBytes(); + byte[] data; + if (requestSourceType == Request_From_Admin) { + //When server api create channel, need return channelId and secret together. + data = (request.getTargetId() + "|" + request.getSecret()).getBytes(); + } else { + data = request.getTargetId().getBytes(); + } ackPayload.ensureWritable(data.length).writeBytes(data); return ErrorCode.ERROR_CODE_SUCCESS; } else { diff --git a/common/src/main/java/cn/wildfirechat/pojos/OutputCreateChannel.java b/common/src/main/java/cn/wildfirechat/pojos/OutputCreateChannel.java index 00dd6b29..598788a9 100755 --- a/common/src/main/java/cn/wildfirechat/pojos/OutputCreateChannel.java +++ b/common/src/main/java/cn/wildfirechat/pojos/OutputCreateChannel.java @@ -13,9 +13,11 @@ import cn.wildfirechat.proto.WFCMessage; public class OutputCreateChannel { private String targetId; + private String secret; - public OutputCreateChannel(String targetId) { + public OutputCreateChannel(String targetId, String secret) { this.targetId = targetId; + this.secret = secret; } public String getTargetId() { @@ -25,4 +27,12 @@ public class OutputCreateChannel { public void setTargetId(String targetId) { this.targetId = targetId; } + + public String getSecret() { + return secret; + } + + public void setSecret(String secret) { + this.secret = secret; + } }