Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: wildfirechat/im-server
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 1.2.9
Choose a base ref
...
head repository: wildfirechat/im-server
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: wildfirechat
Choose a head ref
Loading
Showing with 1,390 additions and 113 deletions.
  1. +2 −2 README.md
  2. +18 −2 broker/config/wildfirechat.conf
  3. +10 −1 broker/nginx/imserver.conf
  4. +1 −1 broker/pom.xml
  5. +2 −0 broker/src/main/java/cn/wildfirechat/push/PushMessage.java
  6. +5 −2 broker/src/main/java/cn/wildfirechat/push/PushServer.java
  7. +61 −0 broker/src/main/java/com/xiaoleilu/loServer/action/admin/GetBatchUserAction.java
  8. +4 −0 broker/src/main/java/io/moquette/BrokerConstants.java
  9. +2 −1 broker/src/main/java/io/moquette/imhandler/AddFriendHandler.java
  10. +1 −1 broker/src/main/java/io/moquette/imhandler/AddGroupMember.java
  11. +1 −1 broker/src/main/java/io/moquette/imhandler/CreateGroupHandler.java
  12. +15 −1 broker/src/main/java/io/moquette/imhandler/SendMessageHandler.java
  13. +89 −11 broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java
  14. +1 −1 broker/src/main/java/io/moquette/server/Server.java
  15. +3 −2 broker/src/main/java/io/moquette/spi/IMessagesStore.java
  16. +1 −0 broker/src/main/java/io/moquette/spi/impl/MessagesPublisher.java
  17. +1 −1 broker/src/main/java/win/liyufan/im/UserSettingScope.java
  18. +1 −1 common/pom.xml
  19. +14 −0 common/src/main/java/cn/wildfirechat/common/APIPath.java
  20. +14 −1 common/src/main/java/cn/wildfirechat/pojos/GroupNotificationBinaryContent.java
  21. +12 −0 common/src/main/java/cn/wildfirechat/pojos/InputAddGroupMember.java
  22. +13 −1 common/src/main/java/cn/wildfirechat/pojos/InputCreateGroup.java
  23. +22 −0 common/src/main/java/cn/wildfirechat/pojos/InputStringList.java
  24. +38 −0 common/src/main/java/cn/wildfirechat/pojos/moments/CommentMsgPojo.java
  25. +30 −0 common/src/main/java/cn/wildfirechat/pojos/moments/CommentPojo.java
  26. +38 −0 common/src/main/java/cn/wildfirechat/pojos/moments/FeedPojo.java
  27. +7 −0 common/src/main/java/cn/wildfirechat/pojos/moments/FeedsPojo.java
  28. +9 −0 common/src/main/java/cn/wildfirechat/pojos/moments/IdPojo.java
  29. +8 −0 common/src/main/java/cn/wildfirechat/pojos/moments/MediaEntry.java
  30. +14 −0 common/src/main/java/cn/wildfirechat/pojos/moments/MomentProfilePojo.java
  31. +11 −0 common/src/main/java/cn/wildfirechat/pojos/moments/PostFeedResult.java
  32. +11 −0 common/src/main/java/cn/wildfirechat/pojos/moments/PullCommentsRequestPojo.java
  33. +8 −0 common/src/main/java/cn/wildfirechat/pojos/moments/PullFeedRequestPojo.java
  34. +5 −0 common/src/main/java/cn/wildfirechat/pojos/moments/PullOneFeedRequestPojo.java
  35. +9 −0 common/src/main/java/cn/wildfirechat/pojos/moments/PullProfileRequestPojo.java
  36. +14 −0 common/src/main/java/cn/wildfirechat/pojos/moments/PushProfileListRequestPojo.java
  37. +16 −0 common/src/main/java/cn/wildfirechat/pojos/moments/PushProfileValueRequestPojo.java
  38. +19 −0 common/src/main/java/cn/wildfirechat/proto/ProtoConstants.java
  39. +1 −1 distribution/pom.xml
  40. +15 −2 distribution/src/main/resources/wildfirechat.conf
  41. +2 −1 distribution/src/main/scripts/wildfirechat.sh
  42. +1 −1 pom.xml
  43. +35 −0 release_note.md
  44. +1 −1 sdk/pom.xml
  45. +361 −0 sdk/src/main/java/cn/wildfirechat/sdk/GenerateTestData.java
  46. +4 −3 sdk/src/main/java/cn/wildfirechat/sdk/GroupAdmin.java
  47. +157 −8 sdk/src/main/java/cn/wildfirechat/sdk/Main.java
  48. +19 −7 sdk/src/main/java/cn/wildfirechat/sdk/MessageAdmin.java
  49. +161 −12 sdk/src/main/java/cn/wildfirechat/sdk/RobotService.java
  50. +9 −0 sdk/src/main/java/cn/wildfirechat/sdk/UserAdmin.java
  51. +2 −1 sdk/src/main/java/cn/wildfirechat/sdk/messagecontent/ArticlesMessageContent.java
  52. +2 −1 sdk/src/main/java/cn/wildfirechat/sdk/messagecontent/CallStartMessageContent.java
  53. +2 −1 sdk/src/main/java/cn/wildfirechat/sdk/messagecontent/CardMessageContent.java
  54. +2 −2 sdk/src/main/java/cn/wildfirechat/sdk/messagecontent/FileMessageContent.java
  55. +2 −2 sdk/src/main/java/cn/wildfirechat/sdk/messagecontent/ImageMessageContent.java
  56. +2 −5 sdk/src/main/java/cn/wildfirechat/sdk/messagecontent/LinkMessageContent.java
  57. +2 −1 sdk/src/main/java/cn/wildfirechat/sdk/messagecontent/LocationMessageContent.java
  58. +8 −2 sdk/src/main/java/cn/wildfirechat/sdk/messagecontent/MediaMessageContent.java
  59. +2 −4 sdk/src/main/java/cn/wildfirechat/sdk/messagecontent/MessageContent.java
  60. +7 −3 sdk/src/main/java/cn/wildfirechat/sdk/messagecontent/MessageContentFactory.java
  61. +2 −1 sdk/src/main/java/cn/wildfirechat/sdk/messagecontent/MultiCallOngoingMessageContent.java
  62. +2 −2 sdk/src/main/java/cn/wildfirechat/sdk/messagecontent/NotDeliveredMessageContent.java
  63. +2 −1 sdk/src/main/java/cn/wildfirechat/sdk/messagecontent/RichNotificationMessageContent.java
  64. +2 −1 sdk/src/main/java/cn/wildfirechat/sdk/messagecontent/SoundMessageContent.java
  65. +2 −3 sdk/src/main/java/cn/wildfirechat/sdk/messagecontent/StickerMessageContent.java
  66. +2 −1 sdk/src/main/java/cn/wildfirechat/sdk/messagecontent/StreamTextGeneratedMessageContent.java
  67. +2 −1 sdk/src/main/java/cn/wildfirechat/sdk/messagecontent/StreamTextGeneratingMessageContent.java
  68. +2 −1 sdk/src/main/java/cn/wildfirechat/sdk/messagecontent/TextMessageContent.java
  69. +2 −2 sdk/src/main/java/cn/wildfirechat/sdk/messagecontent/TipNotificationMessageContent.java
  70. +2 −2 sdk/src/main/java/cn/wildfirechat/sdk/messagecontent/TypingMessageContent.java
  71. +2 −2 sdk/src/main/java/cn/wildfirechat/sdk/messagecontent/VideoMessageContent.java
  72. +15 −2 sdk/src/main/java/cn/wildfirechat/sdk/utilities/AdminHttpUtils.java
  73. +13 −3 sdk/src/main/java/cn/wildfirechat/sdk/utilities/ChannelHttpUtils.java
  74. +13 −3 sdk/src/main/java/cn/wildfirechat/sdk/utilities/RobotHttpUtils.java
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -9,7 +9,7 @@
* 安全加密。网络连接AES加密。客户端数据库SqlCipher加密。安全无小事。
* 全平台客户端,支持Android、iOS、鸿蒙、Web、小程序、UniApp、Flutter、Windows、Mac OS、Linux等所有常见平台。
* 四端同时在线(移动端,pc端,web端和小程序端),数据和状态多端完美同步。
* 支持国产化。支持国产化操作系统、国产化芯片和国产操作系统。支持国密加密。
* 支持国产化。支持国产化操作系统、国产化芯片和国产数据库。支持国密加密。
* 客户端使用微信[mars](https://github.com/tencent/mars)连接库,野火IM可能是最适应中国网络国情的即时通讯服务。
* 支持加速点加速,即可用于全球应用,也可用于政企内外双网复杂的网络环境。
* 支持阅读回执和在线状态功能,适用于办公环境。
@@ -25,7 +25,7 @@
* 支持多个IM服务组网互通,打破孤岛,适用于集团公司下多个分公司互联互通。
* 社区版IM服务和移动端免费商用,可以免费构建出完备的移动互联网应用。
* 收费项目非常便宜,野火独有的试用模式,可以先部署到客户环境试用6个月,试用满意后再购买,避免上当受骗。
* 技术支持专业和高效***核心研发***及时处理issue和工单,能最快解决用户的技术难题。
* 技术支持专业高效***核心研发***及时处理issue和工单,能最快解决用户的技术难题。技术支持不收费,让客户顺利使用是我们最大的愿望

## 野火开源项目
主要包括以下项目:
20 changes: 18 additions & 2 deletions broker/config/wildfirechat.conf
Original file line number Diff line number Diff line change
@@ -95,9 +95,15 @@ message.disable_stranger_chat false
##当禁止陌生人聊天时,允许聊天的用户id,比如管理员或者文件传输助手等。用户id以英文逗号分割。
message.allow_stranger_chat_list admin,FireRobot,wfc_file_transfer

##当禁止陌生人聊天时,允许聊天的线路。
#message.allow_stranger_line 100,101

##黑名单策略,0 发送失败,返回被拉黑的错误码;1 发送成功但消息被服务器直接丢弃
message.blacklist.strategy 0

##拉黑对方后,对方不能发送消息给你。这个开关确定拉黑对方后你还能不能给对方发送消息。
message.blacklist.allow_send_to_black false

##是否禁止服务器端消息搜索,该功能暂未实现。目前的影响是如果打开,则存储消息时不单独保存_searchable_content字段
message.disable_remote_search false

@@ -177,6 +183,9 @@ friend.reject_request_duration 2592000000
##好友请求过期时间,单位是毫秒,默认是7天,0为无限长期限。
friend.request_expiration_duration 604800000

##好友请求限制频率,一个用户24小时之内允许请求好友的次数,默认不限频。
friend.request_rate_limit 30

##请求添加机器人为好友时,机器人是否自动接受,默认为true
friend.robot_auto_accept true

@@ -321,7 +330,7 @@ server.mobile_default_silent_when_pc_online true

## 客户端是否支持kickoff事件。当客户端被其他端登录踢出时,如果此开关为false时,客户端协议栈上报secret_mismatch。如果此开关为ture时,客户端协议栈上报kicked_off。
## 客户端被踢时上报kicked_off是在2021.9.15之后才加上的。如果客户端协议栈全部为此日期之后的版本才可以打开此开关。
server.client_support_kickoff_event false
server.client_support_kickoff_event true

#*********************************************************************
# Push server configuration
@@ -335,6 +344,10 @@ push.android.server.address http://localhost:8085/android/push
##注意回调是单线程回调,接收服务必须在同一内网,且异步处理快速返回,否则会有延迟问题!!
push.ios.server.address http://localhost:8085/ios/push

##鸿蒙推送服务器地址
##注意回调是单线程回调,接收服务必须在同一内网,且异步处理快速返回,否则会有延迟问题!!
push.harmony.server.address http://localhost:8085/harmony/push

#*********************************************************************
# 监控配置
#*********************************************************************
@@ -408,7 +421,10 @@ push.ios.server.address http://localhost:8085/ios/push
## 内置文本敏感词过滤处理方法,当命中敏感词后,消息会被记录到t_sensitive_messages表中,然后根据type类型做不同的处理,处理方式如下:
## 0 发送失败;1 发送成功但消息被服务器直接丢弃;2 命中的敏感词被替换成***然后正常发送;3 正常发送。
## 如果开启 message.sensitive.forward.url 配置,命中敏感词的消息还会被回调到这个地址
sensitive.filter.type 0
sensitive.filter.type 2

## 敏感词添加或者删除有2种方式,一种是通过Server API进行,这种方式会立即生效。另外一种方法是修改数据库,直接中数据库的t_sensitive_word表中处理
## 修改数据库的方法不会立即生效,IM服务会2个小时重新加载一次敏感词。所以如果直接修改敏感词表,需要等2个小时,或者重启才能生效。

## 如果内置敏感词库无法满足您的需求,可以开发部署独立敏感词审核服务。配置如下地址和消息类型,IM服务会把指定消息类型的消息回调到指定地址,内置的敏感词审核和敏感词转发功能就不再起作用了。
## 审核服务返回状态码200表示继续发送,如果需要替换内容,返回状态码200并且内容为替换后的内容。返回403表示不允许发送。其它错误继续发送。
11 changes: 10 additions & 1 deletion broker/nginx/imserver.conf
Original file line number Diff line number Diff line change
@@ -9,36 +9,45 @@ server {
root html;
index index.html index.htm index.php;

#同步服务设置
location /route {
proxy_set_header Host $host;
proxy_set_header X-real-ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://imserver;
}

#社区版需要启用下面一段,专业版不能用
#客户端短连接业务
location /im {
proxy_set_header Host $host;
proxy_set_header X-real-ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://imserver;
}

#版本检查/api/version,可以删掉
location /api {
proxy_pass http://imserver;
}

#内置文件上传和下载
location /fs {
client_max_body_size 200M;
proxy_set_header Host $host;
proxy_set_header X-real-ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://imserver;
}

#机器人API
location /robot {
proxy_set_header Host $host;
proxy_set_header X-real-ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://imserver;
}

#频道API
location /channel {
proxy_set_header Host $host;
proxy_set_header X-real-ip $remote_addr;
2 changes: 1 addition & 1 deletion broker/pom.xml
Original file line number Diff line number Diff line change
@@ -5,7 +5,7 @@
<relativePath>../</relativePath>
<artifactId>wildfirechat-parent</artifactId>
<groupId>cn.wildfirechat</groupId>
<version>1.2.9</version>
<version>1.3.4</version>
</parent>

<artifactId>moquette-broker</artifactId>
2 changes: 2 additions & 0 deletions broker/src/main/java/cn/wildfirechat/push/PushMessage.java
Original file line number Diff line number Diff line change
@@ -34,6 +34,7 @@ public class PushMessage {
public String voipDeviceToken;
public boolean isHiddenDetail;
public String language;
public boolean republish;
public long messageId;

public PushMessage(String sender, int conversationType, String target, int line, int messageContentType, long serverTime, String senderName, String senderPortrait, String targetName, String targetPortrait, int unReceivedMsg, int mentionedType, boolean isHiddenDetail, String language) {
@@ -65,6 +66,7 @@ public PushMessage(String sender, int conversationType, String target, int line,
this.mentionedType = mentionedType;
this.isHiddenDetail = isHiddenDetail;
this.language = language;
this.republish = messageContentType == 80 || messageContentType == 81;
}
public PushMessage(String sender, String target, long serverTime, String senderName, int unReceivedMsg, String language, int pushMessageType) {
this.sender = sender;
7 changes: 5 additions & 2 deletions broker/src/main/java/cn/wildfirechat/push/PushServer.java
Original file line number Diff line number Diff line change
@@ -24,8 +24,7 @@
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

import static io.moquette.BrokerConstants.PUSH_ANDROID_SERVER_ADDRESS;
import static io.moquette.BrokerConstants.PUSH_IOS_SERVER_ADDRESS;
import static io.moquette.BrokerConstants.*;
import static win.liyufan.im.HttpUtils.HttpPostType.POST_TYPE_Push;

public class PushServer {
@@ -47,6 +46,7 @@ public interface PushMessageType {

private String androidPushServerUrl;
private String iOSPushServerUrl;
private String harmonyPushServerUrl;

private PushServer() {
}
@@ -59,6 +59,7 @@ public void init(IConfig config, ISessionsStore sessionsStore) {
this.sessionsStore = sessionsStore;
this.androidPushServerUrl = config.getProperty(PUSH_ANDROID_SERVER_ADDRESS);
this.iOSPushServerUrl = config.getProperty(PUSH_IOS_SERVER_ADDRESS);
this.harmonyPushServerUrl = config.getProperty(PUSH_HARMONY_SERVER_ADDRESS);
}

public void pushMessage(PushMessage pushMessage, String deviceId, String pushContent) {
@@ -106,6 +107,8 @@ private void pushMessageInternel(PushMessage pushMessage, String deviceId, Strin
if (session.getPlatform() == ProtoConstants.Platform.Platform_iOS || session.getPlatform() == ProtoConstants.Platform.Platform_iPad) {
url = iOSPushServerUrl;
pushMessage.voipDeviceToken = session.getVoipDeviceToken();
} else if (session.getPlatform() == ProtoConstants.Platform.Platform_Harmony || session.getPlatform() == ProtoConstants.Platform.Platform_HarmonyPad) {
url = harmonyPushServerUrl;
}
HttpUtils.httpJsonPost(url, gson.toJson(pushMessage, pushMessage.getClass()), POST_TYPE_Push);
} else {
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
/*
* This file is part of the Wildfire Chat package.
* (c) Heavyrain2012 <heavyrain.lee@gmail.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/

package com.xiaoleilu.loServer.action.admin;

import cn.wildfirechat.common.APIPath;
import cn.wildfirechat.common.ErrorCode;
import cn.wildfirechat.pojos.*;
import cn.wildfirechat.proto.WFCMessage;
import com.xiaoleilu.loServer.RestResult;
import com.xiaoleilu.loServer.annotation.HttpMethod;
import com.xiaoleilu.loServer.annotation.Route;
import com.xiaoleilu.loServer.handler.Request;
import com.xiaoleilu.loServer.handler.Response;
import io.netty.handler.codec.http.FullHttpRequest;
import io.netty.handler.codec.http.HttpResponseStatus;
import io.netty.util.internal.StringUtil;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

@Route(APIPath.User_Batch_Get_Infos)
@HttpMethod("POST")
public class GetBatchUserAction extends AdminAction {

@Override
public boolean isTransactionAction() {
return true;
}

@Override
public boolean action(Request request, Response response) {
if (request.getNettyRequest() instanceof FullHttpRequest) {
InputStringList inputUserId = getRequestBody(request.getNettyRequest(), InputStringList.class);
if (inputUserId != null && inputUserId.getList() != null && !inputUserId.getList().isEmpty()) {

OutputUserInfoList res = new OutputUserInfoList();
res.userInfos = new ArrayList<>();
for (String userId : inputUserId.getList()) {
WFCMessage.User user = messagesStore.getUserInfo(userId);
if(user == null || StringUtil.isNullOrEmpty(user.getName())) {
continue;
}
InputOutputUserInfo inputOutputUserInfo = InputOutputUserInfo.fromPbUser(user);
res.userInfos.add(inputOutputUserInfo);
}
RestResult result = RestResult.ok(res);
setResponseContent(result, response);
} else {
setResponseContent(RestResult.resultOf(ErrorCode.INVALID_PARAMETER), response);
}
}
return true;
}
}
4 changes: 4 additions & 0 deletions broker/src/main/java/io/moquette/BrokerConstants.java
Original file line number Diff line number Diff line change
@@ -90,6 +90,7 @@ public final class BrokerConstants {

public static final String PUSH_ANDROID_SERVER_ADDRESS = "push.android.server.address";
public static final String PUSH_IOS_SERVER_ADDRESS = "push.ios.server.address";
public static final String PUSH_HARMONY_SERVER_ADDRESS = "push.harmony.server.address";

public static final String MONITOR_Exception_Event_Address = "monitor.exception_event_address";

@@ -151,8 +152,10 @@ public final class BrokerConstants {

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_Allow_Stranger_Line = "message.allow_stranger_line";

public static final String MESSAGE_Blacklist_Strategy = "message.blacklist.strategy";
public static final String MESSAGE_Blacklist_Allow_Send = "message.blacklist.allow_send_to_black";

public static final String MESSAGE_NO_Forward_Admin_Message = "message.no_forward_admin_message";

@@ -175,6 +178,7 @@ 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_Rate_Limit = "friend.request_rate_limit";
public static final String FRIEND_Request_Robot_Auto_Accept = "friend.robot_auto_accept";


Original file line number Diff line number Diff line change
@@ -24,7 +24,8 @@ public class AddFriendHandler extends GroupHandler<WFCMessage.AddFriendRequest>
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.AddFriendRequest request, Qos1PublishHandler.IMCallback callback) {
long[] head = new long[1];
boolean isAdmin = requestSourceType == ProtoConstants.RequestSourceType.Request_From_Admin;
ErrorCode errorCode = m_messagesStore.saveAddFriendRequest(fromUser, request, head, isAdmin);
boolean isRobot = requestSourceType == ProtoConstants.RequestSourceType.Request_From_Robot;
ErrorCode errorCode = m_messagesStore.saveAddFriendRequest(fromUser, request, head, isAdmin, isRobot);
if (errorCode == ERROR_CODE_SUCCESS) {
WFCMessage.User user = m_messagesStore.getUserInfo(request.getTargetUid());
if (user != null && user.getType() == ProtoConstants.UserType.UserType_Normal) {
Original file line number Diff line number Diff line change
@@ -43,7 +43,7 @@ public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, Pr
if (request.hasNotifyContent() && request.getNotifyContent().getType() > 0) {
sendGroupNotification(fromUser, request.getGroupId(), request.getToLineList(), request.getNotifyContent());
} else {
WFCMessage.MessageContent content = new GroupNotificationBinaryContent(request.getGroupId(), fromUser, null, getMemberIdList(request.getAddedMemberList())).getAddGroupNotifyContent();
WFCMessage.MessageContent content = new GroupNotificationBinaryContent(request.getGroupId(), fromUser, null, getMemberIdList(request.getAddedMemberList())).setExtra(request.getExtra()).getAddGroupNotifyContent();
sendGroupNotification(fromUser, request.getGroupId(), request.getToLineList(), content);
}
}
Original file line number Diff line number Diff line change
@@ -63,7 +63,7 @@ public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, Pr
if(request.hasNotifyContent() && request.getNotifyContent().getType() > 0) {
sendGroupNotification(fromUser, groupInfo.getTargetId(), request.getToLineList(), request.getNotifyContent());
} else {
WFCMessage.MessageContent content = new GroupNotificationBinaryContent(groupInfo.getTargetId(), fromUser, groupInfo.getName(), "").getCreateGroupNotifyContent();
WFCMessage.MessageContent content = new GroupNotificationBinaryContent(groupInfo.getTargetId(), fromUser, groupInfo.getName(), "").setExtra(request.getMemberExtra()).getCreateGroupNotifyContent();
sendGroupNotification(fromUser, groupInfo.getTargetId(), request.getToLineList(), content);
}
}
Original file line number Diff line number Diff line change
@@ -37,6 +37,7 @@ public class SendMessageHandler extends IMHandler<WFCMessage.Message> {
private Set<Integer> mForwardExcludeMessageTypes = new HashSet<>();
private String mMentionForwardUrl = null;
private int mBlacklistStrategy = 0; //黑名单中时,0失败,1吞掉。
private boolean mBlacklistAllowSend2Black = true;
private boolean mNoForwardAdminMessage = false;

private String mRemoteSensitiveServerUrl = null;
@@ -69,6 +70,12 @@ public SendMessageHandler() {
e.printStackTrace();
Utility.printExecption(LOG, e);
}

try {
mBlacklistAllowSend2Black = Boolean.parseBoolean(mServer.getConfig().getProperty(BrokerConstants.MESSAGE_Blacklist_Allow_Send, "true"));
} catch (Exception e) {
}

try {
mRemoteSensitiveServerUrl = mServer.getConfig().getProperty(BrokerConstants.SENSITIVE_Remote_Server_URL);
if(!StringUtil.isNullOrEmpty(mRemoteSensitiveServerUrl)) {
@@ -145,7 +152,7 @@ public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, Pr

if (message.getConversation().getType() == ProtoConstants.ConversationType.ConversationType_Private) {
if(!m_messagesStore.getBlackListExceptionTypes().contains(message.getContent().getType())) {
errorCode = m_messagesStore.isAllowUserMessage(message.getConversation().getTarget(), fromUser);
errorCode = m_messagesStore.isAllowUserMessage(message.getConversation().getTarget(), fromUser, message.getConversation().getLine());
if (errorCode != ErrorCode.ERROR_CODE_SUCCESS) {
if (errorCode == ErrorCode.ERROR_CODE_IN_BLACK_LIST && mBlacklistStrategy != ProtoConstants.BlacklistStrategy.Message_Reject) {
ignoreMsg = true;
@@ -154,6 +161,13 @@ public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, Pr
return errorCode;
}
}

if(!mBlacklistAllowSend2Black) {
errorCode = m_messagesStore.isBlacked(fromUser, message.getConversation().getTarget());
if (errorCode != ErrorCode.ERROR_CODE_SUCCESS) {
return errorCode;
}
}
}

userStatus = m_messagesStore.getUserStatus(message.getConversation().getTarget());
Loading