Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9b0b644cd1 | ||
|
|
b233c49d73 | ||
|
|
b8d8d2f8ed | ||
|
|
731020ba0f | ||
|
|
4c00955639 | ||
|
|
cbc150905f | ||
|
|
a71b8cef73 | ||
|
|
66c67fa8d1 | ||
|
|
3ca7c70faa |
@@ -28,7 +28,7 @@
|
||||
## 野火开源项目
|
||||
主要包括以下项目:
|
||||
|
||||
| [GitHub仓库地址](https://github.com/wildfirechat) | [码云仓库地址](https://gitee.com/wfchat) | 说明
|
||||
| [GitHub仓库](https://github.com/wildfirechat) | [码云仓库](https://gitee.com/wfchat) | 说明
|
||||
| ------------------------------------------------------------ | ----------------------------------------------------- | --------------------------------------------------------------------------
|
||||
| [im-server](https://github.com/wildfirechat/im-server) | [im-server](https://gitee.com/wfchat/im-server) | 野火社区版IM服务,野火IM的核心服务,处理所有IM相关业务。 |
|
||||
| [app-server](https://github.com/wildfirechat/app-server) | [app-server](https://gitee.com/wfchat/app-server) | Demo应用服务,模拟客户的应用服登陆处理逻辑及部分二次开发示例。 |
|
||||
@@ -45,7 +45,7 @@
|
||||
| [web-chat](https://github.com/wildfirechat/vue-chat) | [web-chat](https://gitee.com/wfchat/vue-chat) | 野火IM Web 端, [体验地址](https://web.wildfirechat.cn)。 |
|
||||
| [wx-chat](https://github.com/wildfirechat/wx-chat) | [wx-chat](https://gitee.com/wfchat/wx-chat) | 小程序平台的Demo(支持微信、百度、阿里、字节、QQ 等小程序平台)。 |
|
||||
| [uni-chat](https://github.com/wildfirechat/uni-chat) | [uni-chat](https://gitee.com/wfchat/uni-chat) | UniApp平台移动端应用(使用原生插件)。 |
|
||||
| [uni-wfc-client](https://github.com/wildfirechat/uni-wfc-client) | [uni-wfc-client](https://gitee.com/wfchat/uni-wfc-client) | UniApp平台原生插件。 |
|
||||
| [uni-wfc-client](https://github.com/wildfirechat/uni-wfc-client) | [uni-wfc-client](https://gitee.com/wfchat/uni-wfc-client) | UniApp平台原生插件。已[商店](https://ext.dcloud.net.cn/plugin?id=7895)上架 |
|
||||
| [flutter_imclient](https://github.com/wildfirechat/flutter_imclient) | [flutter_imclient](https://gitee.com/wfchat/flutter_imclient) | Flutter平台原生插件。 |
|
||||
| [docs](https://github.com/wildfirechat/docs) | [docs](https://gitee.com/wfchat/docs) | 野火IM相关文档,包含设计、概念、开发、使用说明,[在线查看](https://docs.wildfirechat.cn/)。 |
|
||||
|
||||
@@ -73,34 +73,24 @@ PC客户端点[这里](https://github.com/wildfirechat/vue-pc-chat/releases)下
|
||||
|
||||
之后再部署开放平台服务、频道(公众号)服务、机器人服务、推送服务、Turn服务(音视频服务)来实现完整的应用功能,详情可以详细阅读文档。
|
||||
|
||||
## 应用截图
|
||||

|
||||
## 联系我们
|
||||
商务合作请微信联系:
|
||||
|
||||
<img src="http://static.wildfirechat.cn/ios-message-view.png" width = 50% height = 50% />
|
||||
* 微信1:wildfirechat
|
||||
* 微信2:wfchat
|
||||
|
||||
<img src="http://static.wildfirechat.cn/ios-contact-view.png" width = 50% height = 50% />
|
||||
## 问题交流
|
||||
|
||||
<img src="http://static.wildfirechat.cn/ios-discover-view.png" width = 50% height = 50% />
|
||||
1. 如果大家发现bug,请在GitHub或码云提issue;如果有需求也请给我们提issue。
|
||||
2. 其他问题,请到[野火IM论坛](http://bbs.wildfirechat.cn/)进行交流学习
|
||||
3. 关注我们的公众号。我们有新版本发布或者有重大更新会通过公众号通知大家,另外我们也会不定期的发布一些关于野火IM的技术介绍。
|
||||
|
||||
<img src="http://static.wildfirechat.cn/ios-settings-view.png" width = 50% height = 50% />
|
||||
<img src="http://static.wildfirechat.cn/wx_wfc_qrcode.jpg" width = 50% height = 50% />
|
||||
|
||||
<img src="http://static.wildfirechat.cn/ios-messagelist-view.png" width = 50% height = 50% />
|
||||
|
||||
<img src="http://static.wildfirechat.cn/ios-chat-setting-view.png" width = 50% height = 50% />
|
||||
|
||||
<img src="http://static.wildfirechat.cn/ios-takephoto-view.png" width = 50% height = 50% />
|
||||
|
||||
<img src="http://static.wildfirechat.cn/ios-record-voice-view.png" width = 50% height = 50% />
|
||||
|
||||
<img src="http://static.wildfirechat.cn/ios-location-view.png" width = 50% height = 50% />
|
||||
|
||||
<img src="http://static.wildfirechat.cn/ios-voip-view.png" width = 50% height = 50% />
|
||||
我们有核心研发工程师轮流值班处理issue和论坛,会及时处理的,疑难Bug的修改和新需求的开发我们也会尽快解决。
|
||||
|
||||
|
||||
## 编译
|
||||
由于```distribution/pom.xml```中使用了生成RPM包的plugin,所以需要本地安装有rpm。如果不需要RPM包,可以删除掉```distribution/pom.xml```文件中的RPM plugin。
|
||||
|
||||
在安装RPM后或者删除```distribution/pom.xml```文件中的RPM plugin后,执行下面命令:
|
||||
```
|
||||
mvn clean package
|
||||
```
|
||||
@@ -119,6 +109,11 @@ mvn clean package
|
||||
1. 在浏览器中输入地址 ```http://${ip}/api/version```可以看到返回一个json文件。
|
||||
2. 部署[应用服务](https://github.com/wildfirechat/app-server),配置和编译[Android客户端](https://github.com/wildfirechat/android-chat)和[iOS客户端](https://github.com/wildfirechat/ios-chat)进行验证。详情可参考[快速开始](https://docs.wildfirechat.cn/quick_start/)。
|
||||
|
||||
## 打包RPM格式
|
||||
打包会生成Java包和deb安装包,如果需要rpm安装包,请在```distribution/pom.xml```中取消注释生成rpm包的plugin。另外还需要本地安装有rpm,在linux或者mac系统中很容易安装,在windows系统需要安装cygwin并安装rpm,具体信息请百度查询。
|
||||
|
||||
修改之后运行编译命令```mvn clean package```,rpm包生成在```distribution/target```目录下。
|
||||
|
||||
## 升级说明
|
||||
1. 从0.42 版本增加了群成员数限制,默认为2000。如果您从之前的版本升级到这个版本或以后,需要注意到群成员数的限制。升级之后超出限制的群不受影响,但不能继续加人,如果您想修改默认值,可以在升级版本之后,修改t_setting表,把默认的大小改为您期望的人数。另外修改t_group表,把已经存在的群组max_member_count改成您期望的,然后重启。
|
||||
2. 0.50版本添加了是否允许客户端发送群操作通知的配置。如果您在客户端自定义群通知,需要在服务器端配置允许,没有使用自定义群操作通知的不受影响。***
|
||||
@@ -131,23 +126,104 @@ mvn clean package
|
||||
9. 从0.79 版本起把log4j升级到log4j2,因为log4j已经不再维护而且还有已知的漏洞,建议所有客户都升级,升级时注意更新log4j2的配置文件
|
||||
10. 0.97版本更改了启动脚本```wildfirechat.sh```,如果是升级服务,请注意更新启动脚本。
|
||||
|
||||
## 应用截图
|
||||
登录界面
|
||||
|
||||
## 联系我们
|
||||
<img src="./screenshots/1_login.png" width = 50% height = 50% />
|
||||
|
||||
商务合作请微信联系:
|
||||
会话列表
|
||||
|
||||
* 微信1:wildfirechat
|
||||
* 微信2:wfchat
|
||||
<img src="./screenshots/2_conversation_list.png" width = 50% height = 50% />
|
||||
|
||||
## 问题交流
|
||||
好友列表
|
||||
|
||||
1. 如果大家发现bug,请在GitHub或码云提issue;如果有需求也请给我们提issue。
|
||||
2. 其他问题,请到[野火IM论坛](http://bbs.wildfirechat.cn/)进行交流学习
|
||||
3. 关注我们的公众号。我们有新版本发布或者有重大更新会通过公众号通知大家,另外我们也会不定期的发布一些关于野火IM的技术介绍。
|
||||
<img src="./screenshots/3_contacts_list.png" width = 50% height = 50% />
|
||||
|
||||
<img src="http://static.wildfirechat.cn/wx_wfc_qrcode.jpg" width = 50% height = 50% />
|
||||
工作台
|
||||
|
||||
我们有核心研发工程师轮流值班处理issue和论坛,会及时处理的,疑难Bug的修改和新需求的开发我们也会尽快解决。
|
||||
<img src="./screenshots/4_workplatform.png" width = 50% height = 50% />
|
||||
|
||||
发现
|
||||
|
||||
<img src="./screenshots/5_discover.png" width = 50% height = 50% />
|
||||
|
||||
我的页面
|
||||
|
||||
<img src="./screenshots/6_settings.png" width = 50% height = 50% />
|
||||
|
||||
消息聊天
|
||||
|
||||
<img src="./screenshots/7_conversation.png" width = 50% height = 50% />
|
||||
|
||||
动态表情
|
||||
|
||||
<img src="./screenshots/8_conversation_sticker.png" width = 50% height = 50% />
|
||||
|
||||
语音消息
|
||||
|
||||
<img src="./screenshots/9_conversation_voice_msg.png" width = 50% height = 50% />
|
||||
|
||||
位置消息
|
||||
|
||||
<img src="./screenshots/10_conversation_location.png" width = 50% height = 50% />
|
||||
|
||||
拍摄图片或者小视频
|
||||
|
||||
<img src="./screenshots/11_conversation_capture.jpeg" width = 50% height = 50% />
|
||||
|
||||
会话设置
|
||||
|
||||
<img src="./screenshots/13_conversation_settings.png" width = 50% height = 50% />
|
||||
|
||||
朋友圈
|
||||
|
||||
<img src="./screenshots/14_moments.png" width = 50% height = 50% />
|
||||
|
||||
新好友
|
||||
|
||||
<img src="./screenshots/15_new_friends.png" width = 50% height = 50% />
|
||||
|
||||
多人视频通话
|
||||
|
||||
<img src="./screenshots/16_videocall.png" width = 50% height = 50% />
|
||||
|
||||
会议主页
|
||||
|
||||
<img src="./screenshots/17_conference_home.png" width = 50% height = 50% />
|
||||
|
||||
会议详情
|
||||
|
||||
<img src="./screenshots/18_conference_info.png" width = 50% height = 50% />
|
||||
|
||||
会议界面
|
||||
|
||||
<img src="./screenshots/19_conference.png" width = 50% height = 50% />
|
||||
|
||||
PC客户端界面
|
||||
|
||||
<img src="./screenshots/20_pc.png"/>
|
||||
|
||||
移动客户端、PC客户端和Web客户端三端同框
|
||||
|
||||
<img src="./screenshots/21_three_platform.png" />
|
||||
|
||||
小程序客户端
|
||||
|
||||
<img src="./screenshots/22_micro_app.jpeg" width = 50% height = 50% />
|
||||
|
||||
公众号管理后台
|
||||
|
||||
<img src="./screenshots/23_channel.png"/>
|
||||
|
||||
开放平台管理后台
|
||||
|
||||
<img src="./screenshots/24_open_platform.png" />
|
||||
|
||||
IM服务管理后台
|
||||
|
||||
<img src="./screenshots/25_im_admin.png" />
|
||||
|
||||
> 更多详细信息请下载demo进行体验。
|
||||
|
||||
## 特别感谢
|
||||
1. [moquette](https://github.com/moquette-io/moquette) 本项目是基于此项目二次开发而来,处理MQTT相关业务。
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
alter table `t_group_member` add INDEX `group_member_mid_index` (`_mid`);
|
||||
@@ -0,0 +1 @@
|
||||
alter table `t_group_member` add INDEX `group_member_mid_index` (`_mid`);
|
||||
@@ -5,7 +5,7 @@
|
||||
<relativePath>../</relativePath>
|
||||
<artifactId>wildfirechat-parent</artifactId>
|
||||
<groupId>cn.wildfirechat</groupId>
|
||||
<version>0.97</version>
|
||||
<version>0.98</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>moquette-broker</artifactId>
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
/*
|
||||
* This file is part of the Wildfire Chat package.
|
||||
* (c) Heavyrain2012 <[email protected]>
|
||||
*
|
||||
* 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.InputUserId;
|
||||
import cn.wildfirechat.pojos.OutputGroupIds;
|
||||
import cn.wildfirechat.pojos.StringPairPojo;
|
||||
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.util.internal.StringUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Set;
|
||||
|
||||
@Route(APIPath.Get_Common_Groups)
|
||||
@HttpMethod("POST")
|
||||
public class GetCommonGroupsAction extends AdminAction {
|
||||
|
||||
@Override
|
||||
public boolean isTransactionAction() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean action(Request request, Response response) {
|
||||
if (request.getNettyRequest() instanceof FullHttpRequest) {
|
||||
StringPairPojo input = getRequestBody(request.getNettyRequest(), StringPairPojo.class);
|
||||
if (input != null
|
||||
&& (!StringUtil.isNullOrEmpty(input.getFirst())) && (!StringUtil.isNullOrEmpty(input.getSecond()))) {
|
||||
|
||||
Set<String> groupIds = messagesStore.getCommonGroupIds(input.getFirst(), input.getSecond());
|
||||
OutputGroupIds outputGroupIds = new OutputGroupIds();
|
||||
outputGroupIds.setGroupIds(new ArrayList<>(groupIds));
|
||||
RestResult result = RestResult.ok(outputGroupIds);
|
||||
setResponseContent(result, response);
|
||||
} else {
|
||||
setResponseContent(RestResult.resultOf(ErrorCode.INVALID_PARAMETER), response);
|
||||
}
|
||||
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
/*
|
||||
* This file is part of the Wildfire Chat package.
|
||||
* (c) Heavyrain2012 <[email protected]>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
package io.moquette.imhandler;
|
||||
|
||||
import cn.wildfirechat.common.ErrorCode;
|
||||
import cn.wildfirechat.proto.ProtoConstants;
|
||||
import cn.wildfirechat.proto.WFCMessage;
|
||||
import io.moquette.spi.impl.Qos1PublishHandler;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import win.liyufan.im.IMTopic;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
import static cn.wildfirechat.common.ErrorCode.ERROR_CODE_SUCCESS;
|
||||
|
||||
@Handler(IMTopic.GetCommonGroupsTopic)
|
||||
public class GetCommonGroupsHandler extends IMHandler<WFCMessage.IDBuf> {
|
||||
@Override
|
||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.IDBuf request, Qos1PublishHandler.IMCallback callback) {
|
||||
WFCMessage.PullUserResult.Builder resultBuilder = WFCMessage.PullUserResult.newBuilder();
|
||||
Set<String> strings = m_messagesStore.getCommonGroupIds(fromUser, request.getId());
|
||||
WFCMessage.IDListBuf idListBuf = WFCMessage.IDListBuf.newBuilder().addAllId(strings).build();
|
||||
byte[] data = idListBuf.toByteArray();
|
||||
ackPayload.ensureWritable(data.length).writeBytes(data);
|
||||
return ERROR_CODE_SUCCESS;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
/*
|
||||
* This file is part of the Wildfire Chat package.
|
||||
* (c) Heavyrain2012 <[email protected]>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
package io.moquette.imhandler;
|
||||
|
||||
import cn.wildfirechat.common.ErrorCode;
|
||||
import cn.wildfirechat.proto.ProtoConstants;
|
||||
import cn.wildfirechat.proto.WFCMessage;
|
||||
import io.moquette.spi.impl.Qos1PublishHandler;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import win.liyufan.im.IMTopic;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
import static cn.wildfirechat.common.ErrorCode.ERROR_CODE_SUCCESS;
|
||||
|
||||
@Handler(IMTopic.GetMyGroupsTopic)
|
||||
public class GetMyGroupsHandler extends IMHandler<Void> {
|
||||
@Override
|
||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, Void request, Qos1PublishHandler.IMCallback callback) {
|
||||
WFCMessage.PullUserResult.Builder resultBuilder = WFCMessage.PullUserResult.newBuilder();
|
||||
Set<String> strings = m_messagesStore.getUserGroupIds(fromUser);
|
||||
WFCMessage.IDListBuf idListBuf = WFCMessage.IDListBuf.newBuilder().addAllId(strings).build();
|
||||
byte[] data = idListBuf.toByteArray();
|
||||
ackPayload.ensureWritable(data.length).writeBytes(data);
|
||||
return ERROR_CODE_SUCCESS;
|
||||
}
|
||||
}
|
||||
@@ -1712,6 +1712,35 @@ public class DatabaseStore {
|
||||
return null;
|
||||
}
|
||||
|
||||
Set<String> getCommonGroupIds(String userId1, String userId2) {
|
||||
Connection connection = null;
|
||||
PreparedStatement statement = null;
|
||||
ResultSet rs = null;
|
||||
try {
|
||||
connection = DBUtil.getConnection();
|
||||
String sql = "select t1._gid from t_group_member t1, t_group_member t2 where t1._mid = ? and t2._mid = ? and t1._type <> 4 and t2._type <> 4 and t1._gid = t2._gid";
|
||||
statement = connection.prepareStatement(sql);
|
||||
|
||||
statement.setString(1, userId1);
|
||||
statement.setString(2, userId2);
|
||||
|
||||
rs = statement.executeQuery();
|
||||
Set<String> out = new HashSet<>();
|
||||
while (rs.next()) {
|
||||
String uid = rs.getString(1);
|
||||
out.add(uid);
|
||||
}
|
||||
return out;
|
||||
} catch (SQLException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
Utility.printExecption(LOG, e, RDBS_Exception);
|
||||
} finally {
|
||||
DBUtil.closeDB(connection, statement, rs);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
void updateGroupMemberDt(final String groupId, final long dt) {
|
||||
Connection connection = null;
|
||||
PreparedStatement statement = null;
|
||||
|
||||
@@ -1831,6 +1831,11 @@ public class MemoryMessagesStore implements IMessagesStore {
|
||||
return databaseStore.getUserGroupIds(userId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<String> getCommonGroupIds(String userId1, String userId2) {
|
||||
return databaseStore.getCommonGroupIds(userId1, userId2);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ErrorCode getGroupMembers(String fromUser, String groupId, long maxDt, List<WFCMessage.GroupMember> members) {
|
||||
HazelcastInstance hzInstance = m_Server.getHazelcastInstance();
|
||||
|
||||
@@ -119,6 +119,7 @@ public interface IMessagesStore {
|
||||
List<WFCMessage.GroupInfo> getGroupInfos(List<WFCMessage.UserRequest> requests);
|
||||
WFCMessage.GroupInfo getGroupInfo(String groupId);
|
||||
Set<String> getUserGroupIds(String userId);
|
||||
Set<String> getCommonGroupIds(String userId1, String userId2);
|
||||
ErrorCode getGroupMembers(String fromUser, String groupId, long maxDt, List<WFCMessage.GroupMember> members);
|
||||
WFCMessage.GroupMember getGroupMember(String groupId, String memberId);
|
||||
ErrorCode transferGroup(String operator, String groupId, String newOwner, boolean isAdmin);
|
||||
|
||||
@@ -37,6 +37,8 @@ public interface IMTopic {
|
||||
String GetGroupMemberTopic = "GPGM";
|
||||
String TransferGroupTopic = "GTG";
|
||||
String SetGroupManagerTopic = "GSM";
|
||||
String GetMyGroupsTopic = "GMGS";
|
||||
String GetCommonGroupsTopic = "GCGS";
|
||||
|
||||
String GetUserInfoTopic = "UPUI";
|
||||
String ModifyMyInfoTopic = "MMI";
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<artifactId>wildfirechat-parent</artifactId>
|
||||
<groupId>cn.wildfirechat</groupId>
|
||||
<version>0.97</version>
|
||||
<version>0.98</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
|
||||
@@ -77,6 +77,7 @@ public interface APIPath {
|
||||
String Get_User_Groups = "/admin/group/of_user";
|
||||
String Group_Set_Member_Alias = "/admin/group/member/set_alias";
|
||||
String Group_Set_Member_Extra = "/admin/group/member/set_extra";
|
||||
String Get_Common_Groups = "/admin/group/common_group";
|
||||
|
||||
String Create_Channel = "/admin/channel/create";
|
||||
String Destroy_Channel = "/admin/channel/destroy";
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<!--<relativePath>../pom.xml</relativePath>-->
|
||||
<artifactId>wildfirechat-parent</artifactId>
|
||||
<groupId>cn.wildfirechat</groupId>
|
||||
<version>0.97</version>
|
||||
<version>0.98</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>distribution</artifactId>
|
||||
@@ -130,73 +130,70 @@
|
||||
</executions>
|
||||
</plugin>
|
||||
|
||||
<!-- 打包RPM 开始-->
|
||||
<!-- 打包RPM 包需要本地有rpm命令才可以,linux和mac都可以安装rpm。如果是windows需要cygwin安装rpm才可以,如果不需要rpm包,可以把这个plugin注释掉-->
|
||||
<plugin>
|
||||
<groupId>org.codehaus.mojo</groupId>
|
||||
<artifactId>rpm-maven-plugin</artifactId>
|
||||
<version>2.2.0</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>generate-rpm</id>
|
||||
<goals>
|
||||
<goal>rpm</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
|
||||
<configuration>
|
||||
<group>Applications/Chat</group>
|
||||
<name>im-server</name>
|
||||
<needarch>noarch</needarch>
|
||||
<targetOS>linux</targetOS>
|
||||
<prefix>/opt/im-server</prefix>
|
||||
<defineStatements>
|
||||
<defineStatement>_unpackaged_files_terminate_build 0</defineStatement>
|
||||
</defineStatements>
|
||||
<copyTo>
|
||||
target/im-server-${project.version}.rpm
|
||||
</copyTo>
|
||||
<requires>
|
||||
<require>java-1.8.0-openjdk-headless</require>
|
||||
</requires>
|
||||
|
||||
<mappings>
|
||||
<mapping>
|
||||
<directory>/opt/im-server</directory>
|
||||
<filemode>755</filemode>
|
||||
<sources>
|
||||
<source>
|
||||
<location>${project.build.directory}/distribution-${project.version}-bundle-tar.tar.gz</location>
|
||||
</source>
|
||||
</sources>
|
||||
</mapping>
|
||||
|
||||
<mapping>
|
||||
<directory>/usr/lib/systemd/system</directory>
|
||||
<filemode>644</filemode>
|
||||
<username>root</username>
|
||||
<groupname>root</groupname>
|
||||
<directoryIncluded>false</directoryIncluded>
|
||||
<sources>
|
||||
<source>
|
||||
<location>${project.basedir}/../systemd/im-server.service</location>
|
||||
</source>
|
||||
</sources>
|
||||
</mapping>
|
||||
</mappings>
|
||||
<postinstallScriptlet>
|
||||
<scriptFile>${project.basedir}/src/main/rpm/install.sh</scriptFile>
|
||||
<fileEncoding>utf-8</fileEncoding>
|
||||
<filter>true</filter>
|
||||
</postinstallScriptlet>
|
||||
<postremoveScriptlet>
|
||||
<scriptFile>${project.basedir}/src/main/rpm/uninstall.sh</scriptFile>
|
||||
<fileEncoding>utf-8</fileEncoding>
|
||||
<filter>true</filter>
|
||||
</postremoveScriptlet>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<!-- 打包RPM插件,如果需要打包RPM格式请打开下面注释 -->
|
||||
<!-- <plugin>-->
|
||||
<!-- <groupId>org.codehaus.mojo</groupId>-->
|
||||
<!-- <artifactId>rpm-maven-plugin</artifactId>-->
|
||||
<!-- <version>2.2.0</version>-->
|
||||
<!-- <executions>-->
|
||||
<!-- <execution>-->
|
||||
<!-- <id>generate-rpm</id>-->
|
||||
<!-- <goals>-->
|
||||
<!-- <goal>rpm</goal>-->
|
||||
<!-- </goals>-->
|
||||
<!-- </execution>-->
|
||||
<!-- </executions>-->
|
||||
<!-- <configuration>-->
|
||||
<!-- <group>Applications/Chat</group>-->
|
||||
<!-- <name>im-server</name>-->
|
||||
<!-- <needarch>noarch</needarch>-->
|
||||
<!-- <targetOS>linux</targetOS>-->
|
||||
<!-- <prefix>/opt/im-server</prefix>-->
|
||||
<!-- <defineStatements>-->
|
||||
<!-- <defineStatement>_unpackaged_files_terminate_build 0</defineStatement>-->
|
||||
<!-- </defineStatements>-->
|
||||
<!-- <copyTo>-->
|
||||
<!-- target/im-server-${project.version}.rpm-->
|
||||
<!-- </copyTo>-->
|
||||
<!-- <requires>-->
|
||||
<!-- <require>java-1.8.0-openjdk-headless</require>-->
|
||||
<!-- </requires>-->
|
||||
<!-- <mappings>-->
|
||||
<!-- <mapping>-->
|
||||
<!-- <directory>/opt/im-server</directory>-->
|
||||
<!-- <filemode>755</filemode>-->
|
||||
<!-- <sources>-->
|
||||
<!-- <source>-->
|
||||
<!-- <location>${project.build.directory}/distribution-${project.version}-bundle-tar.tar.gz</location>-->
|
||||
<!-- </source>-->
|
||||
<!-- </sources>-->
|
||||
<!-- </mapping>-->
|
||||
<!-- <mapping>-->
|
||||
<!-- <directory>/usr/lib/systemd/system</directory>-->
|
||||
<!-- <filemode>644</filemode>-->
|
||||
<!-- <username>root</username>-->
|
||||
<!-- <groupname>root</groupname>-->
|
||||
<!-- <directoryIncluded>false</directoryIncluded>-->
|
||||
<!-- <sources>-->
|
||||
<!-- <source>-->
|
||||
<!-- <location>${project.basedir}/../systemd/im-server.service</location>-->
|
||||
<!-- </source>-->
|
||||
<!-- </sources>-->
|
||||
<!-- </mapping>-->
|
||||
<!-- </mappings>-->
|
||||
<!-- <postinstallScriptlet>-->
|
||||
<!-- <scriptFile>${project.basedir}/src/main/rpm/install.sh</scriptFile>-->
|
||||
<!-- <fileEncoding>utf-8</fileEncoding>-->
|
||||
<!-- <filter>true</filter>-->
|
||||
<!-- </postinstallScriptlet>-->
|
||||
<!-- <postremoveScriptlet>-->
|
||||
<!-- <scriptFile>${project.basedir}/src/main/rpm/uninstall.sh</scriptFile>-->
|
||||
<!-- <fileEncoding>utf-8</fileEncoding>-->
|
||||
<!-- <filter>true</filter>-->
|
||||
<!-- </postremoveScriptlet>-->
|
||||
<!-- </configuration>-->
|
||||
<!-- </plugin>-->
|
||||
<!-- 打包RPM 结束-->
|
||||
|
||||
</plugins>
|
||||
|
||||
@@ -12,12 +12,17 @@
|
||||
|
||||
# 更新记录
|
||||
|
||||
--------------
|
||||
Release note 0.98:
|
||||
1. 解决linux多端登录错误问题
|
||||
2. 添加获取用户群组和共同群组功能
|
||||
3. 解决windows下脚本编码错误问题
|
||||
|
||||
--------------
|
||||
Release note 0.97:
|
||||
1. 升级部分依赖库到最新版本
|
||||
2. 添加名片消息默认推送信息
|
||||
3. 添加deb和rpm格式软件包
|
||||
4. 解决linux平台多端的问题
|
||||
|
||||
--------------
|
||||
Release note 0.96:
|
||||
|
||||
@@ -14,11 +14,11 @@ goto end
|
||||
:okHome
|
||||
|
||||
rem Set JavaHome if it exists
|
||||
if exist { "%JAVA_HOME%\bin\java" } (
|
||||
if exist [ "%JAVA_HOME%\bin\java" ] (
|
||||
set "JAVA="%JAVA_HOME%\bin\java""
|
||||
) else {
|
||||
) else (
|
||||
set "JAVA="java""
|
||||
}
|
||||
)
|
||||
|
||||
echo Using JAVA_HOME: "%JAVA_HOME%"
|
||||
echo Using WILDFIRECHAT_HOME: "%WILDFIRECHAT_HOME%"
|
||||
@@ -73,7 +73,9 @@ rem set JAVA_OPTS=%JAVA_OPTS% -XX:NumberOfGCLogFiles=10
|
||||
rem set JAVA_OPTS=%JAVA_OPTS% -XX:GCLogFileSize=10M"
|
||||
|
||||
echo
|
||||
echo 请设置JVM参数Xmx和Xms!!!
|
||||
echo "Please set Xmx and Xms parameters!"
|
||||
echo "Please set Xmx and Xms parameters!"
|
||||
echo "Please set Xmx and Xms parameters!"
|
||||
echo
|
||||
|
||||
rem set JAVA_OPTS=%JAVA_OPTS% -Xmx2G
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
<artifactId>wildfirechat-parent</artifactId>
|
||||
|
||||
<packaging>pom</packaging>
|
||||
<version>0.97</version>
|
||||
<version>0.98</version>
|
||||
<name>Wildfire Chat</name>
|
||||
<description>Wildfire Chat Server</description>
|
||||
<inceptionYear>2019</inceptionYear>
|
||||
|
||||
|
After Width: | Height: | Size: 998 KiB |
|
After Width: | Height: | Size: 279 KiB |
|
After Width: | Height: | Size: 535 KiB |
|
After Width: | Height: | Size: 1.2 MiB |
|
After Width: | Height: | Size: 340 KiB |
|
After Width: | Height: | Size: 1.5 MiB |
|
After Width: | Height: | Size: 123 KiB |
|
After Width: | Height: | Size: 199 KiB |
|
After Width: | Height: | Size: 220 KiB |
|
After Width: | Height: | Size: 148 KiB |
|
After Width: | Height: | Size: 148 KiB |
|
After Width: | Height: | Size: 1.0 MiB |
|
After Width: | Height: | Size: 319 KiB |
|
After Width: | Height: | Size: 158 KiB |
|
After Width: | Height: | Size: 89 KiB |
|
After Width: | Height: | Size: 172 KiB |
|
After Width: | Height: | Size: 431 KiB |
|
After Width: | Height: | Size: 451 KiB |
|
After Width: | Height: | Size: 162 KiB |
|
After Width: | Height: | Size: 163 KiB |
|
After Width: | Height: | Size: 144 KiB |
|
After Width: | Height: | Size: 297 KiB |
|
After Width: | Height: | Size: 846 KiB |
|
After Width: | Height: | Size: 309 KiB |
@@ -3,7 +3,7 @@
|
||||
<parent>
|
||||
<artifactId>wildfirechat-parent</artifactId>
|
||||
<groupId>cn.wildfirechat</groupId>
|
||||
<version>0.97</version>
|
||||
<version>0.98</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
|
||||
@@ -170,4 +170,10 @@ public class GroupAdmin {
|
||||
return AdminHttpUtils.httpJsonPost(path, inputUserId, OutputGroupIds.class);
|
||||
}
|
||||
|
||||
public static IMResult<OutputGroupIds> getCommonGroups(String user1, String user2) throws Exception {
|
||||
String path = APIPath.Get_Common_Groups;
|
||||
StringPairPojo intput = new StringPairPojo(user1, user2);
|
||||
return AdminHttpUtils.httpJsonPost(path, intput, OutputGroupIds.class);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -617,6 +617,13 @@ public class Main {
|
||||
System.exit(-1);
|
||||
}
|
||||
|
||||
groupIdsIMResult = GroupAdmin.getCommonGroups("user1", "user2");
|
||||
if (groupIdsIMResult != null && groupIdsIMResult.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) {
|
||||
System.out.println("get user common groups success");
|
||||
} else {
|
||||
System.out.println("get user common groups failure");
|
||||
System.exit(-1);
|
||||
}
|
||||
|
||||
//仅专业版支持
|
||||
if (commercialServer) {
|
||||
|
||||