diff --git a/broker/config/wildfirechat.conf b/broker/config/wildfirechat.conf index 51151023..c13926e6 100755 --- a/broker/config/wildfirechat.conf +++ b/broker/config/wildfirechat.conf @@ -74,12 +74,15 @@ message.blacklist.strategy 0 ##是否禁止服务器端消息搜索,该功能暂未实现。目前的影响是如果打开,则存储消息时不单独保存_searchable_content字段 message.disable_remote_search false -##允许客户端撤回消息时限,单位是秒。群组管理员或群主撤回群成员消息、server api不受此限制,可以撤回任意时限内的消息 +##允许客户端撤回用户自己发送的消息时限,单位是秒。群组管理员或群主撤回群成员消息、server api不受此限制,可以撤回任意时限内的消息 message.recall_time_limit 120 +##禁止群主/群管理员撤回群内消息,关闭时群主/群管理员可以撤回任意时间段内群内成员的消息,群主/群管理员撤回自己发送的消息还是会受到message.recall_time_limit时间限制。 +message.disable_group_manager_recall false + ## 禁止客户端发送消息类型,消息类型以逗号分开,下面3个值为示例,可以删除。 ## 一般用于重要类型消息,比如交易、充值等,禁止客户端发送,仅限于服务器发送,提高安全性。 -message.forbidden_client_send_types 3999,4000,4001 +#message.forbidden_client_send_types 3999,4000,4001 ## 当禁止发送消息时,允许例外发送的消息。这种一般用户需要被动回应的消息。比如群中被禁言的用户,他无法主动发起音视频,但可以接听未被禁言用户的音视频 ## 因为音视频使用了消息作为信令,所以就需要允许发送音视频信令。如果开发了其它场景也需要被动回应消息,可以加在这里。 diff --git a/broker/src/main/java/io/moquette/BrokerConstants.java b/broker/src/main/java/io/moquette/BrokerConstants.java index 9351b439..065972d3 100755 --- a/broker/src/main/java/io/moquette/BrokerConstants.java +++ b/broker/src/main/java/io/moquette/BrokerConstants.java @@ -164,6 +164,8 @@ public final class BrokerConstants { public static final String MESSAGES_DISABLE_REMOTE_SEARCH = "message.disable_remote_search"; public static final String MESSAGES_RECALL_TIME_LIMIT = "message.recall_time_limit"; + public static final String MESSAGES_DISABLE_GROUP_MANAGER_RECALL = "message.disable_group_manager_recall"; + private BrokerConstants() { } diff --git a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java index 208c04de..ef4157cf 100755 --- a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java +++ b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java @@ -144,7 +144,7 @@ public class MemoryMessagesStore implements IMessagesStore { private List mGlobalMuteExceptionTypes = new ArrayList<>(); private long mRecallTimeLimit = 300; - + private boolean mDisableGroupManagerRecall = false; private String mGroupInfoUpdateCallback; private String mGroupMemberUpdateCallback; private String mRelationUpdateCallback; @@ -263,6 +263,12 @@ public class MemoryMessagesStore implements IMessagesStore { } catch (Exception e) { } + try { + mDisableGroupManagerRecall = Boolean.parseBoolean(m_Server.getConfig().getProperty(BrokerConstants.MESSAGES_DISABLE_GROUP_MANAGER_RECALL, "false")); + } catch (Exception e) { + + } + try { String strTypes = m_Server.getConfig().getProperty(BrokerConstants.MESSAGES_FORBIDDEN_CLIENT_SEND_TYPES); if(!StringUtil.isNullOrEmpty(strTypes)) { @@ -1832,7 +1838,7 @@ public class MemoryMessagesStore implements IMessagesStore { } } - if (!canRecall && message.getConversation().getType() == ProtoConstants.ConversationType.ConversationType_Group) { + if (!canRecall && !mDisableGroupManagerRecall && message.getConversation().getType() == ProtoConstants.ConversationType.ConversationType_Group) { IMap groupMap = hzInstance.getMap(GROUPS_MAP); WFCMessage.GroupInfo groupInfo = groupMap.get(message.getConversation().getTarget()); diff --git a/distribution/src/main/resources/wildfirechat.conf b/distribution/src/main/resources/wildfirechat.conf index 862f9846..4eb37ad9 100755 --- a/distribution/src/main/resources/wildfirechat.conf +++ b/distribution/src/main/resources/wildfirechat.conf @@ -69,12 +69,15 @@ message.blacklist.strategy 0 ##是否禁止服务器端消息搜索,该功能暂未实现。目前的影响是如果打开,则存储消息时不单独保存_searchable_content字段 message.disable_remote_search false -##允许客户端撤回消息时限,单位是秒。群组管理员或群主撤回群成员消息、server api不受此限制,可以撤回任意时限内的消息 +##允许客户端撤回用户自己发送的消息时限,单位是秒。群组管理员或群主撤回群成员消息、server api不受此限制,可以撤回任意时限内的消息 message.recall_time_limit 120 +##禁止群主/群管理员撤回群内消息,关闭时群主/群管理员可以撤回任意时间段内群内成员的消息,群主/群管理员撤回自己发送的消息还是会受到message.recall_time_limit时间限制。 +message.disable_group_manager_recall false + ## 禁止客户端发送消息类型,消息类型以逗号分开,下面3个值为示例,可以删除。 ## 一般用于重要类型消息,比如交易、充值等,禁止客户端发送,仅限于服务器发送,提高安全性。 -message.forbidden_client_send_types 3999,4000,4001 +#message.forbidden_client_send_types 3999,4000,4001 ## 当禁止发送消息时,允许例外发送的消息。这种一般用户需要被动回应的消息。比如群中被禁言的用户,他无法主动发起音视频,但可以接听未被禁言用户的音视频 ## 因为音视频使用了消息作为信令,所以就需要允许发送音视频信令。如果开发了其它场景也需要被动回应消息,可以加在这里。