From 6245fe37fcec71304057afb716e6b30885c45881 Mon Sep 17 00:00:00 2001 From: heavyrian2012 Date: Thu, 4 May 2023 21:39:45 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=85=8D=E7=BD=AE=EF=BC=8C?= =?UTF-8?q?=E8=AF=B7=E6=B1=82=E6=9C=BA=E5=99=A8=E4=BA=BA=E5=A5=BD=E5=8F=8B?= =?UTF-8?q?=E6=97=B6=EF=BC=8C=E6=98=AF=E5=90=A6=E8=87=AA=E5=8A=A8=E6=8E=A5?= =?UTF-8?q?=E5=8F=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- broker/config/wildfirechat.conf | 3 +++ .../src/main/java/io/moquette/BrokerConstants.java | 2 ++ .../java/io/moquette/imhandler/AddFriendHandler.java | 6 ++++-- .../io/moquette/persistence/MemoryMessagesStore.java | 12 ++++++++++++ .../main/java/io/moquette/spi/IMessagesStore.java | 2 ++ distribution/src/main/resources/wildfirechat.conf | 3 +++ 6 files changed, 26 insertions(+), 2 deletions(-) diff --git a/broker/config/wildfirechat.conf b/broker/config/wildfirechat.conf index a9ef47770..551b34bf0 100755 --- a/broker/config/wildfirechat.conf +++ b/broker/config/wildfirechat.conf @@ -154,6 +154,9 @@ friend.reject_request_duration 2592000000 ##好友请求过期时间,单位是毫秒,默认是7天,0为无限长期限。 friend.request_expiration_duration 604800000 +##请求添加机器人为好友时,机器人是否自动接受,默认为true +friend.robot_auto_accept true + ## 聊天室观众空闲退出时间,单位为毫秒,默认为15分钟,0为永远不退出 chatroom.participant_idle_time 900000 diff --git a/broker/src/main/java/io/moquette/BrokerConstants.java b/broker/src/main/java/io/moquette/BrokerConstants.java index 8f5c5c301..4b1e493a7 100755 --- a/broker/src/main/java/io/moquette/BrokerConstants.java +++ b/broker/src/main/java/io/moquette/BrokerConstants.java @@ -163,6 +163,8 @@ public final class BrokerConstants { public static final String FRIEND_Repeat_Request_Duration = "friend.repeat_request_duration"; public static final String FRIEND_Reject_Request_Duration = "friend.reject_request_duration"; public static final String FRIEND_Request_Expiration_Duration = "friend.request_expiration_duration"; + public static final String FRIEND_Request_Robot_Auto_Accept = "friend.robot_auto_accept"; + public static final String CHATROOM_Participant_Idle_Time = "chatroom.participant_idle_time"; public static final String CHATROOM_Rejoin_When_Active = "chatroom.rejoin_when_active"; diff --git a/broker/src/main/java/io/moquette/imhandler/AddFriendHandler.java b/broker/src/main/java/io/moquette/imhandler/AddFriendHandler.java index 383908eaf..5960a9b3b 100644 --- a/broker/src/main/java/io/moquette/imhandler/AddFriendHandler.java +++ b/broker/src/main/java/io/moquette/imhandler/AddFriendHandler.java @@ -30,8 +30,10 @@ public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, Pr if (user != null && user.getType() == ProtoConstants.UserType.UserType_Normal) { publisher.publishNotification(IMTopic.NotifyFriendRequestTopic, request.getTargetUid(), head[0], fromUser, request.getReason()); } else if(user != null && user.getType() == ProtoConstants.UserType.UserType_Robot) { - WFCMessage.HandleFriendRequest handleFriendRequest = WFCMessage.HandleFriendRequest.newBuilder().setTargetUid(fromUser).setStatus(ProtoConstants.FriendRequestStatus.RequestStatus_Accepted).build(); - mServer.onApiMessage(request.getTargetUid(), null, handleFriendRequest.toByteArray(), 0, fromUser, HandleFriendRequestTopic, requestSourceType); + if(m_messagesStore.isRobotAutoAcceptFriendRequest()) { + WFCMessage.HandleFriendRequest handleFriendRequest = WFCMessage.HandleFriendRequest.newBuilder().setTargetUid(fromUser).setStatus(ProtoConstants.FriendRequestStatus.RequestStatus_Accepted).build(); + mServer.onApiMessage(request.getTargetUid(), null, handleFriendRequest.toByteArray(), 0, fromUser, HandleFriendRequestTopic, requestSourceType); + } } } return errorCode; diff --git a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java index 436137e83..f9520787c 100755 --- a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java +++ b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java @@ -141,6 +141,7 @@ public class MemoryMessagesStore implements IMessagesStore { private long mFriendRequestDuration = 7 * 24 * 60 * 60 * 1000; private long mFriendRejectDuration = 30 * 24 * 60 * 60 * 1000; private long mFriendRequestExpiration = 7 * 24 * 60 * 60 * 1000; + private boolean mFriendRobotAutoAccept = true; private boolean mMultiPlatformNotification = false; private boolean mMobileDefaultSilentWhenPCOnline = true; @@ -297,6 +298,12 @@ public class MemoryMessagesStore implements IMessagesStore { printMissConfigLog(FRIEND_Request_Expiration_Duration, mFriendRequestExpiration + ""); } + + try { + mFriendRobotAutoAccept = Boolean.parseBoolean(m_Server.getConfig().getProperty(BrokerConstants.FRIEND_Request_Robot_Auto_Accept, "true")); + } catch (Exception e) { + } + try { mChatroomRejoinWhenActive = Boolean.parseBoolean(m_Server.getConfig().getProperty(BrokerConstants.CHATROOM_Rejoin_When_Active)); } catch (Exception e) { @@ -4306,6 +4313,11 @@ public boolean isChannelCallbackWithClientInfo() { return mChannelCallbackWithClientInfo; } + @Override + public boolean isRobotAutoAcceptFriendRequest() { + return mFriendRobotAutoAccept; + } + @Override public List getClientForbiddenSendTypes() { return mForbiddenClientSendTypes; diff --git a/broker/src/main/java/io/moquette/spi/IMessagesStore.java b/broker/src/main/java/io/moquette/spi/IMessagesStore.java index 24edb550f..16080a327 100755 --- a/broker/src/main/java/io/moquette/spi/IMessagesStore.java +++ b/broker/src/main/java/io/moquette/spi/IMessagesStore.java @@ -239,6 +239,8 @@ public String toString() { boolean isRobotCallbackWithClientInfo(); boolean isChannelCallbackWithClientInfo(); + boolean isRobotAutoAcceptFriendRequest(); + List getClientForbiddenSendTypes(); List getBlackListExceptionTypes(); List getGroupMuteExceptionTypes(); diff --git a/distribution/src/main/resources/wildfirechat.conf b/distribution/src/main/resources/wildfirechat.conf index b030e3623..27c8afe5c 100755 --- a/distribution/src/main/resources/wildfirechat.conf +++ b/distribution/src/main/resources/wildfirechat.conf @@ -152,6 +152,9 @@ friend.reject_request_duration 2592000000 ##好友请求过期时间,单位是毫秒,默认是7天,0为无限长期限。 friend.request_expiration_duration 604800000 +##请求添加机器人为好友时,机器人是否自动接受,默认为true +friend.robot_auto_accept true + ## 聊天室观众空闲退出时间,单位为毫秒,默认为15分钟,0为永远不退出 chatroom.participant_idle_time 900000