Compare commits

...
4 Commits
15 changed files with 51 additions and 33 deletions
+1 -1
View File
@@ -5,7 +5,7 @@
<relativePath>../</relativePath> <relativePath>../</relativePath>
<artifactId>wildfirechat-parent</artifactId> <artifactId>wildfirechat-parent</artifactId>
<groupId>cn.wildfirechat</groupId> <groupId>cn.wildfirechat</groupId>
<version>1.2.3</version> <version>1.2.4</version>
</parent> </parent>
<artifactId>moquette-broker</artifactId> <artifactId>moquette-broker</artifactId>
@@ -48,10 +48,6 @@ public class CreateChatroomAction extends AdminAction {
inputCreateChatroom.setChatroomId(messagesStore.getShortUUID()); inputCreateChatroom.setChatroomId(messagesStore.getShortUUID());
} }
if (inputCreateChatroom.getPortrait() == null || inputCreateChatroom.getPortrait().length() == 0) {
inputCreateChatroom.setPortrait("https://avatars.io/gravatar/" + inputCreateChatroom.getChatroomId());
}
WFCMessage.ChatroomInfo info = inputCreateChatroom.toChatroomInfo(); WFCMessage.ChatroomInfo info = inputCreateChatroom.toChatroomInfo();
messagesStore.createChatroom(inputCreateChatroom.getChatroomId(), info); messagesStore.createChatroom(inputCreateChatroom.getChatroomId(), info);
setResponseContent(RestResult.ok(new OutputCreateChatroom(inputCreateChatroom.getChatroomId())), response); setResponseContent(RestResult.ok(new OutputCreateChatroom(inputCreateChatroom.getChatroomId())), response);
@@ -45,23 +45,13 @@ public class CreateRobotAction extends AdminAction {
if (inputCreateRobot != null if (inputCreateRobot != null
&& !StringUtil.isNullOrEmpty(inputCreateRobot.getName())) { && !StringUtil.isNullOrEmpty(inputCreateRobot.getName())) {
if(StringUtil.isNullOrEmpty(inputCreateRobot.getPassword())) {
inputCreateRobot.setPassword(UUIDGenerator.getUUID());
}
if(StringUtil.isNullOrEmpty(inputCreateRobot.getUserId())) { if(StringUtil.isNullOrEmpty(inputCreateRobot.getUserId())) {
inputCreateRobot.setUserId(messagesStore.getShortUUID()); inputCreateRobot.setUserId(messagesStore.getShortUUID());
} }
if (inputCreateRobot.getPortrait() == null || inputCreateRobot.getPortrait().length() == 0) {
inputCreateRobot.setPortrait("https://avatars.io/gravatar/" + inputCreateRobot.getUserId());
}
WFCMessage.User newUser = inputCreateRobot.toUser(); WFCMessage.User newUser = inputCreateRobot.toUser();
try { try {
messagesStore.addUserInfo(newUser, inputCreateRobot.getPassword()); messagesStore.addUserInfo(newUser);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
Utility.printExecption(LOG, e, IMExceptionEvent.EventType.ADMIN_API_Exception); Utility.printExecption(LOG, e, IMExceptionEvent.EventType.ADMIN_API_Exception);
@@ -47,10 +47,6 @@ public class CreateUserAction extends AdminAction {
&& !StringUtil.isNullOrEmpty(inputCreateUser.getName()) && !StringUtil.isNullOrEmpty(inputCreateUser.getName())
&& (inputCreateUser.getType() == ProtoConstants.UserType.UserType_Normal || inputCreateUser.getType() == ProtoConstants.UserType.UserType_Admin || inputCreateUser.getType() == ProtoConstants.UserType.UserType_Super_Admin)) { && (inputCreateUser.getType() == ProtoConstants.UserType.UserType_Normal || inputCreateUser.getType() == ProtoConstants.UserType.UserType_Admin || inputCreateUser.getType() == ProtoConstants.UserType.UserType_Super_Admin)) {
if(StringUtil.isNullOrEmpty(inputCreateUser.getPassword())) {
inputCreateUser.setPassword(UUIDGenerator.getUUID());
}
if(StringUtil.isNullOrEmpty(inputCreateUser.getUserId())) { if(StringUtil.isNullOrEmpty(inputCreateUser.getUserId())) {
inputCreateUser.setUserId(messagesStore.getShortUUID()); inputCreateUser.setUserId(messagesStore.getShortUUID());
} }
@@ -85,7 +81,7 @@ public class CreateUserAction extends AdminAction {
try { try {
messagesStore.addUserInfo(newUserBuilder.build(), inputCreateUser.getPassword()); messagesStore.addUserInfo(newUserBuilder.build());
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
Utility.printExecption(LOG, e, IMExceptionEvent.EventType.ADMIN_API_Exception); Utility.printExecption(LOG, e, IMExceptionEvent.EventType.ADMIN_API_Exception);
@@ -2893,7 +2893,7 @@ public class MemoryMessagesStore implements IMessagesStore {
} }
@Override @Override
public void addUserInfo(WFCMessage.User user, String password) throws Exception { public void addUserInfo(WFCMessage.User user) throws Exception {
HazelcastInstance hzInstance = m_Server.getHazelcastInstance(); HazelcastInstance hzInstance = m_Server.getHazelcastInstance();
IMap<String, WFCMessage.User> mUserMap = hzInstance.getMap(USERS); IMap<String, WFCMessage.User> mUserMap = hzInstance.getMap(USERS);
if (databaseStore.isUidAndNameConflict(user.getUid(), user.getName())) { if (databaseStore.isUidAndNameConflict(user.getUid(), user.getName())) {
@@ -2901,7 +2901,6 @@ public class MemoryMessagesStore implements IMessagesStore {
} }
databaseStore.updateUser(user); databaseStore.updateUser(user);
mUserMap.put(user.getUid(), user); mUserMap.put(user.getUid(), user);
databaseStore.updateUserPassword(user.getUid(), password);
callbackUserInfoEvent(user); callbackUserInfoEvent(user);
} }
@@ -147,7 +147,7 @@ public interface IMessagesStore {
List<InputOutputUserBlockStatus> getUserStatusList(); List<InputOutputUserBlockStatus> getUserStatusList();
ErrorCode updateUserInfo(InputOutputUserInfo userInfo, int flag); ErrorCode updateUserInfo(InputOutputUserInfo userInfo, int flag);
void addUserInfo(WFCMessage.User user, String password) throws Exception; void addUserInfo(WFCMessage.User user) throws Exception;
void destroyUser(String userId); void destroyUser(String userId);
void updateUserInfo(WFCMessage.User user) throws Exception; void updateUserInfo(WFCMessage.User user) throws Exception;
WFCMessage.User getUserInfo(String userId); WFCMessage.User getUserInfo(String userId);
@@ -17,6 +17,7 @@
package io.moquette.spi.impl; package io.moquette.spi.impl;
import cn.wildfirechat.common.ErrorCode; import cn.wildfirechat.common.ErrorCode;
import cn.wildfirechat.pojos.OutputCheckUserOnline;
import cn.wildfirechat.pojos.UserOnlineStatus; import cn.wildfirechat.pojos.UserOnlineStatus;
import cn.wildfirechat.proto.ProtoConstants; import cn.wildfirechat.proto.ProtoConstants;
import cn.wildfirechat.proto.WFCMessage; import cn.wildfirechat.proto.WFCMessage;
@@ -266,7 +267,27 @@ public class ProtocolProcessor {
if (!StringUtil.isNullOrEmpty(mUserOnlineStatusCallback)) { if (!StringUtil.isNullOrEmpty(mUserOnlineStatusCallback)) {
mServer.getCallbackScheduler().execute(() -> { mServer.getCallbackScheduler().execute(() -> {
try { try {
HttpUtils.httpJsonPost(mUserOnlineStatusCallback, GsonUtil.gson.toJson(new UserOnlineStatus(userId, clientId, platform, status, packageName)), HttpUtils.HttpPostType.POST_TYPE_User_Online_Event_Callback); int sessionstatus;
Collection<MemorySessionStore.Session> useSessions = m_sessionsStore.sessionForUser(userId);
UserOnlineStatus userOnlineStatus = new UserOnlineStatus(userId, clientId, platform, status, packageName);
userOnlineStatus.sessions = new ArrayList<>();
for (MemorySessionStore.Session session : useSessions) {
if (session.getDeleted() > 0) {
continue;
}
ConnectionDescriptor descriptor = connectionDescriptors.getConnection(session.getClientID());
if (descriptor == null) {
sessionstatus = 1;
} else {
sessionstatus = 0;
}
userOnlineStatus.sessions.add(new OutputCheckUserOnline.Session(userId, session.getClientID(), session.getPlatform(), sessionstatus, session.getLastActiveTime(), session.getAppName()));
}
HttpUtils.httpJsonPost(mUserOnlineStatusCallback, GsonUtil.gson.toJson(userOnlineStatus), HttpUtils.HttpPostType.POST_TYPE_User_Online_Event_Callback);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
Utility.printExecption(LOG, e, EVENT_CALLBACK_Exception); Utility.printExecption(LOG, e, EVENT_CALLBACK_Exception);
@@ -141,7 +141,7 @@ public class Qos1PublishHandler extends QosPublishHandler {
status = 0; status = 0;
} }
out.addSession(userId, session.getClientID(), session.getPlatform(), status, session.getLastActiveTime()); out.addSession(userId, session.getClientID(), session.getPlatform(), status, session.getLastActiveTime(), session.getAppName());
} }
callback.onRouteHandled(GsonUtil.gson.toJson(out).getBytes()); callback.onRouteHandled(GsonUtil.gson.toJson(out).getBytes());
+1 -1
View File
@@ -5,7 +5,7 @@
<parent> <parent>
<artifactId>wildfirechat-parent</artifactId> <artifactId>wildfirechat-parent</artifactId>
<groupId>cn.wildfirechat</groupId> <groupId>cn.wildfirechat</groupId>
<version>1.2.3</version> <version>1.2.4</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
@@ -19,18 +19,23 @@ public class OutputCheckUserOnline {
public int platform; public int platform;
public int status; //0 online, 1 have session offline public int status; //0 online, 1 have session offline
public long lastSeen; public long lastSeen;
public String packageName;
public Session(String clientId, String userId, int platform, int status, long lastSeen) { public Session() {
}
public Session(String clientId, String userId, int platform, int status, long lastSeen, String packageName) {
this.clientId = clientId; this.clientId = clientId;
this.userId = userId; this.userId = userId;
this.platform = platform; this.platform = platform;
this.status = status; this.status = status;
this.lastSeen = lastSeen; this.lastSeen = lastSeen;
this.packageName = packageName;
} }
} }
public void addSession(String userId, String clientId, int platform, int status, long lastSeen) { public void addSession(String userId, String clientId, int platform, int status, long lastSeen, String packageName) {
Session session = new Session(clientId, userId, platform, status, lastSeen); Session session = new Session(clientId, userId, platform, status, lastSeen, packageName);
sessions.add(session); sessions.add(session);
} }
@@ -1,5 +1,7 @@
package cn.wildfirechat.pojos; package cn.wildfirechat.pojos;
import java.util.List;
public class UserOnlineStatus { public class UserOnlineStatus {
public static final int ONLINE = 0; public static final int ONLINE = 0;
public static final int OFFLINE = 1; public static final int OFFLINE = 1;
@@ -11,6 +13,9 @@ public class UserOnlineStatus {
public int status; public int status;
public long timestamp; public long timestamp;
public String packageName; public String packageName;
public int customState;
public String customText;
public List<OutputCheckUserOnline.Session> sessions;
public UserOnlineStatus() { public UserOnlineStatus() {
} }
+1 -1
View File
@@ -6,7 +6,7 @@
<!--<relativePath>../pom.xml</relativePath>--> <!--<relativePath>../pom.xml</relativePath>-->
<artifactId>wildfirechat-parent</artifactId> <artifactId>wildfirechat-parent</artifactId>
<groupId>cn.wildfirechat</groupId> <groupId>cn.wildfirechat</groupId>
<version>1.2.3</version> <version>1.2.4</version>
</parent> </parent>
<artifactId>distribution</artifactId> <artifactId>distribution</artifactId>
+1 -1
View File
@@ -12,7 +12,7 @@
<artifactId>wildfirechat-parent</artifactId> <artifactId>wildfirechat-parent</artifactId>
<packaging>pom</packaging> <packaging>pom</packaging>
<version>1.2.3</version> <version>1.2.4</version>
<name>Wildfire Chat</name> <name>Wildfire Chat</name>
<description>Wildfire Chat Server</description> <description>Wildfire Chat Server</description>
<inceptionYear>2019</inceptionYear> <inceptionYear>2019</inceptionYear>
+6
View File
@@ -12,6 +12,12 @@
# 更新记录 # 更新记录
--------------
Release note 1.2.4:
1. 去掉用户的默认密码。
2. 去掉频道和机器人的默认头像。
3. 修改在线状态回调数据,返回此用户的所有端状态。
-------------- --------------
Release note 1.2.3: Release note 1.2.3:
1. 同步专业版IM服务server SDK。 1. 同步专业版IM服务server SDK。
+1 -1
View File
@@ -3,7 +3,7 @@
<parent> <parent>
<artifactId>wildfirechat-parent</artifactId> <artifactId>wildfirechat-parent</artifactId>
<groupId>cn.wildfirechat</groupId> <groupId>cn.wildfirechat</groupId>
<version>1.2.3</version> <version>1.2.4</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>