From 88199189a2febbd67cd25050ad6141252b95863c Mon Sep 17 00:00:00 2001 From: heavyrian2012 Date: Mon, 14 Nov 2022 15:23:03 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BD=93=E7=A6=81=E6=AD=A2=E9=99=8C=E7=94=9F?= =?UTF-8?q?=E4=BA=BA=E8=81=8A=E5=A4=A9=E6=97=B6=EF=BC=8C=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E4=BE=8B=E5=A4=96=E5=85=81=E8=AE=B8=E7=94=A8=E6=88=B7id?= =?UTF-8?q?=EF=BC=8C=E7=94=A8=E4=BA=8E=E6=AF=94=E5=A6=82=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E5=91=98=E3=80=81=E6=96=87=E4=BB=B6=E5=8A=A9=E6=89=8B=E7=AD=89?= =?UTF-8?q?=E5=9C=BA=E6=99=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- broker/config/wildfirechat.conf | 3 +++ .../main/java/io/moquette/BrokerConstants.java | 1 + .../persistence/MemoryMessagesStore.java | 18 ++++++++++++++++++ .../src/main/resources/wildfirechat.conf | 3 +++ 4 files changed, 25 insertions(+) diff --git a/broker/config/wildfirechat.conf b/broker/config/wildfirechat.conf index 4b2ddb10..b210ddc8 100755 --- a/broker/config/wildfirechat.conf +++ b/broker/config/wildfirechat.conf @@ -79,6 +79,9 @@ message.chatroom_remote_history_message 1 ##是否禁止陌生人聊天 message.disable_stranger_chat false +##当禁止陌生人聊天时,允许聊天的用户id,比如管理员或者文件传输助手等。用户id以英文逗号分割。 +message.allow_stranger_chat_list admin,FireRobot,wfc_file_transfer + ##黑名单策略,0 发送失败,返回被拉黑的错误码;1 发送成功但消息被服务器直接丢弃 message.blacklist.strategy 0 diff --git a/broker/src/main/java/io/moquette/BrokerConstants.java b/broker/src/main/java/io/moquette/BrokerConstants.java index 3088aebe..dda4f945 100755 --- a/broker/src/main/java/io/moquette/BrokerConstants.java +++ b/broker/src/main/java/io/moquette/BrokerConstants.java @@ -142,6 +142,7 @@ public final class BrokerConstants { public static final String MESSAGE_Max_Queue = "message.max_queue"; public static final String MESSAGE_Disable_Stranger_Chat = "message.disable_stranger_chat"; + public static final String MESSAGE_Allow_Stranger_Chat_List = "message.allow_stranger_chat_list"; public static final String MESSAGE_Blacklist_Strategy = "message.blacklist.strategy"; diff --git a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java index 5d084f8c..673eb471 100755 --- a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java +++ b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java @@ -142,6 +142,7 @@ public class MemoryMessagesStore implements IMessagesStore { private boolean mMultiPlatformNotification = false; private boolean mMobileDefaultSilentWhenPCOnline = true; private boolean mDisableStrangerChat = false; + private Set mAllowStrangerChatSet = new HashSet<>(); private long mChatroomParticipantIdleTime = 900000; private boolean mChatroomRejoinWhenActive = true; @@ -195,6 +196,18 @@ public class MemoryMessagesStore implements IMessagesStore { printMissConfigLog(MESSAGE_Disable_Stranger_Chat, mDisableStrangerChat + ""); } + try { + String allowStrangerList = m_Server.getConfig().getProperty(BrokerConstants.MESSAGE_Allow_Stranger_Chat_List); + if(!StringUtil.isNullOrEmptyAfterTrim(allowStrangerList)) { + allowStrangerList = allowStrangerList.replace(",", ","); + for (String s : allowStrangerList.split(",")) { + mAllowStrangerChatSet.add(s.trim()); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + try { mMultiPlatformNotification = Boolean.parseBoolean(m_Server.getConfig().getProperty(BrokerConstants.SERVER_MULTI_PLATFROM_NOTIFICATION, "false")); } catch (Exception e) { @@ -2800,6 +2813,11 @@ public class MemoryMessagesStore implements IMessagesStore { if (mDisableStrangerChat) { + //在禁止私聊时,是否是允许私聊的用户id + if(mAllowStrangerChatSet.contains(targetUser)) { + return ErrorCode.ERROR_CODE_SUCCESS; + } + //在禁止私聊时,允许机器人,物联网设备及管理员进行私聊。 IMap mUserMap = hzInstance.getMap(USERS); WFCMessage.User target = mUserMap.get(targetUser); diff --git a/distribution/src/main/resources/wildfirechat.conf b/distribution/src/main/resources/wildfirechat.conf index 0aeba7fa..58b212dc 100755 --- a/distribution/src/main/resources/wildfirechat.conf +++ b/distribution/src/main/resources/wildfirechat.conf @@ -76,6 +76,9 @@ message.chatroom_remote_history_message 1 ##是否禁止陌生人聊天 message.disable_stranger_chat false +##当禁止陌生人聊天时,允许聊天的用户id,比如管理员或者文件传输助手等。用户id以英文逗号分割。 +message.allow_stranger_chat_list admin,FireRobot,wfc_file_transfer + ##黑名单策略,0 发送失败,返回被拉黑的错误码;1 发送成功但消息被服务器直接丢弃 message.blacklist.strategy 0