Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6d9eeb25d6 | ||
|
|
32f63a7d9c | ||
|
|
4d903ca379 | ||
|
|
d233dbdd99 | ||
|
|
0f32aa30ce | ||
|
|
9e007185ba | ||
|
|
ab92bc116c | ||
|
|
4308e51357 | ||
|
|
59977fb1ba | ||
|
|
d912777974 | ||
|
|
19b7bc42ef | ||
|
|
e621bea8fa | ||
|
|
ca1cf03cc3 | ||
|
|
ed7e56ca75 | ||
|
|
40c5cd615d | ||
|
|
3438de39ad | ||
|
|
7f6b2d93df | ||
|
|
9c57a620c9 | ||
|
|
32252228b0 | ||
|
|
396351cc15 | ||
|
|
955c2182c8 | ||
|
|
823bd53da8 | ||
|
|
e4588bfd9d | ||
|
|
3b0f724ff0 | ||
|
|
94bc595757 | ||
|
|
139042c8e7 | ||
|
|
8e894e49b3 | ||
|
|
c30a688032 | ||
|
|
06bcfea16e | ||
|
|
52bbf57760 | ||
|
|
e63298f50b | ||
|
|
bc8baf3bcc | ||
|
|
30a62cfc58 | ||
|
|
35b8133046 | ||
|
|
4a8500b99b | ||
|
|
c26e98b960 | ||
|
|
70fcc66672 | ||
|
|
2538a6ca68 | ||
|
|
6388f1b89c | ||
|
|
ef1f25dab1 | ||
|
|
0a5c8a67bb | ||
|
|
ae3f0027ca | ||
|
|
76dedb3da7 | ||
|
|
580e9f80fb | ||
|
|
63304c5c5f | ||
|
|
c377360049 | ||
|
|
2e74a77e5b | ||
|
|
90286e9484 | ||
|
|
7f479dd9e5 | ||
|
|
bae0805e64 | ||
|
|
e5d63a8d5f | ||
|
|
06fe70bd6f | ||
|
|
5a14b2f2f0 | ||
|
|
fbe5bf7a77 | ||
|
|
4ae117dd6f | ||
|
|
4518beff28 | ||
|
|
3cc278211b | ||
|
|
355fc6cb06 | ||
|
|
aef125eb50 | ||
|
|
d89e641470 | ||
|
|
e41ae9a9e7 | ||
|
|
989f5aa190 | ||
|
|
a820300f04 | ||
|
|
68707560b9 | ||
|
|
bb5b6fac17 | ||
|
|
584eb094f3 | ||
|
|
b9b1a76d71 | ||
|
|
a40950fb8c | ||
|
|
a6fe4e9d6e | ||
|
|
6f06a499aa | ||
|
|
069770c411 | ||
|
|
1f5f7eb572 | ||
|
|
405ad6c121 | ||
|
|
ff6e94cee7 | ||
|
|
db6f273cba | ||
|
|
df3bace44b | ||
|
|
3f9a8be02c | ||
|
|
39eb08e3f2 | ||
|
|
22a4ef4f42 | ||
|
|
da0d2e22cc | ||
|
|
a80ef20da3 | ||
|
|
45fd11f641 | ||
|
|
cdc731a23b | ||
|
|
68a968a94c | ||
|
|
8604f4edf3 | ||
|
|
b1484b0c95 | ||
|
|
631986f7a2 | ||
|
|
db27e77303 | ||
|
|
5177779066 | ||
|
|
c4a764d81d | ||
|
|
2c5ae2bd86 | ||
|
|
b11d609ea0 | ||
|
|
b8170c4757 | ||
|
|
e42d6f8e4f | ||
|
|
e0c95bace9 | ||
|
|
8623223991 | ||
|
|
efdcc24067 | ||
|
|
ec18e40eb0 | ||
|
|
f9d970c730 | ||
|
|
590b02cc8e | ||
|
|
f2f75d3048 | ||
|
|
94466139f6 | ||
|
|
70aeff9ac5 | ||
|
|
7e56fe2ee0 | ||
|
|
599547d627 | ||
|
|
28600ea7f9 | ||
|
|
a73507c673 | ||
|
|
84b8d4cd09 | ||
|
|
b66aa3d634 | ||
|
|
508beaf62c | ||
|
|
e914afedf4 | ||
|
|
49c32d7fa1 | ||
|
|
aac106d37e | ||
|
|
8bd17a8093 | ||
|
|
b1f07f49ff | ||
|
|
86dddfd85f | ||
|
|
db733efc44 | ||
|
|
69f28bd35b | ||
|
|
4179788899 | ||
|
|
1654baa523 | ||
|
|
2163b9d580 | ||
|
|
8bec058e20 | ||
|
|
4aa2001f7b | ||
|
|
c741b4e1da | ||
|
|
e771794bc0 | ||
|
|
739452830d | ||
|
|
16deebb565 | ||
|
|
4411a75535 | ||
|
|
93bb9b50ae | ||
|
|
1f45372b24 | ||
|
|
5ec14502f8 | ||
|
|
7c0666e13c | ||
|
|
42d0a5334e | ||
|
|
8a4ae37247 | ||
|
|
c11b004e04 | ||
|
|
4d07757b83 | ||
|
|
bdc2f70785 | ||
|
|
768fe75e04 | ||
|
|
2ba54a41db | ||
|
|
e414fa4a0a | ||
|
|
da011f4957 | ||
|
|
38f42697cb | ||
|
|
3f5a8f579a | ||
|
|
5ebd77a1a1 | ||
|
|
1047db9990 | ||
|
|
83eae385b3 | ||
|
|
e2a334af91 | ||
|
|
7927cea105 | ||
|
|
029cdd5817 | ||
|
|
54e868a36c | ||
|
|
d099c2aa14 | ||
|
|
2f554bd046 | ||
|
|
310b2e1016 | ||
|
|
117f5e6678 | ||
|
|
49edf8e06d | ||
|
|
93a56e4bbc | ||
|
|
4533c2aac6 | ||
|
|
9cd3fe6b8c | ||
|
|
7e0f268b7c | ||
|
|
c03a6f46fb | ||
|
|
7888c1e0d9 | ||
|
|
c0dd1c6581 | ||
|
|
4f13cdeb76 | ||
|
|
a7aa42b851 | ||
|
|
5187e63329 | ||
|
|
4b89774206 | ||
|
|
46211aae44 | ||
|
|
3c241295ce | ||
|
|
e366962c65 | ||
|
|
a01fa84cae | ||
|
|
a22f76d8d6 | ||
|
|
dd5ecd09f2 | ||
|
|
1bd060936c | ||
|
|
0d03ef5758 | ||
|
|
498bfccfe8 | ||
|
|
de064aa582 | ||
|
|
54ce0d5b51 | ||
|
|
b2e495b3ac | ||
|
|
603e8cf5fc | ||
|
|
c3ae7cb0a7 | ||
|
|
a1b4eca6f2 | ||
|
|
f65fe87119 | ||
|
|
a4a9e1418e | ||
|
|
5e92735e27 | ||
|
|
4f27d492a1 | ||
|
|
7c6ef9b66c | ||
|
|
6bfd175781 | ||
|
|
1fc093a2ed | ||
|
|
969d865061 | ||
|
|
6a6c59bdf2 | ||
|
|
7adadd21a6 | ||
|
|
21394985b3 | ||
|
|
b55694624d | ||
|
|
cca9cafb7e | ||
|
|
950334aad3 | ||
|
|
ce578234f4 | ||
|
|
5daa4b1dc8 | ||
|
|
22a23a3f33 | ||
|
|
5d9196939f | ||
|
|
2e4cf566c7 | ||
|
|
a856b96b59 | ||
|
|
9eb5fdd805 | ||
|
|
bace7ec70c | ||
|
|
0bcf2fea7b | ||
|
|
60730c57cb | ||
|
|
3b61f8f6dd | ||
|
|
e6ca9f5c78 | ||
|
|
95beca8e05 | ||
|
|
7c4fe831b3 | ||
|
|
e4da3780f5 | ||
|
|
998f01a584 | ||
|
|
d71644c209 | ||
|
|
70c390dea9 | ||
|
|
41d326d40f | ||
|
|
1dbf431e4d | ||
|
|
0c0d712869 | ||
|
|
73015c7a17 | ||
|
|
9baa1f9b23 | ||
|
|
190da8934f | ||
|
|
9d1031594e | ||
|
|
1d987c1569 | ||
|
|
ac225b1541 | ||
|
|
11375133ba | ||
|
|
91b209d0fa | ||
|
|
216860c573 | ||
|
|
c7579877a1 | ||
|
|
6c5354d17b | ||
|
|
c98bd1fb9b | ||
|
|
fe525e9483 | ||
|
|
6acea9b140 | ||
|
|
4beb573052 | ||
|
|
220e010193 | ||
|
|
865888824c | ||
|
|
583df110fd | ||
|
|
f204bd693e | ||
|
|
b6be1ca045 | ||
|
|
beb403a9f7 | ||
|
|
00f1187200 | ||
|
|
7ee490cc1b | ||
|
|
3dc0ae7a47 | ||
|
|
994a8b5c4a | ||
|
|
5cd2e7affe | ||
|
|
f29ffe4cd2 | ||
|
|
6c7d2ab3ad | ||
|
|
ab7b20871a | ||
|
|
6883418e22 | ||
|
|
32f7266a5f | ||
|
|
35db76e9cd | ||
|
|
4f6aa87b9f | ||
|
|
f5816e20dd | ||
|
|
e72ae59e49 | ||
|
|
f0c2fd82ca | ||
|
|
5a588c8268 | ||
|
|
2adc030d6f | ||
|
|
b0ca8ed2b7 | ||
|
|
f9d5c861ce | ||
|
|
9aaaa71ce9 | ||
|
|
73a971bde3 | ||
|
|
5942eb7b15 | ||
|
|
b97fea1841 | ||
|
|
33637229d6 | ||
|
|
af366fcdb2 | ||
|
|
c9089c5d51 | ||
|
|
3afc6a2da9 | ||
|
|
12d22e78bf | ||
|
|
bcf969e56f | ||
|
|
b3a95c0310 | ||
|
|
ae863ab6e4 | ||
|
|
688ca4e31d | ||
|
|
724b6dddd6 | ||
|
|
bf3b30eb2c | ||
|
|
4f0545dfc1 | ||
|
|
c1b9a81e12 | ||
|
|
029b6ed691 | ||
|
|
4fdefca33d | ||
|
|
e90ca145be | ||
|
|
bf3d3c308d | ||
|
|
bee2f3c6ef | ||
|
|
d4e13e4578 | ||
|
|
66486b019f | ||
|
|
6510204fe6 | ||
|
|
b4b736c0c4 | ||
|
|
c4e8c5811c | ||
|
|
804b2fc610 | ||
|
|
0a7487a144 | ||
|
|
4ae9de0628 | ||
|
|
04d0f717d8 | ||
|
|
b3ddda78a1 | ||
|
|
066e74be5f | ||
|
|
f9c2cf8e31 | ||
|
|
d3fc625299 | ||
|
|
905763b6e3 | ||
|
|
877b7bc217 | ||
|
|
d8b7f6a8de | ||
|
|
579d3b529f | ||
|
|
065a79adc3 | ||
|
|
5ed45ef414 | ||
|
|
ba671b3370 | ||
|
|
e975f20a6b | ||
|
|
70bdebd4a0 | ||
|
|
409078801e | ||
|
|
06fed7de52 | ||
|
|
da2428a9f9 | ||
|
|
83b6ae5229 | ||
|
|
4b7804cdfd | ||
|
|
d075b5212f | ||
|
|
636c8ce219 | ||
|
|
091d7fa3ec | ||
|
|
59356e5b52 | ||
|
|
882bf29e63 | ||
|
|
f3eef4dd6b | ||
|
|
898983c6e5 | ||
|
|
dae5d032fa | ||
|
|
ff76622796 | ||
|
|
a6fd11a243 | ||
|
|
cf983be44c | ||
|
|
1a72de0e85 | ||
|
|
bf70a1e80e | ||
|
|
512d797d4d | ||
|
|
4a46dd1dde | ||
|
|
7494cdc071 | ||
|
|
608184ef9e | ||
|
|
eb4d8a9b68 | ||
|
|
6b92ae383c | ||
|
|
5fee857c4a | ||
|
|
53b7139c30 | ||
|
|
83e864d667 | ||
|
|
b88297e6de | ||
|
|
4aa2f46011 | ||
|
|
1fb3c757e2 | ||
|
|
3f640b6c14 | ||
|
|
49eb57af00 | ||
|
|
6bd6a80e71 | ||
|
|
38b84f0fa5 | ||
|
|
1f46debd0c | ||
|
|
37998e76d1 | ||
|
|
80b5508533 | ||
|
|
a646cc8227 | ||
|
|
92692adf52 | ||
|
|
b2cfc2b99b | ||
|
|
86e08f6151 | ||
|
|
8d852eb2d1 | ||
|
|
8bef018911 | ||
|
|
5e13419c28 | ||
|
|
503a7ae18f | ||
|
|
dfb9638a38 | ||
|
|
8452b0675b | ||
|
|
930643706a | ||
|
|
a2eac1f721 | ||
|
|
6e994cd694 | ||
|
|
c82869c631 | ||
|
|
f5a94868c4 | ||
|
|
c5628d613b | ||
|
|
9509b1ffa8 | ||
|
|
c1dac8a21e | ||
|
|
950846df45 | ||
|
|
31d96e2dc6 | ||
|
|
031e96075e | ||
|
|
bf2caeac6c | ||
|
|
12e523b37e | ||
|
|
576c985d8f | ||
|
|
9365807f47 | ||
|
|
25ce10fa61 | ||
|
|
09c333501f | ||
|
|
c51b09ee3a | ||
|
|
4d82eace86 | ||
|
|
385b03a163 | ||
|
|
4b438afa69 | ||
|
|
66961b94da | ||
|
|
39b62e5942 | ||
|
|
5bb8ab3d95 | ||
|
|
8dfc23b61d | ||
|
|
c8769808b5 | ||
|
|
2fc106aa26 | ||
|
|
da0b725ff8 | ||
|
|
15703d66fb | ||
|
|
c68beeaa51 | ||
|
|
5ef8868916 | ||
|
|
24488cc985 | ||
|
|
1c9faaa1e6 | ||
|
|
ac32875b14 | ||
|
|
07c1dd29e0 | ||
|
|
bd93233c34 | ||
|
|
20aec2fbcf | ||
|
|
a149139143 | ||
|
|
c857d1abb7 | ||
|
|
dde9da7006 | ||
|
|
d18a1970e5 | ||
|
|
66b9aeec17 | ||
|
|
ea301a3923 | ||
|
|
ced272a783 | ||
|
|
c9f320da31 | ||
|
|
025873e66b | ||
|
|
ecddc40aa5 | ||
|
|
cb13a02b75 | ||
|
|
5714a9a1d3 | ||
|
|
d0671c1682 | ||
|
|
88b3ac42bb | ||
|
|
4ecf3dec76 | ||
|
|
b4b70ca7e5 | ||
|
|
d3aa68df05 | ||
|
|
36aa0518ed | ||
|
|
b1c5692322 | ||
|
|
db24edf7d5 | ||
|
|
798a576d0b | ||
|
|
b49225fbf7 | ||
|
|
439cf82fcc | ||
|
|
7527bf4761 |
@@ -1,13 +1,17 @@
|
||||
### 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`)
|
||||
|
||||
### OS version (e.g. `uname -a`)
|
||||
#### demo对比结果
|
||||
请用demo对比测试,demo上是什么状态。
|
||||
|
||||
+11
@@ -49,5 +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
|
||||
|
||||
@@ -1,18 +1,19 @@
|
||||
## 野火IM解决方案
|
||||
|
||||
野火IM是一套跨平台、全开源的即时通讯解决方案,主要包含以下内容。
|
||||
野火IM是一套跨平台、核心功能开源的即时通讯解决方案,主要包含以下内容。
|
||||
|
||||
| 仓库 | 说明 | 备注 |
|
||||
| ------------------------------------------------------------ | ------------------------------------------------------- | ---------------------------------------------- |
|
||||
| [android-chat](https://github.com/wildfirechat/android-chat) | 野火IM Android SDK源码和App源码 | 可以很方便地进行二次开发,或集成到现有应用当中 |
|
||||
| [ios-chat](https://github.com/wildfirechat/ios-chat) | 野火IM iOS SDK源码和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相关文档,包含设计、概念、开发、使用说明 | |
|
||||
| 仓库 | 说明 | 备注 |
|
||||
| ------------------------------------------------------------ | ------------------------------------------------------- | ---- |
|
||||
| [android-chat](https://github.com/wildfirechat/android-chat) | 野火IM Android SDK源码和App源码 |可以很方便地进行二次开发,或集成到现有应用当中 |
|
||||
| [ios-chat](https://github.com/wildfirechat/ios-chat) | 野火IM iOS SDK源码和App源码 |可以很方便地进行二次开发,或集成到现有应用当中 |
|
||||
| [pc-chat](https://github.com/wildfirechat/pc-chat) | 基于[Electron](https://electronjs.org/)开发的PC平台应用 | |
|
||||
| [web-chat](https://github.com/wildfirechat/web-chat) | Web平台的Demo, [体验地址](http://web.wildfirechat.cn) | |
|
||||
| [wx-chat](https://github.com/wildfirechat/wx-chat) | 微信小程序平台的Demo | |
|
||||
| [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)
|
||||
@@ -20,14 +21,23 @@
|
||||
|
||||
开发一套IM系统真的很艰辛,请路过的朋友们给点个star,支持我们坚持下去🙏🙏🙏🙏🙏
|
||||
|
||||
|
||||
### 联系我们
|
||||
问题讨论请加群:822762829
|
||||
|
||||
微信公众号:
|
||||
> 商务合作请优先采用邮箱和我们联系。技术问题请到[野火IM论坛](http://bbs.wildfirechat.cn/)发帖交流
|
||||
|
||||
1. heavyrain.lee 邮箱: heavyrain.lee@wildfirechat.cn 微信:wildfirechat
|
||||
2. imndx 邮箱: imndx@wildfirechat.cn 微信:wfchat
|
||||
|
||||
### 问题交流
|
||||
|
||||
1. 如果大家发现bug,请在GitHub提issue
|
||||
2. 其他问题,请到[野火IM论坛](http://bbs.wildfirechat.cn/)进行交流学习
|
||||
3. 微信公众号
|
||||
|
||||
<img src="http://static.wildfirechat.cn/wx_wfc_qrcode.jpg" width = 50% height = 50% />
|
||||
|
||||
> 强烈建议关注我们的公众号。我们有新版本发布或者有重大更新会通过公众号通知大家,另外我们也会不定期的发布一些关于野火IM的技术介绍。
|
||||
|
||||
#### 体验Demo
|
||||
我们提供了体验demo,请使用微信扫码下载安装体验
|
||||
|
||||
@@ -58,6 +68,11 @@
|
||||
|
||||
## 编译
|
||||
在安装JDK1.8以上及maven的前提下,在命令行中执行```mvn clean compile package```,生成的目标文件在```./distribution/target/distribution-xxxx-bundle-tar.tar.gz```
|
||||
> 由于使用了一个git的maven插件,如果本地没有git信息就会编译出错,请使用```git clone```的方法下载代码,或者下载压缩包解压后在根目录创建```.git```的空目录。建议用```git clone```的方式下载代码。
|
||||
|
||||
## 升级说明
|
||||
1. 从0.42 版本增加了群成员数限制,默认为2000。如果您从之前的版本升级到这个版本或以后,需要注意到群成员数的限制。升级之后超出限制的群不受影响,但不能继续加人,如果您想修改默认值,可以在升级版本之后,修改t_setting表,把默认的大小改为您期望的人数。另外修改t_group表,把已经存在的群组max_member_count改成您期望的,然后重启。
|
||||
2. 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版本之外的版本不会出现此问题。
|
||||
|
||||
## 特别感谢
|
||||
1. [moquette](https://github.com/moquette-io/moquette) 本项目是基于此项目二次开发而来,处理MQTT相关业务。
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
|
||||
<!-- # 本配置文件为debug使用,修改这里不会在Release包中生效。Release中包含的配置文件在 ${Porject_Path}/distribution/src/main/resources目录下-->
|
||||
|
||||
|
||||
<hazelcast
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.hazelcast.com/schema/config
|
||||
@@ -57,6 +61,15 @@
|
||||
</map-store>
|
||||
</map>
|
||||
|
||||
<map name="user_friends_empty">
|
||||
<time-to-live-seconds>86400</time-to-live-seconds>
|
||||
<eviction-policy>LRU</eviction-policy>
|
||||
<max-size policy="PER_NODE">1000000</max-size>
|
||||
<eviction-percentage>10</eviction-percentage>
|
||||
</map>
|
||||
|
||||
|
||||
|
||||
<set name="node_ids"/>
|
||||
|
||||
<multimap name="user_setting">
|
||||
@@ -77,6 +90,12 @@
|
||||
<map name="user_chatroom">
|
||||
</map>
|
||||
|
||||
<multimap name="chatroom_black">
|
||||
</multimap>
|
||||
|
||||
<multimap name="chatroom_manager">
|
||||
</multimap>
|
||||
|
||||
<map name="robots">
|
||||
<!-- 7 days -->
|
||||
<time-to-live-seconds>604800</time-to-live-seconds>
|
||||
@@ -88,14 +107,23 @@
|
||||
<write-delay-seconds>0</write-delay-seconds>
|
||||
</map-store>
|
||||
</map>
|
||||
|
||||
<map name="things">
|
||||
|
||||
<map name="devices">
|
||||
<!-- 7 days -->
|
||||
<time-to-live-seconds>604800</time-to-live-seconds>
|
||||
<eviction-policy>LRU</eviction-policy>
|
||||
<max-size policy="PER_NODE">1000000</max-size>
|
||||
<eviction-percentage>10</eviction-percentage>
|
||||
<map-store enabled="true">
|
||||
<class-name>io.moquette.persistence.DeviceLoader</class-name>
|
||||
<write-delay-seconds>0</write-delay-seconds>
|
||||
</map-store>
|
||||
</map>
|
||||
|
||||
<multimap name="user_robots">
|
||||
</multimap>
|
||||
|
||||
<multimap name="user_things">
|
||||
<multimap name="user_devices">
|
||||
</multimap>
|
||||
|
||||
<multimap name="chatroom_members">
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
#native2ascii -encoding UTF-8 messages.properties temp_messages.properties
|
||||
Above_Greeting_Message=\u4ee5\u4e0a\u662f\u6253\u62db\u547c\u4fe1\u606f
|
||||
Friend_Can_Start_Chat=\u4f60\u4eec\u5df2\u7ecf\u6210\u4e3a\u597d\u53cb\u4e86\uff0c\u73b0\u5728\u53ef\u4ee5\u5f00\u59cb\u804a\u5929\u4e86
|
||||
@@ -0,0 +1,2 @@
|
||||
Above_Greeting_Message=This's the greeting
|
||||
Friend_Can_Start_Chat=You're already friend, start chat now.
|
||||
@@ -0,0 +1,2 @@
|
||||
Above_Greeting_Message=This's the greeting
|
||||
Friend_Can_Start_Chat=You're already friend, start chat now.
|
||||
@@ -0,0 +1,2 @@
|
||||
Above_Greeting_Message=\u4ee5\u4e0a\u662f\u6253\u62db\u547c\u4fe1\u606f
|
||||
Friend_Can_Start_Chat=\u4f60\u4eec\u5df2\u7ecf\u6210\u4e3a\u597d\u53cb\u4e86\uff0c\u73b0\u5728\u53ef\u4ee5\u5f00\u59cb\u804a\u5929\u4e86
|
||||
@@ -0,0 +1,2 @@
|
||||
Above_Greeting_Message=\u4ee5\u4e0a\u662f\u6253\u62db\u547c\u4fe1\u606f
|
||||
Friend_Can_Start_Chat=\u4f60\u4eec\u5df2\u7ecf\u6210\u4e3a\u597d\u53cb\u4e86\uff0c\u73b0\u5728\u53ef\u4ee5\u5f00\u59cb\u804a\u5929\u4e86
|
||||
+137
-10
@@ -1,8 +1,17 @@
|
||||
#
|
||||
#
|
||||
# 本配置文件为debug使用,修改这里不会在Release包中生效。Release中包含的配置文件在 ${Porject_Path}/distribution/src/main/resources目录下
|
||||
#
|
||||
#
|
||||
|
||||
|
||||
|
||||
#*********************************************************************
|
||||
# Server configuration
|
||||
#*********************************************************************
|
||||
#服务器的接入IP。给客户端提供是${server.ip}和${http_port}。
|
||||
#客户端会从${http_port}端口获取到长链接端口。
|
||||
#客户端会从${http_port}端口获取到长链接端口。这个地址一定要改成客户端可以访问到的IP地址
|
||||
# (如果您部署云服务器上或者具有独立公网出口的服务器上,请改为对应的公网IP;如果您部署在在内网环境下,在内网使用,这个地方改成内网地址)
|
||||
server.ip 0.0.0.0
|
||||
|
||||
##原生客户端长链接端口
|
||||
@@ -26,7 +35,7 @@ host 0.0.0.0
|
||||
##本地绑定端口
|
||||
local_port 80
|
||||
|
||||
##是否使用内置DB。0使用mysql;1使用h2db
|
||||
##是否使用内置DB。0使用mysql;1使用h2db;2使用mysql+mongodb。社区版只支持0和1,专业版支持2
|
||||
embed.db 1
|
||||
|
||||
##服务器管理接口密钥
|
||||
@@ -34,6 +43,7 @@ http.admin.secret_key 123456
|
||||
|
||||
##服务器API接口参数是否检查时间。当设置为false时,所有的请求会检查时间的有效性;当设置为true时,可以在http.admin.secret_key保持不变的情况下,使用固定的服务API签名
|
||||
##nonce = "76616", timestamp = "1558350862502", sign = "b98f9b0717f59febccf1440067a7f50d9b31bdde"
|
||||
##这个地方上线前要改为false
|
||||
http.admin.no_check_time true
|
||||
|
||||
##客户端协议栈密钥,需要与客户端协议栈文件libemqq.cc文件中的aes_key值保持一致,16进制byte用逗号分割。这个密钥对安全性帮助不大,客户不要修改
|
||||
@@ -42,6 +52,73 @@ client.proto.secret_key 0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x78,0x79,0x7A,0
|
||||
##用来生产im token的私钥,只在服务器使用,客户端不用。正式使用时为了安全一定要修改这个值,切记切记
|
||||
token.key testim
|
||||
|
||||
##token的过期时间,单位为毫秒,默认为无限期。如果需要设置无限期,客户端上一定需要加上token过期的处理。token过期的处理请参考文档的常见问题
|
||||
##token.expire_time 2592000000
|
||||
|
||||
##首次登录,是否接收之前的历史消息。
|
||||
##0 不接收历史消息,只接收5分钟以内的消息,由于服务器没有保存已经收取记录,所以如果有超过5分钟之前未收取的消息也不会收取下拉;
|
||||
##1接收,会接收 message.max_queue 配置的条数的历史消息
|
||||
message.roaming 0
|
||||
|
||||
##是否开启拉取远程历史消息。如果为1,客户端在会话内如果本地消息读取完了,可以下拉继续加载在服务器上的该会话的消息;如果为0则不能。
|
||||
message.remote_history_message 0
|
||||
|
||||
##服务器为每个用户缓存的消息数量。这个值改得太大,拉取消息时间变长,另外会占用大量内存。
|
||||
message.max_queue 1024
|
||||
|
||||
##是否禁止陌生人聊天
|
||||
message.disable_stranger_chat false
|
||||
|
||||
##黑名单策略,0 发送失败,返回被拉黑的错误码;1 发送成功但消息被服务器直接丢弃
|
||||
message.blacklist.strategy 0
|
||||
|
||||
##是否禁止服务器端消息搜索,该功能暂未实现。目前的影响是如果打开,则存储消息时不单独保存_searchable_content字段
|
||||
message.disable_remote_search false
|
||||
|
||||
##允许客户端撤回消息时限,单位是秒。群组管理员或群主撤回群成员消息、server api不受此限制,可以撤回任意时限内的消息
|
||||
message.recall_time_limit 120
|
||||
|
||||
## 禁止客户端发送消息类型,消息类型以逗号分开,下面3个值为示例,可以删除。
|
||||
## 一般用于重要类型消息,比如交易、充值等,禁止客户端发送,仅限于服务器发送,提高安全性。
|
||||
message.forbidden_client_send_types 3999,4000,4001
|
||||
|
||||
##禁止搜索用户
|
||||
friend.disable_search false
|
||||
|
||||
##禁止按照昵称搜索用户。
|
||||
friend.disable_nick_name_search false
|
||||
|
||||
##禁止发送好友邀请,通过server api添加好友不受此限制
|
||||
friend.disable_friend_request false
|
||||
|
||||
##好友请求重复发送的间隔,单位是毫秒,默认是7天,0为不限制
|
||||
friend.repeat_request_duration 604800000
|
||||
|
||||
##好友请求被拒绝后再次发送的间隔,单位是毫秒,默认是30天,0为不限制
|
||||
friend.reject_request_duration 2592000000
|
||||
|
||||
##好友请求过期时间,单位是毫秒,默认是7天,0为不限制
|
||||
friend.request_expiration_duration 604800000
|
||||
|
||||
##添加好友后会发送欢迎消息,比如"你们已经是好友了,可以聊天了"。这个开关控制是用旧的方式还是用新的方式。
|
||||
##旧的方式会发送notification消息(contenttype是80),内容会根据好友接收者的语言选择对应的语言,如果双方语言不一致会导致另外一方看到的不是本地语言。
|
||||
##新的方式会发送添加好友消息(contenttype是93)和欢迎消息(contenttype是92),需要客户端实现这两种消息。
|
||||
##如果客户端已经实现这两种消息可以打开这个开关
|
||||
friend.new_welcome_message false
|
||||
|
||||
## 聊天室观众空闲退出时间,单位为毫秒,默认为15分钟,0为永远不退出
|
||||
chatroom.participant_idle_time 900000
|
||||
|
||||
## 用户向聊天室发送消息,自动加入聊天室
|
||||
chatroom.rejoin_when_active true
|
||||
|
||||
## 是否允许客户端发送操作群的自定义群通知消息
|
||||
group.allow_client_custom_operation_notification false
|
||||
|
||||
## 当群成员退出或者被移除时,是否同时给管理员和相关人员发送显式通知消息。
|
||||
## 0 不发送,1 退群时发送,2 踢人时发送,3 退群和踢人时都发送。
|
||||
group.visible_quit_or_kickoff_notification 0
|
||||
|
||||
#*********************************************************************
|
||||
# hazelcase configuration
|
||||
#*********************************************************************
|
||||
@@ -50,7 +127,8 @@ hazelcast.configuration config/hazelcast.xml
|
||||
#*********************************************************************
|
||||
# Media server configuration
|
||||
#*********************************************************************
|
||||
##是否使用七牛云存储。1使用七牛;0使用内存文件服务器。
|
||||
##是否使用七牛云存储。1使用七牛;0使用内存文件服务器。默认的七牛账户信息不可用,请在七牛官网申请账户并配置
|
||||
## https://docs.wildfirechat.cn/server/media_server.html
|
||||
media.server.use_qiniu 0
|
||||
|
||||
##媒体类型分类
|
||||
@@ -76,6 +154,10 @@ qiniu.bucket_video_name media
|
||||
qiniu.bucket_video_domain http://pghnpyzos.bkt.clouddn.com
|
||||
qiniu.bucket_file_name media
|
||||
qiniu.bucket_file_domain http://pghnpyzos.bkt.clouddn.com
|
||||
qiniu.bucket_sticker_name media
|
||||
qiniu.bucket_sticker_domain http://pghnpyzos.bkt.clouddn.com
|
||||
qiniu.bucket_moments_name media
|
||||
qiniu.bucket_moments_domain http://pghnpyzos.bkt.clouddn.com
|
||||
qiniu.bucket_portrait_name storage
|
||||
qiniu.bucket_portrait_domain http://cdn2.wildfirechat.cn
|
||||
qiniu.bucket_favorite_name storage
|
||||
@@ -86,23 +168,68 @@ qiniu.bucket_favorite_domain http://cdn2.wildfirechat.cn
|
||||
# 本地媒体服务器配置。
|
||||
local.media.storage.root media
|
||||
|
||||
# 是否支持多端登陆,为true时支持任意平台任意多个客户端同时登录;为false时每个平台只支持一个端登录,但不同平台可以同时登录。
|
||||
server.multi_endpoint false
|
||||
|
||||
# 多平台连接状态通知(仅当multi_endpoint为false时有效),true时移动端可以收到pc或web端登录的通知。
|
||||
server.multi_platform_notification false
|
||||
|
||||
#*********************************************************************
|
||||
# Push server configuration
|
||||
#*********************************************************************
|
||||
##安卓推送服务器地址
|
||||
##注意回调是单线程回调,接收服务必须在同一内网,且异步处理快速返回,否则会有延迟问题!!
|
||||
push.android.server.address http://localhost:8085/android/push
|
||||
|
||||
##苹果推送服务器地址
|
||||
##注意回调是单线程回调,接收服务必须在同一内网,且异步处理快速返回,否则会有延迟问题!!
|
||||
push.ios.server.address http://localhost:8085/ios/push
|
||||
|
||||
#*********************************************************************
|
||||
# 各种事件回调
|
||||
#*********************************************************************
|
||||
##用户在线状态事件回调地址
|
||||
##注意回调是单线程回调,接收服务必须在同一内网,且异步处理快速返回,否则会有延迟问题!!
|
||||
#user.online_status_callback http://localhost:8888/im_event/user/online
|
||||
|
||||
##用户信息变动事件回调地址
|
||||
##注意回调是单线程回调,接收服务必须在同一内网,且异步处理快速返回,否则会有延迟问题!!
|
||||
#relation.relation_update_callback http://localhost:8888/im_event/user/relation
|
||||
|
||||
##用户信息变动事件回调地址
|
||||
##注意回调是单线程回调,接收服务必须在同一内网,且异步处理快速返回,否则会有延迟问题!!
|
||||
#user.user_info_update_callback http://localhost:8888/im_event/user/info
|
||||
|
||||
##消息转发地址
|
||||
##注意回调是单线程回调,接收服务必须在同一内网,且异步处理快速返回,否则会有延迟问题!!
|
||||
#message.forward.url http://localhost:8888/im_event/message
|
||||
|
||||
##设备信息转发地址
|
||||
##注意回调是单线程回调,接收服务必须在同一内网,且异步处理快速返回,否则会有延迟问题!!
|
||||
#things_message.forward.url http://localhost:8888/im_event/things/message
|
||||
|
||||
##群组信息变动事件回调地址
|
||||
##注意回调是单线程回调,接收服务必须在同一内网,且异步处理快速返回,否则会有延迟问题!!
|
||||
#group.group_info_update_callback http://localhost:8888/im_event/group/info
|
||||
|
||||
##群组信息变动事件回调地址
|
||||
##注意回调是单线程回调,接收服务必须在同一内网,且异步处理快速返回,否则会有延迟问题!!
|
||||
#group.group_member_update_callback http://localhost:8888/im_event/group/member
|
||||
|
||||
##频道信息变动回调地址
|
||||
##注意回调是单线程回调,接收服务必须在同一内网,且异步处理快速返回,否则会有延迟问题!!
|
||||
#channel.channel_info_update_callback http://localhost:8888/im_event/channel/info
|
||||
|
||||
##聊天室信息变动回调地址
|
||||
##注意回调是单线程回调,接收服务必须在同一内网,且异步处理快速返回,否则会有延迟问题!!
|
||||
#chatroom.chatroom_info_update_callback http://localhost:8888/im_event/chatroom/info
|
||||
|
||||
##聊天室成员变动回调地址
|
||||
##注意回调是单线程回调,接收服务必须在同一内网,且异步处理快速返回,否则会有延迟问题!!
|
||||
#chatroom.chatroom_member_update_callback http://localhost:8888/im_event/chatroom/member
|
||||
|
||||
#*********************************************************************
|
||||
# Sensitive configuration
|
||||
#*********************************************************************
|
||||
##文本敏感词过滤处理方法,0 发送失败;1 发送成功但消息被服务器直接丢弃;2 命中的敏感词被替换成***
|
||||
##文本敏感词过滤处理方法,0 发送失败;1 发送成功但消息被服务器直接丢弃;2 命中的敏感词被替换成***;3 记录并继续发送
|
||||
sensitive.filter.type 0
|
||||
|
||||
#*********************************************************************
|
||||
# Message forward configuration
|
||||
#*********************************************************************
|
||||
##消息转发地址
|
||||
#message.forward.url http://localhost:8087/message/forward
|
||||
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
|
||||
insert into t_user (`_uid`,`_name`,`_display_name`,`_type`,`_dt`) values ('admin','admin','系统管理员',3,1);
|
||||
|
||||
+1
@@ -0,0 +1 @@
|
||||
ALTER TABLE t_user_session MODIFY _token VARCHAR(240) DEFAULT NULL;
|
||||
@@ -0,0 +1,4 @@
|
||||
alter table `t_group` add column `_mute` tinyint NOT NULL DEFAULT 0;
|
||||
alter table `t_group` add column `_join_type` tinyint NOT NULL DEFAULT 0;
|
||||
alter table `t_group` add column `_private_chat` tinyint NOT NULL DEFAULT 0;
|
||||
alter table `t_group` add column `_searchable` tinyint NOT NULL DEFAULT 0;
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
|
||||
DROP TABLE IF EXISTS `t_settings`;
|
||||
CREATE TABLE `t_settings` (
|
||||
`id` int(11) NOT NULL PRIMARY KEY,
|
||||
`value` varchar(64) NOT NULL,
|
||||
`desc` varchar(128) NOT NULL
|
||||
);
|
||||
|
||||
|
||||
insert into t_settings(`id`, `value`,`desc`) values (1, '3000', '最大群成员数量');
|
||||
@@ -0,0 +1 @@
|
||||
alter table `t_sensitiveword` add column `id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT;
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
alter table `t_user_session` modify column `_voip_token` varchar(240) DEFAULT '';
|
||||
|
||||
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
alter table t_friend add column `_blacked` tinyint DEFAULT 0;
|
||||
update t_friend set `_blacked` = 1 where `_state` = 2;
|
||||
@@ -0,0 +1 @@
|
||||
alter table `t_user_session` ADD INDEX `session_token_index` ( `_token` );
|
||||
+1
@@ -0,0 +1 @@
|
||||
alter table t_friend_request add index `friend_request_uid_index` (`_friend_uid`);
|
||||
@@ -0,0 +1 @@
|
||||
alter table `t_user_session` ADD INDEX `session_uid_index` ( `_uid` );
|
||||
+1
@@ -0,0 +1 @@
|
||||
alter table `t_user_session` add column `_deleted` tinyint DEFAULT 0;
|
||||
Executable
+1
@@ -0,0 +1 @@
|
||||
alter table `t_user` add column `_deleted` tinyint DEFAULT 0;
|
||||
+1
@@ -0,0 +1 @@
|
||||
update t_channel set `_status` = 64 where `_status` = 3;
|
||||
@@ -0,0 +1,2 @@
|
||||
alter table t_messages add column `_to` varchar(64) DEFAULT NULL;
|
||||
|
||||
Executable
+1
@@ -0,0 +1 @@
|
||||
alter table t_friend add column `_extra` TEXT DEFAULT NULL;
|
||||
@@ -0,0 +1,22 @@
|
||||
|
||||
DROP TABLE IF EXISTS `t_chatroom_blacklist`;
|
||||
CREATE TABLE `t_chatroom_blacklist` (
|
||||
`id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
|
||||
`_cid` varchar(64) NOT NULL,
|
||||
`_uid` varchar(64) NOT NULL,
|
||||
`_state` tinyint NOT NULL DEFAULT 0,
|
||||
`_expired_time` bigint(20) NOT NULL,
|
||||
`_dt` bigint(20) NOT NULL,
|
||||
UNIQUE INDEX `cr_bl_uid_index` (`_cid`,_uid)
|
||||
);
|
||||
|
||||
DROP TABLE IF EXISTS `t_chatroom_manager`;
|
||||
CREATE TABLE `t_chatroom_manager` (
|
||||
`id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
|
||||
`_cid` varchar(64) NOT NULL,
|
||||
`_uid` varchar(64) NOT NULL,
|
||||
`_state` tinyint NOT NULL DEFAULT 0,
|
||||
`_dt` bigint(20) NOT NULL,
|
||||
UNIQUE INDEX `cr_man_uid_index` (`_cid`,_uid)
|
||||
);
|
||||
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
alter table `t_user_messages` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages` ADD INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
|
||||
DROP TABLE IF EXISTS `t_thing`;
|
||||
|
||||
DROP TABLE IF EXISTS `t_device`;
|
||||
CREATE TABLE `t_device` (
|
||||
`id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
|
||||
`_uid` varchar(64) NOT NULL,
|
||||
`_token` varchar(64) DEFAULT '',
|
||||
`_state` tinyint DEFAULT 0,
|
||||
`_extra` TEXT DEFAULT NULL,
|
||||
`_dt` bigint(20) NOT NULL,
|
||||
UNIQUE INDEX `device_uid_index` (`_uid` ASC)
|
||||
);
|
||||
|
||||
DROP TABLE IF EXISTS `t_user_device`;
|
||||
CREATE TABLE `t_user_device` (
|
||||
`id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
|
||||
`_uid` varchar(64) NOT NULL,
|
||||
`_did` varchar(64) DEFAULT '',
|
||||
INDEX `user_device_uid_index` (`_uid` ASC),
|
||||
INDEX `user_device_did_index` (`_did` ASC)
|
||||
);
|
||||
+1
@@ -0,0 +1 @@
|
||||
alter table t_user_session add column `_user_type` tinyint DEFAULT 0;
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
|
||||
DROP TABLE IF EXISTS `t_read_report`;
|
||||
CREATE TABLE `t_read_report` (
|
||||
`id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
|
||||
`_uid` varchar(64) NULL,
|
||||
`_type` tinyint NULL,
|
||||
`_line` int(11) NULL,
|
||||
`_target` varchar(64) NULL,
|
||||
`_dt` bigint(20) NOT NULL DEFAULT 0,
|
||||
INDEX `read_report_index` (`_uid`, `_type`, `_line`, `_target`)
|
||||
);
|
||||
|
||||
DROP TABLE IF EXISTS `t_user_read_report`;
|
||||
CREATE TABLE `t_user_read_report` (
|
||||
`id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
|
||||
`_rid` int(11) NOT NULL,
|
||||
`_uid` varchar(64) NOT NULL,
|
||||
`_seq` bigint(20) NOT NULL,
|
||||
`_dt` DATETIME NOT NULL DEFAULT NOW(),
|
||||
INDEX `user_read_report_index` (`_uid` DESC, `_seq` DESC),
|
||||
UNIQUE INDEX `user_read_report_index2` (`_uid` DESC, `_rid` DESC)
|
||||
);
|
||||
|
||||
DROP TABLE IF EXISTS `t_delivery_report`;
|
||||
CREATE TABLE `t_delivery_report` (
|
||||
`id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
|
||||
`_uid` varchar(64) NOT NULL,
|
||||
`_dt` bigint(20) NOT NULL,
|
||||
UNIQUE INDEX `delivery_index` (`_uid`)
|
||||
);
|
||||
|
||||
|
||||
DROP TABLE IF EXISTS `t_user_delivery_report`;
|
||||
CREATE TABLE `t_user_delivery_report` (
|
||||
`id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
|
||||
`_rid` varchar(64) NOT NULL,
|
||||
`_uid` varchar(64) NOT NULL,
|
||||
`_seq` bigint(20) NOT NULL,
|
||||
`_dt` DATETIME NOT NULL DEFAULT NOW(),
|
||||
INDEX `user_delivery_index` (`_uid` DESC, `_seq` DESC),
|
||||
UNIQUE INDEX `user_delivery_index2` (`_uid` DESC, `_rid` DESC)
|
||||
);
|
||||
@@ -0,0 +1 @@
|
||||
alter table t_group_member add column `_create_dt` bigint(20) DEFAULT 0;
|
||||
@@ -0,0 +1,2 @@
|
||||
alter table `t_group` add column `_history_message` tinyint NOT NULL DEFAULT 0;
|
||||
alter table `t_group` add column `_max_member_count` int(11) NOT NULL DEFAULT 2000;
|
||||
@@ -0,0 +1,2 @@
|
||||
alter table `t_settings` change column `value` `_value` varchar(64) NOT NULL;
|
||||
alter table `t_settings` change column `desc` `_desc` varchar(64) NOT NULL;
|
||||
@@ -0,0 +1 @@
|
||||
alter table `t_group` modify column `_searchable` int(11) NOT NULL DEFAULT 0;
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
DROP TABLE IF EXISTS `t_file`;
|
||||
CREATE TABLE `t_file` (
|
||||
`_mid` bigint(20) NOT NULL PRIMARY KEY,
|
||||
`_from` varchar(64) NOT NULL,
|
||||
`_type` tinyint NOT NULL DEFAULT 0,
|
||||
`_target` varchar(64) NOT NULL,
|
||||
`_line` int(11) NOT NULL DEFAULT 0,
|
||||
`_name` varchar(128) DEFAULT '',
|
||||
`_url` varchar(1024) NOT NULL DEFAULT '',
|
||||
`_size` int(11) NOT NULL DEFAULT 0,
|
||||
`_download_count` int(11) DEFAULT 0,
|
||||
`_dt` bigint(20) NOT NULL,
|
||||
INDEX `file_conv_index` (`_type`, `_line`, `_target`, `_mid`),
|
||||
INDEX `file_user_index` (`_from`, `_mid`)
|
||||
);
|
||||
@@ -0,0 +1,3 @@
|
||||
|
||||
insert into t_user (`_uid`,`_name`,`_display_name`,`_portrait`,`_type`,`_dt`) values ('wfc_file_transfer','wfc_file_transfer','文件传输助手','https://static.wildfirechat.cn/wfc_file_transfer.png',1,1);
|
||||
insert into t_robot (`_uid`,`_owner`,`_secret`,`_callback`,`_state`,`_dt`) values ('wfc_file_transfer', 'wfc_file_transfer', '', '', 0, 1);
|
||||
@@ -0,0 +1,2 @@
|
||||
alter table t_user add column `_createTime` TIMESTAMP default CURRENT_TIMESTAMP;
|
||||
alter table t_group add column `_createTime` TIMESTAMP default CURRENT_TIMESTAMP;
|
||||
@@ -0,0 +1 @@
|
||||
alter table `t_messages` add column `_content_type` int(11) NOT NULL DEFAULT '0';
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
|
||||
DROP TABLE IF EXISTS `t_sensitive_messages`;
|
||||
CREATE TABLE `t_sensitive_messages` (
|
||||
`id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
|
||||
`_mid` bigint(20) NOT NULL,
|
||||
`_from` varchar(64) NOT NULL,
|
||||
`_type` tinyint NOT NULL DEFAULT 0,
|
||||
`_target` varchar(64) NOT NULL,
|
||||
`_line` int(11) NOT NULL DEFAULT 0,
|
||||
`_data` BLOB NOT NULL,
|
||||
`_searchable_key` TEXT DEFAULT NULL,
|
||||
`_dt` DATETIME NOT NULL DEFAULT NOW(),
|
||||
`_content_type` int(11) NOT NULL DEFAULT 0,
|
||||
UNIQUE INDEX `sensitive_message_uid_index` (`_mid` ASC)
|
||||
);
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
|
||||
insert into t_user (`_uid`,`_name`,`_display_name`,`_type`,`_dt`) values ('admin','admin','系统管理员',3,1);
|
||||
|
||||
+1
@@ -0,0 +1 @@
|
||||
ALTER TABLE t_user_session MODIFY _token VARCHAR(240) DEFAULT NULL;
|
||||
@@ -0,0 +1,4 @@
|
||||
alter table `t_group` add column `_mute` tinyint NOT NULL DEFAULT 0;
|
||||
alter table `t_group` add column `_join_type` tinyint NOT NULL DEFAULT 0;
|
||||
alter table `t_group` add column `_private_chat` tinyint NOT NULL DEFAULT 0;
|
||||
alter table `t_group` add column `_searchable` tinyint NOT NULL DEFAULT 0;
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
|
||||
DROP TABLE IF EXISTS `t_session`;
|
||||
CREATE TABLE `t_session` (
|
||||
`row_id` varchar(50) not null primary key,
|
||||
`del_flag` tinyint(1) default 0 null,
|
||||
`create_time` timestamp null,
|
||||
`update_time` timestamp null,
|
||||
`expire_time` timestamp null,
|
||||
`user_id` int null,
|
||||
constraint `t_session_pk_2` unique (`user_id`, `expire_time`)
|
||||
)
|
||||
ENGINE = InnoDB
|
||||
DEFAULT CHARACTER SET = utf8mb4
|
||||
COLLATE = utf8mb4_unicode_ci;
|
||||
@@ -0,0 +1,2 @@
|
||||
alter table t_user MODIFY column `_createTime` DATETIME NOT NULL DEFAULT NOW();
|
||||
alter table t_group MODIFY column `_createTime` DATETIME NOT NULL DEFAULT NOW();
|
||||
@@ -0,0 +1,4 @@
|
||||
alter table t_session MODIFY column `create_time` DATETIME NOT NULL DEFAULT NOW();
|
||||
alter table t_session MODIFY column `update_time` DATETIME NOT NULL DEFAULT NOW();
|
||||
alter table t_session MODIFY column `expire_time` DATETIME NOT NULL DEFAULT NOW();
|
||||
|
||||
+40
@@ -0,0 +1,40 @@
|
||||
update t_messages_0 set _dt = date_add(_dt, interval 8 hour);
|
||||
update t_messages_1 set _dt = date_add(_dt, interval 8 hour);
|
||||
update t_messages_2 set _dt = date_add(_dt, interval 8 hour);
|
||||
update t_messages_3 set _dt = date_add(_dt, interval 8 hour);
|
||||
update t_messages_4 set _dt = date_add(_dt, interval 8 hour);
|
||||
update t_messages_5 set _dt = date_add(_dt, interval 8 hour);
|
||||
update t_messages_6 set _dt = date_add(_dt, interval 8 hour);
|
||||
update t_messages_7 set _dt = date_add(_dt, interval 8 hour);
|
||||
update t_messages_8 set _dt = date_add(_dt, interval 8 hour);
|
||||
update t_messages_9 set _dt = date_add(_dt, interval 8 hour);
|
||||
|
||||
update t_messages_10 set _dt = date_add(_dt, interval 8 hour);
|
||||
update t_messages_11 set _dt = date_add(_dt, interval 8 hour);
|
||||
update t_messages_12 set _dt = date_add(_dt, interval 8 hour);
|
||||
update t_messages_13 set _dt = date_add(_dt, interval 8 hour);
|
||||
update t_messages_14 set _dt = date_add(_dt, interval 8 hour);
|
||||
update t_messages_15 set _dt = date_add(_dt, interval 8 hour);
|
||||
update t_messages_16 set _dt = date_add(_dt, interval 8 hour);
|
||||
update t_messages_17 set _dt = date_add(_dt, interval 8 hour);
|
||||
update t_messages_18 set _dt = date_add(_dt, interval 8 hour);
|
||||
update t_messages_19 set _dt = date_add(_dt, interval 8 hour);
|
||||
|
||||
update t_messages_20 set _dt = date_add(_dt, interval 8 hour);
|
||||
update t_messages_21 set _dt = date_add(_dt, interval 8 hour);
|
||||
update t_messages_22 set _dt = date_add(_dt, interval 8 hour);
|
||||
update t_messages_23 set _dt = date_add(_dt, interval 8 hour);
|
||||
update t_messages_24 set _dt = date_add(_dt, interval 8 hour);
|
||||
update t_messages_25 set _dt = date_add(_dt, interval 8 hour);
|
||||
update t_messages_26 set _dt = date_add(_dt, interval 8 hour);
|
||||
update t_messages_27 set _dt = date_add(_dt, interval 8 hour);
|
||||
update t_messages_28 set _dt = date_add(_dt, interval 8 hour);
|
||||
update t_messages_29 set _dt = date_add(_dt, interval 8 hour);
|
||||
|
||||
|
||||
update t_messages_30 set _dt = date_add(_dt, interval 8 hour);
|
||||
update t_messages_31 set _dt = date_add(_dt, interval 8 hour);
|
||||
update t_messages_32 set _dt = date_add(_dt, interval 8 hour);
|
||||
update t_messages_33 set _dt = date_add(_dt, interval 8 hour);
|
||||
update t_messages_34 set _dt = date_add(_dt, interval 8 hour);
|
||||
update t_messages_35 set _dt = date_add(_dt, interval 8 hour);
|
||||
+4038
File diff suppressed because it is too large
Load Diff
+13
@@ -0,0 +1,13 @@
|
||||
|
||||
DROP TABLE IF EXISTS `t_settings`;
|
||||
CREATE TABLE `t_settings` (
|
||||
`id` int(11) NOT NULL PRIMARY KEY,
|
||||
`value` varchar(64) NOT NULL,
|
||||
`desc` varchar(128) NOT NULL default ""
|
||||
)
|
||||
ENGINE = InnoDB
|
||||
DEFAULT CHARACTER SET = utf8mb4
|
||||
COLLATE = utf8mb4_unicode_ci;
|
||||
|
||||
|
||||
insert into t_settings(`id`, `value`,`desc`) values (1, "3000", "最大群成员数量");
|
||||
@@ -0,0 +1 @@
|
||||
alter table `t_sensitiveword` add column `id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT;
|
||||
@@ -0,0 +1,3 @@
|
||||
alter table `t_user_session` modify column `_voip_token` varchar(240) DEFAULT '';
|
||||
|
||||
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
alter table t_friend add column `_blacked` tinyint DEFAULT 0 COMMENT "0, normal; 1, blacked";
|
||||
update t_friend set `_blacked` = 1 where `_state` = 2;
|
||||
@@ -0,0 +1 @@
|
||||
alter table `t_user_session` ADD INDEX `session_token_index` ( `_token` );
|
||||
@@ -0,0 +1 @@
|
||||
alter table t_friend_request add index `friend_request_uid_index` (`_friend_uid`);
|
||||
@@ -0,0 +1 @@
|
||||
alter table `t_user_session` ADD INDEX `session_uid_index` ( `_uid` );
|
||||
@@ -0,0 +1 @@
|
||||
alter table `t_user_session` add column `_deleted` tinyint DEFAULT 0;
|
||||
+1
@@ -0,0 +1 @@
|
||||
alter table `t_user` add column `_deleted` tinyint DEFAULT 0;
|
||||
@@ -0,0 +1 @@
|
||||
update t_channel set `_status` = 64 where `_status` = 3;
|
||||
@@ -0,0 +1,38 @@
|
||||
alter table t_messages add column `_to` varchar(64) DEFAULT NULL;
|
||||
|
||||
alter table t_messages_0 add column `_to` varchar(64) DEFAULT NULL;
|
||||
alter table t_messages_1 add column `_to` varchar(64) DEFAULT NULL;
|
||||
alter table t_messages_2 add column `_to` varchar(64) DEFAULT NULL;
|
||||
alter table t_messages_3 add column `_to` varchar(64) DEFAULT NULL;
|
||||
alter table t_messages_4 add column `_to` varchar(64) DEFAULT NULL;
|
||||
alter table t_messages_5 add column `_to` varchar(64) DEFAULT NULL;
|
||||
alter table t_messages_6 add column `_to` varchar(64) DEFAULT NULL;
|
||||
alter table t_messages_7 add column `_to` varchar(64) DEFAULT NULL;
|
||||
alter table t_messages_8 add column `_to` varchar(64) DEFAULT NULL;
|
||||
alter table t_messages_9 add column `_to` varchar(64) DEFAULT NULL;
|
||||
alter table t_messages_10 add column `_to` varchar(64) DEFAULT NULL;
|
||||
alter table t_messages_11 add column `_to` varchar(64) DEFAULT NULL;
|
||||
alter table t_messages_12 add column `_to` varchar(64) DEFAULT NULL;
|
||||
alter table t_messages_13 add column `_to` varchar(64) DEFAULT NULL;
|
||||
alter table t_messages_14 add column `_to` varchar(64) DEFAULT NULL;
|
||||
alter table t_messages_15 add column `_to` varchar(64) DEFAULT NULL;
|
||||
alter table t_messages_16 add column `_to` varchar(64) DEFAULT NULL;
|
||||
alter table t_messages_17 add column `_to` varchar(64) DEFAULT NULL;
|
||||
alter table t_messages_18 add column `_to` varchar(64) DEFAULT NULL;
|
||||
alter table t_messages_19 add column `_to` varchar(64) DEFAULT NULL;
|
||||
alter table t_messages_20 add column `_to` varchar(64) DEFAULT NULL;
|
||||
alter table t_messages_21 add column `_to` varchar(64) DEFAULT NULL;
|
||||
alter table t_messages_22 add column `_to` varchar(64) DEFAULT NULL;
|
||||
alter table t_messages_23 add column `_to` varchar(64) DEFAULT NULL;
|
||||
alter table t_messages_24 add column `_to` varchar(64) DEFAULT NULL;
|
||||
alter table t_messages_25 add column `_to` varchar(64) DEFAULT NULL;
|
||||
alter table t_messages_26 add column `_to` varchar(64) DEFAULT NULL;
|
||||
alter table t_messages_27 add column `_to` varchar(64) DEFAULT NULL;
|
||||
alter table t_messages_28 add column `_to` varchar(64) DEFAULT NULL;
|
||||
alter table t_messages_29 add column `_to` varchar(64) DEFAULT NULL;
|
||||
alter table t_messages_30 add column `_to` varchar(64) DEFAULT NULL;
|
||||
alter table t_messages_31 add column `_to` varchar(64) DEFAULT NULL;
|
||||
alter table t_messages_32 add column `_to` varchar(64) DEFAULT NULL;
|
||||
alter table t_messages_33 add column `_to` varchar(64) DEFAULT NULL;
|
||||
alter table t_messages_34 add column `_to` varchar(64) DEFAULT NULL;
|
||||
alter table t_messages_35 add column `_to` varchar(64) DEFAULT NULL;
|
||||
+1
@@ -0,0 +1 @@
|
||||
alter table t_friend add column `_extra` TEXT DEFAULT NULL;
|
||||
@@ -0,0 +1,30 @@
|
||||
|
||||
DROP TABLE IF EXISTS `t_chatroom_blacklist`;
|
||||
CREATE TABLE `t_chatroom_blacklist` (
|
||||
`id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
|
||||
`_cid` varchar(64) NOT NULL,
|
||||
`_uid` varchar(64) NOT NULL,
|
||||
`_state` tinyint NOT NULL DEFAULT 0,
|
||||
`_expired_time` bigint(20) NOT NULL,
|
||||
`_dt` bigint(20) NOT NULL,
|
||||
UNIQUE INDEX `cr_bl_uid_index` (`_cid`,_uid)
|
||||
)
|
||||
ENGINE = InnoDB
|
||||
DEFAULT CHARACTER SET = utf8mb4
|
||||
COLLATE = utf8mb4_unicode_ci;
|
||||
|
||||
DROP TABLE IF EXISTS `t_chatroom_manager`;
|
||||
CREATE TABLE `t_chatroom_manager` (
|
||||
`id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
|
||||
`_cid` varchar(64) NOT NULL,
|
||||
`_uid` varchar(64) NOT NULL,
|
||||
`_state` tinyint NOT NULL DEFAULT 0,
|
||||
`_dt` bigint(20) NOT NULL,
|
||||
UNIQUE INDEX `cr_man_uid_index` (`_cid`,_uid)
|
||||
)
|
||||
ENGINE = InnoDB
|
||||
DEFAULT CHARACTER SET = utf8mb4
|
||||
COLLATE = utf8mb4_unicode_ci;
|
||||
|
||||
|
||||
|
||||
+260
@@ -0,0 +1,260 @@
|
||||
alter table `t_user_messages` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_0` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_1` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_2` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_3` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_4` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_5` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_6` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_7` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_8` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_9` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_10` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_11` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_12` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_13` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_14` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_15` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_16` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_17` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_18` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_19` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_20` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_21` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_22` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_23` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_24` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_25` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_26` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_27` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_28` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_29` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_30` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_31` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_32` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_33` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_34` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_35` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_36` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_37` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_38` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_39` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_40` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_41` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_42` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_43` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_44` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_45` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_46` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_47` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_48` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_49` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_50` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_51` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_52` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_53` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_54` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_55` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_56` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_57` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_58` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_59` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_60` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_61` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_62` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_63` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_64` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_65` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_66` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_67` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_68` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_69` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_70` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_71` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_72` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_73` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_74` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_75` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_76` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_77` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_78` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_79` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_80` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_81` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_82` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_83` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_84` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_85` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_86` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_87` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_88` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_89` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_90` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_91` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_92` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_93` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_94` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_95` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_96` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_97` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_98` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_99` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_100` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_101` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_102` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_103` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_104` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_105` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_106` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_107` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_108` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_109` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_110` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_111` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_112` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_113` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_114` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_115` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_116` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_117` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_118` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_119` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_120` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_121` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_122` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_123` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_124` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_125` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_126` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
alter table `t_user_messages_127` add column `_line` int(11) NOT NULL DEFAULT 0;
|
||||
|
||||
|
||||
alter table `t_user_messages` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_0` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_1` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_2` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_3` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_4` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_5` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_6` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_7` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_8` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_9` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_10` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_11` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_12` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_13` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_14` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_15` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_16` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_17` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_18` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_19` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_20` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_21` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_22` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_23` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_24` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_25` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_26` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_27` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_28` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_29` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_30` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_31` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_32` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_33` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_34` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_35` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_36` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_37` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_38` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_39` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_40` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_41` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_42` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_43` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_44` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_45` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_46` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_47` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_48` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_49` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_50` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_51` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_52` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_53` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_54` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_55` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_56` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_57` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_58` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_59` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_60` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_61` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_62` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_63` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_64` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_65` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_66` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_67` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_68` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_69` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_70` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_71` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_72` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_73` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_74` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_75` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_76` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_77` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_78` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_79` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_80` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_81` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_82` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_83` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_84` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_85` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_86` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_87` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_88` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_89` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_90` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_91` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_92` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_93` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_94` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_95` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_96` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_97` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_98` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_99` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_100` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_101` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_102` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_103` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_104` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_105` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_106` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_107` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_108` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_109` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_110` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_111` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_112` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_113` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_114` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_115` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_116` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_117` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_118` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_119` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_120` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_121` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_122` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_123` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_124` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_125` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_126` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
alter table `t_user_messages_127` add INDEX `message_mid_line_uid_index` ( `_uid` DESC, `_line` DESC, `_mid` DESC );
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
|
||||
DROP TABLE IF EXISTS `t_thing`;
|
||||
|
||||
DROP TABLE IF EXISTS `t_device`;
|
||||
CREATE TABLE `t_device` (
|
||||
`id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
|
||||
`_uid` varchar(64) NOT NULL,
|
||||
`_token` varchar(64) DEFAULT '',
|
||||
`_state` tinyint DEFAULT 0,
|
||||
`_extra` TEXT DEFAULT NULL,
|
||||
`_dt` bigint(20) NOT NULL,
|
||||
UNIQUE INDEX `device_uid_index` (`_uid` ASC)
|
||||
)
|
||||
ENGINE = InnoDB
|
||||
DEFAULT CHARACTER SET = utf8mb4
|
||||
COLLATE = utf8mb4_unicode_ci;
|
||||
|
||||
DROP TABLE IF EXISTS `t_user_device`;
|
||||
CREATE TABLE `t_user_device` (
|
||||
`id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
|
||||
`_uid` varchar(64) NOT NULL,
|
||||
`_did` varchar(64) DEFAULT '',
|
||||
UNIQUE INDEX `user_device_uid_index` (`_uid` ASC, `_did` ASC),
|
||||
INDEX `user_device_did_index` (`_did` ASC)
|
||||
)
|
||||
ENGINE = InnoDB
|
||||
DEFAULT CHARACTER SET = utf8mb4
|
||||
COLLATE = utf8mb4_unicode_ci;
|
||||
+1
@@ -0,0 +1 @@
|
||||
alter table t_user_session add column `_user_type` tinyint DEFAULT 0 COMMENT "0, normal user; 1, robot; 2, device;";
|
||||
+54
@@ -0,0 +1,54 @@
|
||||
|
||||
DROP TABLE IF EXISTS `t_read_report`;
|
||||
CREATE TABLE `t_read_report` (
|
||||
`id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
|
||||
`_uid` varchar(64) NULL,
|
||||
`_type` tinyint NULL,
|
||||
`_line` int(11) NULL,
|
||||
`_target` varchar(64) NULL,
|
||||
`_dt` bigint(20) NOT NULL DEFAULT 0,
|
||||
INDEX `read_report_index` (`_uid`, `_type`, `_line`, `_target`)
|
||||
)
|
||||
ENGINE = InnoDB
|
||||
DEFAULT CHARACTER SET = utf8mb4
|
||||
COLLATE = utf8mb4_unicode_ci;
|
||||
|
||||
DROP TABLE IF EXISTS `t_user_read_report`;
|
||||
CREATE TABLE `t_user_read_report` (
|
||||
`id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
|
||||
`_rid` int(11) NOT NULL,
|
||||
`_uid` varchar(64) NOT NULL,
|
||||
`_seq` bigint(20) NOT NULL,
|
||||
`_dt` DATETIME NOT NULL DEFAULT NOW(),
|
||||
INDEX `user_read_report_index` (`_uid` DESC, `_seq` DESC),
|
||||
UNIQUE INDEX `user_read_report_index2` (`_uid` DESC, `_rid` DESC)
|
||||
)
|
||||
ENGINE = InnoDB
|
||||
DEFAULT CHARACTER SET = utf8mb4
|
||||
COLLATE = utf8mb4_unicode_ci;
|
||||
|
||||
DROP TABLE IF EXISTS `t_delivery_report`;
|
||||
CREATE TABLE `t_delivery_report` (
|
||||
`id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
|
||||
`_uid` varchar(64) NOT NULL,
|
||||
`_dt` bigint(20) NOT NULL,
|
||||
UNIQUE INDEX `delivery_index` (`_uid`)
|
||||
)
|
||||
ENGINE = InnoDB
|
||||
DEFAULT CHARACTER SET = utf8mb4
|
||||
COLLATE = utf8mb4_unicode_ci;
|
||||
|
||||
|
||||
DROP TABLE IF EXISTS `t_user_delivery_report`;
|
||||
CREATE TABLE `t_user_delivery_report` (
|
||||
`id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
|
||||
`_rid` varchar(64) NOT NULL,
|
||||
`_uid` varchar(64) NOT NULL,
|
||||
`_seq` bigint(20) NOT NULL,
|
||||
`_dt` DATETIME NOT NULL DEFAULT NOW(),
|
||||
INDEX `user_delivery_index` (`_uid` DESC, `_seq` DESC),
|
||||
UNIQUE INDEX `user_delivery_index2` (`_uid` DESC, `_rid` DESC)
|
||||
)
|
||||
ENGINE = InnoDB
|
||||
DEFAULT CHARACTER SET = utf8mb4
|
||||
COLLATE = utf8mb4_unicode_ci;
|
||||
@@ -0,0 +1 @@
|
||||
alter table t_group_member add column `_create_dt` bigint(20) DEFAULT 0, COMMENT "group member create time";
|
||||
@@ -0,0 +1,2 @@
|
||||
alter table `t_group` add column `_history_message` tinyint NOT NULL DEFAULT 0, COMMENT "new group member can load group history messages";
|
||||
alter table `t_group` add column `_max_member_count` int(11) NOT NULL DEFAULT 2000, COMMENT "max group member count";
|
||||
@@ -0,0 +1,2 @@
|
||||
alter table `t_settings` change column `value` `_value` varchar(64) NOT NULL;
|
||||
alter table `t_settings` change column `desc` `_desc` varchar(64) NOT NULL;
|
||||
@@ -0,0 +1 @@
|
||||
alter table `t_group` modify column `_searchable` int(11) NOT NULL DEFAULT 0;
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
DROP TABLE IF EXISTS `t_file`;
|
||||
CREATE TABLE `t_file` (
|
||||
`_mid` bigint(20) NOT NULL PRIMARY KEY,
|
||||
`_from` varchar(64) NOT NULL,
|
||||
`_type` tinyint NOT NULL DEFAULT 0,
|
||||
`_target` varchar(64) NOT NULL,
|
||||
`_line` int(11) NOT NULL DEFAULT 0,
|
||||
`_name` varchar(128) DEFAULT '',
|
||||
`_url` varchar(1024) NOT NULL DEFAULT '',
|
||||
`_size` int(11) NOT NULL DEFAULT 0,
|
||||
`_download_count` int(11) DEFAULT 0,
|
||||
`_dt` bigint(20) NOT NULL,
|
||||
INDEX `file_conv_index` (`_type`, `_line`, `_target`, `_mid`),
|
||||
INDEX `file_user_index` (`_from`, `_mid`)
|
||||
)
|
||||
ENGINE = InnoDB
|
||||
DEFAULT CHARACTER SET = utf8mb4
|
||||
COLLATE = utf8mb4_unicode_ci;
|
||||
@@ -0,0 +1,3 @@
|
||||
|
||||
insert into t_user (`_uid`,`_name`,`_display_name`,`_portrait`,`_type`,`_dt`) values ('wfc_file_transfer','wfc_file_transfer','文件传输助手','https://static.wildfirechat.cn/wfc_file_transfer.png',1,1);
|
||||
insert into t_robot (`_uid`,`_owner`,`_secret`,`_callback`,`_state`,`_dt`) values ('wfc_file_transfer', 'wfc_file_transfer', '', '', 0, 1);
|
||||
@@ -0,0 +1,2 @@
|
||||
alter table t_user add column `_createTime` TIMESTAMP default CURRENT_TIMESTAMP;
|
||||
alter table t_group add column `_createTime` TIMESTAMP default CURRENT_TIMESTAMP;
|
||||
@@ -0,0 +1,36 @@
|
||||
alter table `t_messages_0` add column `_content_type` int(11) NOT NULL DEFAULT '0';
|
||||
alter table `t_messages_1` add column `_content_type` int(11) NOT NULL DEFAULT '0';
|
||||
alter table `t_messages_2` add column `_content_type` int(11) NOT NULL DEFAULT '0';
|
||||
alter table `t_messages_3` add column `_content_type` int(11) NOT NULL DEFAULT '0';
|
||||
alter table `t_messages_4` add column `_content_type` int(11) NOT NULL DEFAULT '0';
|
||||
alter table `t_messages_5` add column `_content_type` int(11) NOT NULL DEFAULT '0';
|
||||
alter table `t_messages_6` add column `_content_type` int(11) NOT NULL DEFAULT '0';
|
||||
alter table `t_messages_7` add column `_content_type` int(11) NOT NULL DEFAULT '0';
|
||||
alter table `t_messages_8` add column `_content_type` int(11) NOT NULL DEFAULT '0';
|
||||
alter table `t_messages_9` add column `_content_type` int(11) NOT NULL DEFAULT '0';
|
||||
alter table `t_messages_10` add column `_content_type` int(11) NOT NULL DEFAULT '0';
|
||||
alter table `t_messages_11` add column `_content_type` int(11) NOT NULL DEFAULT '0';
|
||||
alter table `t_messages_12` add column `_content_type` int(11) NOT NULL DEFAULT '0';
|
||||
alter table `t_messages_13` add column `_content_type` int(11) NOT NULL DEFAULT '0';
|
||||
alter table `t_messages_14` add column `_content_type` int(11) NOT NULL DEFAULT '0';
|
||||
alter table `t_messages_15` add column `_content_type` int(11) NOT NULL DEFAULT '0';
|
||||
alter table `t_messages_16` add column `_content_type` int(11) NOT NULL DEFAULT '0';
|
||||
alter table `t_messages_17` add column `_content_type` int(11) NOT NULL DEFAULT '0';
|
||||
alter table `t_messages_18` add column `_content_type` int(11) NOT NULL DEFAULT '0';
|
||||
alter table `t_messages_19` add column `_content_type` int(11) NOT NULL DEFAULT '0';
|
||||
alter table `t_messages_20` add column `_content_type` int(11) NOT NULL DEFAULT '0';
|
||||
alter table `t_messages_21` add column `_content_type` int(11) NOT NULL DEFAULT '0';
|
||||
alter table `t_messages_22` add column `_content_type` int(11) NOT NULL DEFAULT '0';
|
||||
alter table `t_messages_23` add column `_content_type` int(11) NOT NULL DEFAULT '0';
|
||||
alter table `t_messages_24` add column `_content_type` int(11) NOT NULL DEFAULT '0';
|
||||
alter table `t_messages_25` add column `_content_type` int(11) NOT NULL DEFAULT '0';
|
||||
alter table `t_messages_26` add column `_content_type` int(11) NOT NULL DEFAULT '0';
|
||||
alter table `t_messages_27` add column `_content_type` int(11) NOT NULL DEFAULT '0';
|
||||
alter table `t_messages_28` add column `_content_type` int(11) NOT NULL DEFAULT '0';
|
||||
alter table `t_messages_29` add column `_content_type` int(11) NOT NULL DEFAULT '0';
|
||||
alter table `t_messages_30` add column `_content_type` int(11) NOT NULL DEFAULT '0';
|
||||
alter table `t_messages_31` add column `_content_type` int(11) NOT NULL DEFAULT '0';
|
||||
alter table `t_messages_32` add column `_content_type` int(11) NOT NULL DEFAULT '0';
|
||||
alter table `t_messages_33` add column `_content_type` int(11) NOT NULL DEFAULT '0';
|
||||
alter table `t_messages_34` add column `_content_type` int(11) NOT NULL DEFAULT '0';
|
||||
alter table `t_messages_35` add column `_content_type` int(11) NOT NULL DEFAULT '0';
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
|
||||
DROP TABLE IF EXISTS `t_sensitive_messages`;
|
||||
CREATE TABLE `t_sensitive_messages` (
|
||||
`id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
|
||||
`_mid` bigint(20) NOT NULL,
|
||||
`_from` varchar(64) NOT NULL,
|
||||
`_type` tinyint NOT NULL DEFAULT 0,
|
||||
`_target` varchar(64) NOT NULL,
|
||||
`_line` int(11) NOT NULL DEFAULT 0,
|
||||
`_data` BLOB NOT NULL,
|
||||
`_searchable_key` TEXT DEFAULT NULL,
|
||||
`_dt` DATETIME NOT NULL,
|
||||
`_content_type` int(11) NOT NULL DEFAULT '0',
|
||||
INDEX `message_uid_index` (`_mid` DESC)
|
||||
)
|
||||
ENGINE = InnoDB
|
||||
DEFAULT CHARACTER SET = utf8mb4
|
||||
COLLATE = utf8mb4_unicode_ci;
|
||||
@@ -0,0 +1,6 @@
|
||||
程序会自动创建数据库和执行migrate里的数据库,不需要手动创建库和执行sql语句。
|
||||
|
||||
数据库版本管理使用了flyway,flyway进行数据库升级时会校验数据库脚本的有效性,如果修改过这里的脚本,下次升级时就会失败。
|
||||
|
||||
强烈不建议修改数据库表结构,如果有内容(比如默认用户或者默认机器人的属性)需要修改,可以等数据库升级完成后,通过命令行或者数据库客户端进行修改。
|
||||
由于服务具有缓存,一般修改过数据库内容后要重启后才能生效。
|
||||
@@ -9,19 +9,40 @@ server {
|
||||
root html;
|
||||
index index.html index.htm index.php;
|
||||
|
||||
## send request back to im server ##
|
||||
location /im {
|
||||
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 /route {
|
||||
#社区版需要启用下面一段,专业版不能用
|
||||
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;
|
||||
}
|
||||
|
||||
location /api {
|
||||
proxy_pass http://imserver;
|
||||
}
|
||||
location / {
|
||||
proxy_pass https://wildfirechat.github.io/docs/;
|
||||
|
||||
location /fs {
|
||||
proxy_pass http://imserver;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
location /channel {
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
Executable → Regular
+12
-43
@@ -5,7 +5,7 @@
|
||||
<relativePath>../</relativePath>
|
||||
<artifactId>wildfirechat-parent</artifactId>
|
||||
<groupId>cn.wildfirechat</groupId>
|
||||
<version>0.21</version>
|
||||
<version>0.50</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>moquette-broker</artifactId>
|
||||
@@ -31,12 +31,6 @@
|
||||
<version>1.7.5</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>cn.wildfirechat</groupId>
|
||||
<artifactId>client</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>cn.wildfirechat</groupId>
|
||||
<artifactId>common</artifactId>
|
||||
@@ -47,14 +41,14 @@
|
||||
<dependency>
|
||||
<groupId>log4j</groupId>
|
||||
<artifactId>log4j</artifactId>
|
||||
<version>1.2.14</version>
|
||||
<version>1.2.17</version>
|
||||
</dependency>
|
||||
|
||||
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
|
||||
<dependency>
|
||||
<groupId>mysql</groupId>
|
||||
<artifactId>mysql-connector-java</artifactId>
|
||||
<version>8.0.11</version>
|
||||
<version>8.0.19</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -110,34 +104,11 @@
|
||||
<artifactId>netty-transport-native-epoll</artifactId>
|
||||
<version>${netty.version}</version>
|
||||
<classifier>linux-x86_64</classifier>
|
||||
<!--
|
||||
<!--
|
||||
<classifier>${os.detected.name}-${os.detected.arch}</classifier>
|
||||
-->
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.dropwizard.metrics</groupId>
|
||||
<artifactId>metrics-core</artifactId>
|
||||
<version>3.2.2</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.dropwizard.metrics</groupId>
|
||||
<artifactId>metrics-jvm</artifactId>
|
||||
<version>3.2.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.librato.metrics</groupId>
|
||||
<artifactId>metrics-librato</artifactId>
|
||||
<version>5.1.0</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.bugsnag</groupId>
|
||||
<artifactId>bugsnag</artifactId>
|
||||
<version>[3.0,4.0)</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>commons-codec</groupId>
|
||||
<artifactId>commons-codec</artifactId>
|
||||
@@ -161,7 +132,7 @@
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>4.8.2</version>
|
||||
<version>4.13.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
@@ -170,7 +141,7 @@
|
||||
<dependency>
|
||||
<groupId>com.mchange</groupId>
|
||||
<artifactId>c3p0</artifactId>
|
||||
<version>[0.9.5.3,)</version>
|
||||
<version>0.9.5.4</version>
|
||||
</dependency>
|
||||
|
||||
<!-- needs extra dependencies: objenesis & hamcrest -->
|
||||
@@ -190,7 +161,7 @@
|
||||
<dependency>
|
||||
<groupId>org.eclipse.paho</groupId>
|
||||
<artifactId>org.eclipse.paho.client.mqttv3</artifactId>
|
||||
<version>1.0.2</version>
|
||||
<version>1.2.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@@ -227,13 +198,6 @@
|
||||
<version>2.5</version>
|
||||
</dependency>
|
||||
|
||||
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
|
||||
<dependency>
|
||||
<groupId>com.alibaba</groupId>
|
||||
<artifactId>fastjson</artifactId>
|
||||
<version>1.2.46</version>
|
||||
</dependency>
|
||||
|
||||
<!-- https://mvnrepository.com/artifact/com.h2database/h2 -->
|
||||
<dependency>
|
||||
<groupId>com.h2database</groupId>
|
||||
@@ -256,6 +220,11 @@
|
||||
<version>5.2.4</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.mongodb</groupId>
|
||||
<artifactId>mongo-java-driver</artifactId>
|
||||
<version>3.4.1</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@ public class PushMessage {
|
||||
public int convType;
|
||||
public String target;
|
||||
public String targetName;
|
||||
public String userId;
|
||||
public int line;
|
||||
public int cntType;
|
||||
public long serverTime;
|
||||
@@ -23,6 +24,7 @@ public class PushMessage {
|
||||
//推送类型,android推送分为小米/华为/魅族等。ios分别为开发和发布。
|
||||
public int pushType;
|
||||
public String pushContent;
|
||||
public String pushData;
|
||||
public int unReceivedMsg;
|
||||
public int mentionedType;
|
||||
public String packageName;
|
||||
@@ -46,4 +48,13 @@ public class PushMessage {
|
||||
this.isHiddenDetail = isHiddenDetail;
|
||||
this.language = language;
|
||||
}
|
||||
public PushMessage(String sender, String target, long serverTime, String senderName, int unReceivedMsg, String language, int pushMessageType) {
|
||||
this.sender = sender;
|
||||
this.target = target;
|
||||
this.senderName = senderName;
|
||||
this.serverTime = serverTime;
|
||||
this.unReceivedMsg = unReceivedMsg;
|
||||
this.pushMessageType = pushMessageType;
|
||||
this.language = language;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,6 +34,7 @@ public class PushServer {
|
||||
int PUSH_MESSAGE_TYPE_NORMAL = 0;
|
||||
int PUSH_MESSAGE_TYPE_VOIP_INVITE = 1;
|
||||
int PUSH_MESSAGE_TYPE_VOIP_BYE = 2;
|
||||
int PUSH_MESSAGE_TYPE_FRIEND_REQUEST = 3;
|
||||
}
|
||||
|
||||
private static PushServer INSTANCE = new PushServer();
|
||||
@@ -57,7 +58,7 @@ public class PushServer {
|
||||
}
|
||||
|
||||
public void pushMessage(PushMessage pushMessage, String deviceId, String pushContent) {
|
||||
LOG.info("try to delivery push diviceId = {}, pushContent", deviceId, pushContent);
|
||||
LOG.info("try to delivery push diviceId = {}, conversationType = {}, pushContent = {}", deviceId, pushMessage.convType, pushContent);
|
||||
executorService.execute(() ->{
|
||||
try {
|
||||
pushMessageInternel(pushMessage, deviceId, pushContent);
|
||||
@@ -89,6 +90,7 @@ public class PushServer {
|
||||
pushMessage.pushContent = pushContent;
|
||||
pushMessage.deviceToken = session.getDeviceToken();
|
||||
pushMessage.unReceivedMsg = badge;
|
||||
pushMessage.userId = session.getUsername();
|
||||
if (session.getPlatform() == ProtoConstants.Platform.Platform_iOS || session.getPlatform() == ProtoConstants.Platform.Platform_Android) {
|
||||
String url = androidPushServerUrl;
|
||||
if (session.getPlatform() == ProtoConstants.Platform.Platform_iOS) {
|
||||
|
||||
@@ -21,6 +21,7 @@ import io.netty.handler.codec.http.HttpResponseEncoder;
|
||||
import io.netty.handler.stream.ChunkedWriteHandler;
|
||||
import com.xiaoleilu.loServer.action.ClassUtil;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import win.liyufan.im.Utility;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
@@ -141,6 +142,7 @@ public class LoServer {
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
Utility.printExecption(Logger, e);
|
||||
} catch (ClassNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
@@ -22,6 +22,8 @@ import io.netty.handler.codec.http.HttpRequest;
|
||||
import io.netty.handler.codec.http.HttpResponseStatus;
|
||||
import cn.wildfirechat.common.ErrorCode;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
import static cn.wildfirechat.common.ErrorCode.ERROR_CODE_SUCCESS;
|
||||
|
||||
/**
|
||||
@@ -84,7 +86,7 @@ abstract public class Action {
|
||||
if (request instanceof FullHttpRequest) {
|
||||
FullHttpRequest fullHttpRequest = (FullHttpRequest) request;
|
||||
byte[] bytes = Utils.readBytesAndRewind(fullHttpRequest.content());
|
||||
String content = new String(bytes);
|
||||
String content = new String(bytes, StandardCharsets.UTF_8);//contribute by JiaRG from github
|
||||
Gson gson = new Gson();
|
||||
T t = gson.fromJson(content, cls);
|
||||
return t;
|
||||
|
||||
@@ -0,0 +1,75 @@
|
||||
/*
|
||||
* 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;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
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.moquette.persistence.MemorySessionStore;
|
||||
import io.moquette.spi.security.Tokenor;
|
||||
import io.netty.handler.codec.http.FullHttpRequest;
|
||||
import io.netty.handler.codec.http.HttpResponseStatus;
|
||||
import io.netty.util.internal.StringUtil;
|
||||
import win.liyufan.im.GitRepositoryState;
|
||||
import win.liyufan.im.RateLimiter;
|
||||
import win.liyufan.im.Utility;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
@Route("/api/verify_token")
|
||||
@HttpMethod("GET")
|
||||
public class CheckTokenAction extends Action {
|
||||
private final RateLimiter mLimitCounter = new RateLimiter(10, 1);
|
||||
@Override
|
||||
public boolean action(Request request, Response response) {
|
||||
if (request.getNettyRequest() instanceof FullHttpRequest) {
|
||||
response.setStatus(HttpResponseStatus.OK);
|
||||
String userId = request.getParam("userId");
|
||||
String clientId = request.getParam("clientId");
|
||||
String token = request.getParam("token");
|
||||
|
||||
String result = "这是个检查token有效性的接口,如果客户端无法连接成功,可以使用这个接口检查token是否正确。\n";
|
||||
result += "使用方法是在浏览器中输入http://imserverip/api/verify_token?userId=${userId}&clientId=${clientId}&token=${token}。\n";
|
||||
result += "例如:http://localhost/api/verify_token?userId=123&clientId=456&token=789。\n";
|
||||
result += "特别注意的是:必须使用正确的clientId,clientId必须是在测试手机上调用im接口获取。不用手机上获取到的clientId也都是不同的,一定不能用错!!!\n\n\n";
|
||||
|
||||
if (StringUtil.isNullOrEmpty(userId)) {
|
||||
result += "错误,userId为空";
|
||||
} else if (StringUtil.isNullOrEmpty(clientId)) {
|
||||
result += "错误,clientId为空";
|
||||
} else if (StringUtil.isNullOrEmpty(token)) {
|
||||
result += "错误,token为空";
|
||||
} else if(!mLimitCounter.isGranted("verify_token")) {
|
||||
result += "接口请求超频!接口限制每10秒只能验证一次!";
|
||||
} else {
|
||||
MemorySessionStore.Session session = sessionsStore.getSession(clientId);
|
||||
if (session == null) {
|
||||
result += "错误,session不存在。请确认token是从本服务通过getToken接口获取的,另外请确认clientId是否正确";
|
||||
} else if (session.getDeleted() == 1) {
|
||||
result += "错误,session已经被清除,请确认当前客户没有多端登录或者主动退出";
|
||||
} else if(!session.getUsername().equals(userId)) {
|
||||
result += "错误,当前客户端的登录用户不是" + userId + "。这一般发生在当前clientId又为其它用户获取过token";
|
||||
} else {
|
||||
String id = Tokenor.getUserId(token.getBytes());
|
||||
if (id == null) {
|
||||
result += "错误,无效的token";
|
||||
} else if(!id.equals(userId)) {
|
||||
result += "错误,改token是用户" + id + "的";
|
||||
} else {
|
||||
result += "恭喜,您的信息是正确的";
|
||||
}
|
||||
}
|
||||
}
|
||||
response.setContent(result);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -35,6 +35,7 @@ public class FileAction extends Action {
|
||||
|
||||
@Override
|
||||
public boolean action(Request request, Response response) {
|
||||
response.setHeader("Access-Control-Allow-Origin", "*");
|
||||
if (false == Request.METHOD_GET.equalsIgnoreCase(request.getMethod())) {
|
||||
response.sendError(HttpResponseStatus.METHOD_NOT_ALLOWED, "Please use GET method to request file!");
|
||||
return true;
|
||||
@@ -108,7 +109,8 @@ public class FileAction extends Action {
|
||||
}
|
||||
|
||||
// 路径安全检查
|
||||
if (httpPath.contains("/.") || httpPath.contains("./") || httpPath.charAt(0) == '.' || httpPath.charAt(httpPath.length() - 1) == '.' || ReUtil.isMatch(INSECURE_URI, httpPath)) {
|
||||
String path = httpPath.substring(0, httpPath.lastIndexOf("/"));
|
||||
if (path.contains("/.") || path.contains("./") || path.charAt(0) == '.' || path.charAt(path.length() - 1) == '.' || ReUtil.isMatch(INSECURE_URI, path)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@@ -35,12 +35,15 @@ import java.util.concurrent.Executor;
|
||||
@HttpMethod("POST")
|
||||
public class RouteAction extends Action {
|
||||
private static final Logger LOG = LoggerFactory.getLogger(RouteAction.class);
|
||||
|
||||
@Override
|
||||
public boolean action(Request request, Response response) {
|
||||
if (request.getNettyRequest() instanceof FullHttpRequest) {
|
||||
|
||||
response.setContentType("application/octet-stream");
|
||||
FullHttpRequest fullHttpRequest = (FullHttpRequest)request.getNettyRequest();
|
||||
response.setHeader("Access-Control-Allow-Origin", "*");
|
||||
|
||||
FullHttpRequest fullHttpRequest = (FullHttpRequest) request.getNettyRequest();
|
||||
boolean b = false;
|
||||
if ("web".equalsIgnoreCase(fullHttpRequest.headers().get("p"))) {
|
||||
b = true;
|
||||
@@ -54,7 +57,7 @@ public class RouteAction extends Action {
|
||||
try {
|
||||
bytes = Base64.getDecoder().decode(str);
|
||||
} catch (IllegalArgumentException e) {
|
||||
sendResponse(response, ErrorCode.ERROR_CODE_SECRECT_KEY_MISMATCH, null, base64Response);
|
||||
sendResponse(response, ErrorCode.ERROR_CODE_INVALID_DATA, null, base64Response);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -62,7 +65,7 @@ public class RouteAction extends Action {
|
||||
byte[] cbytes = Base64.getDecoder().decode(cid);
|
||||
cbytes = AES.AESDecrypt(cbytes, "", true);
|
||||
if (cbytes == null) {
|
||||
sendResponse(response, ErrorCode.ERROR_CODE_SECRECT_KEY_MISMATCH, null, base64Response);
|
||||
sendResponse(response, ErrorCode.ERROR_CODE_INVALID_DATA, null, base64Response);
|
||||
return true;
|
||||
}
|
||||
cid = new String(cbytes);
|
||||
@@ -71,7 +74,7 @@ public class RouteAction extends Action {
|
||||
byte[] ubytes = Base64.getDecoder().decode(uid);
|
||||
ubytes = AES.AESDecrypt(ubytes, "", true);
|
||||
if (ubytes == null) {
|
||||
sendResponse(response, ErrorCode.ERROR_CODE_SECRECT_KEY_MISMATCH, null, base64Response);
|
||||
sendResponse(response, ErrorCode.ERROR_CODE_INVALID_DATA, null, base64Response);
|
||||
return true;
|
||||
}
|
||||
uid = new String(ubytes);
|
||||
@@ -79,7 +82,7 @@ public class RouteAction extends Action {
|
||||
|
||||
MemorySessionStore.Session session = sessionsStore.sessionForClientAndUser(uid, cid);
|
||||
if (session == null) {
|
||||
ErrorCode errorCode = sessionsStore.createNewSession(uid, cid, true, true);
|
||||
ErrorCode errorCode = sessionsStore.loadActiveSession(uid, cid);
|
||||
if (errorCode != ErrorCode.ERROR_CODE_SUCCESS) {
|
||||
sendResponse(response, errorCode, null, base64Response);
|
||||
return true;
|
||||
@@ -144,10 +147,14 @@ public class RouteAction extends Action {
|
||||
|
||||
private void sendResponse(Response response, ErrorCode errorCode, byte[] contents, boolean base64Response) {
|
||||
response.setStatus(HttpResponseStatus.OK);
|
||||
if(contents == null) {
|
||||
if (contents == null) {
|
||||
ByteBuf ackPayload = Unpooled.buffer();
|
||||
ackPayload.ensureWritable(1).writeByte(errorCode.getCode());
|
||||
response.setContent(ackPayload);
|
||||
contents = ackPayload.array();
|
||||
}
|
||||
if (base64Response) {
|
||||
byte[] base64Data = Base64.getEncoder().encode(contents);
|
||||
response.setContent(base64Data);
|
||||
} else {
|
||||
response.setContent(contents);
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@ public class UnknownErrorAction extends Action{
|
||||
|
||||
@Override
|
||||
public boolean action(Request request, Response response) {
|
||||
response.setStatus(HttpResponseStatus.NOT_FOUND);
|
||||
response.setStatus(HttpResponseStatus.INTERNAL_SERVER_ERROR);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -254,7 +254,7 @@ public class UploadFileAction extends Action {
|
||||
}
|
||||
|
||||
|
||||
String filePath = dir + "/" + requestId;
|
||||
String filePath = dir + "/" + (StringUtil.isNullOrEmpty(remoteFileName) ? requestId : remoteFileName);
|
||||
logger.info("the file path is " + filePath);
|
||||
|
||||
File tmpFile = new File(filePath);
|
||||
@@ -279,7 +279,7 @@ public class UploadFileAction extends Action {
|
||||
fileUpload.release();
|
||||
|
||||
response.setStatus(HttpResponseStatus.OK);
|
||||
String relativePath = datePath + "/" + requestId;
|
||||
String relativePath = datePath + "/" + (StringUtil.isNullOrEmpty(remoteFileName) ? requestId : remoteFileName);
|
||||
response.setContent("{\"key\":\"" + relativePath + "\"}");
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@ import cn.wildfirechat.pojos.OutputLoginData;
|
||||
import io.netty.handler.codec.http.FullHttpRequest;
|
||||
import io.netty.handler.codec.http.HttpResponseStatus;
|
||||
import win.liyufan.im.GitRepositoryState;
|
||||
import win.liyufan.im.Utility;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
@@ -32,7 +33,8 @@ public class VersionAction extends Action {
|
||||
response.setStatus(HttpResponseStatus.OK);
|
||||
|
||||
try {
|
||||
response.setContent(new Gson().toJson(GitRepositoryState.getGitRepositoryState()));
|
||||
|
||||
response.setContent(Utility.formatJson(new Gson().toJson(GitRepositoryState.getGitRepositoryState())));
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
response.setContent("{\"version\":\"unknown\"}");
|
||||
|
||||
+87
@@ -0,0 +1,87 @@
|
||||
/*
|
||||
* 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.InputAddFriendRequest;
|
||||
import cn.wildfirechat.pojos.InputUpdateAlias;
|
||||
import cn.wildfirechat.proto.WFCMessage;
|
||||
import com.google.gson.Gson;
|
||||
import com.hazelcast.util.StringUtil;
|
||||
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.moquette.persistence.RPCCenter;
|
||||
import io.moquette.persistence.TargetEntry;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import io.netty.buffer.Unpooled;
|
||||
import io.netty.handler.codec.http.FullHttpRequest;
|
||||
import io.netty.handler.codec.http.HttpResponseStatus;
|
||||
import win.liyufan.im.IMTopic;
|
||||
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
@Route(APIPath.Friend_Send_Request)
|
||||
@HttpMethod("POST")
|
||||
public class AddFriendRequestAction extends AdminAction {
|
||||
|
||||
@Override
|
||||
public boolean isTransactionAction() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean action(Request request, Response response) {
|
||||
if (request.getNettyRequest() instanceof FullHttpRequest) {
|
||||
InputAddFriendRequest input = getRequestBody(request.getNettyRequest(), InputAddFriendRequest.class);
|
||||
|
||||
if (StringUtil.isNullOrEmpty(input.getUserId()) || StringUtil.isNullOrEmpty(input.getFriendUid())) {
|
||||
sendResponse(response, ErrorCode.INVALID_PARAMETER, null);
|
||||
return true;
|
||||
}
|
||||
|
||||
WFCMessage.AddFriendRequest addFriendRequest = WFCMessage.AddFriendRequest.newBuilder().setReason(input.getReason()).setTargetUid(input.getFriendUid()).build();
|
||||
RPCCenter.getInstance().sendRequest(input.getUserId(), null, IMTopic.AddFriendRequestTopic, addFriendRequest.toByteArray(), input.getUserId(), TargetEntry.Type.TARGET_TYPE_USER, new RPCCenter.Callback() {
|
||||
@Override
|
||||
public void onSuccess(byte[] result) {
|
||||
ByteBuf byteBuf = Unpooled.buffer();
|
||||
byteBuf.writeBytes(result);
|
||||
ErrorCode errorCode = ErrorCode.fromCode(byteBuf.readByte());
|
||||
if (errorCode == ErrorCode.ERROR_CODE_SUCCESS) {
|
||||
sendResponse(response, null, null);
|
||||
} else {
|
||||
sendResponse(response, errorCode, null);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(ErrorCode errorCode) {
|
||||
sendResponse(response, errorCode, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTimeout() {
|
||||
sendResponse(response, ErrorCode.ERROR_CODE_TIMEOUT, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Executor getResponseExecutor() {
|
||||
return command -> {
|
||||
ctx.executor().execute(command);
|
||||
};
|
||||
}
|
||||
}, input.isForce());
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -9,6 +9,7 @@
|
||||
package com.xiaoleilu.loServer.action.admin;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.xiaoleilu.loServer.LoServer;
|
||||
import com.xiaoleilu.loServer.RestResult;
|
||||
import com.xiaoleilu.loServer.action.Action;
|
||||
import com.xiaoleilu.loServer.handler.Request;
|
||||
@@ -17,9 +18,12 @@ import io.netty.handler.codec.http.HttpResponseStatus;
|
||||
import io.netty.util.internal.StringUtil;
|
||||
import org.apache.commons.codec.digest.DigestUtils;
|
||||
import cn.wildfirechat.common.ErrorCode;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import win.liyufan.im.RateLimiter;
|
||||
import win.liyufan.im.Utility;
|
||||
|
||||
abstract public class AdminAction extends Action {
|
||||
private static final org.slf4j.Logger LOG = LoggerFactory.getLogger(AdminAction.class);
|
||||
private static String SECRET_KEY = "123456";
|
||||
private static boolean NO_CHECK_TIME = false;
|
||||
private final RateLimiter mLimitCounter = new RateLimiter(10, 500);
|
||||
@@ -40,9 +44,20 @@ abstract public class AdminAction extends Action {
|
||||
if (!mLimitCounter.isGranted("admin")) {
|
||||
return ErrorCode.ERROR_CODE_OVER_FREQUENCY;
|
||||
}
|
||||
|
||||
String nonce = request.getHeader("nonce");
|
||||
if (StringUtil.isNullOrEmpty(nonce)) {
|
||||
nonce = request.getHeader("Nonce");
|
||||
}
|
||||
String timestamp = request.getHeader("timestamp");
|
||||
if (StringUtil.isNullOrEmpty(timestamp)) {
|
||||
timestamp = request.getHeader("Timestamp");
|
||||
}
|
||||
String sign = request.getHeader("sign");
|
||||
if (StringUtil.isNullOrEmpty(sign)) {
|
||||
sign = request.getHeader("Sign");
|
||||
}
|
||||
|
||||
if (StringUtil.isNullOrEmpty(nonce) || StringUtil.isNullOrEmpty(timestamp) || StringUtil.isNullOrEmpty(sign)) {
|
||||
return ErrorCode.INVALID_PARAMETER;
|
||||
}
|
||||
@@ -50,8 +65,9 @@ abstract public class AdminAction extends Action {
|
||||
Long ts;
|
||||
try {
|
||||
ts = Long.parseLong(timestamp);
|
||||
} catch (NumberFormatException e) {
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
Utility.printExecption(LOG, e);
|
||||
return ErrorCode.INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
|
||||
+58
@@ -0,0 +1,58 @@
|
||||
/*
|
||||
* 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.pojos.InputGetAlias;
|
||||
import cn.wildfirechat.pojos.InputGetFriendList;
|
||||
import cn.wildfirechat.pojos.OutputGetAlias;
|
||||
import cn.wildfirechat.pojos.OutputStringList;
|
||||
import com.google.gson.Gson;
|
||||
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 com.xiaoleilu.loServer.model.FriendData;
|
||||
import io.netty.handler.codec.http.FullHttpRequest;
|
||||
import io.netty.handler.codec.http.HttpResponseStatus;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Route(APIPath.Friend_Get_Alias)
|
||||
@HttpMethod("POST")
|
||||
public class AliasGetAction extends AdminAction {
|
||||
|
||||
@Override
|
||||
public boolean isTransactionAction() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean action(Request request, Response response) {
|
||||
if (request.getNettyRequest() instanceof FullHttpRequest) {
|
||||
InputGetAlias input = getRequestBody(request.getNettyRequest(), InputGetAlias.class);
|
||||
List<FriendData> dataList = messagesStore.getFriendList(input.getOperator(), null, 0);
|
||||
List<String> list = new ArrayList<>();
|
||||
OutputGetAlias out = new OutputGetAlias(input.getOperator(), input.getTargetId());
|
||||
|
||||
for (FriendData data : dataList) {
|
||||
if (data.getFriendUid().equals(input.getTargetId())) {
|
||||
out.setAlias(data.getAlias());
|
||||
break;
|
||||
}
|
||||
}
|
||||
response.setStatus(HttpResponseStatus.OK);
|
||||
RestResult result = RestResult.ok(out);
|
||||
response.setContent(new Gson().toJson(result));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
/*
|
||||
* 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.InputGetFriendList;
|
||||
import cn.wildfirechat.pojos.InputUpdateAlias;
|
||||
import cn.wildfirechat.pojos.OutputStringList;
|
||||
import com.google.gson.Gson;
|
||||
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 com.xiaoleilu.loServer.model.FriendData;
|
||||
import io.netty.handler.codec.http.FullHttpRequest;
|
||||
import io.netty.handler.codec.http.HttpResponseStatus;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Route(APIPath.Friend_Set_Alias)
|
||||
@HttpMethod("POST")
|
||||
public class AliasPutAction extends AdminAction {
|
||||
|
||||
@Override
|
||||
public boolean isTransactionAction() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean action(Request request, Response response) {
|
||||
if (request.getNettyRequest() instanceof FullHttpRequest) {
|
||||
InputUpdateAlias input = getRequestBody(request.getNettyRequest(), InputUpdateAlias.class);
|
||||
ErrorCode errorCode = messagesStore.setFriendAliasRequest(input.getOperator(), input.getTargetId(), input.getAlias(), new long[1]);
|
||||
response.setStatus(HttpResponseStatus.OK);
|
||||
RestResult result = RestResult.resultOf(errorCode);
|
||||
response.setContent(new Gson().toJson(result));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
+88
@@ -0,0 +1,88 @@
|
||||
/*
|
||||
* 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.InputBlacklistRequest;
|
||||
import cn.wildfirechat.proto.WFCMessage;
|
||||
import com.google.gson.Gson;
|
||||
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.moquette.persistence.RPCCenter;
|
||||
import io.moquette.persistence.TargetEntry;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import io.netty.buffer.Unpooled;
|
||||
import io.netty.handler.codec.http.FullHttpRequest;
|
||||
import io.netty.handler.codec.http.HttpResponseStatus;
|
||||
import io.netty.util.internal.StringUtil;
|
||||
import win.liyufan.im.IMTopic;
|
||||
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
@Route(APIPath.Blacklist_Update_Status)
|
||||
@HttpMethod("POST")
|
||||
public class BlacklistAction extends AdminAction {
|
||||
|
||||
@Override
|
||||
public boolean isTransactionAction() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean action(Request request, Response response) {
|
||||
if (request.getNettyRequest() instanceof FullHttpRequest) {
|
||||
InputBlacklistRequest inputData = getRequestBody(request.getNettyRequest(), InputBlacklistRequest.class);
|
||||
if (inputData != null
|
||||
&& !StringUtil.isNullOrEmpty(inputData.getUserId())
|
||||
&& !StringUtil.isNullOrEmpty(inputData.getTargetUid())
|
||||
) {
|
||||
WFCMessage.BlackUserRequest friendRequest = WFCMessage.BlackUserRequest.newBuilder().setUid(inputData.getTargetUid()).setStatus(inputData.getStatus()).build();
|
||||
RPCCenter.getInstance().sendRequest(inputData.getUserId(), null, IMTopic.BlackListUserTopic, friendRequest.toByteArray(), inputData.getUserId(), TargetEntry.Type.TARGET_TYPE_USER, new RPCCenter.Callback() {
|
||||
@Override
|
||||
public void onSuccess(byte[] result) {
|
||||
ByteBuf byteBuf = Unpooled.buffer();
|
||||
byteBuf.writeBytes(result);
|
||||
ErrorCode errorCode = ErrorCode.fromCode(byteBuf.readByte());
|
||||
if (errorCode == ErrorCode.ERROR_CODE_SUCCESS) {
|
||||
sendResponse(response, null, null);
|
||||
} else {
|
||||
sendResponse(response, errorCode, null);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(ErrorCode errorCode) {
|
||||
sendResponse(response, errorCode, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTimeout() {
|
||||
sendResponse(response, ErrorCode.ERROR_CODE_TIMEOUT, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Executor getResponseExecutor() {
|
||||
return command -> ctx.executor().execute(command);
|
||||
}
|
||||
}, true);
|
||||
return false;
|
||||
} else {
|
||||
response.setStatus(HttpResponseStatus.OK);
|
||||
RestResult result = RestResult.resultOf(ErrorCode.INVALID_PARAMETER);
|
||||
response.setContent(new Gson().toJson(result));
|
||||
}
|
||||
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
+54
@@ -0,0 +1,54 @@
|
||||
/*
|
||||
* 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.pojos.InputGetFriendList;
|
||||
import cn.wildfirechat.pojos.InputUserId;
|
||||
import cn.wildfirechat.pojos.OutputStringList;
|
||||
import com.google.gson.Gson;
|
||||
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 com.xiaoleilu.loServer.model.FriendData;
|
||||
import io.netty.handler.codec.http.FullHttpRequest;
|
||||
import io.netty.handler.codec.http.HttpResponseStatus;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Route(APIPath.Blacklist_Get_List)
|
||||
@HttpMethod("POST")
|
||||
public class BlacklistGetAction extends AdminAction {
|
||||
|
||||
@Override
|
||||
public boolean isTransactionAction() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean action(Request request, Response response) {
|
||||
if (request.getNettyRequest() instanceof FullHttpRequest) {
|
||||
InputUserId inputGetFriendList = getRequestBody(request.getNettyRequest(), InputUserId.class);
|
||||
List<FriendData> dataList = messagesStore.getFriendList(inputGetFriendList.getUserId(), null, 0);
|
||||
List<String> list = new ArrayList<>();
|
||||
for (FriendData data : dataList) {
|
||||
if (data.getBlacked() > 0) {
|
||||
list.add(data.getFriendUid());
|
||||
}
|
||||
}
|
||||
response.setStatus(HttpResponseStatus.OK);
|
||||
RestResult result = RestResult.ok(new OutputStringList(list));
|
||||
response.setContent(new Gson().toJson(result));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -45,7 +45,7 @@ public class BlockUserAction extends AdminAction {
|
||||
result = RestResult.resultOf(errorCode);
|
||||
response.setContent(new Gson().toJson(result));
|
||||
|
||||
if (inputUserBlock.getStatus() != 0) {
|
||||
if (inputUserBlock.getStatus() == 2) {
|
||||
RPCCenter.getInstance().sendRequest(null, null, RPCCenter.KICKOFF_USER_REQUEST, inputUserBlock.getUserId().getBytes(), inputUserBlock.getUserId(), TargetEntry.Type.TARGET_TYPE_USER, null, true);
|
||||
}
|
||||
|
||||
|
||||
+90
@@ -0,0 +1,90 @@
|
||||
/*
|
||||
* 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.BroadMessageData;
|
||||
import cn.wildfirechat.pojos.BroadMessageResult;
|
||||
import cn.wildfirechat.pojos.SendMessageData;
|
||||
import cn.wildfirechat.pojos.SendMessageResult;
|
||||
import com.google.gson.Gson;
|
||||
import com.hazelcast.util.StringUtil;
|
||||
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.moquette.persistence.RPCCenter;
|
||||
import io.moquette.persistence.TargetEntry;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import io.netty.buffer.Unpooled;
|
||||
import io.netty.handler.codec.http.FullHttpRequest;
|
||||
import io.netty.handler.codec.http.HttpResponseStatus;
|
||||
import win.liyufan.im.IMTopic;
|
||||
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
@Route(APIPath.Msg_Broadcast)
|
||||
@HttpMethod("POST")
|
||||
public class BroadcastMessageAction extends AdminAction {
|
||||
|
||||
@Override
|
||||
public boolean isTransactionAction() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean action(Request request, Response response) {
|
||||
if (request.getNettyRequest() instanceof FullHttpRequest) {
|
||||
BroadMessageData sendMessageData = getRequestBody(request.getNettyRequest(), BroadMessageData.class);
|
||||
if (BroadMessageData.isValide(sendMessageData) && !StringUtil.isNullOrEmpty(sendMessageData.getSender())) {
|
||||
RPCCenter.getInstance().sendRequest(sendMessageData.getSender(), null, IMTopic.BroadcastMessageTopic, sendMessageData.toProtoMessage().toByteArray(), sendMessageData.getSender(), TargetEntry.Type.TARGET_TYPE_USER, new RPCCenter.Callback() {
|
||||
@Override
|
||||
public void onSuccess(byte[] result) {
|
||||
ByteBuf byteBuf = Unpooled.buffer();
|
||||
byteBuf.writeBytes(result);
|
||||
ErrorCode errorCode = ErrorCode.fromCode(byteBuf.readByte());
|
||||
if (errorCode == ErrorCode.ERROR_CODE_SUCCESS) {
|
||||
long messageId = byteBuf.readLong();
|
||||
long count = byteBuf.readLong();
|
||||
sendResponse(response, null, new BroadMessageResult(messageId, count));
|
||||
} else {
|
||||
sendResponse(response, errorCode, null);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(ErrorCode errorCode) {
|
||||
sendResponse(response, errorCode, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTimeout() {
|
||||
sendResponse(response, ErrorCode.ERROR_CODE_TIMEOUT, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Executor getResponseExecutor() {
|
||||
return command -> {
|
||||
ctx.executor().execute(command);
|
||||
};
|
||||
}
|
||||
}, true);
|
||||
return false;
|
||||
} else {
|
||||
response.setStatus(HttpResponseStatus.OK);
|
||||
RestResult result = RestResult.resultOf(ErrorCode.INVALID_PARAMETER);
|
||||
response.setContent(new Gson().toJson(result));
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
+34
-3
@@ -9,6 +9,10 @@
|
||||
package com.xiaoleilu.loServer.action.admin;
|
||||
|
||||
import cn.wildfirechat.common.APIPath;
|
||||
import cn.wildfirechat.pojos.BroadMessageResult;
|
||||
import cn.wildfirechat.pojos.OutputCheckUserOnline;
|
||||
import com.google.gson.Gson;
|
||||
import com.xiaoleilu.loServer.RestResult;
|
||||
import com.xiaoleilu.loServer.annotation.HttpMethod;
|
||||
import com.xiaoleilu.loServer.annotation.Route;
|
||||
import com.xiaoleilu.loServer.handler.Request;
|
||||
@@ -16,10 +20,15 @@ import com.xiaoleilu.loServer.handler.Response;
|
||||
import cn.wildfirechat.pojos.InputGetUserInfo;
|
||||
import io.moquette.persistence.RPCCenter;
|
||||
import io.moquette.persistence.TargetEntry;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import io.netty.buffer.Unpooled;
|
||||
import io.netty.handler.codec.http.FullHttpRequest;
|
||||
import io.netty.handler.codec.http.HttpResponseStatus;
|
||||
import io.netty.util.internal.StringUtil;
|
||||
import cn.wildfirechat.common.ErrorCode;
|
||||
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
@Route(APIPath.User_Get_Online_Status)
|
||||
@HttpMethod("POST")
|
||||
public class CheckUserOnlineAction extends AdminAction {
|
||||
@@ -34,12 +43,34 @@ public class CheckUserOnlineAction extends AdminAction {
|
||||
if (request.getNettyRequest() instanceof FullHttpRequest) {
|
||||
InputGetUserInfo inputUserId = getRequestBody(request.getNettyRequest(), InputGetUserInfo.class);
|
||||
if (inputUserId == null || !StringUtil.isNullOrEmpty(inputUserId.getUserId())) {
|
||||
RPCCenter.getInstance().sendRequest(null, null, RPCCenter.CHECK_USER_ONLINE_REQUEST, inputUserId.getUserId().getBytes(), inputUserId.getUserId(), TargetEntry.Type.TARGET_TYPE_USER, null, true);
|
||||
return true;
|
||||
RPCCenter.getInstance().sendRequest(null, null, RPCCenter.CHECK_USER_ONLINE_REQUEST, inputUserId.getUserId().getBytes(), inputUserId.getUserId(), TargetEntry.Type.TARGET_TYPE_USER, new RPCCenter.Callback() {
|
||||
@Override
|
||||
public void onSuccess(byte[] res) {
|
||||
OutputCheckUserOnline out = new Gson().fromJson(new String(res), OutputCheckUserOnline.class);
|
||||
sendResponse(response, null, out);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(ErrorCode errorCode) {
|
||||
sendResponse(response, errorCode, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTimeout() {
|
||||
sendResponse(response, ErrorCode.ERROR_CODE_TIMEOUT, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Executor getResponseExecutor() {
|
||||
return command -> {
|
||||
ctx.executor().execute(command);
|
||||
};
|
||||
}
|
||||
}, true);
|
||||
return false;
|
||||
} else {
|
||||
sendResponse(response, ErrorCode.INVALID_PARAMETER, null);
|
||||
}
|
||||
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
+98
@@ -0,0 +1,98 @@
|
||||
/*
|
||||
* 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.*;
|
||||
import cn.wildfirechat.proto.WFCMessage;
|
||||
import com.google.gson.Gson;
|
||||
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.moquette.persistence.RPCCenter;
|
||||
import io.moquette.persistence.TargetEntry;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import io.netty.buffer.Unpooled;
|
||||
import io.netty.handler.codec.http.FullHttpRequest;
|
||||
import io.netty.handler.codec.http.HttpResponseStatus;
|
||||
import io.netty.util.internal.StringUtil;
|
||||
import win.liyufan.im.IMTopic;
|
||||
import win.liyufan.im.UUIDGenerator;
|
||||
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
@Route(APIPath.Create_Channel)
|
||||
@HttpMethod("POST")
|
||||
public class CreateChannelAction extends AdminAction {
|
||||
|
||||
@Override
|
||||
public boolean isTransactionAction() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean action(Request request, Response response) {
|
||||
if (request.getNettyRequest() instanceof FullHttpRequest) {
|
||||
InputCreateChannel inputCreateChannel = getRequestBody(request.getNettyRequest(), InputCreateChannel.class);
|
||||
if (inputCreateChannel != null
|
||||
&& !StringUtil.isNullOrEmpty(inputCreateChannel.getName())
|
||||
&& !StringUtil.isNullOrEmpty(inputCreateChannel.getOwner())) {
|
||||
|
||||
|
||||
if(StringUtil.isNullOrEmpty(inputCreateChannel.getTargetId())) {
|
||||
inputCreateChannel.setTargetId(messagesStore.getShortUUID());
|
||||
}
|
||||
|
||||
RPCCenter.getInstance().sendRequest(inputCreateChannel.getOwner(), null, IMTopic.CreateChannelTopic, inputCreateChannel.toProtoChannelInfo().toByteArray(), inputCreateChannel.getOwner(), TargetEntry.Type.TARGET_TYPE_USER, new RPCCenter.Callback() {
|
||||
@Override
|
||||
public void onSuccess(byte[] result) {
|
||||
ByteBuf byteBuf = Unpooled.buffer();
|
||||
byteBuf.writeBytes(result);
|
||||
ErrorCode errorCode = ErrorCode.fromCode(byteBuf.readByte());
|
||||
if (errorCode == ErrorCode.ERROR_CODE_SUCCESS) {
|
||||
byte[] data = new byte[byteBuf.readableBytes()];
|
||||
byteBuf.readBytes(data);
|
||||
String channelId = new String(data);
|
||||
sendResponse(response, null, new OutputCreateChannel(channelId));
|
||||
} else {
|
||||
sendResponse(response, errorCode, null);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(ErrorCode errorCode) {
|
||||
sendResponse(response, errorCode, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTimeout() {
|
||||
sendResponse(response, ErrorCode.ERROR_CODE_TIMEOUT, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Executor getResponseExecutor() {
|
||||
return command -> {
|
||||
ctx.executor().execute(command);
|
||||
};
|
||||
}
|
||||
}, true);
|
||||
return false;
|
||||
} else {
|
||||
response.setStatus(HttpResponseStatus.OK);
|
||||
RestResult result = RestResult.resultOf(ErrorCode.INVALID_PARAMETER);
|
||||
response.setContent(new Gson().toJson(result));
|
||||
}
|
||||
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -22,11 +22,15 @@ import io.netty.handler.codec.http.FullHttpRequest;
|
||||
import io.netty.handler.codec.http.HttpResponseStatus;
|
||||
import io.netty.util.internal.StringUtil;
|
||||
import cn.wildfirechat.common.ErrorCode;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import win.liyufan.im.UUIDGenerator;
|
||||
import win.liyufan.im.Utility;
|
||||
|
||||
@Route(APIPath.Create_Robot)
|
||||
@HttpMethod("POST")
|
||||
public class CreateRobotAction extends AdminAction {
|
||||
private static final Logger LOG = LoggerFactory.getLogger(CreateRobotAction.class);
|
||||
|
||||
@Override
|
||||
public boolean isTransactionAction() {
|
||||
@@ -55,7 +59,16 @@ public class CreateRobotAction extends AdminAction {
|
||||
WFCMessage.User newUser = inputCreateRobot.toUser();
|
||||
|
||||
|
||||
messagesStore.addUserInfo(newUser, inputCreateRobot.getPassword());
|
||||
try {
|
||||
messagesStore.addUserInfo(newUser, inputCreateRobot.getPassword());
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
Utility.printExecption(LOG, e);
|
||||
response.setStatus(HttpResponseStatus.OK);
|
||||
RestResult result = RestResult.resultOf(ErrorCode.ERROR_CODE_SERVER_ERROR, e.getMessage());
|
||||
response.setContent(new Gson().toJson(result));
|
||||
return true;
|
||||
}
|
||||
|
||||
if (StringUtil.isNullOrEmpty(inputCreateRobot.getOwner())) {
|
||||
inputCreateRobot.setOwner(inputCreateRobot.getUserId());
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
package com.xiaoleilu.loServer.action.admin;
|
||||
|
||||
import cn.wildfirechat.common.APIPath;
|
||||
import cn.wildfirechat.proto.ProtoConstants;
|
||||
import cn.wildfirechat.proto.WFCMessage;
|
||||
import com.google.gson.Gson;
|
||||
import com.xiaoleilu.loServer.RestResult;
|
||||
@@ -22,11 +23,16 @@ import io.netty.handler.codec.http.FullHttpRequest;
|
||||
import io.netty.handler.codec.http.HttpResponseStatus;
|
||||
import io.netty.util.internal.StringUtil;
|
||||
import cn.wildfirechat.common.ErrorCode;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import win.liyufan.im.DBUtil;
|
||||
import win.liyufan.im.UUIDGenerator;
|
||||
import win.liyufan.im.Utility;
|
||||
|
||||
@Route(APIPath.Create_User)
|
||||
@HttpMethod("POST")
|
||||
public class CreateUserAction extends AdminAction {
|
||||
private static final Logger LOG = LoggerFactory.getLogger(CreateUserAction.class);
|
||||
|
||||
@Override
|
||||
public boolean isTransactionAction() {
|
||||
@@ -38,7 +44,8 @@ public class CreateUserAction extends AdminAction {
|
||||
if (request.getNettyRequest() instanceof FullHttpRequest) {
|
||||
InputOutputUserInfo inputCreateUser = getRequestBody(request.getNettyRequest(), InputOutputUserInfo.class);
|
||||
if (inputCreateUser != null
|
||||
&& !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)) {
|
||||
|
||||
if(StringUtil.isNullOrEmpty(inputCreateUser.getPassword())) {
|
||||
inputCreateUser.setPassword(UUIDGenerator.getUUID());
|
||||
@@ -48,10 +55,6 @@ public class CreateUserAction extends AdminAction {
|
||||
inputCreateUser.setUserId(messagesStore.getShortUUID());
|
||||
}
|
||||
|
||||
if (inputCreateUser.getPortrait() == null || inputCreateUser.getPortrait().length() == 0) {
|
||||
inputCreateUser.setPortrait("https://avatars.io/gravatar/" + inputCreateUser.getUserId());
|
||||
}
|
||||
|
||||
WFCMessage.User.Builder newUserBuilder = WFCMessage.User.newBuilder()
|
||||
.setUid(StringUtil.isNullOrEmpty(inputCreateUser.getUserId()) ? "" : inputCreateUser.getUserId());
|
||||
if (inputCreateUser.getName() != null)
|
||||
@@ -77,9 +80,20 @@ public class CreateUserAction extends AdminAction {
|
||||
if (inputCreateUser.getExtra() != null)
|
||||
newUserBuilder.setExtra(inputCreateUser.getExtra());
|
||||
|
||||
newUserBuilder.setType(inputCreateUser.getType());
|
||||
newUserBuilder.setUpdateDt(System.currentTimeMillis());
|
||||
|
||||
messagesStore.addUserInfo(newUserBuilder.build(), inputCreateUser.getPassword());
|
||||
|
||||
try {
|
||||
messagesStore.addUserInfo(newUserBuilder.build(), inputCreateUser.getPassword());
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
Utility.printExecption(LOG, e);
|
||||
response.setStatus(HttpResponseStatus.OK);
|
||||
RestResult result = RestResult.resultOf(ErrorCode.ERROR_CODE_SERVER_ERROR, e.getMessage());
|
||||
response.setContent(new Gson().toJson(result));
|
||||
return true;
|
||||
}
|
||||
|
||||
response.setStatus(HttpResponseStatus.OK);
|
||||
RestResult result = RestResult.ok(new OutputCreateUser(inputCreateUser.getUserId(), inputCreateUser.getName()));
|
||||
|
||||
+97
@@ -0,0 +1,97 @@
|
||||
/*
|
||||
* 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.InputDestroyUser;
|
||||
import cn.wildfirechat.pojos.InputOutputUserInfo;
|
||||
import cn.wildfirechat.pojos.OutputCreateUser;
|
||||
import cn.wildfirechat.pojos.OutputGetIMTokenData;
|
||||
import cn.wildfirechat.proto.WFCMessage;
|
||||
import com.google.gson.Gson;
|
||||
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.moquette.persistence.RPCCenter;
|
||||
import io.moquette.persistence.TargetEntry;
|
||||
import io.netty.handler.codec.http.FullHttpRequest;
|
||||
import io.netty.handler.codec.http.HttpResponseStatus;
|
||||
import io.netty.util.internal.StringUtil;
|
||||
import win.liyufan.im.IMTopic;
|
||||
import win.liyufan.im.UUIDGenerator;
|
||||
|
||||
import java.util.Base64;
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
@Route(APIPath.Destroy_User)
|
||||
@HttpMethod("POST")
|
||||
public class DestroyUserAction extends AdminAction {
|
||||
|
||||
@Override
|
||||
public boolean isTransactionAction() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean action(Request request, Response response) {
|
||||
if (request.getNettyRequest() instanceof FullHttpRequest) {
|
||||
InputDestroyUser inputDestroyUser = getRequestBody(request.getNettyRequest(), InputDestroyUser.class);
|
||||
if (inputDestroyUser != null
|
||||
&& !StringUtil.isNullOrEmpty(inputDestroyUser.getUserId())) {
|
||||
|
||||
WFCMessage.IDBuf idBuf = WFCMessage.IDBuf.newBuilder().setId(inputDestroyUser.getUserId()).build();
|
||||
RPCCenter.getInstance().sendRequest(inputDestroyUser.getUserId(), null, IMTopic.DestroyUserTopic, idBuf.toByteArray(), inputDestroyUser.getUserId(), TargetEntry.Type.TARGET_TYPE_USER, new RPCCenter.Callback() {
|
||||
@Override
|
||||
public void onSuccess(byte[] result) {
|
||||
ErrorCode errorCode1 = ErrorCode.fromCode(result[0]);
|
||||
if (errorCode1 == ErrorCode.ERROR_CODE_SUCCESS) {
|
||||
//ba errorcode qudiao
|
||||
byte[] data = new byte[result.length -1];
|
||||
for (int i = 0; i < data.length; i++) {
|
||||
data[i] = result[i+1];
|
||||
}
|
||||
String token = Base64.getEncoder().encodeToString(data);
|
||||
|
||||
sendResponse(response, null, null);
|
||||
} else {
|
||||
sendResponse(response, errorCode1, null);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(ErrorCode errorCode) {
|
||||
sendResponse(response, errorCode, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTimeout() {
|
||||
sendResponse(response, ErrorCode.ERROR_CODE_TIMEOUT, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Executor getResponseExecutor() {
|
||||
return command -> {
|
||||
ctx.executor().execute(command);
|
||||
};
|
||||
}
|
||||
}, true);
|
||||
return false;
|
||||
} else {
|
||||
response.setStatus(HttpResponseStatus.OK);
|
||||
RestResult result = RestResult.resultOf(ErrorCode.INVALID_PARAMETER);
|
||||
response.setContent(new Gson().toJson(result));
|
||||
}
|
||||
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -16,7 +16,7 @@ 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 cn.wildfirechat.pojos.InputFriendRequest;
|
||||
import cn.wildfirechat.pojos.InputUpdateFriendStatusRequest;
|
||||
import io.moquette.persistence.RPCCenter;
|
||||
import io.moquette.persistence.TargetEntry;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
@@ -41,13 +41,16 @@ public class FriendRelationAction extends AdminAction {
|
||||
@Override
|
||||
public boolean action(Request request, Response response) {
|
||||
if (request.getNettyRequest() instanceof FullHttpRequest) {
|
||||
InputFriendRequest friendAdd = getRequestBody(request.getNettyRequest(), InputFriendRequest.class);
|
||||
InputUpdateFriendStatusRequest friendAdd = getRequestBody(request.getNettyRequest(), InputUpdateFriendStatusRequest.class);
|
||||
if (friendAdd != null
|
||||
&& !StringUtil.isNullOrEmpty(friendAdd.getUserId())
|
||||
&& !StringUtil.isNullOrEmpty(friendAdd.getFriendUid())
|
||||
) {
|
||||
WFCMessage.HandleFriendRequest friendRequest = WFCMessage.HandleFriendRequest.newBuilder().setTargetUid(friendAdd.getFriendUid()).setStatus(friendAdd.getStatus()).build();
|
||||
RPCCenter.getInstance().sendRequest(friendAdd.getUserId(), null, IMTopic.HandleFriendRequestTopic, friendRequest.toByteArray(), friendAdd.getFriendUid(), TargetEntry.Type.TARGET_TYPE_USER, new RPCCenter.Callback() {
|
||||
WFCMessage.HandleFriendRequest.Builder friendRequestBuilder = WFCMessage.HandleFriendRequest.newBuilder().setTargetUid(friendAdd.getFriendUid()).setStatus(friendAdd.getStatus());
|
||||
if (!StringUtil.isNullOrEmpty(friendAdd.getExtra())) {
|
||||
friendRequestBuilder = friendRequestBuilder.setExtra(friendAdd.getExtra());
|
||||
}
|
||||
RPCCenter.getInstance().sendRequest(friendAdd.getUserId(), null, IMTopic.HandleFriendRequestTopic, friendRequestBuilder.build().toByteArray(), friendAdd.getFriendUid(), TargetEntry.Type.TARGET_TYPE_USER, new RPCCenter.Callback() {
|
||||
@Override
|
||||
public void onSuccess(byte[] result) {
|
||||
ByteBuf byteBuf = Unpooled.buffer();
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user