From 7e92d1e0c5708797f87eb4bae92dbc2372dd782b Mon Sep 17 00:00:00 2001 From: heavyrian2012 Date: Fri, 25 Apr 2025 23:10:43 +0800 Subject: [PATCH] =?UTF-8?q?Server=20API=E5=88=9B=E5=BB=BA=E9=A2=91?= =?UTF-8?q?=E9=81=93=E6=97=B6=EF=BC=8C=E9=9C=80=E8=A6=81=E5=90=8C=E6=97=B6?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E9=A2=91=E9=81=93ID=E5=92=8C=E9=A2=91?= =?UTF-8?q?=E9=81=93=E5=AF=86=E9=92=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../loServer/action/admin/AliasPutAction.java | 9 +-------- .../loServer/action/admin/CreateChannelAction.java | 7 +++++-- .../io/moquette/imhandler/CreateChannelHandler.java | 9 ++++++++- .../cn/wildfirechat/pojos/OutputCreateChannel.java | 12 +++++++++++- 4 files changed, 25 insertions(+), 12 deletions(-) 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; + } }