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