添加禁止客户端发送某些类型配置功能

This commit is contained in:
imhao183
2020-12-02 15:38:16 +08:00
parent 0f32aa30ce
commit d233dbdd99
6 changed files with 41 additions and 1 deletions
@@ -153,6 +153,8 @@ public final class BrokerConstants {
public static final String GROUP_Allow_Client_Custom_Operation_Notification = "group.allow_client_custom_operation_notification";
public static final String MESSAGES_FORBIDDEN_CLIENT_SEND_TYPES = "message.forbidden_client_send_types";
public static final String MESSAGES_DISABLE_REMOTE_SEARCH = "message.disable_remote_search";
public static final String MESSAGES_RECALL_TIME_LIMIT = "message.recall_time_limit";
@@ -58,9 +58,14 @@ public class SendMessageHandler extends IMHandler<WFCMessage.Message> {
boolean ignoreMsg = false;
if (!isAdmin) { //admin do not check the right
// 不能在端上直接发送撤回和群通知
if (message.getContent().getType() == 80 || (message.getContent().getType() >= 100 && message.getContent().getType() < 200)) {
if (message.getContent().getType() == 80 || message.getContent().getType() == 81 || (message.getContent().getType() >= 100 && message.getContent().getType() < 200)) {
return ErrorCode.INVALID_PARAMETER;
}
if(m_messagesStore.getClientForbiddenSendTypes().contains(message.getContent().getType())) {
return ErrorCode.ERROR_CODE_NOT_RIGHT;
}
int userStatus = m_messagesStore.getUserStatus(fromUser);
if (userStatus == ProtoConstants.UserStatus.Muted || userStatus == ProtoConstants.UserStatus.Forbidden) {
return ErrorCode.ERROR_CODE_FORBIDDEN_SEND_MSG;
@@ -141,6 +141,8 @@ public class MemoryMessagesStore implements IMessagesStore {
private long mChatroomParticipantIdleTime = 900000;
private boolean mChatroomRejoinWhenActive = true;
private List<Integer> mForbiddenClientSendTypes = new ArrayList<>();
private long mRecallTimeLimit = 300;
private String mGroupInfoUpdateCallback;
@@ -258,6 +260,23 @@ public class MemoryMessagesStore implements IMessagesStore {
} catch (Exception e) {
}
try {
String strTypes = m_Server.getConfig().getProperty(BrokerConstants.MESSAGES_FORBIDDEN_CLIENT_SEND_TYPES);
if(!StringUtil.isNullOrEmpty(strTypes)) {
for (String strType:strTypes.split(",")) {
try {
int type = Integer.parseInt(strType);
mForbiddenClientSendTypes.add(type);
} catch (NumberFormatException e) {
}
}
}
} catch (Exception e) {
}
try {
mGroupInfoUpdateCallback = server.getConfig().getProperty(GROUP_INFO_UPDATE_CALLBACK);
} catch (Exception e) {
@@ -3269,6 +3288,11 @@ public class MemoryMessagesStore implements IMessagesStore {
return mGroupAllowClientCustomOperationNotification;
}
@Override
public List<Integer> getClientForbiddenSendTypes() {
return mForbiddenClientSendTypes;
}
@Override
public long getMessageHead(String user) {
TreeMap<Long, Long> maps = userMessages.get(user);
@@ -211,6 +211,7 @@ public interface IMessagesStore {
WFCMessage.Message getMessage(long messageId);
boolean isAllowClientCustomGroupNotification();
List<Integer> getClientForbiddenSendTypes();
long getMessageHead(String user);
long getFriendHead(String user);