diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md
index 9baa8e2a4..553da9e9b 100644
--- a/.github/ISSUE_TEMPLATE.md
+++ b/.github/ISSUE_TEMPLATE.md
@@ -1,13 +1,23 @@
-### Expected behavior
+## 提issue小提示
+为了尽快定位问题,需要提供足够的信息,请按照我们的要求格式来提问。***如果您不按照格式提问,我们将无法回复您的问题***
-### Actual behavior
+#### 操作说明
+详细说明操作那个界面,每一步骤都要说得详细,如果是SDK或者api使用问题,需要详细说明调用的那个函数,参数都是什么。
-### Steps to reproduce
+#### 表现现象
+描述一下什么现象,比如说函数返回error,errorcode是多少,或者界面上是什么状态,比如发送消息显示发送失败的红点。不要笼统的说功能有问题,不起作用。
-### Minimal yet complete reproducer code (or URL to code) or complete log file
+#### 预期结果
+你认为正确的表现应该是什么样的。
-### Moquette MQTT version
+#### 补充条件
+是否是必现的,还是偶现的?是否只有在特殊的网络/设备/平台上出现,还是所有的都出现。还有您用的版本是什么时候的,是不是最新版
-### JVM version (e.g. `java -version`)
+#### demo对比结果
+请用demo对比测试,demo上是什么状态。
-### OS version (e.g. `uname -a`)
+#### 检索已有问题
+除了可以检索已有issue外,还可以去野火论坛查找已有问题,论坛地址为 https://bbs.wildfirechat.cn
+
+#### star 我们
+给我们点个star,可以及时接收到我们回复信息,另外也是对我们支持人员辛苦工作的认可,激励我们更好更快地为大家服务。
diff --git a/.gitignore b/.gitignore
index b154040c5..919aa701f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -49,3 +49,16 @@ maven-metadata.xml
/bin/
broker/config/git.properties
distribution/src/main/resources/git.properties
+license/target
+server/target
+broker/h2db
+broker/media
+common/target
+server/target
+sdk/target
+moments/target
+monitor
+wildfire_jmeter
+git.properties
+wildfirechat.license
+broker/logs
diff --git a/README.md b/README.md
index e621970d0..f12028767 100644
--- a/README.md
+++ b/README.md
@@ -1,62 +1,280 @@
-## 野火IM解决方案
+# 野火IM解决方案
+野火IM是专业级的即时通讯和实时音视频整体解决方案,由北京野火无限网络科技有限公司维护和支持。
-野火IM是一套跨平台、全开源的即时通讯解决方案,主要包含以下内容。
+## 功能特性
+* 极致地硬件利用率,IM服务最低128M内存即可运行,上不封顶。
+* 协议先进,采用MQTT+Protobuf组合,流量和性能极致优化。
+* 性能强大,专业版IM服务支持百万在线和集群部署,业内顶尖性能水平,详情参考野火性能报告。
+* 部署运维简单,依赖服务少,稍加配置一键启动。
+* 安全加密。网络连接AES加密。客户端数据库SqlCipher加密。安全无小事。
+* 全平台客户端,支持Android、iOS、鸿蒙、Web、小程序、UniApp、Flutter、Windows、Mac OS、Linux等所有常见平台。
+* 四端同时在线(移动端,pc端,web端和小程序端),数据和状态多端完美同步。
+* 支持国产化。支持国产化操作系统、国产化芯片和国产数据库。支持国密加密。
+* 客户端使用微信[mars](https://github.com/tencent/mars)连接库,野火IM可能是最适应中国网络国情的即时通讯服务。
+* 支持加速点加速,即可用于全球应用,也可用于政企内外双网复杂的网络环境。
+* 支持阅读回执和在线状态功能,适用于办公环境。
+* 音视频多种解决方案,丰俭由人,可自由选择。
+* 高级音视频功能强大,支持9人以上的群组视频通话,支持1080P视频,支持会议模式,支持百人以上会议,支持服务器端录制。
+* 全私有部署,可不依赖任何第三方服务,完全内网部署。
+* 功能齐全,涵盖所有常见即时通讯功能。另外具有强大的可扩展能力。代码开源率高,二次开发简单。
+* 结构设计合理,客户端分功能库、UI库和应用三层。应用成熟完善,开箱即用,也可把SDK嵌入其它应用。
+* 拥有应用开放平台,可以开发和创建自建应用,扩展您的工作台。
+* API丰富,方便与其它服务系统的对接。
+* 拥有机器人和公众号功能,免费的频道(公众号)管理后台。
+* 超级群组功能,可以支持万人大群。
+* 支持多个IM服务组网互通,打破孤岛,适用于集团公司下多个分公司互联互通。
+* 社区版IM服务和移动端免费商用,可以免费构建出完备的移动互联网应用。
+* 收费项目非常便宜,野火独有的试用模式,可以先部署到客户环境试用6个月,试用满意后再购买,避免上当受骗。
+* 技术支持专业高效,***核心研发***及时处理issue和工单,能最快解决用户的技术难题。技术支持不收费,让客户顺利使用是我们最大的愿望。
-| 仓库 | 说明 | 备注 |
-| ------------------------------------------------------------ | ------------------------------------------------------- | ---------------------------------------------- |
-| [android-chat](https://github.com/wildfirechat/android-chat) | 野火IM Android App | 可以很方便地进行二次开发,或集成到现有应用当中 |
-| [ios-chat](https://github.com/wildfirechat/ios-chat) | 野火IM iOS App | 可以很方便地进行二次开发,或集成到现有应用当中 |
-| [pc-chat](https://github.com/wildfirechat/pc-chat) | 基于[Electron](https://electronjs.org/)开发的PC平台应用 | |
-| [proto](https://github.com/wildfirechat/proto) | 野火IM的协议栈实现 | |
-| [server](https://github.com/wildfirechat/server) | IM server | |
-| [app server](https://github.com/wildfirechat/app_server) | 应用服务端 | |
-| [robot_server](https://github.com/wildfirechat/robot_server) | 机器人服务端 | |
-| [push_server](https://github.com/wildfirechat/push_server) | 推送服务器 | |
-| [docs](https://github.com/wildfirechat/docs) | 野火IM相关文档,包含设计、概念、开发、使用说明 | |
+## 野火开源项目
+主要包括以下项目:
-# server
-本工程为野火IM 社区版IM服务软件。野火IM作为一个通用的即时通讯解决方案,可以集成到各种应用中。请阅读[docs](http://docs.wildfirechat.cn)或下载服务器[发布版本](https://github.com/wildfirechat/server/releases)
+| [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应用服务,模拟客户的应用服登陆处理逻辑及部分二次开发示例。 |
+| [robot_server](https://github.com/wildfirechat/robot_server) | [robot_server](https://gitee.com/wfchat/robot_server) | 机器人服务,演示野火机器人对接其它系统的方法。 |
+| [push_server](https://github.com/wildfirechat/push_server) | [push_server](https://gitee.com/wfchat/push_server) | 推送服务器,可以对接所有的系统厂商推送服务或者第三方推送服务。 |
+| [wf-minio](https://github.com/wildfirechat/WF-minio) | [wf-minio](https://gitee.com/wfchat/WF-minio) | 私有对象存储服务,用来支持野火IM专业版的文件存储。 |
+| [wf-janus](https://github.com/wildfirechat/wf-janus ) | [wf-janus](https://gitee.com/wfchat/wf-janus ) | 高级音视频媒体服务。 |
+| [open-platform](https://github.com/wildfirechat/open-platform) | [open-platform](https://gitee.com/wfchat/open-platform) | 野火开放平台服务。 |
+| [daily-report](https://github.com/wildfirechat/daily-report) | [daily-report](https://github.com/wildfirechat/daily-report) | 野火开放平台日报 demo服务。 |
+| [channel-platform](https://github.com/wildfirechat/channel-platform) | [channel-platform](https://gitee.com/wfchat/channel-platform) | 野火频道(公众号)平台服务。 |
+| [organization-platform](https://github.com/wildfirechat/organization-platform) | [organization-platform](https://gitee.com/wfchat/organization-platform) | 野火组织通讯录服务。 |
+| [archive-server](https://github.com/wildfirechat/archive-server) | [archive-server](https://gitee.com/wfchat/archive-server) | 野火组织通讯录服务。 |
+| [android-chat](https://github.com/wildfirechat/android-chat) | [android-chat](https://gitee.com/wfchat/android-chat) | 野火IM Android SDK源码和App源码。 |
+| [ios-chat](https://github.com/wildfirechat/ios-chat) | [ios-chat](https://gitee.com/wfchat/ios-chat) | 野火IM iOS SDK源码和App源码。|
+| [pc-chat(electron)](https://github.com/wildfirechat/vue-pc-chat) | [pc-chat(electron)](https://gitee.com/wfchat/vue-pc-chat) | 基于[Electron](https://electronjs.org/)开发的PC 端 | |
+| [pc-chat(Qt)](https://github.com/wildfirechat/qt-pc-chat) | [pc-chat(Qt)](https://gitee.com/wfchat/qt-pc-chat) | 基于Qt开发的PC 端 | |
+| [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平台原生插件。已[商店](https://ext.dcloud.net.cn/plugin?id=7895)上架 |
+| [flutter-chat](https://github.com/wildfirechat/flutter-chat) | [flutter-chat](https://gitee.com/wfchat/flutter-chat) | Flutter平台原生插件,支持IM和音视频通话。 |
+| [docs](https://github.com/wildfirechat/docs) | [docs](https://gitee.com/wfchat/docs) | 野火IM相关文档,包含设计、概念、开发、使用说明,[在线查看](https://docs.wildfirechat.cn/)。 |
+## 野火开发文档
+[在线文档](https://docs.wildfirechat.cn/)
-开发一套IM系统真的很艰辛,请路过的朋友们给点个star,支持我们坚持下去🙏🙏🙏🙏🙏
+## 野火IM论坛
+[野火IM论坛](https://bbs.wildfirechat.cn)
+## 野火性能测试报告及测试方法
+[Github](https://github.com/wildfirechat/Performance_Test), [码云](https://gitee.com/wfchat/Performance_Test)。
-### 联系我们
-问题讨论请加群:822762829
+## 野火Demo
+请使用微信扫码下载安装体验野火IM移动客户端
-
+
-#### 体验Demo
-我们提供了体验demo,请使用微信扫码下载安装体验
+Web客户端点击[这里](https://web.wildfirechat.cn)
-
+PC客户端点[这里](https://github.com/wildfirechat/vue-pc-chat/releases)下载安装。
+
+小程序客户端请用微信扫码
+
+
+
+## 快速开始
+可以按照[快速开始](https://docs.wildfirechat.cn/quick_start/)来部署应用服务和IM服务,然后打包移动端,就可以完成聊天和通话功能。
+
+之后再部署开放平台服务、频道(公众号)服务、机器人服务、推送服务、Turn服务(音视频服务)来实现完整的应用功能,详情可以详细阅读文档。
+
+## 联系我们
+商务合作请微信联系:
+
+* 微信1:wildfirechat
+* 微信2:wfchat
+
+## 问题交流
+
+1. 如果大家发现bug,请在GitHub或码云提issue;如果有需求也请给我们提issue。
+2. 其他问题,请到[野火IM论坛](http://bbs.wildfirechat.cn/)进行交流学习
+3. 关注我们的公众号。我们有新版本发布或者有重大更新会通过公众号通知大家,另外我们也会不定期的发布一些关于野火IM的技术介绍。
+
+
+
+我们有核心研发工程师轮流值班处理issue和论坛,会及时处理的,疑难Bug的修改和新需求的开发我们也会尽快解决。
+
+
+## 编译
+```
+mvn clean package
+```
+生成的目标文件在```./distribution/target/distribution-xxxx-bundle-tar.tar.gz```
+
+## 配置
+解压```distribution-xxxx-bundle-tar.tar.gz```,修改解压出来的```config```目录下的```wildfirechat.conf```,可以阅读配置文件注释和文档,对其它配置项进行调整。
+
+## 运行
+在解压```distribution-xxxx-bundle-tar.tar.gz```后的目录下运行如下命令:
+```
+./bin/wildfirechat.sh
+```
+
+## 验证
+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```目录下。
+
+## Epoll
+在linux系统中打开Epoll开关可以提高性能,默认软件包内打包的是x86_64的epoll native sdk。如果是arm64的机器,可以把[broker pom](./broker/pom.xml)文件中修改如下:
+```xml
+
+ io.netty
+ netty-transport-native-epoll
+ ${netty.version}
+
+ linux-aarch_64
+
+```
+然后重新打包。专业版IM服务软件包中有arm64架构的sdk,可以直接替换。epoll只支持x86_64和arm64两个架构,其他架构不要把epoll开关打开。
+
+## 升级说明
+1. 从0.42 版本增加了群成员数限制,默认为2000。如果您从之前的版本升级到这个版本或以后,需要注意到群成员数的限制。升级之后超出限制的群不受影响,但不能继续加人,如果您想修改默认值,可以在升级版本之后,修改t_setting表,把默认的大小改为您期望的人数。另外修改t_group表,把已经存在的群组max_member_count改成您期望的,然后重启。
+2. 0.50版本添加了是否允许客户端发送群操作通知的配置。如果您在客户端自定义群通知,需要在服务器端配置允许,没有使用自定义群操作通知的不受影响。***
+3. 0.46和0.47版本升级到0.48及以后版本时,可能会提示flyway migrate 38错误,请执行 [修复脚本](https://github.com/wildfirechat/server/blob/wildfirechat/flyway_repaire_migrate_38.sql) 进行修复。0.46和0.47版本之外的版本不会出现此问题。
+4. 从0.54之前版本升级到0.54及以后版本时,会提示flyway migrate错误。因为0.54版本删除了sql脚本中默认敏感词的内容,flyway checksum失败。请执行```update flyway_schema_history set checksum = 0 where script = 'V17__add_default_sensitive_word.sql';```来修复。
+5. 从0.59之前的版本升级到之后的版本执行数据库升级时间比较长,请耐心等待提示运行成功,避免中途中断。
+6. 0.62/0.63 版本有严重的问题,请使用0.64及以后版本,或者0.61版。
+7. 从0.68 版本起添加了pc在线是否默认手机接收推送的开关,默认为开,与以前版本作用相反,请注意兼容(可以关掉与之前保持一致或者升级客户端)
+8. 从0.78 版本起把MySQL数据库中关键字都改为大小写敏感,另外生成id的方法也做了改变,只生成小写的id,避免出现id重复的问题,建议所有客户都升级
+9. 从0.79 版本起把log4j升级到log4j2,因为log4j已经不再维护而且还有已知的漏洞,建议所有客户都升级,升级时注意更新log4j2的配置文件
+10. 0.97版本更改了启动脚本```wildfirechat.sh```,如果是升级服务,请注意更新启动脚本。
+
+## 维护说明
+野火设计理念当中,IM服务和客户端协议栈构成个管道工具,数据在人和人或者人和服务或者服务和服务之间传递,可以通过Server API和自定义消息来对接和开发业务。业务系统把IM系统当作一个工具来使用,是不需要把任何业务逻辑写在IM服务中的。
+
+如果修改了IM服务可能会引起跟客户端协议栈的不兼容,以后也没有可能从社区版IM服务迁移到专业版IM服务,还有一旦修改就跟我们代码不一样了,如果出了问题我们就无法分析和解决。所以 ***我们强烈不推荐在IM服务修改代码,如果修改过就不再提供任何技术支持和服务了***。除了IM服务以外的所有代码可以任意修改。
+
+现有接口足够对接和二开任何业务了,如果发现无法实现你们的业务需求,可以在[论坛](https://bbs.wildfirechat.cn)来咨询,我们会分析如何实现,如果需要添加新接口,我们会及时免费添加。请切记:***不要修改IM服务的代码!*** ***不要修改IM服务的代码!*** ***不要修改IM服务的代码!***
+
+详细维护说明请参考 [野火维护说明](https://docs.wildfirechat.cn/base_knowledge/maintain.html)。
+
+## 服务对象
+因为野火的使用范围比较广,难免被一些不法分子利用,国内反诈反赌力度很大,所以国内多地警方都跟我们都有过联系。***为了预防我们的产品被用于非法目的,试用及购买只能支持境内法人单位,不接受个人或者境外团体。如果我们发现产品被用于非法目的,我们会立即停止技术支持服务并且报警和配合警方调查。请用于非法目的用户绕行!***
+
+## 群的性能问题
+群的大小和性能不是线性相关的,而是O(N²)的关系,这是群的特性决定的。所以社区版IM服务很难支持很大的群人数,我们建议最大群不要超过500人,像微信的群大小一样。修改方法是修改数据库中```t_settings```表中的群最大人数。
+
+如果是专业版IM服务,普通群性能会有些加强,但也不会提高太多,所以我们就开发了超级群,可以支持上万群成员。关于超级群,请参考[野火超级群组](https://mp.weixin.qq.com/s/ov5ZiaEIUZuvgFBXOrcjbg)。现有客户有接近10W的群组成员能够流畅稳定地运行。
+
+## 网络问题
+如果是自建机房或者私有网络,可能会有跨运营商瓶颈,详情请参考[《从野火 IM 的网络踩坑经历,聊聊跨运营商访问的那些坑》](https://mp.weixin.qq.com/s/Pa8b93oMk58fjMgwtwmePQ)。
+
+## 常见问题
+请参考文档[常见问题](https://docs.wildfirechat.cn/faq/server.html)
+
+## 应用截图
+登录界面
+
+
+
+会话列表
+
+
+
+好友列表
+
+
+
+工作台
+
+
+
+发现
+
+
+
+我的页面
+
+
+
+消息聊天
+
+
+
+动态表情
+
+
+
+语音消息
+
+
+
+位置消息
+
+
+
+拍摄图片或者小视频
+
+
+
+会话设置
+
+
+
+朋友圈
+
+
+
+新好友
+
+
+
+多人视频通话
+
+
+
+会议主页
+
+
+
+会议详情
+
+
+
+会议界面
+
+
+
+PC客户端界面
+
+
-#### 应用截图
-
+移动客户端、PC客户端和Web客户端三端同框
-
+
-
+小程序客户端
-
+
-
+公众号管理后台
-
+
-
+开放平台管理后台
-
+
-
+IM服务管理后台
-
+
-
+> 更多详细信息请下载demo进行体验。
+## 特别感谢
+1. [moquette](https://github.com/moquette-io/moquette) 本项目是基于此项目二次开发而来,处理MQTT相关业务。
+2. [loServer](https://github.com/looly/loServer) 本项目使用loServer处理HTTP相关业务。
+*** 对他们表示诚挚的感谢🙏 ***
## License
1. Under the Creative Commons Attribution-NoDerivs 3.0 Unported license. See the [LICENSE](https://github.com/wildfirechat/server/blob/wildfirechat/LICENSE) file for details.
-2. Under the Anti 996 License. See the [Anti 996 LICENSE](https://github.com/wildfirechat/server/blob/wildfirechat/LICENSE_996) file for details.
\ No newline at end of file
diff --git a/VerifyAdminSecretTool.java b/VerifyAdminSecretTool.java
new file mode 100644
index 000000000..574d6db38
--- /dev/null
+++ b/VerifyAdminSecretTool.java
@@ -0,0 +1,114 @@
+import java.io.*;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.nio.charset.StandardCharsets;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.security.SecureRandom;
+import java.util.Scanner;
+
+/**
+ * 此工具为验证IM服务管理密钥是否正确的工具。
+ * 通过手机号查询 Wildfire IM 用户信息,如果能够返回正确信息或者未找到表示密钥正确。
+ *
+ * 编译:放到IM服务运行服务器上,执行 javac VerifyAdminSecretTool.java 编译得到 VerifyAdminSecretTool.class,
+ * 用法:执行 java VerifyAdminSecretTool 按提示输入 IM 服务地址、管理员密钥、电话号码。
+ * 程序会调用 /admin/user/get_info 接口并打印返回的 JSON。
+ */
+public class VerifyAdminSecretTool {
+
+ private static final SecureRandom RANDOM = new SecureRandom();
+
+ public static void main(String[] args) throws Exception {
+ Scanner scanner = new Scanner(System.in);
+
+ System.out.print("请输入 IM 服务地址(如 http://192.168.1.100:18080): ");
+ String serverUrl = scanner.nextLine().trim();
+
+ System.out.print("请输入管理员密钥(admin secret): ");
+ String secret = scanner.nextLine().trim();
+
+ System.out.print("请输入电话号码: ");
+ String mobile = scanner.nextLine().trim();
+
+ scanner.close();
+
+ if (serverUrl.isEmpty() || secret.isEmpty() || mobile.isEmpty()) {
+ System.err.println("错误:服务地址、密钥和电话号码均不能为空");
+ System.exit(1);
+ }
+
+ // 构建请求 URL(去掉末尾可能的 /)
+ if (serverUrl.endsWith("/")) {
+ serverUrl = serverUrl.substring(0, serverUrl.length() - 1);
+ }
+ String urlStr = serverUrl + "/admin/user/get_info";
+
+ // 构建请求体
+ String jsonBody = "{\"mobile\":\"" + mobile + "\",\"includeDeleted\":false}";
+
+ // 生成认证签名
+ int nonce = RANDOM.nextInt(1000000) + 1;
+ long timestamp = System.currentTimeMillis();
+ String signStr = nonce + "|" + secret + "|" + timestamp;
+ String sign = sha1Hex(signStr);
+
+ // 发送 HTTP POST 请求
+ String response = doPost(urlStr, jsonBody, nonce, timestamp, sign);
+
+ // 输出结果
+ System.out.println("\n===== 返回结果 =====");
+ System.out.println(response);
+ }
+
+ private static String doPost(String urlStr, String body, int nonce, long timestamp, String sign) throws Exception {
+ URL url = new URL(urlStr);
+ HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+ try {
+ conn.setRequestMethod("POST");
+ conn.setRequestProperty("Content-Type", "application/json; charset=utf-8");
+ conn.setRequestProperty("Connection", "Keep-Alive");
+ conn.setRequestProperty("nonce", String.valueOf(nonce));
+ conn.setRequestProperty("timestamp", String.valueOf(timestamp));
+ conn.setRequestProperty("sign", sign);
+ conn.setDoOutput(true);
+ conn.setConnectTimeout(15000);
+ conn.setReadTimeout(15000);
+
+ // 写入请求体
+ try (OutputStream os = conn.getOutputStream()) {
+ os.write(body.getBytes(StandardCharsets.UTF_8));
+ os.flush();
+ }
+
+ int responseCode = conn.getResponseCode();
+
+ // 读取响应
+ InputStream is = (responseCode >= 200 && responseCode < 300)
+ ? conn.getInputStream()
+ : conn.getErrorStream();
+
+ StringBuilder sb = new StringBuilder();
+ try (BufferedReader reader = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8))) {
+ String line;
+ while ((line = reader.readLine()) != null) {
+ sb.append(line);
+ }
+ }
+
+ return sb.toString();
+ } finally {
+ conn.disconnect();
+ }
+ }
+
+ private static String sha1Hex(String input) throws NoSuchAlgorithmException {
+ MessageDigest md = MessageDigest.getInstance("SHA-1");
+ byte[] digest = md.digest(input.getBytes(StandardCharsets.UTF_8));
+ StringBuilder sb = new StringBuilder();
+ for (byte b : digest) {
+ sb.append(String.format("%02x", b & 0xff));
+ }
+ return sb.toString();
+ }
+}
diff --git a/broker/config/hazelcast.xml b/broker/config/hazelcast.xml
index 9ff316d0c..a80a31225 100755
--- a/broker/config/hazelcast.xml
+++ b/broker/config/hazelcast.xml
@@ -1,20 +1,22 @@
+
+
+
+
-
-
-
- wfc-pro
-
-
-
+
+
+ slf4j
+
+
+
+
+
+
@@ -83,6 +94,12 @@
+
+
+
+
+
+
-
-