添加配置,是否不同步指定用户信息到客户端
This commit is contained in:
@@ -113,6 +113,11 @@ group.allow_client_custom_operation_notification false
|
||||
## 0 不发送,1 退群时发送,2 踢人时发送,3 退群和踢人时都发送。
|
||||
group.visible_quit_or_kickoff_notification 0
|
||||
|
||||
## 隐藏用户信息属性类型,2是性别,3是电话号码,4是邮箱,5是地址,6是公司信息,7是社交账号,8是Extra信息。当需要隐藏多个时以英文逗号分开;
|
||||
## 本配置是为了提高安全性,避免把对应信息同步到客户端,这样就能防止程序被破解从而拿到用户关键信息。仅对客户端有效,server api不受影响。
|
||||
## 注意,修改本配置不会对已经同步的信息产生影响。
|
||||
#user.hide_properties 3,4,5
|
||||
|
||||
#*********************************************************************
|
||||
# hazelcase configuration
|
||||
#*********************************************************************
|
||||
|
||||
@@ -148,6 +148,7 @@ public final class BrokerConstants {
|
||||
public static final String GROUP_Allow_Client_Custom_Operation_Notification = "group.allow_client_custom_operation_notification";
|
||||
public static final String GROUP_Visible_Quit_Kickoff_Notification = "group.visible_quit_or_kickoff_notification";
|
||||
|
||||
public static final String USER_HIDE_PROPERTIES = "user.hide_properties";
|
||||
|
||||
public static final String MESSAGES_FORBIDDEN_CLIENT_SEND_TYPES = "message.forbidden_client_send_types";
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ public class GetUserInfoHandler extends IMHandler<WFCMessage.PullUserRequest> {
|
||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.PullUserRequest request, Qos1PublishHandler.IMCallback callback) {
|
||||
WFCMessage.PullUserResult.Builder resultBuilder = WFCMessage.PullUserResult.newBuilder();
|
||||
|
||||
ErrorCode errorCode = m_messagesStore.getUserInfo(request.getRequestList(), resultBuilder);
|
||||
ErrorCode errorCode = m_messagesStore.getUserInfo(fromUser, request.getRequestList(), resultBuilder);
|
||||
if (errorCode == ERROR_CODE_SUCCESS) {
|
||||
byte[] data = resultBuilder.build().toByteArray();
|
||||
ackPayload.ensureWritable(data.length).writeBytes(data);
|
||||
|
||||
@@ -152,6 +152,8 @@ public class MemoryMessagesStore implements IMessagesStore {
|
||||
private boolean mGroupAllowClientCustomOperationNotification;
|
||||
private int mGroupVisibleQuitKickoffNotification;
|
||||
|
||||
private Set<Integer> mUserHideProperties = new HashSet<>();
|
||||
|
||||
MemoryMessagesStore(Server server, DatabaseStore databaseStore) {
|
||||
m_Server = server;
|
||||
this.databaseStore = databaseStore;
|
||||
@@ -330,6 +332,22 @@ public class MemoryMessagesStore implements IMessagesStore {
|
||||
}
|
||||
|
||||
|
||||
try {
|
||||
String userHideStr = server.getConfig().getProperty(USER_HIDE_PROPERTIES);
|
||||
if(!StringUtil.isNullOrEmpty(userHideStr)) {
|
||||
String[] proStrs = userHideStr.split(",");
|
||||
for (String proStr:proStrs) {
|
||||
int value = Integer.parseInt(proStr);
|
||||
if(value > 1 && value < 9) {
|
||||
mUserHideProperties.add(value);
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (NumberFormatException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void printMissConfigLog(String config, String defaultValue) {
|
||||
@@ -1909,7 +1927,7 @@ public class MemoryMessagesStore implements IMessagesStore {
|
||||
|
||||
|
||||
@Override
|
||||
public ErrorCode getUserInfo(List<WFCMessage.UserRequest> requestList, WFCMessage.PullUserResult.Builder builder) {
|
||||
public ErrorCode getUserInfo(String fromUser, List<WFCMessage.UserRequest> requestList, WFCMessage.PullUserResult.Builder builder) {
|
||||
HazelcastInstance hzInstance = m_Server.getHazelcastInstance();
|
||||
IMap<String, WFCMessage.User> mUserMap = hzInstance.getMap(USERS);
|
||||
|
||||
@@ -1931,6 +1949,27 @@ public class MemoryMessagesStore implements IMessagesStore {
|
||||
} else {
|
||||
LOG.debug("Get user info, user {} userDt {} : request {}",request.getUid(), user.getUpdateDt(), request.getUpdateDt());
|
||||
if (user.getUpdateDt() > request.getUpdateDt()) {
|
||||
if(!mUserHideProperties.isEmpty() && !user.getUid().equals(fromUser)) {
|
||||
WFCMessage.User.Builder userBuilder = user.toBuilder();
|
||||
for (Integer i:mUserHideProperties) {
|
||||
if(i == Modify_Gender) {
|
||||
userBuilder.clearGender();
|
||||
} else if(i == Modify_Mobile) {
|
||||
userBuilder.clearMobile();
|
||||
} else if(i == Modify_Email) {
|
||||
userBuilder.clearEmail();
|
||||
} else if(i == Modify_Address) {
|
||||
userBuilder.clearAddress();
|
||||
} else if(i == Modify_Company) {
|
||||
userBuilder.clearCompany();
|
||||
} else if(i == Modify_Social) {
|
||||
userBuilder.clearSocial();
|
||||
} else if(i == Modify_Extra) {
|
||||
userBuilder.clearExtra();
|
||||
}
|
||||
}
|
||||
user = userBuilder.build();
|
||||
}
|
||||
resultBuilder.setUser(user);
|
||||
resultBuilder.setCode(ProtoConstants.UserResultCode.Success);
|
||||
} else {
|
||||
|
||||
@@ -131,7 +131,9 @@ public interface IMessagesStore {
|
||||
|
||||
WFCMessage.Robot getRobot(String robotId);
|
||||
void addRobot(WFCMessage.Robot robot);
|
||||
ErrorCode getUserInfo(List<WFCMessage.UserRequest> requestList, WFCMessage.PullUserResult.Builder builder);
|
||||
|
||||
ErrorCode getUserInfo(String fromUser, List<WFCMessage.UserRequest> requestList, WFCMessage.PullUserResult.Builder builder);
|
||||
|
||||
ErrorCode modifyUserInfo(String userId, WFCMessage.ModifyMyInfoRequest request) throws Exception;
|
||||
|
||||
void updateUserOnlineSetting(MemorySessionStore.Session session, boolean online);
|
||||
|
||||
@@ -109,6 +109,11 @@ group.allow_client_custom_operation_notification false
|
||||
## 如果应用需要退群或者踢人不通知普通成员,请设置此参数为3,然后修改客户端踢人或退群消息的flag为not_presist。
|
||||
group.visible_quit_or_kickoff_notification 0
|
||||
|
||||
## 隐藏用户信息属性类型,2是性别,3是电话号码,4是邮箱,5是地址,6是公司信息,7是社交账号,8是Extra信息。当需要隐藏多个时以英文逗号分开;
|
||||
## 本配置是为了提高安全性,避免把对应信息同步到客户端,这样就能防止程序被破解从而拿到用户关键信息。仅对客户端有效,server api不受影响。
|
||||
## 注意,修改本配置不会对已经同步的信息产生影响。
|
||||
#user.hide_properties 3,4
|
||||
|
||||
#*********************************************************************
|
||||
# hazelcase configuration
|
||||
#*********************************************************************
|
||||
|
||||
Reference in New Issue
Block a user