Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
beb591fdc5 | ||
|
|
d090244be9 | ||
|
|
22708caaaa | ||
|
|
2b24fb9f44 | ||
|
|
b8ccab5dde | ||
|
|
9d29357ffa | ||
|
|
dabb92571a | ||
|
|
acb4cf81de | ||
|
|
ace676d215 | ||
|
|
1170c4209b | ||
|
|
57e8814d9c | ||
|
|
e3d9e0d183 | ||
|
|
d6f5614f49 | ||
|
|
9ed4ab7e08 | ||
|
|
4da3d3421d | ||
|
|
40ef9abd35 | ||
|
|
6f5b021c89 | ||
|
|
f8f225d741 | ||
|
|
546110f6d3 | ||
|
|
c7dbf45af6 | ||
|
|
1434dafd36 | ||
|
|
0d8a6e64ea | ||
|
|
d96c201aec | ||
|
|
d901707691 | ||
|
|
f456a4cc65 | ||
|
|
c4bd706272 | ||
|
|
503768c04b | ||
|
|
7ca3abe12d | ||
|
|
cb09026408 | ||
|
|
fab381a351 | ||
|
|
a3782b94a8 | ||
|
|
3c5ba7f1fa | ||
|
|
24e95ea4db | ||
|
|
f96f202b58 | ||
|
|
29a53955b6 | ||
|
|
bf081cd416 | ||
|
|
a074b9eac3 | ||
|
|
f1b2c546a3 | ||
|
|
52b7b6a9d7 | ||
|
|
1f03230df5 | ||
|
|
b2be0bfdd4 | ||
|
|
d6dbf08b8b | ||
|
|
ace7435726 | ||
|
|
ef45723043 | ||
|
|
9858b6060c | ||
|
|
05476bb678 | ||
|
|
54aa4d5dcf | ||
|
|
c992286af5 | ||
|
|
3ed9381084 | ||
|
|
1099c87246 | ||
|
|
e4752c832e | ||
|
|
74ac13726e | ||
|
|
6ad672be76 | ||
|
|
63dd936675 |
@@ -32,7 +32,8 @@ host 0.0.0.0
|
|||||||
##本地绑定端口
|
##本地绑定端口
|
||||||
local_port 80
|
local_port 80
|
||||||
|
|
||||||
##是否使用内置DB。0使用mysql;1使用h2db。
|
## 是否使用内置DB。0使用mysql;1使用h2db。
|
||||||
|
## MySQL需要把事物隔离级别改成"Read committed",使用命令来修改"set global transaction_isolation='read-committed';",其他数据库默认已经是这个级别不用修改
|
||||||
embed.db 1
|
embed.db 1
|
||||||
|
|
||||||
## 是否自动清理历史消息记录,当为true时,IM服务会定时扫描t_messages_x和t_user_messages_x表,清除掉3年前的历史消息。
|
## 是否自动清理历史消息记录,当为true时,IM服务会定时扫描t_messages_x和t_user_messages_x表,清除掉3年前的历史消息。
|
||||||
@@ -144,6 +145,9 @@ chatroom.create_when_not_exist true
|
|||||||
## 是否允许客户端发送操作群的自定义群通知消息
|
## 是否允许客户端发送操作群的自定义群通知消息
|
||||||
group.allow_client_custom_operation_notification true
|
group.allow_client_custom_operation_notification true
|
||||||
|
|
||||||
|
## 是否允许机器人发送操作群的自定义群通知消息
|
||||||
|
group.allow_robot_custom_operation_notification true
|
||||||
|
|
||||||
## 当群成员退出或者被移除时,是否同时给管理员和相关人员发送显式通知消息。
|
## 当群成员退出或者被移除时,是否同时给管理员和相关人员发送显式通知消息。
|
||||||
## 0 不发送,1 退群时发送,2 踢人时发送,3 退群和踢人时都发送。
|
## 0 不发送,1 退群时发送,2 踢人时发送,3 退群和踢人时都发送。
|
||||||
group.visible_quit_or_kickoff_notification 0
|
group.visible_quit_or_kickoff_notification 0
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
alter table `t_user_setting` modify column `_key` varchar(128) NOT NULL;
|
||||||
@@ -0,0 +1,599 @@
|
|||||||
|
ALTER TABLE `t_channel` MODIFY COLUMN `_cid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_channel` MODIFY COLUMN `_owner` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_channel_listener` MODIFY COLUMN `_cid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_channel_listener` MODIFY COLUMN `_mid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_chatroom` MODIFY COLUMN `_cid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_chatroom_blacklist` MODIFY COLUMN `_cid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_chatroom_blacklist` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_chatroom_manager` MODIFY COLUMN `_cid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_chatroom_manager` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_delivery_report` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_device` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_file` MODIFY COLUMN `_from` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_file` MODIFY COLUMN `_target` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_friend` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_friend` MODIFY COLUMN `_friend_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_friend_request` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_friend_request` MODIFY COLUMN `_friend_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_group` MODIFY COLUMN `_gid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_group` MODIFY COLUMN `_owner` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT '';
|
||||||
|
|
||||||
|
ALTER TABLE `t_group_member` MODIFY COLUMN `_gid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_group_member` MODIFY COLUMN `_mid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
|
||||||
|
ALTER TABLE `t_messages` MODIFY COLUMN `_from` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages` MODIFY COLUMN `_target` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages` MODIFY COLUMN `_to` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_messages_0` MODIFY COLUMN `_from` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_0` MODIFY COLUMN `_target` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_0` MODIFY COLUMN `_to` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_messages_1` MODIFY COLUMN `_from` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_1` MODIFY COLUMN `_target` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_1` MODIFY COLUMN `_to` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_messages_10` MODIFY COLUMN `_from` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_10` MODIFY COLUMN `_target` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_10` MODIFY COLUMN `_to` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_messages_11` MODIFY COLUMN `_from` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_11` MODIFY COLUMN `_target` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_11` MODIFY COLUMN `_to` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_messages_12` MODIFY COLUMN `_from` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_12` MODIFY COLUMN `_target` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_12` MODIFY COLUMN `_to` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_messages_13` MODIFY COLUMN `_from` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_13` MODIFY COLUMN `_target` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_13` MODIFY COLUMN `_to` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_messages_14` MODIFY COLUMN `_from` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_14` MODIFY COLUMN `_target` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_14` MODIFY COLUMN `_to` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_messages_15` MODIFY COLUMN `_from` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_15` MODIFY COLUMN `_target` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_15` MODIFY COLUMN `_to` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_messages_16` MODIFY COLUMN `_from` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_16` MODIFY COLUMN `_target` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_16` MODIFY COLUMN `_to` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_messages_17` MODIFY COLUMN `_from` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_17` MODIFY COLUMN `_target` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_17` MODIFY COLUMN `_to` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_messages_18` MODIFY COLUMN `_from` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_18` MODIFY COLUMN `_target` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_18` MODIFY COLUMN `_to` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_messages_19` MODIFY COLUMN `_from` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_19` MODIFY COLUMN `_target` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_19` MODIFY COLUMN `_to` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_messages_2` MODIFY COLUMN `_from` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_2` MODIFY COLUMN `_target` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_2` MODIFY COLUMN `_to` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_messages_20` MODIFY COLUMN `_from` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_20` MODIFY COLUMN `_target` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_20` MODIFY COLUMN `_to` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_messages_21` MODIFY COLUMN `_from` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_21` MODIFY COLUMN `_target` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_21` MODIFY COLUMN `_to` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_messages_22` MODIFY COLUMN `_from` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_22` MODIFY COLUMN `_target` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_22` MODIFY COLUMN `_to` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_messages_23` MODIFY COLUMN `_from` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_23` MODIFY COLUMN `_target` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_23` MODIFY COLUMN `_to` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_messages_24` MODIFY COLUMN `_from` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_24` MODIFY COLUMN `_target` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_24` MODIFY COLUMN `_to` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_messages_25` MODIFY COLUMN `_from` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_25` MODIFY COLUMN `_target` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_25` MODIFY COLUMN `_to` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_messages_26` MODIFY COLUMN `_from` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_26` MODIFY COLUMN `_target` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_26` MODIFY COLUMN `_to` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_messages_27` MODIFY COLUMN `_from` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_27` MODIFY COLUMN `_target` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_27` MODIFY COLUMN `_to` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_messages_28` MODIFY COLUMN `_from` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_28` MODIFY COLUMN `_target` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_28` MODIFY COLUMN `_to` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_messages_29` MODIFY COLUMN `_from` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_29` MODIFY COLUMN `_target` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_29` MODIFY COLUMN `_to` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_messages_3` MODIFY COLUMN `_from` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_3` MODIFY COLUMN `_target` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_3` MODIFY COLUMN `_to` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_messages_30` MODIFY COLUMN `_from` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_30` MODIFY COLUMN `_target` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_30` MODIFY COLUMN `_to` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_messages_31` MODIFY COLUMN `_from` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_31` MODIFY COLUMN `_target` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_31` MODIFY COLUMN `_to` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_messages_32` MODIFY COLUMN `_from` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_32` MODIFY COLUMN `_target` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_32` MODIFY COLUMN `_to` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_messages_33` MODIFY COLUMN `_from` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_33` MODIFY COLUMN `_target` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_33` MODIFY COLUMN `_to` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_messages_34` MODIFY COLUMN `_from` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_34` MODIFY COLUMN `_target` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_34` MODIFY COLUMN `_to` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_messages_35` MODIFY COLUMN `_from` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_35` MODIFY COLUMN `_target` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_35` MODIFY COLUMN `_to` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_messages_4` MODIFY COLUMN `_from` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_4` MODIFY COLUMN `_target` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_4` MODIFY COLUMN `_to` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_messages_5` MODIFY COLUMN `_from` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_5` MODIFY COLUMN `_target` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_5` MODIFY COLUMN `_to` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_messages_6` MODIFY COLUMN `_from` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_6` MODIFY COLUMN `_target` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_6` MODIFY COLUMN `_to` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_messages_7` MODIFY COLUMN `_from` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_7` MODIFY COLUMN `_target` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_7` MODIFY COLUMN `_to` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_messages_8` MODIFY COLUMN `_from` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_8` MODIFY COLUMN `_target` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_8` MODIFY COLUMN `_to` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_messages_9` MODIFY COLUMN `_from` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_9` MODIFY COLUMN `_target` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_messages_9` MODIFY COLUMN `_to` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_read_report` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_read_report` MODIFY COLUMN `_target` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_robot` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_robot` MODIFY COLUMN `_owner` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT '';
|
||||||
|
|
||||||
|
ALTER TABLE `t_sensitive_messages` MODIFY COLUMN `_from` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_sensitive_messages` MODIFY COLUMN `_target` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_session` MODIFY COLUMN `row_id` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user` MODIFY COLUMN `_name` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_delivery_report` MODIFY COLUMN `_rid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_delivery_report` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_device` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_device` MODIFY COLUMN `_did` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_0` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_0` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_1` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_1` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_10` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_10` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_100` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_100` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_101` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_101` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_102` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_102` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_103` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_103` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_104` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_104` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_105` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_105` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_106` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_106` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_107` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_107` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_108` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_108` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_109` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_109` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_11` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_11` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_110` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_110` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_111` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_111` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_112` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_112` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_113` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_113` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_114` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_114` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_115` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_115` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_116` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_116` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_117` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_117` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_118` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_118` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_119` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_119` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_12` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_12` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_120` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_120` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_121` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_121` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_122` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_122` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_123` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_123` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_124` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_124` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_125` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_125` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_126` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_126` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_127` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_127` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_13` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_13` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_14` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_14` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_15` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_15` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_16` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_16` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_17` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_17` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_18` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_18` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_19` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_19` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_2` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_2` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_20` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_20` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_21` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_21` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_22` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_22` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_23` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_23` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_24` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_24` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_25` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_25` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_26` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_26` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_27` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_27` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_28` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_28` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_29` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_29` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_3` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_3` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_30` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_30` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_31` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_31` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_32` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_32` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_33` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_33` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_34` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_34` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_35` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_35` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_36` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_36` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_37` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_37` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_38` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_38` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_39` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_39` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_4` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_4` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_40` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_40` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_41` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_41` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_42` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_42` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_43` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_43` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_44` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_44` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_45` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_45` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_46` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_46` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_47` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_47` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_48` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_48` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_49` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_49` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_5` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_5` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_50` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_50` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_51` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_51` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_52` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_52` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_53` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_53` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_54` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_54` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_55` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_55` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_56` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_56` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_57` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_57` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_58` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_58` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_59` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_59` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_6` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_6` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_60` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_60` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_61` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_61` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_62` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_62` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_63` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_63` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_64` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_64` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_65` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_65` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_66` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_66` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_67` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_67` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_68` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_68` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_69` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_69` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_7` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_7` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_70` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_70` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_71` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_71` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_72` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_72` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_73` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_73` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_74` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_74` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_75` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_75` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_76` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_76` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_77` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_77` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_78` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_78` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_79` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_79` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_8` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_8` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_80` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_80` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_81` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_81` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_82` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_82` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_83` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_83` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_84` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_84` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_85` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_85` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_86` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_86` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_87` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_87` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_88` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_88` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_89` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_89` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_9` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_9` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_90` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_90` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_91` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_91` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_92` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_92` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_93` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_93` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_94` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_94` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_95` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_95` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_96` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_96` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_97` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_97` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_98` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_98` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_messages_99` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_messages_99` MODIFY COLUMN `_target` VARCHAR(129) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_read_report` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_session` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_session` MODIFY COLUMN `_cid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_session` MODIFY COLUMN `_token` VARCHAR(240) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_setting` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
ALTER TABLE `t_user_setting` MODIFY COLUMN `_key` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE `t_user_status` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
|
||||||
|
ALTER TABLE `t_read_report` MODIFY COLUMN `_uid` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL;
|
||||||
|
ALTER TABLE `t_read_report` MODIFY COLUMN `_target` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL;
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
alter table `t_user_setting` modify column `_key` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL;
|
||||||
+26
-18
@@ -5,7 +5,7 @@
|
|||||||
<relativePath>../</relativePath>
|
<relativePath>../</relativePath>
|
||||||
<artifactId>wildfirechat-parent</artifactId>
|
<artifactId>wildfirechat-parent</artifactId>
|
||||||
<groupId>cn.wildfirechat</groupId>
|
<groupId>cn.wildfirechat</groupId>
|
||||||
<version>0.76</version>
|
<version>0.85</version>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<artifactId>moquette-broker</artifactId>
|
<artifactId>moquette-broker</artifactId>
|
||||||
@@ -18,30 +18,38 @@
|
|||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency>
|
|
||||||
<groupId>org.slf4j</groupId>
|
|
||||||
<artifactId>slf4j-api</artifactId>
|
|
||||||
<version>1.7.5</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.slf4j</groupId>
|
|
||||||
<artifactId>slf4j-log4j12</artifactId>
|
|
||||||
<version>1.7.5</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>cn.wildfirechat</groupId>
|
<groupId>cn.wildfirechat</groupId>
|
||||||
<artifactId>common</artifactId>
|
<artifactId>common</artifactId>
|
||||||
<version>${project.version}</version>
|
<version>${project.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- https://mvnrepository.com/artifact/log4j/log4j -->
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>log4j</groupId>
|
<groupId>org.apache.logging.log4j</groupId>
|
||||||
<artifactId>log4j</artifactId>
|
<artifactId>log4j-core</artifactId>
|
||||||
<version>1.2.17</version>
|
<version>2.17.1</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.logging.log4j</groupId>
|
||||||
|
<artifactId>log4j-api</artifactId>
|
||||||
|
<version>2.17.1</version>
|
||||||
|
</dependency>
|
||||||
|
<!--用于与slf4j保持桥接-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.logging.log4j</groupId>
|
||||||
|
<artifactId>log4j-slf4j-impl</artifactId>
|
||||||
|
<version>2.17.1</version>
|
||||||
|
</dependency>
|
||||||
|
<!-- slf4j核心包-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.slf4j</groupId>
|
||||||
|
<artifactId>slf4j-api</artifactId>
|
||||||
|
<version>1.7.25</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.lmax</groupId>
|
||||||
|
<artifactId>disruptor</artifactId>
|
||||||
|
<version>3.4.1</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
|
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
|
||||||
|
|||||||
@@ -43,27 +43,17 @@ public class ServerSetting {
|
|||||||
/** 根目录 */
|
/** 根目录 */
|
||||||
private static File root;
|
private static File root;
|
||||||
/** Filter映射表 */
|
/** Filter映射表 */
|
||||||
private static Map<String, Filter> filterMap;
|
private static Map<String, Filter> filterMap = new ConcurrentHashMap<>();
|
||||||
/** Action映射表 */
|
/** Action映射表 */
|
||||||
private static Map<String, Action> getActionMap;
|
private static Map<String, Class<? extends Action>> getActionMap = new ConcurrentHashMap<>();
|
||||||
private static Map<String, Action> postActionMap;
|
private static Map<String, Class<? extends Action>> postActionMap = new ConcurrentHashMap<>();
|
||||||
private static Map<String, Action> putActionMap;
|
private static Map<String, Class<? extends Action>> putActionMap = new ConcurrentHashMap<>();
|
||||||
private static Map<String, Action> deleteActionMap;
|
private static Map<String, Class<? extends Action>> deleteActionMap = new ConcurrentHashMap<>();
|
||||||
private static Map<String, Action> errorActionMap;
|
private static Map<String, Class<? extends Action>> errorActionMap = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
static{
|
static{
|
||||||
filterMap = new ConcurrentHashMap<String, Filter>();
|
errorActionMap.put(StrUtil.SLASH, DefaultIndexAction.class);
|
||||||
|
errorActionMap.put(MAPPING_ERROR, UnknownErrorAction.class);
|
||||||
getActionMap = new ConcurrentHashMap<String, Action>();
|
|
||||||
postActionMap = new ConcurrentHashMap<String, Action>();
|
|
||||||
|
|
||||||
putActionMap = new ConcurrentHashMap<String, Action>();
|
|
||||||
|
|
||||||
deleteActionMap = new ConcurrentHashMap<String, Action>();
|
|
||||||
|
|
||||||
errorActionMap = new ConcurrentHashMap<String, Action>();
|
|
||||||
errorActionMap.put(StrUtil.SLASH, new DefaultIndexAction());
|
|
||||||
errorActionMap.put(MAPPING_ERROR, new UnknownErrorAction());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -207,7 +197,7 @@ public class ServerSetting {
|
|||||||
/**
|
/**
|
||||||
* @return 获取ActionMap
|
* @return 获取ActionMap
|
||||||
*/
|
*/
|
||||||
public static Map<String, Action> getActionMap(String method) {
|
public static Map<String, Class<? extends Action>> getActionMap(String method) {
|
||||||
if (method.equals("GET")) {
|
if (method.equals("GET")) {
|
||||||
return getActionMap;
|
return getActionMap;
|
||||||
} else if(method.equals("POST")) {
|
} else if(method.equals("POST")) {
|
||||||
@@ -221,7 +211,17 @@ public class ServerSetting {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static Action getErrorAction(String path) {
|
public static Action getErrorAction(String path) {
|
||||||
return errorActionMap.get(path);
|
Class<? extends Action> cls = errorActionMap.get(path);
|
||||||
|
if(cls != null) {
|
||||||
|
try {
|
||||||
|
return cls.newInstance();
|
||||||
|
} catch (InstantiationException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (IllegalAccessException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -233,33 +233,17 @@ public class ServerSetting {
|
|||||||
if(StrUtil.isBlank(path)){
|
if(StrUtil.isBlank(path)){
|
||||||
path = StrUtil.SLASH;
|
path = StrUtil.SLASH;
|
||||||
}
|
}
|
||||||
return getActionMap(method).get(path.trim());
|
Class<? extends Action> cls = getActionMap(method).get(path.trim());
|
||||||
}
|
if(cls != null) {
|
||||||
|
try {
|
||||||
/**
|
return cls.newInstance();
|
||||||
* 设置Action类,已有的Action类将被覆盖
|
} catch (InstantiationException e) {
|
||||||
* @param path 拦截路径(必须以"/"开头)
|
e.printStackTrace();
|
||||||
* @param action Action类
|
} catch (IllegalAccessException e) {
|
||||||
*/
|
e.printStackTrace();
|
||||||
public static void setAction(String path, Action action) {
|
}
|
||||||
if(StrUtil.isBlank(path)){
|
|
||||||
path = StrUtil.SLASH;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(null == action) {
|
|
||||||
Logger.warn("Added blank action, pass it.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
//所有路径必须以 "/" 开头,如果没有则补全之
|
|
||||||
if(false == path.startsWith(StrUtil.SLASH)) {
|
|
||||||
path = StrUtil.SLASH + path;
|
|
||||||
}
|
|
||||||
String method = "GET";
|
|
||||||
HttpMethod methodAnnotation = action.getClass().getAnnotation(HttpMethod.class);
|
|
||||||
if (methodAnnotation != null) {
|
|
||||||
method = methodAnnotation.value();
|
|
||||||
}
|
}
|
||||||
ServerSetting.getActionMap(method).put(path, action);
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -269,24 +253,24 @@ public class ServerSetting {
|
|||||||
* @param actionClass Action类
|
* @param actionClass Action类
|
||||||
*/
|
*/
|
||||||
public static void setAction(String path, Class<? extends Action> actionClass) {
|
public static void setAction(String path, Class<? extends Action> actionClass) {
|
||||||
setAction(path, (Action)Singleton.get(actionClass));
|
if(StrUtil.isBlank(path)){
|
||||||
}
|
path = StrUtil.SLASH;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
if(null == actionClass) {
|
||||||
* 增加Action类,已有的Action类将被覆盖<br>
|
Logger.warn("Added blank action, pass it.");
|
||||||
* 自动读取Route的注解来获得Path路径
|
return;
|
||||||
* @param action 带注解的Action对象
|
}
|
||||||
*/
|
//所有路径必须以 "/" 开头,如果没有则补全之
|
||||||
public static void setAction(Action action) {
|
if(false == path.startsWith(StrUtil.SLASH)) {
|
||||||
final Route route = action.getClass().getAnnotation(Route.class);
|
path = StrUtil.SLASH + path;
|
||||||
if(route != null){
|
}
|
||||||
final String path = route.value();
|
String method = "GET";
|
||||||
if(StrUtil.isNotBlank(path)){
|
HttpMethod methodAnnotation = actionClass.getAnnotation(HttpMethod.class);
|
||||||
setAction(path, action);
|
if (methodAnnotation != null) {
|
||||||
return;
|
method = methodAnnotation.value();
|
||||||
}
|
}
|
||||||
}
|
ServerSetting.getActionMap(method).put(path, actionClass);
|
||||||
throw new ServerSettingException("Can not find Route annotation,please add annotation to Action class!");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -295,7 +279,15 @@ public class ServerSetting {
|
|||||||
* @param actionClass 带注解的Action类
|
* @param actionClass 带注解的Action类
|
||||||
*/
|
*/
|
||||||
public static void setAction(Class<? extends Action> actionClass) {
|
public static void setAction(Class<? extends Action> actionClass) {
|
||||||
setAction((Action)Singleton.get(actionClass));
|
final Route route = actionClass.getAnnotation(Route.class);
|
||||||
|
if(route != null){
|
||||||
|
final String path = route.value();
|
||||||
|
if(StrUtil.isNotBlank(path)){
|
||||||
|
setAction(path, actionClass);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
throw new ServerSettingException("Can not find Route annotation,please add annotation to Action class!");
|
||||||
}
|
}
|
||||||
//----------------------------------------------------------------------------------------------- Action start
|
//----------------------------------------------------------------------------------------------- Action start
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
|
|
||||||
package com.xiaoleilu.loServer.action;
|
package com.xiaoleilu.loServer.action;
|
||||||
|
|
||||||
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import cn.wildfirechat.proto.WFCMessage;
|
import cn.wildfirechat.proto.WFCMessage;
|
||||||
import com.google.protobuf.InvalidProtocolBufferException;
|
import com.google.protobuf.InvalidProtocolBufferException;
|
||||||
import com.xiaoleilu.loServer.annotation.HttpMethod;
|
import com.xiaoleilu.loServer.annotation.HttpMethod;
|
||||||
@@ -101,7 +102,7 @@ public class IMAction extends Action {
|
|||||||
ctx.executor().execute(command);
|
ctx.executor().execute(command);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}, false);
|
}, ProtoConstants.RequestSourceType.Request_From_User);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
} catch (InvalidProtocolBufferException e) {
|
} catch (InvalidProtocolBufferException e) {
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
package com.xiaoleilu.loServer.action;
|
package com.xiaoleilu.loServer.action;
|
||||||
|
|
||||||
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import cn.wildfirechat.proto.WFCMessage;
|
import cn.wildfirechat.proto.WFCMessage;
|
||||||
import com.google.protobuf.InvalidProtocolBufferException;
|
import com.google.protobuf.InvalidProtocolBufferException;
|
||||||
import com.xiaoleilu.loServer.annotation.HttpMethod;
|
import com.xiaoleilu.loServer.annotation.HttpMethod;
|
||||||
@@ -134,7 +135,7 @@ public class RouteAction extends Action {
|
|||||||
ctx.executor().execute(command);
|
ctx.executor().execute(command);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}, false);
|
}, ProtoConstants.RequestSourceType.Request_From_User);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
} catch (InvalidProtocolBufferException e) {
|
} catch (InvalidProtocolBufferException e) {
|
||||||
|
|||||||
@@ -131,6 +131,7 @@ public class UploadFileAction extends Action {
|
|||||||
}
|
}
|
||||||
|
|
||||||
readHttpDataChunkByChunk(response, decoder, requestId, HttpHeaders.isKeepAlive(request));
|
readHttpDataChunkByChunk(response, decoder, requestId, HttpHeaders.isKeepAlive(request));
|
||||||
|
decoder.destroy();
|
||||||
|
|
||||||
if (chunk instanceof LastHttpContent) {
|
if (chunk instanceof LastHttpContent) {
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
package com.xiaoleilu.loServer.action.admin;
|
package com.xiaoleilu.loServer.action.admin;
|
||||||
|
|
||||||
import cn.wildfirechat.common.APIPath;
|
import cn.wildfirechat.common.APIPath;
|
||||||
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.xiaoleilu.loServer.RestResult;
|
import com.xiaoleilu.loServer.RestResult;
|
||||||
import com.xiaoleilu.loServer.action.Action;
|
import com.xiaoleilu.loServer.action.Action;
|
||||||
@@ -132,6 +133,6 @@ abstract public class AdminAction extends Action {
|
|||||||
ctx.executor().execute(command);
|
ctx.executor().execute(command);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}, !noAdmin);
|
}, noAdmin ? ProtoConstants.RequestSourceType.Request_From_User : ProtoConstants.RequestSourceType.Request_From_Admin);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+62
@@ -0,0 +1,62 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of the Wildfire Chat package.
|
||||||
|
* (c) Heavyrain2012 <heavyrain.lee@gmail.com>
|
||||||
|
*
|
||||||
|
* 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.InputChannelId;
|
||||||
|
import cn.wildfirechat.pojos.OutputCreateChannel;
|
||||||
|
import cn.wildfirechat.proto.WFCMessage;
|
||||||
|
import com.xiaoleilu.loServer.RestResult;
|
||||||
|
import com.xiaoleilu.loServer.annotation.HttpMethod;
|
||||||
|
import com.xiaoleilu.loServer.annotation.Route;
|
||||||
|
import com.xiaoleilu.loServer.handler.Request;
|
||||||
|
import com.xiaoleilu.loServer.handler.Response;
|
||||||
|
import io.netty.buffer.ByteBuf;
|
||||||
|
import io.netty.buffer.Unpooled;
|
||||||
|
import io.netty.handler.codec.http.FullHttpRequest;
|
||||||
|
import io.netty.util.internal.StringUtil;
|
||||||
|
import win.liyufan.im.IMTopic;
|
||||||
|
|
||||||
|
@Route(APIPath.Destroy_Channel)
|
||||||
|
@HttpMethod("POST")
|
||||||
|
public class DestroyChannelAction extends AdminAction {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isTransactionAction() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean action(Request request, Response response) {
|
||||||
|
if (request.getNettyRequest() instanceof FullHttpRequest) {
|
||||||
|
InputChannelId inputCreateChannel = getRequestBody(request.getNettyRequest(), InputChannelId.class);
|
||||||
|
if (inputCreateChannel != null
|
||||||
|
&& !StringUtil.isNullOrEmpty(inputCreateChannel.channelId)) {
|
||||||
|
WFCMessage.ChannelInfo channelInfo = messagesStore.getChannelInfo(inputCreateChannel.channelId);
|
||||||
|
if(channelInfo == null) {
|
||||||
|
setResponseContent(RestResult.resultOf(ErrorCode.ERROR_CODE_NOT_EXIST), response);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
WFCMessage.IDBuf.Builder builder = WFCMessage.IDBuf.newBuilder().setId(inputCreateChannel.channelId);
|
||||||
|
sendApiMessage(response, channelInfo.getOwner(), IMTopic.DestroyChannelInfoTopic, builder.build().toByteArray(), result -> {
|
||||||
|
ByteBuf byteBuf = Unpooled.buffer();
|
||||||
|
byteBuf.writeBytes(result);
|
||||||
|
ErrorCode errorCode = ErrorCode.fromCode(byteBuf.readByte());
|
||||||
|
return new Result(errorCode);
|
||||||
|
});
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
setResponseContent(RestResult.resultOf(ErrorCode.INVALID_PARAMETER), response);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
+51
@@ -0,0 +1,51 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of the Wildfire Chat package.
|
||||||
|
* (c) Heavyrain2012 <heavyrain.lee@gmail.com>
|
||||||
|
*
|
||||||
|
* 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.InputChannelId;
|
||||||
|
import cn.wildfirechat.pojos.OutputGetChannelInfo;
|
||||||
|
import cn.wildfirechat.proto.WFCMessage;
|
||||||
|
import com.xiaoleilu.loServer.RestResult;
|
||||||
|
import com.xiaoleilu.loServer.annotation.HttpMethod;
|
||||||
|
import com.xiaoleilu.loServer.annotation.Route;
|
||||||
|
import com.xiaoleilu.loServer.handler.Request;
|
||||||
|
import com.xiaoleilu.loServer.handler.Response;
|
||||||
|
import io.netty.handler.codec.http.FullHttpRequest;
|
||||||
|
import io.netty.util.internal.StringUtil;
|
||||||
|
|
||||||
|
@Route(APIPath.Get_Channel_Info)
|
||||||
|
@HttpMethod("POST")
|
||||||
|
public class GetChannelAction extends AdminAction {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isTransactionAction() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean action(Request request, Response response) {
|
||||||
|
if (request.getNettyRequest() instanceof FullHttpRequest) {
|
||||||
|
InputChannelId inputCreateChannel = getRequestBody(request.getNettyRequest(), InputChannelId.class);
|
||||||
|
if (inputCreateChannel != null
|
||||||
|
&& !StringUtil.isNullOrEmpty(inputCreateChannel.channelId)) {
|
||||||
|
WFCMessage.ChannelInfo channelInfo = messagesStore.getChannelInfo(inputCreateChannel.channelId);
|
||||||
|
if (channelInfo == null) {
|
||||||
|
setResponseContent(RestResult.resultOf(ErrorCode.ERROR_CODE_NOT_EXIST), response);
|
||||||
|
} else {
|
||||||
|
setResponseContent(RestResult.ok(OutputGetChannelInfo.fromPbInfo(channelInfo)), response);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
setResponseContent(RestResult.resultOf(ErrorCode.INVALID_PARAMETER), response);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -63,6 +63,7 @@ public class GetGroupMembersAction extends AdminAction {
|
|||||||
pm.setAlias(member.getAlias());
|
pm.setAlias(member.getAlias());
|
||||||
pm.setType(member.getType());
|
pm.setType(member.getType());
|
||||||
pm.setExtra(member.getExtra());
|
pm.setExtra(member.getExtra());
|
||||||
|
pm.setCreateDt(member.getCreateDt());
|
||||||
out.getMembers().add(pm);
|
out.getMembers().add(pm);
|
||||||
}
|
}
|
||||||
result = RestResult.ok(out);
|
result = RestResult.ok(out);
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
package com.xiaoleilu.loServer.action.channel;
|
package com.xiaoleilu.loServer.action.channel;
|
||||||
|
|
||||||
import cn.wildfirechat.common.IMExceptionEvent;
|
import cn.wildfirechat.common.IMExceptionEvent;
|
||||||
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import cn.wildfirechat.proto.WFCMessage;
|
import cn.wildfirechat.proto.WFCMessage;
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.xiaoleilu.loServer.RestResult;
|
import com.xiaoleilu.loServer.RestResult;
|
||||||
@@ -27,6 +28,7 @@ import org.slf4j.LoggerFactory;
|
|||||||
import win.liyufan.im.RateLimiter;
|
import win.liyufan.im.RateLimiter;
|
||||||
import win.liyufan.im.Utility;
|
import win.liyufan.im.Utility;
|
||||||
|
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.concurrent.Executor;
|
import java.util.concurrent.Executor;
|
||||||
|
|
||||||
abstract public class ChannelAction extends Action {
|
abstract public class ChannelAction extends Action {
|
||||||
@@ -68,6 +70,7 @@ abstract public class ChannelAction extends Action {
|
|||||||
try {
|
try {
|
||||||
ts = Long.parseLong(timestamp);
|
ts = Long.parseLong(timestamp);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
LOG.error("Channel timestamp:{} invalid", timestamp);
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
Utility.printExecption(LOG, e, IMExceptionEvent.EventType.CHANNEL_API_Exception);
|
Utility.printExecption(LOG, e, IMExceptionEvent.EventType.CHANNEL_API_Exception);
|
||||||
return ErrorCode.ERROR_CODE_API_NOT_SIGNED;
|
return ErrorCode.ERROR_CODE_API_NOT_SIGNED;
|
||||||
@@ -79,11 +82,11 @@ abstract public class ChannelAction extends Action {
|
|||||||
|
|
||||||
channelInfo = messagesStore.getChannelInfo(cid);
|
channelInfo = messagesStore.getChannelInfo(cid);
|
||||||
if (channelInfo == null) {
|
if (channelInfo == null) {
|
||||||
return ErrorCode.INVALID_PARAMETER;
|
return ErrorCode.ERROR_CODE_CHANNEL_NO_EXIST;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (StringUtil.isNullOrEmpty(channelInfo.getSecret())) {
|
if (StringUtil.isNullOrEmpty(channelInfo.getSecret())) {
|
||||||
return ErrorCode.ERROR_CODE_NOT_RIGHT;
|
return ErrorCode.ERROR_CODE_CHANNEL_NO_SECRET;
|
||||||
}
|
}
|
||||||
|
|
||||||
String str = nonce + "|" + channelInfo.getSecret() + "|" + timestamp;
|
String str = nonce + "|" + channelInfo.getSecret() + "|" + timestamp;
|
||||||
@@ -106,7 +109,7 @@ abstract public class ChannelAction extends Action {
|
|||||||
if (request instanceof FullHttpRequest) {
|
if (request instanceof FullHttpRequest) {
|
||||||
FullHttpRequest fullHttpRequest = (FullHttpRequest) request;
|
FullHttpRequest fullHttpRequest = (FullHttpRequest) request;
|
||||||
byte[] bytes = Utils.readBytesAndRewind(fullHttpRequest.content());
|
byte[] bytes = Utils.readBytesAndRewind(fullHttpRequest.content());
|
||||||
String content = new String(bytes);
|
String content = new String(bytes, StandardCharsets.UTF_8);
|
||||||
Gson gson = new Gson();
|
Gson gson = new Gson();
|
||||||
T t = gson.fromJson(content, cls);
|
T t = gson.fromJson(content, cls);
|
||||||
return t;
|
return t;
|
||||||
@@ -139,6 +142,6 @@ abstract public class ChannelAction extends Action {
|
|||||||
ctx.executor().execute(command);
|
ctx.executor().execute(command);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}, false, true);
|
}, ProtoConstants.RequestSourceType.Request_From_Channel);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,16 +14,12 @@ import cn.wildfirechat.pojos.InputGetUserInfo;
|
|||||||
import cn.wildfirechat.pojos.InputOutputUserInfo;
|
import cn.wildfirechat.pojos.InputOutputUserInfo;
|
||||||
import cn.wildfirechat.proto.ProtoConstants;
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import cn.wildfirechat.proto.WFCMessage;
|
import cn.wildfirechat.proto.WFCMessage;
|
||||||
import com.google.gson.Gson;
|
|
||||||
import com.xiaoleilu.loServer.RestResult;
|
import com.xiaoleilu.loServer.RestResult;
|
||||||
import com.xiaoleilu.loServer.action.admin.AdminAction;
|
|
||||||
import com.xiaoleilu.loServer.action.robot.RobotAction;
|
|
||||||
import com.xiaoleilu.loServer.annotation.HttpMethod;
|
import com.xiaoleilu.loServer.annotation.HttpMethod;
|
||||||
import com.xiaoleilu.loServer.annotation.Route;
|
import com.xiaoleilu.loServer.annotation.Route;
|
||||||
import com.xiaoleilu.loServer.handler.Request;
|
import com.xiaoleilu.loServer.handler.Request;
|
||||||
import com.xiaoleilu.loServer.handler.Response;
|
import com.xiaoleilu.loServer.handler.Response;
|
||||||
import io.netty.handler.codec.http.FullHttpRequest;
|
import io.netty.handler.codec.http.FullHttpRequest;
|
||||||
import io.netty.handler.codec.http.HttpResponseStatus;
|
|
||||||
import io.netty.util.internal.StringUtil;
|
import io.netty.util.internal.StringUtil;
|
||||||
|
|
||||||
@Route(APIPath.Channel_User_Info)
|
@Route(APIPath.Channel_User_Info)
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ package com.xiaoleilu.loServer.action.channel;
|
|||||||
import cn.wildfirechat.common.APIPath;
|
import cn.wildfirechat.common.APIPath;
|
||||||
import cn.wildfirechat.pojos.SendChannelMessageData;
|
import cn.wildfirechat.pojos.SendChannelMessageData;
|
||||||
import cn.wildfirechat.proto.ProtoConstants;
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import com.google.gson.Gson;
|
|
||||||
import com.xiaoleilu.loServer.RestResult;
|
import com.xiaoleilu.loServer.RestResult;
|
||||||
import com.xiaoleilu.loServer.annotation.HttpMethod;
|
import com.xiaoleilu.loServer.annotation.HttpMethod;
|
||||||
import com.xiaoleilu.loServer.annotation.Route;
|
import com.xiaoleilu.loServer.annotation.Route;
|
||||||
@@ -24,7 +23,6 @@ import cn.wildfirechat.pojos.SendMessageResult;
|
|||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
import io.netty.buffer.Unpooled;
|
import io.netty.buffer.Unpooled;
|
||||||
import io.netty.handler.codec.http.FullHttpRequest;
|
import io.netty.handler.codec.http.FullHttpRequest;
|
||||||
import io.netty.handler.codec.http.HttpResponseStatus;
|
|
||||||
import cn.wildfirechat.common.ErrorCode;
|
import cn.wildfirechat.common.ErrorCode;
|
||||||
import win.liyufan.im.IMTopic;
|
import win.liyufan.im.IMTopic;
|
||||||
|
|
||||||
|
|||||||
@@ -67,6 +67,7 @@ public class GetGroupMembersAction extends RobotAction {
|
|||||||
pm.setAlias(member.getAlias());
|
pm.setAlias(member.getAlias());
|
||||||
pm.setType(member.getType());
|
pm.setType(member.getType());
|
||||||
pm.setExtra(member.getExtra());
|
pm.setExtra(member.getExtra());
|
||||||
|
pm.setCreateDt(member.getCreateDt());
|
||||||
out.getMembers().add(pm);
|
out.getMembers().add(pm);
|
||||||
}
|
}
|
||||||
if(!isInGroup) {
|
if(!isInGroup) {
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
package com.xiaoleilu.loServer.action.robot;
|
package com.xiaoleilu.loServer.action.robot;
|
||||||
|
|
||||||
import cn.wildfirechat.common.IMExceptionEvent;
|
import cn.wildfirechat.common.IMExceptionEvent;
|
||||||
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import cn.wildfirechat.proto.WFCMessage;
|
import cn.wildfirechat.proto.WFCMessage;
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.xiaoleilu.loServer.RestResult;
|
import com.xiaoleilu.loServer.RestResult;
|
||||||
@@ -146,6 +147,6 @@ abstract public class RobotAction extends Action {
|
|||||||
ctx.executor().execute(command);
|
ctx.executor().execute(command);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}, false, true);
|
}, ProtoConstants.RequestSourceType.Request_From_Robot);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,42 +34,43 @@ public class UpdateProfileAction extends RobotAction {
|
|||||||
|
|
||||||
WFCMessage.User.Builder builder = messagesStore.getUserInfo(robot.getUid()).toBuilder();
|
WFCMessage.User.Builder builder = messagesStore.getUserInfo(robot.getUid()).toBuilder();
|
||||||
boolean modified = false;
|
boolean modified = false;
|
||||||
|
String value = input.getStrValue() == null ? "" : input.getStrValue();
|
||||||
switch (input.getIntValue()) {
|
switch (input.getIntValue()) {
|
||||||
case Modify_DisplayName:
|
case Modify_DisplayName:
|
||||||
builder.setDisplayName(input.getStrValue());
|
builder.setDisplayName(value);
|
||||||
modified = true;
|
modified = true;
|
||||||
break;
|
break;
|
||||||
case Modify_Gender:
|
case Modify_Gender:
|
||||||
builder.setGender(Integer.parseInt(input.getStrValue()));
|
builder.setGender(Integer.parseInt(value));
|
||||||
modified = true;
|
modified = true;
|
||||||
break;
|
break;
|
||||||
case Modify_Portrait:
|
case Modify_Portrait:
|
||||||
builder.setPortrait(input.getStrValue());
|
builder.setPortrait(value);
|
||||||
modified = true;
|
modified = true;
|
||||||
break;
|
break;
|
||||||
//不允许修改电话号码,如果修改电话号码必须通过admin进行修改
|
//不允许修改电话号码,如果修改电话号码必须通过admin进行修改
|
||||||
// case Modify_Mobile:
|
// case Modify_Mobile:
|
||||||
// builder.setMobile(input.getStrValue());
|
// builder.setMobile(value);
|
||||||
// modified = true;
|
// modified = true;
|
||||||
// break;
|
// break;
|
||||||
case Modify_Email:
|
case Modify_Email:
|
||||||
builder.setEmail(input.getStrValue());
|
builder.setEmail(value);
|
||||||
modified = true;
|
modified = true;
|
||||||
break;
|
break;
|
||||||
case Modify_Address:
|
case Modify_Address:
|
||||||
builder.setAddress(input.getStrValue());
|
builder.setAddress(value);
|
||||||
modified = true;
|
modified = true;
|
||||||
break;
|
break;
|
||||||
case Modify_Company:
|
case Modify_Company:
|
||||||
builder.setCompany(input.getStrValue());
|
builder.setCompany(value);
|
||||||
modified = true;
|
modified = true;
|
||||||
break;
|
break;
|
||||||
case Modify_Social:
|
case Modify_Social:
|
||||||
builder.setSocial(input.getStrValue());
|
builder.setSocial(value);
|
||||||
modified = true;
|
modified = true;
|
||||||
break;
|
break;
|
||||||
case Modify_Extra:
|
case Modify_Extra:
|
||||||
builder.setExtra(input.getStrValue());
|
builder.setExtra(value);
|
||||||
modified = true;
|
modified = true;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|||||||
@@ -155,6 +155,8 @@ public final class BrokerConstants {
|
|||||||
|
|
||||||
|
|
||||||
public static final String GROUP_Allow_Client_Custom_Operation_Notification = "group.allow_client_custom_operation_notification";
|
public static final String GROUP_Allow_Client_Custom_Operation_Notification = "group.allow_client_custom_operation_notification";
|
||||||
|
public static final String GROUP_Allow_Robot_Custom_Operation_Notification = "group.allow_robot_custom_operation_notificatio";
|
||||||
|
|
||||||
public static final String GROUP_Visible_Quit_Kickoff_Notification = "group.visible_quit_or_kickoff_notification";
|
public static final String GROUP_Visible_Quit_Kickoff_Notification = "group.visible_quit_or_kickoff_notification";
|
||||||
|
|
||||||
public static final String USER_HIDE_PROPERTIES = "user.hide_properties";
|
public static final String USER_HIDE_PROPERTIES = "user.hide_properties";
|
||||||
|
|||||||
@@ -21,8 +21,9 @@ import static win.liyufan.im.IMTopic.HandleFriendRequestTopic;
|
|||||||
@Handler(IMTopic.AddFriendRequestTopic)
|
@Handler(IMTopic.AddFriendRequestTopic)
|
||||||
public class AddFriendHandler extends GroupHandler<WFCMessage.AddFriendRequest> {
|
public class AddFriendHandler extends GroupHandler<WFCMessage.AddFriendRequest> {
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.AddFriendRequest request, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.AddFriendRequest request, Qos1PublishHandler.IMCallback callback) {
|
||||||
long[] head = new long[1];
|
long[] head = new long[1];
|
||||||
|
boolean isAdmin = requestSourceType == ProtoConstants.RequestSourceType.Request_From_Admin;
|
||||||
ErrorCode errorCode = m_messagesStore.saveAddFriendRequest(fromUser, request, head, isAdmin);
|
ErrorCode errorCode = m_messagesStore.saveAddFriendRequest(fromUser, request, head, isAdmin);
|
||||||
if (errorCode == ERROR_CODE_SUCCESS) {
|
if (errorCode == ERROR_CODE_SUCCESS) {
|
||||||
WFCMessage.User user = m_messagesStore.getUserInfo(request.getTargetUid());
|
WFCMessage.User user = m_messagesStore.getUserInfo(request.getTargetUid());
|
||||||
@@ -30,7 +31,7 @@ public class AddFriendHandler extends GroupHandler<WFCMessage.AddFriendRequest>
|
|||||||
publisher.publishNotification(IMTopic.NotifyFriendRequestTopic, request.getTargetUid(), head[0], fromUser, request.getReason());
|
publisher.publishNotification(IMTopic.NotifyFriendRequestTopic, request.getTargetUid(), head[0], fromUser, request.getReason());
|
||||||
} else if(user != null && user.getType() == ProtoConstants.UserType.UserType_Robot) {
|
} else if(user != null && user.getType() == ProtoConstants.UserType.UserType_Robot) {
|
||||||
WFCMessage.HandleFriendRequest handleFriendRequest = WFCMessage.HandleFriendRequest.newBuilder().setTargetUid(fromUser).setStatus(ProtoConstants.FriendRequestStatus.RequestStatus_Accepted).build();
|
WFCMessage.HandleFriendRequest handleFriendRequest = WFCMessage.HandleFriendRequest.newBuilder().setTargetUid(fromUser).setStatus(ProtoConstants.FriendRequestStatus.RequestStatus_Accepted).build();
|
||||||
mServer.onApiMessage(request.getTargetUid(), null, handleFriendRequest.toByteArray(), 0, fromUser, HandleFriendRequestTopic, false, false);
|
mServer.onApiMessage(request.getTargetUid(), null, handleFriendRequest.toByteArray(), 0, fromUser, HandleFriendRequestTopic, requestSourceType);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return errorCode;
|
return errorCode;
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
package io.moquette.imhandler;
|
package io.moquette.imhandler;
|
||||||
|
|
||||||
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import cn.wildfirechat.proto.WFCMessage;
|
import cn.wildfirechat.proto.WFCMessage;
|
||||||
import cn.wildfirechat.pojos.GroupNotificationBinaryContent;
|
import cn.wildfirechat.pojos.GroupNotificationBinaryContent;
|
||||||
import io.moquette.spi.impl.Qos1PublishHandler;
|
import io.moquette.spi.impl.Qos1PublishHandler;
|
||||||
@@ -21,7 +22,8 @@ import static cn.wildfirechat.common.ErrorCode.ERROR_CODE_SUCCESS;
|
|||||||
public class AddGroupMember extends GroupHandler<WFCMessage.AddGroupMemberRequest> {
|
public class AddGroupMember extends GroupHandler<WFCMessage.AddGroupMemberRequest> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.AddGroupMemberRequest request, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.AddGroupMemberRequest request, Qos1PublishHandler.IMCallback callback) {
|
||||||
|
boolean isAdmin = requestSourceType == ProtoConstants.RequestSourceType.Request_From_Admin;
|
||||||
ErrorCode errorCode = m_messagesStore.addGroupMembers(fromUser, isAdmin, request.getGroupId(), request.getAddedMemberList(), request.getExtra());
|
ErrorCode errorCode = m_messagesStore.addGroupMembers(fromUser, isAdmin, request.getGroupId(), request.getAddedMemberList(), request.getExtra());
|
||||||
if (errorCode == ERROR_CODE_SUCCESS) {
|
if (errorCode == ERROR_CODE_SUCCESS) {
|
||||||
if (request.hasNotifyContent() && request.getNotifyContent().getType() > 0) {
|
if (request.hasNotifyContent() && request.getNotifyContent().getType() > 0) {
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
package io.moquette.imhandler;
|
package io.moquette.imhandler;
|
||||||
|
|
||||||
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import cn.wildfirechat.proto.WFCMessage;
|
import cn.wildfirechat.proto.WFCMessage;
|
||||||
import io.moquette.spi.impl.Qos1PublishHandler;
|
import io.moquette.spi.impl.Qos1PublishHandler;
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
@@ -19,7 +20,7 @@ import static cn.wildfirechat.common.ErrorCode.ERROR_CODE_SUCCESS;
|
|||||||
@Handler(IMTopic.BlackListUserTopic)
|
@Handler(IMTopic.BlackListUserTopic)
|
||||||
public class BlackListRequestHandler extends GroupHandler<WFCMessage.BlackUserRequest> {
|
public class BlackListRequestHandler extends GroupHandler<WFCMessage.BlackUserRequest> {
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.BlackUserRequest request, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.BlackUserRequest request, Qos1PublishHandler.IMCallback callback) {
|
||||||
long[] head = new long[1];
|
long[] head = new long[1];
|
||||||
ErrorCode errorCode = m_messagesStore.blackUserRequest(fromUser, request.getUid(), request.getStatus(), head);
|
ErrorCode errorCode = m_messagesStore.blackUserRequest(fromUser, request.getUid(), request.getStatus(), head);
|
||||||
if (errorCode == ERROR_CODE_SUCCESS) {
|
if (errorCode == ERROR_CODE_SUCCESS) {
|
||||||
|
|||||||
@@ -25,8 +25,9 @@ import static cn.wildfirechat.proto.ProtoConstants.ContentType.Text;
|
|||||||
@Handler(value = IMTopic.BroadcastMessageTopic)
|
@Handler(value = IMTopic.BroadcastMessageTopic)
|
||||||
public class BroadcastMessageHandler extends IMHandler<WFCMessage.Message> {
|
public class BroadcastMessageHandler extends IMHandler<WFCMessage.Message> {
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.Message message, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.Message message, Qos1PublishHandler.IMCallback callback) {
|
||||||
ErrorCode errorCode = ErrorCode.ERROR_CODE_SUCCESS;
|
ErrorCode errorCode = ErrorCode.ERROR_CODE_SUCCESS;
|
||||||
|
boolean isAdmin = requestSourceType == ProtoConstants.RequestSourceType.Request_From_Admin;
|
||||||
if (message != null) {
|
if (message != null) {
|
||||||
if (!isAdmin) { //only admin can broadcast message
|
if (!isAdmin) { //only admin can broadcast message
|
||||||
return ErrorCode.ERROR_CODE_NOT_RIGHT;
|
return ErrorCode.ERROR_CODE_NOT_RIGHT;
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
package io.moquette.imhandler;
|
package io.moquette.imhandler;
|
||||||
|
|
||||||
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import cn.wildfirechat.proto.WFCMessage;
|
import cn.wildfirechat.proto.WFCMessage;
|
||||||
import io.moquette.spi.impl.Qos1PublishHandler;
|
import io.moquette.spi.impl.Qos1PublishHandler;
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
@@ -21,11 +22,11 @@ import static win.liyufan.im.UserSettingScope.kUserSettingListenedChannels;
|
|||||||
public class ChannelListenMember extends IMHandler<WFCMessage.ListenChannel> {
|
public class ChannelListenMember extends IMHandler<WFCMessage.ListenChannel> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.ListenChannel request, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.ListenChannel request, Qos1PublishHandler.IMCallback callback) {
|
||||||
ErrorCode errorCode = m_messagesStore.listenChannel(fromUser, request.getChannelId(), request.getListen()>0);
|
ErrorCode errorCode = m_messagesStore.listenChannel(fromUser, request.getChannelId(), request.getListen()>0);
|
||||||
if (errorCode == ErrorCode.ERROR_CODE_SUCCESS) {
|
if (errorCode == ErrorCode.ERROR_CODE_SUCCESS) {
|
||||||
WFCMessage.ModifyUserSettingReq modifyUserSettingReq = WFCMessage.ModifyUserSettingReq.newBuilder().setScope(kUserSettingListenedChannels).setKey(request.getChannelId()).setValue(request.getListen() > 0 ? "1" : "0").build();
|
WFCMessage.ModifyUserSettingReq modifyUserSettingReq = WFCMessage.ModifyUserSettingReq.newBuilder().setScope(kUserSettingListenedChannels).setKey(request.getChannelId()).setValue(request.getListen() > 0 ? "1" : "0").build();
|
||||||
mServer.onApiMessage(fromUser, null, modifyUserSettingReq.toByteArray(), 0, fromUser, PutUserSettingTopic, false, false);
|
mServer.onApiMessage(fromUser, null, modifyUserSettingReq.toByteArray(), 0, fromUser, PutUserSettingTopic, requestSourceType);
|
||||||
|
|
||||||
publisher.notifyChannelListenStatusChanged(m_messagesStore.getChannelInfo(request.getChannelId()), fromUser, request.getListen() > 0);
|
publisher.notifyChannelListenStatusChanged(m_messagesStore.getChannelInfo(request.getChannelId()), fromUser, request.getListen() > 0);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
package io.moquette.imhandler;
|
package io.moquette.imhandler;
|
||||||
|
|
||||||
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import cn.wildfirechat.proto.WFCMessage;
|
import cn.wildfirechat.proto.WFCMessage;
|
||||||
import io.moquette.spi.impl.Qos1PublishHandler;
|
import io.moquette.spi.impl.Qos1PublishHandler;
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
@@ -19,7 +20,7 @@ import java.util.List;
|
|||||||
@Handler(IMTopic.ChannelSearchTopic)
|
@Handler(IMTopic.ChannelSearchTopic)
|
||||||
public class ChannelSearchHandler extends IMHandler<WFCMessage.SearchUserRequest> {
|
public class ChannelSearchHandler extends IMHandler<WFCMessage.SearchUserRequest> {
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.SearchUserRequest request, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.SearchUserRequest request, Qos1PublishHandler.IMCallback callback) {
|
||||||
List<WFCMessage.ChannelInfo> users = m_messagesStore.searchChannel(request.getKeyword(), request.getFuzzy() > 0, request.getPage());
|
List<WFCMessage.ChannelInfo> users = m_messagesStore.searchChannel(request.getKeyword(), request.getFuzzy() > 0, request.getPage());
|
||||||
WFCMessage.SearchChannelResult.Builder builder = WFCMessage.SearchChannelResult.newBuilder();
|
WFCMessage.SearchChannelResult.Builder builder = WFCMessage.SearchChannelResult.newBuilder();
|
||||||
builder.addAllChannel(users);
|
builder.addAllChannel(users);
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
package io.moquette.imhandler;
|
package io.moquette.imhandler;
|
||||||
|
|
||||||
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import cn.wildfirechat.proto.WFCMessage;
|
import cn.wildfirechat.proto.WFCMessage;
|
||||||
import com.hazelcast.util.StringUtil;
|
import com.hazelcast.util.StringUtil;
|
||||||
import io.moquette.spi.impl.Qos1PublishHandler;
|
import io.moquette.spi.impl.Qos1PublishHandler;
|
||||||
@@ -21,7 +22,7 @@ import static win.liyufan.im.UserSettingScope.kUserSettingMyChannels;
|
|||||||
@Handler(value = IMTopic.CreateChannelTopic)
|
@Handler(value = IMTopic.CreateChannelTopic)
|
||||||
public class CreateChannelHandler extends GroupHandler<WFCMessage.ChannelInfo> {
|
public class CreateChannelHandler extends GroupHandler<WFCMessage.ChannelInfo> {
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.ChannelInfo request, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.ChannelInfo request, Qos1PublishHandler.IMCallback callback) {
|
||||||
WFCMessage.ChannelInfo.Builder builder = request.toBuilder();
|
WFCMessage.ChannelInfo.Builder builder = request.toBuilder();
|
||||||
if (StringUtil.isNullOrEmpty(request.getTargetId())) {
|
if (StringUtil.isNullOrEmpty(request.getTargetId())) {
|
||||||
builder.setTargetId(m_messagesStore.getShortUUID());
|
builder.setTargetId(m_messagesStore.getShortUUID());
|
||||||
@@ -40,7 +41,7 @@ public class CreateChannelHandler extends GroupHandler<WFCMessage.ChannelInfo> {
|
|||||||
|
|
||||||
if (errorCode == ErrorCode.ERROR_CODE_SUCCESS) {
|
if (errorCode == ErrorCode.ERROR_CODE_SUCCESS) {
|
||||||
WFCMessage.ModifyUserSettingReq modifyUserSettingReq = WFCMessage.ModifyUserSettingReq.newBuilder().setScope(kUserSettingMyChannels).setKey(request.getTargetId()).setValue("1").build();
|
WFCMessage.ModifyUserSettingReq modifyUserSettingReq = WFCMessage.ModifyUserSettingReq.newBuilder().setScope(kUserSettingMyChannels).setKey(request.getTargetId()).setValue("1").build();
|
||||||
mServer.onApiMessage(fromUser, null, modifyUserSettingReq.toByteArray(), 0, fromUser, PutUserSettingTopic, false, false);
|
mServer.onApiMessage(fromUser, null, modifyUserSettingReq.toByteArray(), 0, fromUser, PutUserSettingTopic, requestSourceType);
|
||||||
byte[] data = request.getTargetId().getBytes();
|
byte[] data = request.getTargetId().getBytes();
|
||||||
ackPayload.ensureWritable(data.length).writeBytes(data);
|
ackPayload.ensureWritable(data.length).writeBytes(data);
|
||||||
return ErrorCode.ERROR_CODE_SUCCESS;
|
return ErrorCode.ERROR_CODE_SUCCESS;
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
package io.moquette.imhandler;
|
package io.moquette.imhandler;
|
||||||
|
|
||||||
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import cn.wildfirechat.proto.WFCMessage;
|
import cn.wildfirechat.proto.WFCMessage;
|
||||||
import cn.wildfirechat.pojos.GroupNotificationBinaryContent;
|
import cn.wildfirechat.pojos.GroupNotificationBinaryContent;
|
||||||
import com.hazelcast.util.StringUtil;
|
import com.hazelcast.util.StringUtil;
|
||||||
@@ -19,7 +20,7 @@ import win.liyufan.im.IMTopic;
|
|||||||
@Handler(value = IMTopic.CreateGroupTopic)
|
@Handler(value = IMTopic.CreateGroupTopic)
|
||||||
public class CreateGroupHandler extends GroupHandler<WFCMessage.CreateGroupRequest> {
|
public class CreateGroupHandler extends GroupHandler<WFCMessage.CreateGroupRequest> {
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.CreateGroupRequest request, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.CreateGroupRequest request, Qos1PublishHandler.IMCallback callback) {
|
||||||
|
|
||||||
if (!StringUtil.isNullOrEmpty(request.getGroup().getGroupInfo().getTargetId())) {
|
if (!StringUtil.isNullOrEmpty(request.getGroup().getGroupInfo().getTargetId())) {
|
||||||
WFCMessage.GroupInfo existGroupInfo = m_messagesStore.getGroupInfo(request.getGroup().getGroupInfo().getTargetId());
|
WFCMessage.GroupInfo existGroupInfo = m_messagesStore.getGroupInfo(request.getGroup().getGroupInfo().getTargetId());
|
||||||
@@ -27,15 +28,18 @@ public class CreateGroupHandler extends GroupHandler<WFCMessage.CreateGroupReque
|
|||||||
return ErrorCode.ERROR_CODE_GROUP_ALREADY_EXIST;
|
return ErrorCode.ERROR_CODE_GROUP_ALREADY_EXIST;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
boolean isAdmin = requestSourceType == ProtoConstants.RequestSourceType.Request_From_Admin;
|
||||||
|
if(request.hasNotifyContent() && request.getNotifyContent().getType() > 0 && requestSourceType == ProtoConstants.RequestSourceType.Request_From_User && !m_messagesStore.isAllowClientCustomGroupNotification()) {
|
||||||
|
return ErrorCode.ERROR_CODE_NOT_RIGHT;
|
||||||
|
}
|
||||||
|
|
||||||
if(request.hasNotifyContent() && request.getNotifyContent().getType() > 0 && !isAdmin && !m_messagesStore.isAllowClientCustomGroupNotification()) {
|
if(request.hasNotifyContent() && request.getNotifyContent().getType() > 0 && requestSourceType == ProtoConstants.RequestSourceType.Request_From_Robot && !m_messagesStore.isAllowRobotCustomGroupNotification()) {
|
||||||
return ErrorCode.ERROR_CODE_NOT_RIGHT;
|
return ErrorCode.ERROR_CODE_NOT_RIGHT;
|
||||||
}
|
}
|
||||||
|
|
||||||
WFCMessage.GroupInfo groupInfo = m_messagesStore.createGroup(fromUser, request.getGroup().getGroupInfo(), request.getGroup().getMembersList(), request.getMemberExtra(), isAdmin);
|
WFCMessage.GroupInfo groupInfo = m_messagesStore.createGroup(fromUser, request.getGroup().getGroupInfo(), request.getGroup().getMembersList(), request.getMemberExtra(), isAdmin);
|
||||||
|
|
||||||
if (groupInfo != null) {
|
if (groupInfo != null) {
|
||||||
if(request.hasNotifyContent() && request.getNotifyContent().getType() > 0 && (isAdmin || m_messagesStore.isAllowClientCustomGroupNotification())) {
|
if(request.hasNotifyContent() && request.getNotifyContent().getType() > 0) {
|
||||||
sendGroupNotification(fromUser, groupInfo.getTargetId(), request.getToLineList(), request.getNotifyContent());
|
sendGroupNotification(fromUser, groupInfo.getTargetId(), request.getToLineList(), request.getNotifyContent());
|
||||||
} else {
|
} else {
|
||||||
WFCMessage.MessageContent content = new GroupNotificationBinaryContent(groupInfo.getTargetId(), fromUser, groupInfo.getName(), "").getCreateGroupNotifyContent();
|
WFCMessage.MessageContent content = new GroupNotificationBinaryContent(groupInfo.getTargetId(), fromUser, groupInfo.getName(), "").getCreateGroupNotifyContent();
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
package io.moquette.imhandler;
|
package io.moquette.imhandler;
|
||||||
|
|
||||||
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import cn.wildfirechat.proto.WFCMessage;
|
import cn.wildfirechat.proto.WFCMessage;
|
||||||
import io.moquette.spi.impl.Qos1PublishHandler;
|
import io.moquette.spi.impl.Qos1PublishHandler;
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
@@ -19,7 +20,7 @@ import static cn.wildfirechat.common.ErrorCode.ERROR_CODE_SUCCESS;
|
|||||||
@Handler(IMTopic.DeleteFriendTopic)
|
@Handler(IMTopic.DeleteFriendTopic)
|
||||||
public class DeleteFriendHandler extends IMHandler<WFCMessage.IDBuf> {
|
public class DeleteFriendHandler extends IMHandler<WFCMessage.IDBuf> {
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.IDBuf request, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.IDBuf request, Qos1PublishHandler.IMCallback callback) {
|
||||||
long[] head = new long[2];
|
long[] head = new long[2];
|
||||||
ErrorCode errorCode = m_messagesStore.deleteFriend(fromUser, request.getId(), head);
|
ErrorCode errorCode = m_messagesStore.deleteFriend(fromUser, request.getId(), head);
|
||||||
if (errorCode == ERROR_CODE_SUCCESS) {
|
if (errorCode == ERROR_CODE_SUCCESS) {
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
package io.moquette.imhandler;
|
package io.moquette.imhandler;
|
||||||
|
|
||||||
import cn.wildfirechat.common.ErrorCode;
|
import cn.wildfirechat.common.ErrorCode;
|
||||||
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import cn.wildfirechat.proto.WFCMessage;
|
import cn.wildfirechat.proto.WFCMessage;
|
||||||
import io.moquette.persistence.MemorySessionStore;
|
import io.moquette.persistence.MemorySessionStore;
|
||||||
import io.moquette.spi.impl.Qos1PublishHandler;
|
import io.moquette.spi.impl.Qos1PublishHandler;
|
||||||
@@ -19,7 +20,8 @@ import win.liyufan.im.IMTopic;
|
|||||||
@Handler(IMTopic.DestroyUserTopic)
|
@Handler(IMTopic.DestroyUserTopic)
|
||||||
public class DestroyUserHandler extends IMHandler<WFCMessage.IDBuf> {
|
public class DestroyUserHandler extends IMHandler<WFCMessage.IDBuf> {
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.IDBuf request, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.IDBuf request, Qos1PublishHandler.IMCallback callback) {
|
||||||
|
boolean isAdmin = requestSourceType == ProtoConstants.RequestSourceType.Request_From_Admin;
|
||||||
if (isAdmin) {
|
if (isAdmin) {
|
||||||
mServer.getImBusinessScheduler().execute(()-> {
|
mServer.getImBusinessScheduler().execute(()-> {
|
||||||
m_sessionsStore.clearUserSession(fromUser);
|
m_sessionsStore.clearUserSession(fromUser);
|
||||||
@@ -29,6 +31,8 @@ public class DestroyUserHandler extends IMHandler<WFCMessage.IDBuf> {
|
|||||||
m_messagesStore.clearUserGroups(fromUser);
|
m_messagesStore.clearUserGroups(fromUser);
|
||||||
m_messagesStore.clearUserChannels(fromUser);
|
m_messagesStore.clearUserChannels(fromUser);
|
||||||
m_messagesStore.destoryUser(fromUser);
|
m_messagesStore.destoryUser(fromUser);
|
||||||
|
|
||||||
|
m_messagesStore.destroyRobot(fromUser);
|
||||||
});
|
});
|
||||||
return ErrorCode.ERROR_CODE_SUCCESS;
|
return ErrorCode.ERROR_CODE_SUCCESS;
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
package io.moquette.imhandler;
|
package io.moquette.imhandler;
|
||||||
|
|
||||||
import cn.wildfirechat.common.ErrorCode;
|
import cn.wildfirechat.common.ErrorCode;
|
||||||
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import cn.wildfirechat.proto.WFCMessage;
|
import cn.wildfirechat.proto.WFCMessage;
|
||||||
import com.hazelcast.util.StringUtil;
|
import com.hazelcast.util.StringUtil;
|
||||||
import com.xiaoleilu.loServer.model.FriendData;
|
import com.xiaoleilu.loServer.model.FriendData;
|
||||||
@@ -21,7 +22,7 @@ import java.util.List;
|
|||||||
@Handler(value = IMTopic.ClearSessionTopic)
|
@Handler(value = IMTopic.ClearSessionTopic)
|
||||||
public class DisconnectHandler extends IMHandler<Byte> {
|
public class DisconnectHandler extends IMHandler<Byte> {
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, Byte request, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, Byte request, Qos1PublishHandler.IMCallback callback) {
|
||||||
if (request == 8) {
|
if (request == 8) {
|
||||||
m_sessionsStore.cleanSession(fromUser, clientID);
|
m_sessionsStore.cleanSession(fromUser, clientID);
|
||||||
} else if(request == 1) {
|
} else if(request == 1) {
|
||||||
|
|||||||
@@ -20,8 +20,9 @@ import static win.liyufan.im.IMTopic.DismissGroupTopic;
|
|||||||
@Handler(value = DismissGroupTopic)
|
@Handler(value = DismissGroupTopic)
|
||||||
public class DismissGroupHandler extends GroupHandler<WFCMessage.DismissGroupRequest> {
|
public class DismissGroupHandler extends GroupHandler<WFCMessage.DismissGroupRequest> {
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.DismissGroupRequest request, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.DismissGroupRequest request, Qos1PublishHandler.IMCallback callback) {
|
||||||
WFCMessage.GroupInfo groupInfo = m_messagesStore.getGroupInfo(request.getGroupId());
|
WFCMessage.GroupInfo groupInfo = m_messagesStore.getGroupInfo(request.getGroupId());
|
||||||
|
boolean isAdmin = requestSourceType == ProtoConstants.RequestSourceType.Request_From_Admin;
|
||||||
ErrorCode errorCode;
|
ErrorCode errorCode;
|
||||||
if (groupInfo == null) {
|
if (groupInfo == null) {
|
||||||
errorCode = m_messagesStore.dismissGroup(fromUser, request.getGroupId(), isAdmin);
|
errorCode = m_messagesStore.dismissGroup(fromUser, request.getGroupId(), isAdmin);
|
||||||
@@ -29,12 +30,16 @@ public class DismissGroupHandler extends GroupHandler<WFCMessage.DismissGroupReq
|
|||||||
} else if (isAdmin || (groupInfo.getType() == ProtoConstants.GroupType.GroupType_Normal || groupInfo.getType() == ProtoConstants.GroupType.GroupType_Restricted)
|
} else if (isAdmin || (groupInfo.getType() == ProtoConstants.GroupType.GroupType_Normal || groupInfo.getType() == ProtoConstants.GroupType.GroupType_Restricted)
|
||||||
&& groupInfo.getOwner() != null && groupInfo.getOwner().equals(fromUser)) {
|
&& groupInfo.getOwner() != null && groupInfo.getOwner().equals(fromUser)) {
|
||||||
|
|
||||||
if(request.hasNotifyContent() && request.getNotifyContent().getType() > 0 && !isAdmin && !m_messagesStore.isAllowClientCustomGroupNotification()) {
|
if(request.hasNotifyContent() && request.getNotifyContent().getType() > 0 && requestSourceType == ProtoConstants.RequestSourceType.Request_From_User && !m_messagesStore.isAllowClientCustomGroupNotification()) {
|
||||||
|
return ErrorCode.ERROR_CODE_NOT_RIGHT;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(request.hasNotifyContent() && request.getNotifyContent().getType() > 0 && requestSourceType == ProtoConstants.RequestSourceType.Request_From_Robot && !m_messagesStore.isAllowRobotCustomGroupNotification()) {
|
||||||
return ErrorCode.ERROR_CODE_NOT_RIGHT;
|
return ErrorCode.ERROR_CODE_NOT_RIGHT;
|
||||||
}
|
}
|
||||||
|
|
||||||
//send notify message first, then dismiss group
|
//send notify message first, then dismiss group
|
||||||
if (request.hasNotifyContent() && request.getNotifyContent().getType() > 0 && (isAdmin || m_messagesStore.isAllowClientCustomGroupNotification())) {
|
if (request.hasNotifyContent() && request.getNotifyContent().getType() > 0) {
|
||||||
sendGroupNotification(fromUser, groupInfo.getTargetId(), request.getToLineList(), request.getNotifyContent());
|
sendGroupNotification(fromUser, groupInfo.getTargetId(), request.getToLineList(), request.getNotifyContent());
|
||||||
} else {
|
} else {
|
||||||
WFCMessage.MessageContent content = new GroupNotificationBinaryContent(groupInfo.getTargetId(), fromUser, null, "").getDismissGroupNotifyContent();
|
WFCMessage.MessageContent content = new GroupNotificationBinaryContent(groupInfo.getTargetId(), fromUser, null, "").getDismissGroupNotifyContent();
|
||||||
|
|||||||
+7
-5
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
package io.moquette.imhandler;
|
package io.moquette.imhandler;
|
||||||
|
|
||||||
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import cn.wildfirechat.proto.WFCMessage;
|
import cn.wildfirechat.proto.WFCMessage;
|
||||||
import io.moquette.spi.impl.Qos1PublishHandler;
|
import io.moquette.spi.impl.Qos1PublishHandler;
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
@@ -17,14 +18,15 @@ import win.liyufan.im.IMTopic;
|
|||||||
import static win.liyufan.im.IMTopic.PutUserSettingTopic;
|
import static win.liyufan.im.IMTopic.PutUserSettingTopic;
|
||||||
import static win.liyufan.im.UserSettingScope.kUserSettingMyChannels;
|
import static win.liyufan.im.UserSettingScope.kUserSettingMyChannels;
|
||||||
|
|
||||||
@Handler(value = IMTopic.DestoryChannelInfoTopic)
|
@Handler(value = IMTopic.DestroyChannelInfoTopic)
|
||||||
public class DistoryChannelHandler extends GroupHandler<WFCMessage.IDBuf> {
|
public class DistroyChannelHandler extends GroupHandler<WFCMessage.IDBuf> {
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.IDBuf request, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.IDBuf request, Qos1PublishHandler.IMCallback callback) {
|
||||||
ErrorCode errorCode = m_messagesStore.distoryChannel(fromUser, request.getId());
|
boolean isAdmin = requestSourceType == ProtoConstants.RequestSourceType.Request_From_Admin;
|
||||||
|
ErrorCode errorCode = m_messagesStore.distoryChannel(fromUser, request.getId(), isAdmin);
|
||||||
if (errorCode == ErrorCode.ERROR_CODE_SUCCESS) {
|
if (errorCode == ErrorCode.ERROR_CODE_SUCCESS) {
|
||||||
WFCMessage.ModifyUserSettingReq modifyUserSettingReq = WFCMessage.ModifyUserSettingReq.newBuilder().setScope(kUserSettingMyChannels).setKey(request.getId()).setValue("0").build();
|
WFCMessage.ModifyUserSettingReq modifyUserSettingReq = WFCMessage.ModifyUserSettingReq.newBuilder().setScope(kUserSettingMyChannels).setKey(request.getId()).setValue("0").build();
|
||||||
mServer.onApiMessage(fromUser, null, modifyUserSettingReq.toByteArray(), 0, fromUser, PutUserSettingTopic, false, false);
|
mServer.onApiMessage(fromUser, null, modifyUserSettingReq.toByteArray(), 0, fromUser, PutUserSettingTopic, requestSourceType);
|
||||||
}
|
}
|
||||||
return errorCode;
|
return errorCode;
|
||||||
}
|
}
|
||||||
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
package io.moquette.imhandler;
|
package io.moquette.imhandler;
|
||||||
|
|
||||||
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import cn.wildfirechat.proto.WFCMessage;
|
import cn.wildfirechat.proto.WFCMessage;
|
||||||
import com.hazelcast.util.StringUtil;
|
import com.hazelcast.util.StringUtil;
|
||||||
import com.xiaoleilu.loServer.model.FriendData;
|
import com.xiaoleilu.loServer.model.FriendData;
|
||||||
@@ -21,7 +22,7 @@ import java.util.List;
|
|||||||
@Handler(IMTopic.FriendPullTopic)
|
@Handler(IMTopic.FriendPullTopic)
|
||||||
public class FriendPullHandler extends IMHandler<WFCMessage.Version> {
|
public class FriendPullHandler extends IMHandler<WFCMessage.Version> {
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.Version request, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.Version request, Qos1PublishHandler.IMCallback callback) {
|
||||||
List<FriendData> friendDatas = m_messagesStore.getFriendList(fromUser, clientID, request.getVersion());
|
List<FriendData> friendDatas = m_messagesStore.getFriendList(fromUser, clientID, request.getVersion());
|
||||||
WFCMessage.GetFriendsResult.Builder builder = WFCMessage.GetFriendsResult.newBuilder();
|
WFCMessage.GetFriendsResult.Builder builder = WFCMessage.GetFriendsResult.newBuilder();
|
||||||
for (FriendData data : friendDatas
|
for (FriendData data : friendDatas
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
package io.moquette.imhandler;
|
package io.moquette.imhandler;
|
||||||
|
|
||||||
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import cn.wildfirechat.proto.WFCMessage;
|
import cn.wildfirechat.proto.WFCMessage;
|
||||||
import io.moquette.spi.impl.Qos1PublishHandler;
|
import io.moquette.spi.impl.Qos1PublishHandler;
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
@@ -19,7 +20,7 @@ import java.util.List;
|
|||||||
@Handler(IMTopic.FriendRequestPullTopic)
|
@Handler(IMTopic.FriendRequestPullTopic)
|
||||||
public class FriendRequestPullHandler extends IMHandler<WFCMessage.Version> {
|
public class FriendRequestPullHandler extends IMHandler<WFCMessage.Version> {
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.Version request, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.Version request, Qos1PublishHandler.IMCallback callback) {
|
||||||
List<WFCMessage.FriendRequest> friendDatas = m_messagesStore.getFriendRequestList(fromUser, request.getVersion());
|
List<WFCMessage.FriendRequest> friendDatas = m_messagesStore.getFriendRequestList(fromUser, request.getVersion());
|
||||||
WFCMessage.GetFriendRequestResult.Builder builder = WFCMessage.GetFriendRequestResult.newBuilder();
|
WFCMessage.GetFriendRequestResult.Builder builder = WFCMessage.GetFriendRequestResult.newBuilder();
|
||||||
builder.addAllEntry(friendDatas);
|
builder.addAllEntry(friendDatas);
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
package io.moquette.imhandler;
|
package io.moquette.imhandler;
|
||||||
|
|
||||||
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import cn.wildfirechat.proto.WFCMessage;
|
import cn.wildfirechat.proto.WFCMessage;
|
||||||
import io.moquette.spi.impl.Qos1PublishHandler;
|
import io.moquette.spi.impl.Qos1PublishHandler;
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
@@ -17,7 +18,7 @@ import win.liyufan.im.IMTopic;
|
|||||||
@Handler(IMTopic.ChannelPullTopic)
|
@Handler(IMTopic.ChannelPullTopic)
|
||||||
public class GetChannelInfoHandler extends IMHandler<WFCMessage.PullChannelInfo> {
|
public class GetChannelInfoHandler extends IMHandler<WFCMessage.PullChannelInfo> {
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.PullChannelInfo request, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.PullChannelInfo request, Qos1PublishHandler.IMCallback callback) {
|
||||||
ErrorCode errorCode = ErrorCode.ERROR_CODE_SUCCESS;
|
ErrorCode errorCode = ErrorCode.ERROR_CODE_SUCCESS;
|
||||||
WFCMessage.ChannelInfo info = m_messagesStore.getChannelInfo(request.getChannelId());
|
WFCMessage.ChannelInfo info = m_messagesStore.getChannelInfo(request.getChannelId());
|
||||||
if (info == null) {
|
if (info == null) {
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
package io.moquette.imhandler;
|
package io.moquette.imhandler;
|
||||||
|
|
||||||
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import cn.wildfirechat.proto.WFCMessage;
|
import cn.wildfirechat.proto.WFCMessage;
|
||||||
import io.moquette.spi.impl.Qos1PublishHandler;
|
import io.moquette.spi.impl.Qos1PublishHandler;
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
@@ -17,7 +18,7 @@ import win.liyufan.im.IMTopic;
|
|||||||
@Handler(IMTopic.GetChatroomInfoTopic)
|
@Handler(IMTopic.GetChatroomInfoTopic)
|
||||||
public class GetChatroomInfoHandler extends IMHandler<WFCMessage.GetChatroomInfoRequest> {
|
public class GetChatroomInfoHandler extends IMHandler<WFCMessage.GetChatroomInfoRequest> {
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.GetChatroomInfoRequest request, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.GetChatroomInfoRequest request, Qos1PublishHandler.IMCallback callback) {
|
||||||
ErrorCode errorCode = ErrorCode.ERROR_CODE_SUCCESS;
|
ErrorCode errorCode = ErrorCode.ERROR_CODE_SUCCESS;
|
||||||
WFCMessage.ChatroomInfo info = m_messagesStore.getChatroomInfo(request.getChatroomId());
|
WFCMessage.ChatroomInfo info = m_messagesStore.getChatroomInfo(request.getChatroomId());
|
||||||
if (info == null) {
|
if (info == null) {
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
package io.moquette.imhandler;
|
package io.moquette.imhandler;
|
||||||
|
|
||||||
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import cn.wildfirechat.proto.WFCMessage;
|
import cn.wildfirechat.proto.WFCMessage;
|
||||||
import io.moquette.spi.impl.Qos1PublishHandler;
|
import io.moquette.spi.impl.Qos1PublishHandler;
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
@@ -17,7 +18,7 @@ import win.liyufan.im.IMTopic;
|
|||||||
@Handler(IMTopic.GetChatroomMemberTopic)
|
@Handler(IMTopic.GetChatroomMemberTopic)
|
||||||
public class GetChatroomMemberHandler extends IMHandler<WFCMessage.GetChatroomMemberInfoRequest> {
|
public class GetChatroomMemberHandler extends IMHandler<WFCMessage.GetChatroomMemberInfoRequest> {
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.GetChatroomMemberInfoRequest request, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.GetChatroomMemberInfoRequest request, Qos1PublishHandler.IMCallback callback) {
|
||||||
ErrorCode errorCode = ErrorCode.ERROR_CODE_SUCCESS;
|
ErrorCode errorCode = ErrorCode.ERROR_CODE_SUCCESS;
|
||||||
WFCMessage.ChatroomMemberInfo info = m_messagesStore.getChatroomMemberInfo(request.getChatroomId(), request.getMaxCount());
|
WFCMessage.ChatroomMemberInfo info = m_messagesStore.getChatroomMemberInfo(request.getChatroomId(), request.getMaxCount());
|
||||||
if (info != null) {
|
if (info != null) {
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
package io.moquette.imhandler;
|
package io.moquette.imhandler;
|
||||||
|
|
||||||
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import cn.wildfirechat.proto.WFCMessage;
|
import cn.wildfirechat.proto.WFCMessage;
|
||||||
import io.moquette.spi.impl.Qos1PublishHandler;
|
import io.moquette.spi.impl.Qos1PublishHandler;
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
@@ -19,7 +20,7 @@ import java.util.List;
|
|||||||
@Handler(IMTopic.GetGroupInfoTopic)
|
@Handler(IMTopic.GetGroupInfoTopic)
|
||||||
public class GetGroupInfoHandler extends IMHandler<WFCMessage.PullUserRequest> {
|
public class GetGroupInfoHandler extends IMHandler<WFCMessage.PullUserRequest> {
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.PullUserRequest request, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.PullUserRequest request, Qos1PublishHandler.IMCallback callback) {
|
||||||
List<WFCMessage.GroupInfo> infos = m_messagesStore.getGroupInfos(request.getRequestList());
|
List<WFCMessage.GroupInfo> infos = m_messagesStore.getGroupInfos(request.getRequestList());
|
||||||
|
|
||||||
WFCMessage.PullGroupInfoResult result = WFCMessage.PullGroupInfoResult.newBuilder().addAllInfo(infos).build();
|
WFCMessage.PullGroupInfoResult result = WFCMessage.PullGroupInfoResult.newBuilder().addAllInfo(infos).build();
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
package io.moquette.imhandler;
|
package io.moquette.imhandler;
|
||||||
|
|
||||||
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import cn.wildfirechat.proto.WFCMessage;
|
import cn.wildfirechat.proto.WFCMessage;
|
||||||
import io.moquette.spi.impl.Qos1PublishHandler;
|
import io.moquette.spi.impl.Qos1PublishHandler;
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
@@ -22,7 +23,7 @@ import static cn.wildfirechat.common.ErrorCode.ERROR_CODE_SUCCESS;
|
|||||||
@Handler(IMTopic.GetGroupMemberTopic)
|
@Handler(IMTopic.GetGroupMemberTopic)
|
||||||
public class GetGroupMemberHandler extends IMHandler<WFCMessage.PullGroupMemberRequest> {
|
public class GetGroupMemberHandler extends IMHandler<WFCMessage.PullGroupMemberRequest> {
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.PullGroupMemberRequest request, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.PullGroupMemberRequest request, Qos1PublishHandler.IMCallback callback) {
|
||||||
List<WFCMessage.GroupMember> members = new ArrayList<>();
|
List<WFCMessage.GroupMember> members = new ArrayList<>();
|
||||||
ErrorCode errorCode = m_messagesStore.getGroupMembers(fromUser, request.getTarget(), request.getHead(), members);
|
ErrorCode errorCode = m_messagesStore.getGroupMembers(fromUser, request.getTarget(), request.getHead(), members);
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
package io.moquette.imhandler;
|
package io.moquette.imhandler;
|
||||||
|
|
||||||
import cn.wildfirechat.common.ErrorCode;
|
import cn.wildfirechat.common.ErrorCode;
|
||||||
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import cn.wildfirechat.proto.WFCMessage;
|
import cn.wildfirechat.proto.WFCMessage;
|
||||||
import com.hazelcast.util.StringUtil;
|
import com.hazelcast.util.StringUtil;
|
||||||
import com.qiniu.util.Auth;
|
import com.qiniu.util.Auth;
|
||||||
@@ -22,7 +23,7 @@ import static io.moquette.server.config.MediaServerConfig.FILE_STROAGE_REMOTE_SE
|
|||||||
@Handler("GMUT")
|
@Handler("GMUT")
|
||||||
public class GetMediaUploadTokenHandler extends IMHandler<WFCMessage.GetUploadTokenRequest> {
|
public class GetMediaUploadTokenHandler extends IMHandler<WFCMessage.GetUploadTokenRequest> {
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.GetUploadTokenRequest request, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.GetUploadTokenRequest request, Qos1PublishHandler.IMCallback callback) {
|
||||||
int type = request.getMediaType();
|
int type = request.getMediaType();
|
||||||
|
|
||||||
String token;
|
String token;
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
package io.moquette.imhandler;
|
package io.moquette.imhandler;
|
||||||
|
|
||||||
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import cn.wildfirechat.proto.WFCMessage;
|
import cn.wildfirechat.proto.WFCMessage;
|
||||||
import com.qiniu.util.Auth;
|
import com.qiniu.util.Auth;
|
||||||
import com.xiaoleilu.loServer.action.UploadFileAction;
|
import com.xiaoleilu.loServer.action.UploadFileAction;
|
||||||
@@ -20,7 +21,7 @@ import win.liyufan.im.IMTopic;
|
|||||||
@Handler(IMTopic.GetQiniuUploadTokenTopic)
|
@Handler(IMTopic.GetQiniuUploadTokenTopic)
|
||||||
public class GetQiniuUploadTokenHandler extends IMHandler<Byte> {
|
public class GetQiniuUploadTokenHandler extends IMHandler<Byte> {
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, Byte request, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, Byte request, Qos1PublishHandler.IMCallback callback) {
|
||||||
int type = request;
|
int type = request;
|
||||||
String token;
|
String token;
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
package io.moquette.imhandler;
|
package io.moquette.imhandler;
|
||||||
|
|
||||||
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import cn.wildfirechat.proto.WFCMessage;
|
import cn.wildfirechat.proto.WFCMessage;
|
||||||
import com.xiaoleilu.hutool.system.UserInfo;
|
import com.xiaoleilu.hutool.system.UserInfo;
|
||||||
import io.moquette.persistence.MemorySessionStore;
|
import io.moquette.persistence.MemorySessionStore;
|
||||||
@@ -20,7 +21,7 @@ import win.liyufan.im.IMTopic;
|
|||||||
@Handler(IMTopic.GetTokenTopic)
|
@Handler(IMTopic.GetTokenTopic)
|
||||||
public class GetTokenHandler extends IMHandler<WFCMessage.GetTokenRequest> {
|
public class GetTokenHandler extends IMHandler<WFCMessage.GetTokenRequest> {
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.GetTokenRequest request, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.GetTokenRequest request, Qos1PublishHandler.IMCallback callback) {
|
||||||
MemorySessionStore.Session session = m_sessionsStore.updateOrCreateUserSession(fromUser, clientID, request.getPlatform());
|
MemorySessionStore.Session session = m_sessionsStore.updateOrCreateUserSession(fromUser, clientID, request.getPlatform());
|
||||||
WFCMessage.User userInfo = m_messagesStore.getUserInfo(fromUser);
|
WFCMessage.User userInfo = m_messagesStore.getUserInfo(fromUser);
|
||||||
if(userInfo != null && userInfo.getType() == 1) {
|
if(userInfo != null && userInfo.getType() == 1) {
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
package io.moquette.imhandler;
|
package io.moquette.imhandler;
|
||||||
|
|
||||||
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import cn.wildfirechat.proto.WFCMessage;
|
import cn.wildfirechat.proto.WFCMessage;
|
||||||
import io.moquette.spi.impl.Qos1PublishHandler;
|
import io.moquette.spi.impl.Qos1PublishHandler;
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
@@ -19,7 +20,7 @@ import static cn.wildfirechat.common.ErrorCode.ERROR_CODE_SUCCESS;
|
|||||||
@Handler(IMTopic.GetUserInfoTopic)
|
@Handler(IMTopic.GetUserInfoTopic)
|
||||||
public class GetUserInfoHandler extends IMHandler<WFCMessage.PullUserRequest> {
|
public class GetUserInfoHandler extends IMHandler<WFCMessage.PullUserRequest> {
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.PullUserRequest request, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.PullUserRequest request, Qos1PublishHandler.IMCallback callback) {
|
||||||
WFCMessage.PullUserResult.Builder resultBuilder = WFCMessage.PullUserResult.newBuilder();
|
WFCMessage.PullUserResult.Builder resultBuilder = WFCMessage.PullUserResult.newBuilder();
|
||||||
|
|
||||||
ErrorCode errorCode = m_messagesStore.getUserInfo(fromUser, request.getRequestList(), resultBuilder);
|
ErrorCode errorCode = m_messagesStore.getUserInfo(fromUser, request.getRequestList(), resultBuilder);
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
package io.moquette.imhandler;
|
package io.moquette.imhandler;
|
||||||
|
|
||||||
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import cn.wildfirechat.proto.WFCMessage;
|
import cn.wildfirechat.proto.WFCMessage;
|
||||||
import io.moquette.spi.impl.Qos1PublishHandler;
|
import io.moquette.spi.impl.Qos1PublishHandler;
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
@@ -19,7 +20,7 @@ import static cn.wildfirechat.common.ErrorCode.ERROR_CODE_SUCCESS;
|
|||||||
@Handler(IMTopic.GetUserSettingTopic)
|
@Handler(IMTopic.GetUserSettingTopic)
|
||||||
public class GetUserSettingHandler extends IMHandler<WFCMessage.Version> {
|
public class GetUserSettingHandler extends IMHandler<WFCMessage.Version> {
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.Version request, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.Version request, Qos1PublishHandler.IMCallback callback) {
|
||||||
WFCMessage.GetUserSettingResult.Builder builder = WFCMessage.GetUserSettingResult.newBuilder();
|
WFCMessage.GetUserSettingResult.Builder builder = WFCMessage.GetUserSettingResult.newBuilder();
|
||||||
ErrorCode errorCode = m_messagesStore.getUserSettings(fromUser, request.getVersion(), builder);
|
ErrorCode errorCode = m_messagesStore.getUserSettings(fromUser, request.getVersion(), builder);
|
||||||
if (errorCode == ERROR_CODE_SUCCESS) {
|
if (errorCode == ERROR_CODE_SUCCESS) {
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ abstract public class GroupHandler<T> extends IMHandler<T> {
|
|||||||
try {
|
try {
|
||||||
long messageId = MessageShardingUtil.generateId();
|
long messageId = MessageShardingUtil.generateId();
|
||||||
builder.setMessageId(messageId);
|
builder.setMessageId(messageId);
|
||||||
saveAndPublish(fromUser, null, builder.build());
|
saveAndPublish(fromUser, null, builder.build(), ProtoConstants.RequestSourceType.Request_From_User);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,10 +25,11 @@ import static cn.wildfirechat.common.ErrorCode.ERROR_CODE_SUCCESS;
|
|||||||
@Handler(IMTopic.HandleFriendRequestTopic)
|
@Handler(IMTopic.HandleFriendRequestTopic)
|
||||||
public class HandleFriendRequestHandler extends IMHandler<WFCMessage.HandleFriendRequest> {
|
public class HandleFriendRequestHandler extends IMHandler<WFCMessage.HandleFriendRequest> {
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.HandleFriendRequest request, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.HandleFriendRequest request, Qos1PublishHandler.IMCallback callback) {
|
||||||
WFCMessage.Message.Builder builder = WFCMessage.Message.newBuilder();
|
WFCMessage.Message.Builder builder = WFCMessage.Message.newBuilder();
|
||||||
builder.setFromUser(request.getTargetUid());
|
builder.setFromUser(request.getTargetUid());
|
||||||
long[] heads = new long[2];
|
long[] heads = new long[4];
|
||||||
|
boolean isAdmin = requestSourceType == ProtoConstants.RequestSourceType.Request_From_Admin;
|
||||||
ErrorCode errorCode = m_messagesStore.handleFriendRequest(fromUser, request, builder, heads, isAdmin);
|
ErrorCode errorCode = m_messagesStore.handleFriendRequest(fromUser, request, builder, heads, isAdmin);
|
||||||
|
|
||||||
if (errorCode == ERROR_CODE_SUCCESS) {
|
if (errorCode == ERROR_CODE_SUCCESS) {
|
||||||
@@ -39,7 +40,7 @@ public class HandleFriendRequestHandler extends IMHandler<WFCMessage.HandleFrien
|
|||||||
builder.setMessageId(messageId);
|
builder.setMessageId(messageId);
|
||||||
builder.setServerTimestamp(timestamp);
|
builder.setServerTimestamp(timestamp);
|
||||||
if(!StringUtil.isNullOrEmpty(builder.getContent().getSearchableContent())) {
|
if(!StringUtil.isNullOrEmpty(builder.getContent().getSearchableContent())) {
|
||||||
saveAndPublish(request.getTargetUid(), null, builder.build());
|
saveAndPublish(request.getTargetUid(), null, builder.build(), requestSourceType);
|
||||||
}
|
}
|
||||||
|
|
||||||
MemorySessionStore.Session session = m_sessionsStore.getSession(clientID);
|
MemorySessionStore.Session session = m_sessionsStore.getSession(clientID);
|
||||||
@@ -62,7 +63,7 @@ public class HandleFriendRequestHandler extends IMHandler<WFCMessage.HandleFrien
|
|||||||
|
|
||||||
messageId = MessageShardingUtil.generateId();
|
messageId = MessageShardingUtil.generateId();
|
||||||
builder.setMessageId(messageId);
|
builder.setMessageId(messageId);
|
||||||
saveAndPublish(request.getTargetUid(), null, builder.build());
|
saveAndPublish(request.getTargetUid(), null, builder.build(), requestSourceType);
|
||||||
|
|
||||||
if (m_messagesStore.isNewFriendWelcomeMessage()) {
|
if (m_messagesStore.isNewFriendWelcomeMessage()) {
|
||||||
contentBuilder.setType(93);
|
contentBuilder.setType(93);
|
||||||
@@ -74,7 +75,7 @@ public class HandleFriendRequestHandler extends IMHandler<WFCMessage.HandleFrien
|
|||||||
messageId = MessageShardingUtil.generateId();
|
messageId = MessageShardingUtil.generateId();
|
||||||
builder.setMessageId(messageId);
|
builder.setMessageId(messageId);
|
||||||
builder.setServerTimestamp(++timestamp);
|
builder.setServerTimestamp(++timestamp);
|
||||||
saveAndPublish(request.getTargetUid(), null, builder.build());
|
saveAndPublish(request.getTargetUid(), null, builder.build(), requestSourceType);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
@@ -83,6 +84,14 @@ public class HandleFriendRequestHandler extends IMHandler<WFCMessage.HandleFrien
|
|||||||
publisher.publishNotification(IMTopic.NotifyFriendTopic, request.getTargetUid(), heads[0]);
|
publisher.publishNotification(IMTopic.NotifyFriendTopic, request.getTargetUid(), heads[0]);
|
||||||
publisher.publishNotification(IMTopic.NotifyFriendTopic, fromUser, heads[1]);
|
publisher.publishNotification(IMTopic.NotifyFriendTopic, fromUser, heads[1]);
|
||||||
}
|
}
|
||||||
|
if(!isAdmin) {
|
||||||
|
if(heads[2] > 0) {
|
||||||
|
publisher.publishNotification(IMTopic.NotifyFriendRequestTopic, request.getTargetUid(), heads[2], fromUser, null);
|
||||||
|
}
|
||||||
|
if(heads[3] > 0) {
|
||||||
|
publisher.publishNotification(IMTopic.NotifyFriendRequestTopic, fromUser, heads[3], fromUser, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if(errorCode == ERROR_CODE_ALREADY_FRIENDS) {
|
if(errorCode == ERROR_CODE_ALREADY_FRIENDS) {
|
||||||
errorCode = ERROR_CODE_SUCCESS;
|
errorCode = ERROR_CODE_SUCCESS;
|
||||||
|
|||||||
@@ -163,9 +163,9 @@ abstract public class IMHandler<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public ErrorCode preAction(String clientID, String fromUser, String topic, Qos1PublishHandler.IMCallback callback, boolean isAdmin, boolean isRobotOrChannel) {
|
public ErrorCode preAction(String clientID, String fromUser, String topic, Qos1PublishHandler.IMCallback callback, ProtoConstants.RequestSourceType requestSourceType) {
|
||||||
LOG.info("imHandler fromUser={}, clientId={}, topic={}", fromUser, clientID, topic);
|
LOG.info("imHandler fromUser={}, clientId={}, topic={}", fromUser, clientID, topic);
|
||||||
if(!isAdmin && !isRobotOrChannel && !mLimitCounter.isGranted(clientID + fromUser + topic)) {
|
if(requestSourceType == ProtoConstants.RequestSourceType.Request_From_User && !mLimitCounter.isGranted(clientID + fromUser + topic)) {
|
||||||
ByteBuf ackPayload = Unpooled.buffer();
|
ByteBuf ackPayload = Unpooled.buffer();
|
||||||
ackPayload.ensureWritable(1).writeByte(ERROR_CODE_OVER_FREQUENCY.getCode());
|
ackPayload.ensureWritable(1).writeByte(ERROR_CODE_OVER_FREQUENCY.getCode());
|
||||||
try {
|
try {
|
||||||
@@ -179,7 +179,7 @@ abstract public class IMHandler<T> {
|
|||||||
return ErrorCode.ERROR_CODE_SUCCESS;
|
return ErrorCode.ERROR_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void doHandler(String clientID, String fromUser, String topic, byte[] payloadContent, Qos1PublishHandler.IMCallback callback, boolean isAdmin, boolean isRobotOrChannel) {
|
public void doHandler(String clientID, String fromUser, String topic, byte[] payloadContent, Qos1PublishHandler.IMCallback callback, ProtoConstants.RequestSourceType requestSourceType) {
|
||||||
m_imBusinessExecutor.execute(() -> {
|
m_imBusinessExecutor.execute(() -> {
|
||||||
Qos1PublishHandler.IMCallback callbackWrapper = new Qos1PublishHandler.IMCallback() {
|
Qos1PublishHandler.IMCallback callbackWrapper = new Qos1PublishHandler.IMCallback() {
|
||||||
@Override
|
@Override
|
||||||
@@ -190,7 +190,7 @@ abstract public class IMHandler<T> {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
ErrorCode preActionCode = preAction(clientID, fromUser, topic, callbackWrapper, isAdmin, isRobotOrChannel);
|
ErrorCode preActionCode = preAction(clientID, fromUser, topic, callbackWrapper, requestSourceType);
|
||||||
|
|
||||||
if (preActionCode == ErrorCode.ERROR_CODE_SUCCESS) {
|
if (preActionCode == ErrorCode.ERROR_CODE_SUCCESS) {
|
||||||
ByteBuf ackPayload = Unpooled.buffer(1);
|
ByteBuf ackPayload = Unpooled.buffer(1);
|
||||||
@@ -199,7 +199,7 @@ abstract public class IMHandler<T> {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
LOG.debug("execute handler for topic {}", topic);
|
LOG.debug("execute handler for topic {}", topic);
|
||||||
errorCode = action(ackPayload, clientID, fromUser, isAdmin, getDataObject(payloadContent), callbackWrapper);
|
errorCode = action(ackPayload, clientID, fromUser, requestSourceType, getDataObject(payloadContent), callbackWrapper);
|
||||||
} catch (IllegalAccessException e) {
|
} catch (IllegalAccessException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
Utility.printExecption(LOG, e);
|
Utility.printExecption(LOG, e);
|
||||||
@@ -241,26 +241,26 @@ abstract public class IMHandler<T> {
|
|||||||
|
|
||||||
|
|
||||||
@ActionMethod
|
@ActionMethod
|
||||||
abstract public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, T request, Qos1PublishHandler.IMCallback callback) ;
|
abstract public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, T request, Qos1PublishHandler.IMCallback callback) ;
|
||||||
|
|
||||||
public void afterAction(String clientID, String fromUser, String topic, Qos1PublishHandler.IMCallback callback) {
|
public void afterAction(String clientID, String fromUser, String topic, Qos1PublishHandler.IMCallback callback) {
|
||||||
|
|
||||||
}
|
}
|
||||||
protected long publish(String username, String clientID, WFCMessage.Message message) {
|
protected long publish(String username, String clientID, WFCMessage.Message message, ProtoConstants.RequestSourceType requestSourceType) {
|
||||||
Set<String> notifyReceivers = new LinkedHashSet<>();
|
Set<String> notifyReceivers = new LinkedHashSet<>();
|
||||||
|
|
||||||
WFCMessage.Message.Builder messageBuilder = message.toBuilder();
|
WFCMessage.Message.Builder messageBuilder = message.toBuilder();
|
||||||
int pullType = m_messagesStore.getNotifyReceivers(username, messageBuilder, notifyReceivers);
|
int pullType = m_messagesStore.getNotifyReceivers(username, messageBuilder, notifyReceivers, requestSourceType);
|
||||||
mServer.getImBusinessScheduler().execute(() -> this.publisher.publish2Receivers(messageBuilder.build(), notifyReceivers, clientID, pullType));
|
mServer.getImBusinessScheduler().execute(() -> this.publisher.publish2Receivers(messageBuilder.build(), notifyReceivers, clientID, pullType));
|
||||||
return notifyReceivers.size();
|
return notifyReceivers.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected long saveAndPublish(String username, String clientID, WFCMessage.Message message) {
|
protected long saveAndPublish(String username, String clientID, WFCMessage.Message message, ProtoConstants.RequestSourceType requestSourceType) {
|
||||||
Set<String> notifyReceivers = new LinkedHashSet<>();
|
Set<String> notifyReceivers = new LinkedHashSet<>();
|
||||||
|
|
||||||
message = m_messagesStore.storeMessage(username, clientID, message);
|
message = m_messagesStore.storeMessage(username, clientID, message);
|
||||||
WFCMessage.Message.Builder messageBuilder = message.toBuilder();
|
WFCMessage.Message.Builder messageBuilder = message.toBuilder();
|
||||||
int pullType = m_messagesStore.getNotifyReceivers(username, messageBuilder, notifyReceivers);
|
int pullType = m_messagesStore.getNotifyReceivers(username, messageBuilder, notifyReceivers, requestSourceType);
|
||||||
mServer.getImBusinessScheduler().execute(() -> this.publisher.publish2Receivers(messageBuilder.build(), notifyReceivers, clientID, pullType));
|
mServer.getImBusinessScheduler().execute(() -> this.publisher.publish2Receivers(messageBuilder.build(), notifyReceivers, clientID, pullType));
|
||||||
return notifyReceivers.size();
|
return notifyReceivers.size();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
package io.moquette.imhandler;
|
package io.moquette.imhandler;
|
||||||
|
|
||||||
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import cn.wildfirechat.proto.WFCMessage;
|
import cn.wildfirechat.proto.WFCMessage;
|
||||||
import io.moquette.spi.impl.Qos1PublishHandler;
|
import io.moquette.spi.impl.Qos1PublishHandler;
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
@@ -18,7 +19,7 @@ import win.liyufan.im.IMTopic;
|
|||||||
@Handler(IMTopic.JoinChatroomTopic)
|
@Handler(IMTopic.JoinChatroomTopic)
|
||||||
public class JoinChatroomHandler extends IMHandler<WFCMessage.IDBuf> {
|
public class JoinChatroomHandler extends IMHandler<WFCMessage.IDBuf> {
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.IDBuf request, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.IDBuf request, Qos1PublishHandler.IMCallback callback) {
|
||||||
return m_messagesStore.handleJoinChatroom(fromUser, clientID, request.getId());
|
return m_messagesStore.handleJoinChatroom(fromUser, clientID, request.getId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,12 +22,13 @@ import static win.liyufan.im.IMTopic.KickoffGroupMemberTopic;
|
|||||||
@Handler(value = KickoffGroupMemberTopic)
|
@Handler(value = KickoffGroupMemberTopic)
|
||||||
public class KickoffGroupMember extends GroupHandler<WFCMessage.RemoveGroupMemberRequest> {
|
public class KickoffGroupMember extends GroupHandler<WFCMessage.RemoveGroupMemberRequest> {
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.RemoveGroupMemberRequest request, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.RemoveGroupMemberRequest request, Qos1PublishHandler.IMCallback callback) {
|
||||||
ErrorCode errorCode;
|
ErrorCode errorCode;
|
||||||
WFCMessage.GroupInfo groupInfo = m_messagesStore.getGroupInfo(request.getGroupId());
|
WFCMessage.GroupInfo groupInfo = m_messagesStore.getGroupInfo(request.getGroupId());
|
||||||
if (groupInfo == null) {
|
if (groupInfo == null) {
|
||||||
errorCode = ErrorCode.ERROR_CODE_NOT_EXIST;
|
errorCode = ErrorCode.ERROR_CODE_NOT_EXIST;
|
||||||
} else {
|
} else {
|
||||||
|
boolean isAdmin = requestSourceType == ProtoConstants.RequestSourceType.Request_From_Admin;
|
||||||
boolean isAllow = isAdmin;
|
boolean isAllow = isAdmin;
|
||||||
if (!isAllow) {
|
if (!isAllow) {
|
||||||
if (groupInfo.getOwner() != null) {
|
if (groupInfo.getOwner() != null) {
|
||||||
@@ -50,12 +51,15 @@ public class KickoffGroupMember extends GroupHandler<WFCMessage.RemoveGroupMembe
|
|||||||
if (!isAllow && (groupInfo.getType() == ProtoConstants.GroupType.GroupType_Normal || groupInfo.getType() == ProtoConstants.GroupType.GroupType_Restricted)) {
|
if (!isAllow && (groupInfo.getType() == ProtoConstants.GroupType.GroupType_Normal || groupInfo.getType() == ProtoConstants.GroupType.GroupType_Restricted)) {
|
||||||
errorCode = ErrorCode.ERROR_CODE_NOT_RIGHT;
|
errorCode = ErrorCode.ERROR_CODE_NOT_RIGHT;
|
||||||
} else {
|
} else {
|
||||||
if(request.hasNotifyContent() && request.getNotifyContent().getType() > 0 && !isAdmin && !m_messagesStore.isAllowClientCustomGroupNotification()) {
|
if(request.hasNotifyContent() && request.getNotifyContent().getType() > 0 && requestSourceType == ProtoConstants.RequestSourceType.Request_From_User && !m_messagesStore.isAllowClientCustomGroupNotification()) {
|
||||||
|
return ErrorCode.ERROR_CODE_NOT_RIGHT;
|
||||||
|
}
|
||||||
|
if(request.hasNotifyContent() && request.getNotifyContent().getType() > 0 && requestSourceType == ProtoConstants.RequestSourceType.Request_From_Robot && !m_messagesStore.isAllowRobotCustomGroupNotification()) {
|
||||||
return ErrorCode.ERROR_CODE_NOT_RIGHT;
|
return ErrorCode.ERROR_CODE_NOT_RIGHT;
|
||||||
}
|
}
|
||||||
|
|
||||||
//send notify message first, then kickoff the member
|
//send notify message first, then kickoff the member
|
||||||
if (request.hasNotifyContent() && request.getNotifyContent().getType() > 0 && (isAdmin || m_messagesStore.isAllowClientCustomGroupNotification())) {
|
if (request.hasNotifyContent() && request.getNotifyContent().getType() > 0) {
|
||||||
sendGroupNotification(fromUser, groupInfo.getTargetId(), request.getToLineList(), request.getNotifyContent());
|
sendGroupNotification(fromUser, groupInfo.getTargetId(), request.getToLineList(), request.getNotifyContent());
|
||||||
} else {
|
} else {
|
||||||
WFCMessage.MessageContent content = new GroupNotificationBinaryContent(request.getGroupId(), fromUser, null, request.getRemovedMemberList()).getKickokfMemberGroupNotifyContent();
|
WFCMessage.MessageContent content = new GroupNotificationBinaryContent(request.getGroupId(), fromUser, null, request.getRemovedMemberList()).getKickokfMemberGroupNotifyContent();
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ import static win.liyufan.im.IMTopic.KickoffPCClientTopic;
|
|||||||
@Handler(value = KickoffPCClientTopic)
|
@Handler(value = KickoffPCClientTopic)
|
||||||
public class KickoffPCClientHandler extends GroupHandler<WFCMessage.IDBuf> {
|
public class KickoffPCClientHandler extends GroupHandler<WFCMessage.IDBuf> {
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.IDBuf request, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.IDBuf request, Qos1PublishHandler.IMCallback callback) {
|
||||||
String pcClientId = request.getId();
|
String pcClientId = request.getId();
|
||||||
if (StringUtil.isNullOrEmpty(pcClientId)) {
|
if (StringUtil.isNullOrEmpty(pcClientId)) {
|
||||||
return ErrorCode.INVALID_PARAMETER;
|
return ErrorCode.INVALID_PARAMETER;
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ import win.liyufan.im.IMTopic;
|
|||||||
@Handler(value = IMTopic.LoadRemoteMessagesTopic)
|
@Handler(value = IMTopic.LoadRemoteMessagesTopic)
|
||||||
public class LoadRemoteMessagesHandler extends IMHandler<WFCMessage.LoadRemoteMessages> {
|
public class LoadRemoteMessagesHandler extends IMHandler<WFCMessage.LoadRemoteMessages> {
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.LoadRemoteMessages request, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.LoadRemoteMessages request, Qos1PublishHandler.IMCallback callback) {
|
||||||
ErrorCode errorCode = ErrorCode.ERROR_CODE_SUCCESS;
|
ErrorCode errorCode = ErrorCode.ERROR_CODE_SUCCESS;
|
||||||
|
|
||||||
long beforeUid = request.getBeforeUid();
|
long beforeUid = request.getBeforeUid();
|
||||||
@@ -33,7 +33,7 @@ public class LoadRemoteMessagesHandler extends IMHandler<WFCMessage.LoadRemoteMe
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (request.getConversation().getType() == ProtoConstants.ConversationType.ConversationType_Channel) {
|
if (request.getConversation().getType() == ProtoConstants.ConversationType.ConversationType_Channel) {
|
||||||
if (!m_messagesStore.checkUserInChannel(fromUser, request.getConversation().getTarget())) {
|
if (!m_messagesStore.canSendMessageInChannel(fromUser, request.getConversation().getTarget())) {
|
||||||
return ErrorCode.ERROR_CODE_NOT_IN_CHANNEL;
|
return ErrorCode.ERROR_CODE_NOT_IN_CHANNEL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
package io.moquette.imhandler;
|
package io.moquette.imhandler;
|
||||||
|
|
||||||
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import cn.wildfirechat.proto.WFCMessage;
|
import cn.wildfirechat.proto.WFCMessage;
|
||||||
import io.moquette.spi.impl.Qos1PublishHandler;
|
import io.moquette.spi.impl.Qos1PublishHandler;
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
@@ -18,7 +19,7 @@ import static win.liyufan.im.IMTopic.ModifyChannelInfoTopic;
|
|||||||
@Handler(value = ModifyChannelInfoTopic)
|
@Handler(value = ModifyChannelInfoTopic)
|
||||||
public class ModifyChannelInfoHandler extends GroupHandler<WFCMessage.ModifyChannelInfo> {
|
public class ModifyChannelInfoHandler extends GroupHandler<WFCMessage.ModifyChannelInfo> {
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.ModifyChannelInfo request, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.ModifyChannelInfo request, Qos1PublishHandler.IMCallback callback) {
|
||||||
ErrorCode errorCode= m_messagesStore.modifyChannelInfo(fromUser, request.getChannelId(), request.getType(), request.getValue());
|
ErrorCode errorCode= m_messagesStore.modifyChannelInfo(fromUser, request.getChannelId(), request.getType(), request.getValue());
|
||||||
return errorCode;
|
return errorCode;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
package io.moquette.imhandler;
|
package io.moquette.imhandler;
|
||||||
|
|
||||||
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import cn.wildfirechat.proto.WFCMessage;
|
import cn.wildfirechat.proto.WFCMessage;
|
||||||
import cn.wildfirechat.pojos.GroupNotificationBinaryContent;
|
import cn.wildfirechat.pojos.GroupNotificationBinaryContent;
|
||||||
import io.moquette.spi.impl.Qos1PublishHandler;
|
import io.moquette.spi.impl.Qos1PublishHandler;
|
||||||
@@ -20,14 +21,18 @@ import static cn.wildfirechat.common.ErrorCode.ERROR_CODE_SUCCESS;
|
|||||||
@Handler(IMTopic.ModifyGroupAliasTopic)
|
@Handler(IMTopic.ModifyGroupAliasTopic)
|
||||||
public class ModifyGroupAliasHandler extends GroupHandler<WFCMessage.ModifyGroupMemberAlias> {
|
public class ModifyGroupAliasHandler extends GroupHandler<WFCMessage.ModifyGroupMemberAlias> {
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.ModifyGroupMemberAlias request, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.ModifyGroupMemberAlias request, Qos1PublishHandler.IMCallback callback) {
|
||||||
if(request.hasNotifyContent() && request.getNotifyContent().getType() > 0 && !isAdmin && !m_messagesStore.isAllowClientCustomGroupNotification()) {
|
boolean isAdmin = requestSourceType == ProtoConstants.RequestSourceType.Request_From_Admin;
|
||||||
|
if(request.hasNotifyContent() && request.getNotifyContent().getType() > 0 && requestSourceType == ProtoConstants.RequestSourceType.Request_From_User && !m_messagesStore.isAllowClientCustomGroupNotification()) {
|
||||||
|
return ErrorCode.ERROR_CODE_NOT_RIGHT;
|
||||||
|
}
|
||||||
|
if(request.hasNotifyContent() && request.getNotifyContent().getType() > 0 && requestSourceType == ProtoConstants.RequestSourceType.Request_From_Robot && !m_messagesStore.isAllowRobotCustomGroupNotification()) {
|
||||||
return ErrorCode.ERROR_CODE_NOT_RIGHT;
|
return ErrorCode.ERROR_CODE_NOT_RIGHT;
|
||||||
}
|
}
|
||||||
|
|
||||||
ErrorCode errorCode = m_messagesStore.modifyGroupMemberAlias(fromUser, request.getGroupId(), request.getAlias(), null, isAdmin);
|
ErrorCode errorCode = m_messagesStore.modifyGroupMemberAlias(fromUser, request.getGroupId(), request.getAlias(), null, isAdmin);
|
||||||
if (errorCode == ERROR_CODE_SUCCESS) {
|
if (errorCode == ERROR_CODE_SUCCESS) {
|
||||||
if (request.hasNotifyContent()&& request.getNotifyContent().getType() > 0 && (isAdmin || m_messagesStore.isAllowClientCustomGroupNotification())) {
|
if (request.hasNotifyContent()&& request.getNotifyContent().getType() > 0) {
|
||||||
sendGroupNotification(fromUser, request.getGroupId(), request.getToLineList(), request.getNotifyContent());
|
sendGroupNotification(fromUser, request.getGroupId(), request.getToLineList(), request.getNotifyContent());
|
||||||
} else {
|
} else {
|
||||||
WFCMessage.MessageContent content = new GroupNotificationBinaryContent(request.getGroupId(), fromUser, request.getAlias(), "").getModifyGroupMemberAliasNotifyContent();
|
WFCMessage.MessageContent content = new GroupNotificationBinaryContent(request.getGroupId(), fromUser, request.getAlias(), "").getModifyGroupMemberAliasNotifyContent();
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
package io.moquette.imhandler;
|
package io.moquette.imhandler;
|
||||||
|
|
||||||
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import cn.wildfirechat.proto.WFCMessage;
|
import cn.wildfirechat.proto.WFCMessage;
|
||||||
import cn.wildfirechat.pojos.GroupNotificationBinaryContent;
|
import cn.wildfirechat.pojos.GroupNotificationBinaryContent;
|
||||||
import io.moquette.spi.impl.Qos1PublishHandler;
|
import io.moquette.spi.impl.Qos1PublishHandler;
|
||||||
@@ -21,14 +22,18 @@ import static win.liyufan.im.IMTopic.ModifyGroupInfoTopic;
|
|||||||
@Handler(value = ModifyGroupInfoTopic)
|
@Handler(value = ModifyGroupInfoTopic)
|
||||||
public class ModifyGroupInfoHandler extends GroupHandler<WFCMessage.ModifyGroupInfoRequest> {
|
public class ModifyGroupInfoHandler extends GroupHandler<WFCMessage.ModifyGroupInfoRequest> {
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.ModifyGroupInfoRequest request, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.ModifyGroupInfoRequest request, Qos1PublishHandler.IMCallback callback) {
|
||||||
if(request.hasNotifyContent() && request.getNotifyContent().getType() > 0 && !isAdmin && !m_messagesStore.isAllowClientCustomGroupNotification()) {
|
boolean isAdmin = requestSourceType == ProtoConstants.RequestSourceType.Request_From_Admin;
|
||||||
|
if(request.hasNotifyContent() && request.getNotifyContent().getType() > 0 && requestSourceType == ProtoConstants.RequestSourceType.Request_From_User && !m_messagesStore.isAllowClientCustomGroupNotification()) {
|
||||||
|
return ErrorCode.ERROR_CODE_NOT_RIGHT;
|
||||||
|
}
|
||||||
|
if(request.hasNotifyContent() && request.getNotifyContent().getType() > 0 && requestSourceType == ProtoConstants.RequestSourceType.Request_From_Robot && !m_messagesStore.isAllowRobotCustomGroupNotification()) {
|
||||||
return ErrorCode.ERROR_CODE_NOT_RIGHT;
|
return ErrorCode.ERROR_CODE_NOT_RIGHT;
|
||||||
}
|
}
|
||||||
|
|
||||||
ErrorCode errorCode= m_messagesStore.modifyGroupInfo(fromUser, request.getGroupId(), request.getType(), request.getValue(), isAdmin);
|
ErrorCode errorCode= m_messagesStore.modifyGroupInfo(fromUser, request.getGroupId(), request.getType(), request.getValue(), isAdmin);
|
||||||
if (errorCode == ERROR_CODE_SUCCESS) {
|
if (errorCode == ERROR_CODE_SUCCESS) {
|
||||||
if(request.hasNotifyContent() && request.getNotifyContent().getType() > 0 && (isAdmin || m_messagesStore.isAllowClientCustomGroupNotification())) {
|
if(request.hasNotifyContent() && request.getNotifyContent().getType() > 0) {
|
||||||
sendGroupNotification(fromUser, request.getGroupId(), request.getToLineList(), request.getNotifyContent());
|
sendGroupNotification(fromUser, request.getGroupId(), request.getToLineList(), request.getNotifyContent());
|
||||||
} else {
|
} else {
|
||||||
WFCMessage.MessageContent content = null;
|
WFCMessage.MessageContent content = null;
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ package io.moquette.imhandler;
|
|||||||
|
|
||||||
import cn.wildfirechat.common.ErrorCode;
|
import cn.wildfirechat.common.ErrorCode;
|
||||||
import cn.wildfirechat.pojos.GroupNotificationBinaryContent;
|
import cn.wildfirechat.pojos.GroupNotificationBinaryContent;
|
||||||
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import cn.wildfirechat.proto.WFCMessage;
|
import cn.wildfirechat.proto.WFCMessage;
|
||||||
import io.moquette.spi.impl.Qos1PublishHandler;
|
import io.moquette.spi.impl.Qos1PublishHandler;
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
@@ -20,14 +21,18 @@ import static cn.wildfirechat.common.ErrorCode.ERROR_CODE_SUCCESS;
|
|||||||
@Handler(IMTopic.ModifyGroupMemberAliasTopic)
|
@Handler(IMTopic.ModifyGroupMemberAliasTopic)
|
||||||
public class ModifyGroupMemberAliasHandler extends GroupHandler<WFCMessage.ModifyGroupMemberAlias> {
|
public class ModifyGroupMemberAliasHandler extends GroupHandler<WFCMessage.ModifyGroupMemberAlias> {
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.ModifyGroupMemberAlias request, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.ModifyGroupMemberAlias request, Qos1PublishHandler.IMCallback callback) {
|
||||||
if(request.hasNotifyContent() && request.getNotifyContent().getType() > 0 && !isAdmin && !m_messagesStore.isAllowClientCustomGroupNotification()) {
|
boolean isAdmin = requestSourceType == ProtoConstants.RequestSourceType.Request_From_Admin;
|
||||||
|
if(request.hasNotifyContent() && request.getNotifyContent().getType() > 0 && requestSourceType == ProtoConstants.RequestSourceType.Request_From_User && !m_messagesStore.isAllowClientCustomGroupNotification()) {
|
||||||
|
return ErrorCode.ERROR_CODE_NOT_RIGHT;
|
||||||
|
}
|
||||||
|
if(request.hasNotifyContent() && request.getNotifyContent().getType() > 0 && requestSourceType == ProtoConstants.RequestSourceType.Request_From_Robot && !m_messagesStore.isAllowRobotCustomGroupNotification()) {
|
||||||
return ErrorCode.ERROR_CODE_NOT_RIGHT;
|
return ErrorCode.ERROR_CODE_NOT_RIGHT;
|
||||||
}
|
}
|
||||||
|
|
||||||
ErrorCode errorCode = m_messagesStore.modifyGroupMemberAlias(fromUser, request.getGroupId(), request.getAlias(), request.getMemberId(), isAdmin);
|
ErrorCode errorCode = m_messagesStore.modifyGroupMemberAlias(fromUser, request.getGroupId(), request.getAlias(), request.getMemberId(), isAdmin);
|
||||||
if (errorCode == ERROR_CODE_SUCCESS) {
|
if (errorCode == ERROR_CODE_SUCCESS) {
|
||||||
if (request.hasNotifyContent()&& request.getNotifyContent().getType() > 0 && (isAdmin || m_messagesStore.isAllowClientCustomGroupNotification())) {
|
if (request.hasNotifyContent()&& request.getNotifyContent().getType() > 0) {
|
||||||
sendGroupNotification(fromUser, request.getGroupId(), request.getToLineList(), request.getNotifyContent());
|
sendGroupNotification(fromUser, request.getGroupId(), request.getToLineList(), request.getNotifyContent());
|
||||||
} else {
|
} else {
|
||||||
WFCMessage.MessageContent content = new GroupNotificationBinaryContent(request.getGroupId(), fromUser, request.getAlias(), request.getMemberId()).getModifyGroupMemberAliasNotifyContent();
|
WFCMessage.MessageContent content = new GroupNotificationBinaryContent(request.getGroupId(), fromUser, request.getAlias(), request.getMemberId()).getModifyGroupMemberAliasNotifyContent();
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ package io.moquette.imhandler;
|
|||||||
|
|
||||||
import cn.wildfirechat.common.ErrorCode;
|
import cn.wildfirechat.common.ErrorCode;
|
||||||
import cn.wildfirechat.pojos.GroupNotificationBinaryContent;
|
import cn.wildfirechat.pojos.GroupNotificationBinaryContent;
|
||||||
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import cn.wildfirechat.proto.WFCMessage;
|
import cn.wildfirechat.proto.WFCMessage;
|
||||||
import io.moquette.spi.impl.Qos1PublishHandler;
|
import io.moquette.spi.impl.Qos1PublishHandler;
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
@@ -20,14 +21,18 @@ import static cn.wildfirechat.common.ErrorCode.ERROR_CODE_SUCCESS;
|
|||||||
@Handler(IMTopic.ModifyGroupMemberExtraTopic)
|
@Handler(IMTopic.ModifyGroupMemberExtraTopic)
|
||||||
public class ModifyGroupMemberExtraHandler extends GroupHandler<WFCMessage.ModifyGroupMemberExtra> {
|
public class ModifyGroupMemberExtraHandler extends GroupHandler<WFCMessage.ModifyGroupMemberExtra> {
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.ModifyGroupMemberExtra request, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.ModifyGroupMemberExtra request, Qos1PublishHandler.IMCallback callback) {
|
||||||
if(request.hasNotifyContent() && request.getNotifyContent().getType() > 0 && !isAdmin && !m_messagesStore.isAllowClientCustomGroupNotification()) {
|
boolean isAdmin = requestSourceType == ProtoConstants.RequestSourceType.Request_From_Admin;
|
||||||
|
if(request.hasNotifyContent() && request.getNotifyContent().getType() > 0 && requestSourceType == ProtoConstants.RequestSourceType.Request_From_User && !m_messagesStore.isAllowClientCustomGroupNotification()) {
|
||||||
|
return ErrorCode.ERROR_CODE_NOT_RIGHT;
|
||||||
|
}
|
||||||
|
if(request.hasNotifyContent() && request.getNotifyContent().getType() > 0 && requestSourceType == ProtoConstants.RequestSourceType.Request_From_Robot && !m_messagesStore.isAllowRobotCustomGroupNotification()) {
|
||||||
return ErrorCode.ERROR_CODE_NOT_RIGHT;
|
return ErrorCode.ERROR_CODE_NOT_RIGHT;
|
||||||
}
|
}
|
||||||
|
|
||||||
ErrorCode errorCode = m_messagesStore.modifyGroupMemberExtra(fromUser, request.getGroupId(), request.getExtra(), request.getMemberId(), isAdmin);
|
ErrorCode errorCode = m_messagesStore.modifyGroupMemberExtra(fromUser, request.getGroupId(), request.getExtra(), request.getMemberId(), isAdmin);
|
||||||
if (errorCode == ERROR_CODE_SUCCESS) {
|
if (errorCode == ERROR_CODE_SUCCESS) {
|
||||||
if (request.hasNotifyContent()&& request.getNotifyContent().getType() > 0 && (isAdmin || m_messagesStore.isAllowClientCustomGroupNotification())) {
|
if (request.hasNotifyContent()&& request.getNotifyContent().getType() > 0) {
|
||||||
sendGroupNotification(fromUser, request.getGroupId(), request.getToLineList(), request.getNotifyContent());
|
sendGroupNotification(fromUser, request.getGroupId(), request.getToLineList(), request.getNotifyContent());
|
||||||
} else {
|
} else {
|
||||||
WFCMessage.MessageContent content = new GroupNotificationBinaryContent(request.getGroupId(), fromUser, request.getExtra(), request.getMemberId()).getModifyGroupMemberExtraNotifyContent();
|
WFCMessage.MessageContent content = new GroupNotificationBinaryContent(request.getGroupId(), fromUser, request.getExtra(), request.getMemberId()).getModifyGroupMemberExtraNotifyContent();
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
package io.moquette.imhandler;
|
package io.moquette.imhandler;
|
||||||
|
|
||||||
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import cn.wildfirechat.proto.WFCMessage;
|
import cn.wildfirechat.proto.WFCMessage;
|
||||||
import io.moquette.spi.impl.Qos1PublishHandler;
|
import io.moquette.spi.impl.Qos1PublishHandler;
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
@@ -18,7 +19,7 @@ import win.liyufan.im.Utility;
|
|||||||
@Handler(IMTopic.ModifyMyInfoTopic)
|
@Handler(IMTopic.ModifyMyInfoTopic)
|
||||||
public class ModifyMyInfoHandler extends IMHandler<WFCMessage.ModifyMyInfoRequest> {
|
public class ModifyMyInfoHandler extends IMHandler<WFCMessage.ModifyMyInfoRequest> {
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.ModifyMyInfoRequest request, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.ModifyMyInfoRequest request, Qos1PublishHandler.IMCallback callback) {
|
||||||
try {
|
try {
|
||||||
return m_messagesStore.modifyUserInfo(fromUser, request);
|
return m_messagesStore.modifyUserInfo(fromUser, request);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|||||||
@@ -29,7 +29,8 @@ public class MultiCastMessageHandler extends IMHandler<WFCMessage.MultiCastMessa
|
|||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.MultiCastMessage multiCastMessage, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.MultiCastMessage multiCastMessage, Qos1PublishHandler.IMCallback callback) {
|
||||||
|
boolean isAdmin = requestSourceType == ProtoConstants.RequestSourceType.Request_From_Admin;
|
||||||
ErrorCode errorCode = ErrorCode.ERROR_CODE_SUCCESS;
|
ErrorCode errorCode = ErrorCode.ERROR_CODE_SUCCESS;
|
||||||
if (!isAdmin) {
|
if (!isAdmin) {
|
||||||
return ErrorCode.ERROR_CODE_NOT_RIGHT;
|
return ErrorCode.ERROR_CODE_NOT_RIGHT;
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ import win.liyufan.im.IMTopic;
|
|||||||
@Handler(value = IMTopic.PullMessageTopic)
|
@Handler(value = IMTopic.PullMessageTopic)
|
||||||
public class PullMessageHandler extends IMHandler<WFCMessage.PullMessageRequest> {
|
public class PullMessageHandler extends IMHandler<WFCMessage.PullMessageRequest> {
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.PullMessageRequest request, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.PullMessageRequest request, Qos1PublishHandler.IMCallback callback) {
|
||||||
ErrorCode errorCode = ErrorCode.ERROR_CODE_SUCCESS;
|
ErrorCode errorCode = ErrorCode.ERROR_CODE_SUCCESS;
|
||||||
|
|
||||||
if (request.getType() == ProtoConstants.PullType.Pull_ChatRoom && !m_messagesStore.checkUserClientInChatroom(fromUser, clientID, null)) {
|
if (request.getType() == ProtoConstants.PullType.Pull_ChatRoom && !m_messagesStore.checkUserClientInChatroom(fromUser, clientID, null)) {
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
package io.moquette.imhandler;
|
package io.moquette.imhandler;
|
||||||
|
|
||||||
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import cn.wildfirechat.proto.WFCMessage;
|
import cn.wildfirechat.proto.WFCMessage;
|
||||||
import io.moquette.spi.impl.Qos1PublishHandler;
|
import io.moquette.spi.impl.Qos1PublishHandler;
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
@@ -17,7 +18,7 @@ import win.liyufan.im.IMTopic;
|
|||||||
@Handler(IMTopic.PutUserSettingTopic)
|
@Handler(IMTopic.PutUserSettingTopic)
|
||||||
public class PutUserSettingHandler extends IMHandler<WFCMessage.ModifyUserSettingReq> {
|
public class PutUserSettingHandler extends IMHandler<WFCMessage.ModifyUserSettingReq> {
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.ModifyUserSettingReq request, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.ModifyUserSettingReq request, Qos1PublishHandler.IMCallback callback) {
|
||||||
m_messagesStore.updateUserSettings(fromUser, request, clientID);
|
m_messagesStore.updateUserSettings(fromUser, request, clientID);
|
||||||
return ErrorCode.ERROR_CODE_SUCCESS;
|
return ErrorCode.ERROR_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
package io.moquette.imhandler;
|
package io.moquette.imhandler;
|
||||||
|
|
||||||
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import cn.wildfirechat.proto.WFCMessage;
|
import cn.wildfirechat.proto.WFCMessage;
|
||||||
import io.moquette.spi.impl.Qos1PublishHandler;
|
import io.moquette.spi.impl.Qos1PublishHandler;
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
@@ -17,7 +18,7 @@ import win.liyufan.im.IMTopic;
|
|||||||
@Handler(IMTopic.QuitChatroomTopic)
|
@Handler(IMTopic.QuitChatroomTopic)
|
||||||
public class QuitChatroomHandler extends IMHandler<WFCMessage.IDBuf> {
|
public class QuitChatroomHandler extends IMHandler<WFCMessage.IDBuf> {
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.IDBuf request, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.IDBuf request, Qos1PublishHandler.IMCallback callback) {
|
||||||
m_messagesStore.handleQuitChatroom(fromUser, clientID, request.getId());
|
m_messagesStore.handleQuitChatroom(fromUser, clientID, request.getId());
|
||||||
return ErrorCode.ERROR_CODE_SUCCESS;
|
return ErrorCode.ERROR_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
package io.moquette.imhandler;
|
package io.moquette.imhandler;
|
||||||
|
|
||||||
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import cn.wildfirechat.proto.WFCMessage;
|
import cn.wildfirechat.proto.WFCMessage;
|
||||||
import cn.wildfirechat.pojos.GroupNotificationBinaryContent;
|
import cn.wildfirechat.pojos.GroupNotificationBinaryContent;
|
||||||
import io.moquette.spi.impl.Qos1PublishHandler;
|
import io.moquette.spi.impl.Qos1PublishHandler;
|
||||||
@@ -21,14 +22,18 @@ import static win.liyufan.im.IMTopic.QuitGroupTopic;
|
|||||||
@Handler(value = QuitGroupTopic)
|
@Handler(value = QuitGroupTopic)
|
||||||
public class QuitGroupHandler extends GroupHandler<WFCMessage.QuitGroupRequest> {
|
public class QuitGroupHandler extends GroupHandler<WFCMessage.QuitGroupRequest> {
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.QuitGroupRequest request, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.QuitGroupRequest request, Qos1PublishHandler.IMCallback callback) {
|
||||||
if(request.hasNotifyContent() && request.getNotifyContent().getType() > 0 && !isAdmin && !m_messagesStore.isAllowClientCustomGroupNotification()) {
|
boolean isAdmin = requestSourceType == ProtoConstants.RequestSourceType.Request_From_Admin;
|
||||||
|
if(request.hasNotifyContent() && request.getNotifyContent().getType() > 0 && requestSourceType == ProtoConstants.RequestSourceType.Request_From_User && !m_messagesStore.isAllowClientCustomGroupNotification()) {
|
||||||
|
return ErrorCode.ERROR_CODE_NOT_RIGHT;
|
||||||
|
}
|
||||||
|
if(request.hasNotifyContent() && request.getNotifyContent().getType() > 0 && requestSourceType == ProtoConstants.RequestSourceType.Request_From_Robot && !m_messagesStore.isAllowRobotCustomGroupNotification()) {
|
||||||
return ErrorCode.ERROR_CODE_NOT_RIGHT;
|
return ErrorCode.ERROR_CODE_NOT_RIGHT;
|
||||||
}
|
}
|
||||||
|
|
||||||
ErrorCode errorCode = m_messagesStore.quitGroup(fromUser, request.getGroupId());
|
ErrorCode errorCode = m_messagesStore.quitGroup(fromUser, request.getGroupId());
|
||||||
if (errorCode == ErrorCode.ERROR_CODE_SUCCESS) {
|
if (errorCode == ErrorCode.ERROR_CODE_SUCCESS) {
|
||||||
if (request.hasNotifyContent() && request.getNotifyContent().getType() > 0 && (isAdmin || m_messagesStore.isAllowClientCustomGroupNotification())) {
|
if (request.hasNotifyContent() && request.getNotifyContent().getType() > 0) {
|
||||||
sendGroupNotification(fromUser, request.getGroupId(), request.getToLineList(), request.getNotifyContent());
|
sendGroupNotification(fromUser, request.getGroupId(), request.getToLineList(), request.getNotifyContent());
|
||||||
} else {
|
} else {
|
||||||
WFCMessage.MessageContent content = new GroupNotificationBinaryContent(request.getGroupId(), fromUser, null, "").getQuitGroupNotifyContent();
|
WFCMessage.MessageContent content = new GroupNotificationBinaryContent(request.getGroupId(), fromUser, null, "").getQuitGroupNotifyContent();
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
package io.moquette.imhandler;
|
package io.moquette.imhandler;
|
||||||
|
|
||||||
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import cn.wildfirechat.proto.WFCMessage;
|
import cn.wildfirechat.proto.WFCMessage;
|
||||||
import io.moquette.spi.impl.Qos1PublishHandler;
|
import io.moquette.spi.impl.Qos1PublishHandler;
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
@@ -20,7 +21,8 @@ import java.util.Set;
|
|||||||
@Handler(value = IMTopic.RecallMessageTopic)
|
@Handler(value = IMTopic.RecallMessageTopic)
|
||||||
public class RecallMessageHandler extends IMHandler<WFCMessage.INT64Buf> {
|
public class RecallMessageHandler extends IMHandler<WFCMessage.INT64Buf> {
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.INT64Buf int64Buf, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.INT64Buf int64Buf, Qos1PublishHandler.IMCallback callback) {
|
||||||
|
boolean isAdmin = requestSourceType == ProtoConstants.RequestSourceType.Request_From_Admin;
|
||||||
ErrorCode errorCode = m_messagesStore.recallMessage(int64Buf.getId(), fromUser, clientID, isAdmin);
|
ErrorCode errorCode = m_messagesStore.recallMessage(int64Buf.getId(), fromUser, clientID, isAdmin);
|
||||||
|
|
||||||
if(errorCode != ErrorCode.ERROR_CODE_SUCCESS) {
|
if(errorCode != ErrorCode.ERROR_CODE_SUCCESS) {
|
||||||
@@ -32,7 +34,7 @@ public class RecallMessageHandler extends IMHandler<WFCMessage.INT64Buf> {
|
|||||||
return ErrorCode.ERROR_CODE_NOT_EXIST;
|
return ErrorCode.ERROR_CODE_NOT_EXIST;
|
||||||
}
|
}
|
||||||
|
|
||||||
publish(fromUser, clientID, message);
|
publish(fromUser, clientID, message, requestSourceType);
|
||||||
|
|
||||||
return errorCode;
|
return errorCode;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
package io.moquette.imhandler;
|
package io.moquette.imhandler;
|
||||||
|
|
||||||
import cn.wildfirechat.common.ErrorCode;
|
import cn.wildfirechat.common.ErrorCode;
|
||||||
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import cn.wildfirechat.proto.WFCMessage;
|
import cn.wildfirechat.proto.WFCMessage;
|
||||||
import io.moquette.spi.impl.Qos1PublishHandler;
|
import io.moquette.spi.impl.Qos1PublishHandler;
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
@@ -17,7 +18,8 @@ import win.liyufan.im.IMTopic;
|
|||||||
@Handler(value = IMTopic.RecallMultiCastMessageTopic)
|
@Handler(value = IMTopic.RecallMultiCastMessageTopic)
|
||||||
public class RecallMultiCastMessageHandler extends IMHandler<WFCMessage.RecallMultiCastMessageRequest> {
|
public class RecallMultiCastMessageHandler extends IMHandler<WFCMessage.RecallMultiCastMessageRequest> {
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.RecallMultiCastMessageRequest request, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.RecallMultiCastMessageRequest request, Qos1PublishHandler.IMCallback callback) {
|
||||||
|
boolean isAdmin = requestSourceType == ProtoConstants.RequestSourceType.Request_From_Admin;
|
||||||
if (!isAdmin) {
|
if (!isAdmin) {
|
||||||
return ErrorCode.ERROR_CODE_NOT_RIGHT;
|
return ErrorCode.ERROR_CODE_NOT_RIGHT;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
package io.moquette.imhandler;
|
package io.moquette.imhandler;
|
||||||
|
|
||||||
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import cn.wildfirechat.proto.WFCMessage;
|
import cn.wildfirechat.proto.WFCMessage;
|
||||||
import com.hazelcast.core.Member;
|
import com.hazelcast.core.Member;
|
||||||
import io.moquette.persistence.MemorySessionStore;
|
import io.moquette.persistence.MemorySessionStore;
|
||||||
@@ -20,7 +21,7 @@ import win.liyufan.im.IMTopic;
|
|||||||
@Handler(IMTopic.RouteTopic)
|
@Handler(IMTopic.RouteTopic)
|
||||||
public class RouteHandler extends IMHandler<WFCMessage.RouteRequest> {
|
public class RouteHandler extends IMHandler<WFCMessage.RouteRequest> {
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.RouteRequest request, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.RouteRequest request, Qos1PublishHandler.IMCallback callback) {
|
||||||
MemorySessionStore.Session session = m_sessionsStore.sessionForClientAndUser(fromUser, clientID);
|
MemorySessionStore.Session session = m_sessionsStore.sessionForClientAndUser(fromUser, clientID);
|
||||||
if (session == null) {
|
if (session == null) {
|
||||||
ErrorCode errorCode = m_sessionsStore.loadActiveSession(fromUser, clientID);
|
ErrorCode errorCode = m_sessionsStore.loadActiveSession(fromUser, clientID);
|
||||||
@@ -31,6 +32,11 @@ public class RouteHandler extends IMHandler<WFCMessage.RouteRequest> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (session == null || session.getDeleted() > 0) {
|
if (session == null || session.getDeleted() > 0) {
|
||||||
|
if(session == null) {
|
||||||
|
LOG.error("Session for <{}, {}> not exist", fromUser, clientID);
|
||||||
|
} else {
|
||||||
|
LOG.error("Session for <{}, {}> deleted", fromUser, clientID);
|
||||||
|
}
|
||||||
return ErrorCode.ERROR_CODE_SECRECT_KEY_MISMATCH;
|
return ErrorCode.ERROR_CODE_SECRECT_KEY_MISMATCH;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -98,8 +98,9 @@ public class SendMessageHandler extends IMHandler<WFCMessage.Message> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.Message message, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.Message message, Qos1PublishHandler.IMCallback callback) {
|
||||||
ErrorCode errorCode = ErrorCode.ERROR_CODE_SUCCESS;
|
ErrorCode errorCode = ErrorCode.ERROR_CODE_SUCCESS;
|
||||||
|
boolean isAdmin = requestSourceType == ProtoConstants.RequestSourceType.Request_From_Admin;
|
||||||
if (message != null) {
|
if (message != null) {
|
||||||
boolean ignoreMsg = false;
|
boolean ignoreMsg = false;
|
||||||
if (!isAdmin) { //admin do not check the right
|
if (!isAdmin) { //admin do not check the right
|
||||||
@@ -153,7 +154,7 @@ public class SendMessageHandler extends IMHandler<WFCMessage.Message> {
|
|||||||
}
|
}
|
||||||
} else if (message.getConversation().getType() == ProtoConstants.ConversationType.ConversationType_Channel) {
|
} else if (message.getConversation().getType() == ProtoConstants.ConversationType.ConversationType_Channel) {
|
||||||
if(!m_messagesStore.getGroupMuteExceptionTypes().contains(message.getContent().getType())) {
|
if(!m_messagesStore.getGroupMuteExceptionTypes().contains(message.getContent().getType())) {
|
||||||
if (!m_messagesStore.checkUserInChannel(fromUser, message.getConversation().getTarget())) {
|
if (!m_messagesStore.canSendMessageInChannel(fromUser, message.getConversation().getTarget())) {
|
||||||
return ErrorCode.ERROR_CODE_NOT_IN_CHANNEL;
|
return ErrorCode.ERROR_CODE_NOT_IN_CHANNEL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -202,15 +203,15 @@ public class SendMessageHandler extends IMHandler<WFCMessage.Message> {
|
|||||||
@Override
|
@Override
|
||||||
public void onSuccess(String content) {
|
public void onSuccess(String content) {
|
||||||
if(StringUtil.isNullOrEmpty(content)) {
|
if(StringUtil.isNullOrEmpty(content)) {
|
||||||
saveAndPublish(fromUser, clientID, finalMsg);
|
saveAndPublish(fromUser, clientID, finalMsg, requestSourceType);
|
||||||
} else {
|
} else {
|
||||||
MessagePayload payload = new Gson().fromJson(content, MessagePayload.class);
|
MessagePayload payload = new Gson().fromJson(content, MessagePayload.class);
|
||||||
if (payload != null && payload.getType() > 0) {
|
if (payload != null && payload.getType() > 0) {
|
||||||
WFCMessage.Message newMsg = finalMsg.toBuilder().setContent(payload.toProtoMessageContent()).build();
|
WFCMessage.Message newMsg = finalMsg.toBuilder().setContent(payload.toProtoMessageContent()).build();
|
||||||
saveAndPublish(fromUser, clientID, newMsg);
|
saveAndPublish(fromUser, clientID, newMsg, requestSourceType);
|
||||||
} else {
|
} else {
|
||||||
LOG.error("Response content {} from censor is invalid payload, ignore response and send original message", content);
|
LOG.error("Response content {} from censor is invalid payload, ignore response and send original message", content);
|
||||||
saveAndPublish(fromUser, clientID, finalMsg);
|
saveAndPublish(fromUser, clientID, finalMsg, requestSourceType);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(mWaitRemoteSensitiveServerResponse) {
|
if(mWaitRemoteSensitiveServerResponse) {
|
||||||
@@ -235,7 +236,7 @@ public class SendMessageHandler extends IMHandler<WFCMessage.Message> {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
LOG.warn("Failed to censor message with status {}, errorMessage {}. Send the original message", statusCode, errorMessage);
|
LOG.warn("Failed to censor message with status {}, errorMessage {}. Send the original message", statusCode, errorMessage);
|
||||||
saveAndPublish(fromUser, clientID, finalMsg);
|
saveAndPublish(fromUser, clientID, finalMsg, requestSourceType);
|
||||||
|
|
||||||
if(mWaitRemoteSensitiveServerResponse) {
|
if(mWaitRemoteSensitiveServerResponse) {
|
||||||
errorCode = ERROR_CODE_SUCCESS;
|
errorCode = ERROR_CODE_SUCCESS;
|
||||||
@@ -267,7 +268,7 @@ public class SendMessageHandler extends IMHandler<WFCMessage.Message> {
|
|||||||
|
|
||||||
if (errorCode == ErrorCode.ERROR_CODE_SUCCESS) {
|
if (errorCode == ErrorCode.ERROR_CODE_SUCCESS) {
|
||||||
if(!ignoreMsg) {
|
if(!ignoreMsg) {
|
||||||
saveAndPublish(fromUser, clientID, message);
|
saveAndPublish(fromUser, clientID, message, requestSourceType);
|
||||||
}
|
}
|
||||||
ackPayload = ackPayload.capacity(20);
|
ackPayload = ackPayload.capacity(20);
|
||||||
ackPayload.writeLong(messageId);
|
ackPayload.writeLong(messageId);
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
package io.moquette.imhandler;
|
package io.moquette.imhandler;
|
||||||
|
|
||||||
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import cn.wildfirechat.proto.WFCMessage;
|
import cn.wildfirechat.proto.WFCMessage;
|
||||||
import io.moquette.spi.impl.Qos1PublishHandler;
|
import io.moquette.spi.impl.Qos1PublishHandler;
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
@@ -19,7 +20,7 @@ import static cn.wildfirechat.common.ErrorCode.ERROR_CODE_SUCCESS;
|
|||||||
@Handler(IMTopic.SetFriendAliasTopic)
|
@Handler(IMTopic.SetFriendAliasTopic)
|
||||||
public class SetFriendAliasRequestHandler extends GroupHandler<WFCMessage.AddFriendRequest> {
|
public class SetFriendAliasRequestHandler extends GroupHandler<WFCMessage.AddFriendRequest> {
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.AddFriendRequest request, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.AddFriendRequest request, Qos1PublishHandler.IMCallback callback) {
|
||||||
long[] head = new long[1];
|
long[] head = new long[1];
|
||||||
ErrorCode errorCode = m_messagesStore.setFriendAliasRequest(fromUser, request.getTargetUid(), request.getReason(), head);
|
ErrorCode errorCode = m_messagesStore.setFriendAliasRequest(fromUser, request.getTargetUid(), request.getReason(), head);
|
||||||
if (errorCode == ERROR_CODE_SUCCESS) {
|
if (errorCode == ERROR_CODE_SUCCESS) {
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ package io.moquette.imhandler;
|
|||||||
|
|
||||||
import cn.wildfirechat.common.ErrorCode;
|
import cn.wildfirechat.common.ErrorCode;
|
||||||
import cn.wildfirechat.pojos.GroupNotificationBinaryContent;
|
import cn.wildfirechat.pojos.GroupNotificationBinaryContent;
|
||||||
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import cn.wildfirechat.proto.WFCMessage;
|
import cn.wildfirechat.proto.WFCMessage;
|
||||||
import io.moquette.spi.impl.Qos1PublishHandler;
|
import io.moquette.spi.impl.Qos1PublishHandler;
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
@@ -20,14 +21,18 @@ import static cn.wildfirechat.common.ErrorCode.ERROR_CODE_SUCCESS;
|
|||||||
@Handler(IMTopic.SetGroupManagerTopic)
|
@Handler(IMTopic.SetGroupManagerTopic)
|
||||||
public class SetGroupManagerHandler extends GroupHandler<WFCMessage.SetGroupManagerRequest> {
|
public class SetGroupManagerHandler extends GroupHandler<WFCMessage.SetGroupManagerRequest> {
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.SetGroupManagerRequest request, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.SetGroupManagerRequest request, Qos1PublishHandler.IMCallback callback) {
|
||||||
if(request.hasNotifyContent() && request.getNotifyContent().getType() > 0 && !isAdmin && !m_messagesStore.isAllowClientCustomGroupNotification()) {
|
boolean isAdmin = requestSourceType == ProtoConstants.RequestSourceType.Request_From_Admin;
|
||||||
|
if(request.hasNotifyContent() && request.getNotifyContent().getType() > 0 && requestSourceType == ProtoConstants.RequestSourceType.Request_From_User && !m_messagesStore.isAllowClientCustomGroupNotification()) {
|
||||||
|
return ErrorCode.ERROR_CODE_NOT_RIGHT;
|
||||||
|
}
|
||||||
|
if(request.hasNotifyContent() && request.getNotifyContent().getType() > 0 && requestSourceType == ProtoConstants.RequestSourceType.Request_From_Robot && !m_messagesStore.isAllowRobotCustomGroupNotification()) {
|
||||||
return ErrorCode.ERROR_CODE_NOT_RIGHT;
|
return ErrorCode.ERROR_CODE_NOT_RIGHT;
|
||||||
}
|
}
|
||||||
|
|
||||||
ErrorCode errorCode = m_messagesStore.setGroupManager(fromUser, request.getGroupId(), request.getType(), request.getUserIdList(), isAdmin);
|
ErrorCode errorCode = m_messagesStore.setGroupManager(fromUser, request.getGroupId(), request.getType(), request.getUserIdList(), isAdmin);
|
||||||
if (errorCode == ERROR_CODE_SUCCESS) {
|
if (errorCode == ERROR_CODE_SUCCESS) {
|
||||||
if (request.hasNotifyContent() && request.getNotifyContent().getType() > 0 && (isAdmin || m_messagesStore.isAllowClientCustomGroupNotification())) {
|
if (request.hasNotifyContent() && request.getNotifyContent().getType() > 0) {
|
||||||
sendGroupNotification(fromUser, request.getGroupId(), request.getToLineList(), request.getNotifyContent());
|
sendGroupNotification(fromUser, request.getGroupId(), request.getToLineList(), request.getNotifyContent());
|
||||||
} else {
|
} else {
|
||||||
WFCMessage.MessageContent content = new GroupNotificationBinaryContent(request.getGroupId(), fromUser, request.getType() + "", request.getUserIdList()).getSetGroupManagerNotifyContent();
|
WFCMessage.MessageContent content = new GroupNotificationBinaryContent(request.getGroupId(), fromUser, request.getType() + "", request.getUserIdList()).getSetGroupManagerNotifyContent();
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
package io.moquette.imhandler;
|
package io.moquette.imhandler;
|
||||||
|
|
||||||
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import cn.wildfirechat.proto.WFCMessage;
|
import cn.wildfirechat.proto.WFCMessage;
|
||||||
import io.moquette.spi.impl.Qos1PublishHandler;
|
import io.moquette.spi.impl.Qos1PublishHandler;
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
@@ -19,7 +20,7 @@ import static cn.wildfirechat.common.ErrorCode.ERROR_CODE_SUCCESS;
|
|||||||
@Handler(IMTopic.RriendRequestUnreadSyncTopic)
|
@Handler(IMTopic.RriendRequestUnreadSyncTopic)
|
||||||
public class SyncFriendRequestUnreadHandler extends GroupHandler<WFCMessage.Version> {
|
public class SyncFriendRequestUnreadHandler extends GroupHandler<WFCMessage.Version> {
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.Version request, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.Version request, Qos1PublishHandler.IMCallback callback) {
|
||||||
long[] head = new long[1];
|
long[] head = new long[1];
|
||||||
ErrorCode errorCode = m_messagesStore.SyncFriendRequestUnread(fromUser, request.getVersion(), head);
|
ErrorCode errorCode = m_messagesStore.SyncFriendRequestUnread(fromUser, request.getVersion(), head);
|
||||||
if (errorCode == ERROR_CODE_SUCCESS) {
|
if (errorCode == ERROR_CODE_SUCCESS) {
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
package io.moquette.imhandler;
|
package io.moquette.imhandler;
|
||||||
|
|
||||||
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import cn.wildfirechat.proto.WFCMessage;
|
import cn.wildfirechat.proto.WFCMessage;
|
||||||
import io.moquette.spi.impl.Qos1PublishHandler;
|
import io.moquette.spi.impl.Qos1PublishHandler;
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
@@ -17,7 +18,7 @@ import win.liyufan.im.IMTopic;
|
|||||||
@Handler(IMTopic.TransferChannelInfoTopic)
|
@Handler(IMTopic.TransferChannelInfoTopic)
|
||||||
public class TransferChannelHandler extends GroupHandler<WFCMessage.TransferChannel> {
|
public class TransferChannelHandler extends GroupHandler<WFCMessage.TransferChannel> {
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.TransferChannel request, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.TransferChannel request, Qos1PublishHandler.IMCallback callback) {
|
||||||
ErrorCode errorCode = m_messagesStore.transferChannel(fromUser, request.getChannelId(), request.getNewOwner());
|
ErrorCode errorCode = m_messagesStore.transferChannel(fromUser, request.getChannelId(), request.getNewOwner());
|
||||||
return errorCode;
|
return errorCode;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
package io.moquette.imhandler;
|
package io.moquette.imhandler;
|
||||||
|
|
||||||
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import cn.wildfirechat.proto.WFCMessage;
|
import cn.wildfirechat.proto.WFCMessage;
|
||||||
import cn.wildfirechat.pojos.GroupNotificationBinaryContent;
|
import cn.wildfirechat.pojos.GroupNotificationBinaryContent;
|
||||||
import io.moquette.spi.impl.Qos1PublishHandler;
|
import io.moquette.spi.impl.Qos1PublishHandler;
|
||||||
@@ -20,14 +21,18 @@ import static cn.wildfirechat.common.ErrorCode.ERROR_CODE_SUCCESS;
|
|||||||
@Handler(IMTopic.TransferGroupTopic)
|
@Handler(IMTopic.TransferGroupTopic)
|
||||||
public class TransferGroupHandler extends GroupHandler<WFCMessage.TransferGroupRequest> {
|
public class TransferGroupHandler extends GroupHandler<WFCMessage.TransferGroupRequest> {
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.TransferGroupRequest request, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.TransferGroupRequest request, Qos1PublishHandler.IMCallback callback) {
|
||||||
if(request.hasNotifyContent() && request.getNotifyContent().getType() > 0 && !isAdmin && !m_messagesStore.isAllowClientCustomGroupNotification()) {
|
boolean isAdmin = requestSourceType == ProtoConstants.RequestSourceType.Request_From_Admin;
|
||||||
|
if(request.hasNotifyContent() && request.getNotifyContent().getType() > 0 && requestSourceType == ProtoConstants.RequestSourceType.Request_From_User && !m_messagesStore.isAllowClientCustomGroupNotification()) {
|
||||||
|
return ErrorCode.ERROR_CODE_NOT_RIGHT;
|
||||||
|
}
|
||||||
|
if(request.hasNotifyContent() && request.getNotifyContent().getType() > 0 && requestSourceType == ProtoConstants.RequestSourceType.Request_From_Robot && !m_messagesStore.isAllowRobotCustomGroupNotification()) {
|
||||||
return ErrorCode.ERROR_CODE_NOT_RIGHT;
|
return ErrorCode.ERROR_CODE_NOT_RIGHT;
|
||||||
}
|
}
|
||||||
|
|
||||||
ErrorCode errorCode = m_messagesStore.transferGroup(fromUser, request.getGroupId(), request.getNewOwner(), isAdmin);
|
ErrorCode errorCode = m_messagesStore.transferGroup(fromUser, request.getGroupId(), request.getNewOwner(), isAdmin);
|
||||||
if (errorCode == ERROR_CODE_SUCCESS) {
|
if (errorCode == ERROR_CODE_SUCCESS) {
|
||||||
if (request.hasNotifyContent() && request.getNotifyContent().getType() > 0 && (isAdmin || m_messagesStore.isAllowClientCustomGroupNotification())) {
|
if (request.hasNotifyContent() && request.getNotifyContent().getType() > 0) {
|
||||||
sendGroupNotification(fromUser, request.getGroupId(), request.getToLineList(), request.getNotifyContent());
|
sendGroupNotification(fromUser, request.getGroupId(), request.getToLineList(), request.getNotifyContent());
|
||||||
} else {
|
} else {
|
||||||
WFCMessage.MessageContent content = new GroupNotificationBinaryContent(request.getGroupId(), fromUser, null, request.getNewOwner()).getTransferGroupNotifyContent();
|
WFCMessage.MessageContent content = new GroupNotificationBinaryContent(request.getGroupId(), fromUser, null, request.getNewOwner()).getTransferGroupNotifyContent();
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ import win.liyufan.im.IMTopic;
|
|||||||
@Handler(IMTopic.UploadDeviceTokenTopic)
|
@Handler(IMTopic.UploadDeviceTokenTopic)
|
||||||
public class UploadDeviceTokenHandler extends IMHandler<WFCMessage.UploadDeviceTokenRequest> {
|
public class UploadDeviceTokenHandler extends IMHandler<WFCMessage.UploadDeviceTokenRequest> {
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.UploadDeviceTokenRequest request, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.UploadDeviceTokenRequest request, Qos1PublishHandler.IMCallback callback) {
|
||||||
MemorySessionStore.Session session = m_sessionsStore.getSession(clientID);
|
MemorySessionStore.Session session = m_sessionsStore.getSession(clientID);
|
||||||
session.setPlatform(request.getPlatform());
|
session.setPlatform(request.getPlatform());
|
||||||
session.setAppName(request.getAppName());
|
session.setAppName(request.getAppName());
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
package io.moquette.imhandler;
|
package io.moquette.imhandler;
|
||||||
|
|
||||||
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import cn.wildfirechat.proto.WFCMessage;
|
import cn.wildfirechat.proto.WFCMessage;
|
||||||
import io.moquette.spi.impl.Qos1PublishHandler;
|
import io.moquette.spi.impl.Qos1PublishHandler;
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
@@ -19,7 +20,7 @@ import java.util.List;
|
|||||||
@Handler(IMTopic.UserSearchTopic)
|
@Handler(IMTopic.UserSearchTopic)
|
||||||
public class UserSearchHandler extends IMHandler<WFCMessage.SearchUserRequest> {
|
public class UserSearchHandler extends IMHandler<WFCMessage.SearchUserRequest> {
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, WFCMessage.SearchUserRequest request, Qos1PublishHandler.IMCallback callback) {
|
public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, ProtoConstants.RequestSourceType requestSourceType, WFCMessage.SearchUserRequest request, Qos1PublishHandler.IMCallback callback) {
|
||||||
List<WFCMessage.User> users = m_messagesStore.searchUser(request.getKeyword(), request.getFuzzy(), request.getPage());
|
List<WFCMessage.User> users = m_messagesStore.searchUser(request.getKeyword(), request.getFuzzy(), request.getPage());
|
||||||
WFCMessage.SearchUserResult.Builder builder = WFCMessage.SearchUserResult.newBuilder();
|
WFCMessage.SearchUserResult.Builder builder = WFCMessage.SearchUserResult.newBuilder();
|
||||||
builder.addAllEntry(users);
|
builder.addAllEntry(users);
|
||||||
|
|||||||
@@ -519,7 +519,7 @@ public class DatabaseStore {
|
|||||||
String sql;
|
String sql;
|
||||||
if (disableRemoteMessageSearch) {
|
if (disableRemoteMessageSearch) {
|
||||||
sql = "insert into " + table +
|
sql = "insert into " + table +
|
||||||
" (`_mid`, `_from`, `_type`, `_target`, `_line`, `_data`, `_dt`, `_content_type`, `_to`) values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)" +
|
" (`_mid`, `_from`, `_type`, `_target`, `_line`, `_data`, `_dt`, `_content_type`, `_to`) values(?, ?, ?, ?, ?, ?, ?, ?, ?)" +
|
||||||
" ON DUPLICATE KEY UPDATE " +
|
" ON DUPLICATE KEY UPDATE " +
|
||||||
"`_data` = ?," +
|
"`_data` = ?," +
|
||||||
"`_dt` = ?," +
|
"`_dt` = ?," +
|
||||||
@@ -553,7 +553,7 @@ public class DatabaseStore {
|
|||||||
statement.setInt(index++, message.getContent().getType());
|
statement.setInt(index++, message.getContent().getType());
|
||||||
String to = message.getToUser();
|
String to = message.getToUser();
|
||||||
if (StringUtil.isNullOrEmpty(message.getToUser())) {
|
if (StringUtil.isNullOrEmpty(message.getToUser())) {
|
||||||
if (message.getToList()!= null && message.getToList().size() == 1) {
|
if (message.getToList().size() > 0) {
|
||||||
to = message.getToList().get(0);
|
to = message.getToList().get(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -784,13 +784,13 @@ public class DatabaseStore {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
List<WFCMessage.Message> loadRemoteMessages(String user, WFCMessage.Conversation conversation, long beforeUid, int count, Collection<Integer> contentTypes) {
|
List<WFCMessage.Message> loadRemoteMessages(String user, WFCMessage.Conversation conversation, long beforeUid, int count, Collection<Integer> contentTypes, String channelOwner) {
|
||||||
List<WFCMessage.Message> messages = new ArrayList<>();
|
List<WFCMessage.Message> messages = new ArrayList<>();
|
||||||
long[] before = new long[1];
|
long[] before = new long[1];
|
||||||
before[0] = beforeUid;
|
before[0] = beforeUid;
|
||||||
boolean hasMore = loadRemoteMessagesFromTable(user, conversation, before, count, MessageShardingUtil.getMessageTable(beforeUid), messages, contentTypes);
|
boolean hasMore = loadRemoteMessagesFromTable(user, conversation, before, count, MessageShardingUtil.getMessageTable(beforeUid), messages, contentTypes, channelOwner);
|
||||||
while (messages.size() < count && hasMore) {
|
while (messages.size() < count && hasMore) {
|
||||||
hasMore = loadRemoteMessagesFromTable(user, conversation, before, count - messages.size(), MessageShardingUtil.getMessageTable(beforeUid), messages, contentTypes);
|
hasMore = loadRemoteMessagesFromTable(user, conversation, before, count - messages.size(), MessageShardingUtil.getMessageTable(beforeUid), messages, contentTypes, channelOwner);
|
||||||
}
|
}
|
||||||
|
|
||||||
int month = 0;
|
int month = 0;
|
||||||
@@ -800,7 +800,7 @@ public class DatabaseStore {
|
|||||||
int size = messages.size();
|
int size = messages.size();
|
||||||
hasMore = true;
|
hasMore = true;
|
||||||
while (size == messages.size() && hasMore) {
|
while (size == messages.size() && hasMore) {
|
||||||
hasMore = loadRemoteMessagesFromTable(user, conversation, before, count - messages.size(), nexTable, messages, contentTypes);
|
hasMore = loadRemoteMessagesFromTable(user, conversation, before, count - messages.size(), nexTable, messages, contentTypes, channelOwner);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (size < messages.size()) {
|
if (size < messages.size()) {
|
||||||
@@ -811,11 +811,13 @@ public class DatabaseStore {
|
|||||||
return messages;
|
return messages;
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean loadRemoteMessagesFromTable(String user, WFCMessage.Conversation conversation, long[] before, int count, String table, List<WFCMessage.Message> messages, Collection<Integer> contentTypes) {
|
boolean loadRemoteMessagesFromTable(String user, WFCMessage.Conversation conversation, long[] before, int count, String table, List<WFCMessage.Message> messages, Collection<Integer> contentTypes, String channelOwner) {
|
||||||
long beforeUid = before[0];
|
long beforeUid = before[0];
|
||||||
String sql = "select `_mid`, `_from`, `_type`, `_target`, `_line`, `_data`, `_dt`, `_to` from " + table +" where";
|
String sql = "select `_mid`, `_from`, `_type`, `_target`, `_line`, `_data`, `_dt`, `_to` from " + table +" where";
|
||||||
if (conversation.getType() == ProtoConstants.ConversationType.ConversationType_Private) {
|
if (conversation.getType() == ProtoConstants.ConversationType.ConversationType_Private) {
|
||||||
sql += " _type = ? and _line = ? and _mid < ? and ((_target = ? and _from = ?) or (_target = ? and _from = ?))";
|
sql += " _type = ? and _line = ? and _mid < ? and ((_target = ? and _from = ?) or (_target = ? and _from = ?))";
|
||||||
|
} else if (conversation.getType() == ProtoConstants.ConversationType.ConversationType_Channel && !user.equals(channelOwner)) {
|
||||||
|
sql += " _type = ? and _line = ? and _mid < ? and _target = ? and ((_from = ? and (_to = '' or _to = ?)) or (_from = ?))";
|
||||||
} else {
|
} else {
|
||||||
sql += " _type = ? and _line = ? and _mid < ? and _target = ?";
|
sql += " _type = ? and _line = ? and _mid < ? and _target = ?";
|
||||||
}
|
}
|
||||||
@@ -851,7 +853,12 @@ public class DatabaseStore {
|
|||||||
statement.setString(index++, user);
|
statement.setString(index++, user);
|
||||||
statement.setString(index++, user);
|
statement.setString(index++, user);
|
||||||
statement.setString(index++, conversation.getTarget());
|
statement.setString(index++, conversation.getTarget());
|
||||||
|
} else if (conversation.getType() == ProtoConstants.ConversationType.ConversationType_Channel && !user.equals(channelOwner)) {
|
||||||
|
statement.setString(index++, channelOwner);
|
||||||
|
statement.setString(index++, user);
|
||||||
|
statement.setString(index++, user);
|
||||||
}
|
}
|
||||||
|
|
||||||
statement.setInt(index++, count);
|
statement.setInt(index++, count);
|
||||||
resultSet = statement.executeQuery();
|
resultSet = statement.executeQuery();
|
||||||
while (resultSet.next()) {
|
while (resultSet.next()) {
|
||||||
@@ -907,20 +914,24 @@ public class DatabaseStore {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void persistUserMessage(final String userId, final long messageId, final long messageSeq, final int messageContentType) {
|
void persistUserMessage(final String userId, final long messageId, final long messageSeq, int type, String target, int line, boolean directing, final int messageContentType) {
|
||||||
mScheduler.execute(()->{
|
mScheduler.execute(()->{
|
||||||
Connection connection = null;
|
Connection connection = null;
|
||||||
PreparedStatement statement = null;
|
PreparedStatement statement = null;
|
||||||
try {
|
try {
|
||||||
connection = DBUtil.getConnection();
|
connection = DBUtil.getConnection();
|
||||||
|
|
||||||
String sql = "insert into " + getUserMessageTable(userId) + " (`_mid`, `_uid`, `_seq`, `_cont_type`) values(?, ?, ?, ?)";
|
String sql = "insert into " + getUserMessageTable(userId) + " (`_mid`, `_uid`, `_seq`, `_type`, `_target`, `_line`, `_directing`, `_cont_type`) values(?, ?, ?, ?, ?, ?, ?, ?)";
|
||||||
|
|
||||||
statement = connection.prepareStatement(sql);
|
statement = connection.prepareStatement(sql);
|
||||||
int index = 1;
|
int index = 1;
|
||||||
statement.setLong(index++, messageId);
|
statement.setLong(index++, messageId);
|
||||||
statement.setString(index++, userId);
|
statement.setString(index++, userId);
|
||||||
statement.setLong(index++, messageSeq);
|
statement.setLong(index++, messageSeq);
|
||||||
|
statement.setInt(index++, type);
|
||||||
|
statement.setString(index++, target);
|
||||||
|
statement.setInt(index++, line);
|
||||||
|
statement.setInt(index++, directing ? 1 :0);
|
||||||
statement.setInt(index++, messageContentType);
|
statement.setInt(index++, messageContentType);
|
||||||
int count = statement.executeUpdate();
|
int count = statement.executeUpdate();
|
||||||
LOG.info("Update rows {}", count);
|
LOG.info("Update rows {}", count);
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ import java.util.concurrent.locks.ReentrantReadWriteLock;
|
|||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
import static cn.wildfirechat.common.IMExceptionEvent.EventType.EVENT_CALLBACK_Exception;
|
import static cn.wildfirechat.common.IMExceptionEvent.EventType.EVENT_CALLBACK_Exception;
|
||||||
import static cn.wildfirechat.proto.ProtoConstants.ChannelState.Channel_State_Mask_Deleted;
|
import static cn.wildfirechat.proto.ProtoConstants.ChannelState.*;
|
||||||
import static cn.wildfirechat.proto.ProtoConstants.ChannelUpdateEventType.*;
|
import static cn.wildfirechat.proto.ProtoConstants.ChannelUpdateEventType.*;
|
||||||
import static cn.wildfirechat.proto.ProtoConstants.ChatroomMemberUpdateEventType.Chatroom_Member_Event_Join;
|
import static cn.wildfirechat.proto.ProtoConstants.ChatroomMemberUpdateEventType.Chatroom_Member_Event_Join;
|
||||||
import static cn.wildfirechat.proto.ProtoConstants.ChatroomMemberUpdateEventType.Chatroom_Member_Event_Leave;
|
import static cn.wildfirechat.proto.ProtoConstants.ChatroomMemberUpdateEventType.Chatroom_Member_Event_Leave;
|
||||||
@@ -157,6 +157,7 @@ public class MemoryMessagesStore implements IMessagesStore {
|
|||||||
private String mChatroomInfoUpdateCallback;
|
private String mChatroomInfoUpdateCallback;
|
||||||
private String mChatroomMemberUpdateCallback;
|
private String mChatroomMemberUpdateCallback;
|
||||||
private boolean mGroupAllowClientCustomOperationNotification;
|
private boolean mGroupAllowClientCustomOperationNotification;
|
||||||
|
private boolean mGroupAllowRobotCustomOperationNotification;
|
||||||
private int mGroupVisibleQuitKickoffNotification;
|
private int mGroupVisibleQuitKickoffNotification;
|
||||||
private int mSyncDataPartSize = 0;
|
private int mSyncDataPartSize = 0;
|
||||||
|
|
||||||
@@ -401,6 +402,12 @@ public class MemoryMessagesStore implements IMessagesStore {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
mGroupAllowRobotCustomOperationNotification = Boolean.parseBoolean(server.getConfig().getProperty(GROUP_Allow_Robot_Custom_Operation_Notification));
|
||||||
|
} catch (Exception e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
mGroupVisibleQuitKickoffNotification = Integer.parseInt(server.getConfig().getProperty(GROUP_Visible_Quit_Kickoff_Notification, "0"));
|
mGroupVisibleQuitKickoffNotification = Integer.parseInt(server.getConfig().getProperty(GROUP_Visible_Quit_Kickoff_Notification, "0"));
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@@ -489,7 +496,7 @@ public class MemoryMessagesStore implements IMessagesStore {
|
|||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getNotifyReceivers(String fromUser, WFCMessage.Message.Builder messageBuilder, Set<String> notifyReceivers) {
|
public int getNotifyReceivers(String fromUser, WFCMessage.Message.Builder messageBuilder, Set<String> notifyReceivers, ProtoConstants.RequestSourceType requestSourceType) {
|
||||||
WFCMessage.Message message = messageBuilder.build();
|
WFCMessage.Message message = messageBuilder.build();
|
||||||
HazelcastInstance hzInstance = m_Server.getHazelcastInstance();
|
HazelcastInstance hzInstance = m_Server.getHazelcastInstance();
|
||||||
int type = message.getConversation().getType();
|
int type = message.getConversation().getType();
|
||||||
@@ -549,8 +556,15 @@ public class MemoryMessagesStore implements IMessagesStore {
|
|||||||
} else if(type == ProtoConstants.ConversationType.ConversationType_Channel) {
|
} else if(type == ProtoConstants.ConversationType.ConversationType_Channel) {
|
||||||
WFCMessage.ChannelInfo channelInfo = getChannelInfo(message.getConversation().getTarget());
|
WFCMessage.ChannelInfo channelInfo = getChannelInfo(message.getConversation().getTarget());
|
||||||
if (channelInfo != null) {
|
if (channelInfo != null) {
|
||||||
notifyReceivers.add(fromUser);
|
|
||||||
if (channelInfo.getOwner().equals(fromUser)) {
|
if (channelInfo.getOwner().equals(fromUser)) {
|
||||||
|
if(requestSourceType == ProtoConstants.RequestSourceType.Request_From_Channel
|
||||||
|
&& !StringUtil.isNullOrEmpty(channelInfo.getCallback())
|
||||||
|
&& channelInfo.getAutomatic() == 1) {
|
||||||
|
LOG.info("Channel api message not send to the owner when automatic");
|
||||||
|
} else {
|
||||||
|
notifyReceivers.add(fromUser);
|
||||||
|
}
|
||||||
|
|
||||||
if((channelInfo.getStatus() & ProtoConstants.ChannelState.Channel_State_Mask_Global) > 0) {
|
if((channelInfo.getStatus() & ProtoConstants.ChannelState.Channel_State_Mask_Global) > 0) {
|
||||||
if((message.getToList() != null && !message.getToList().isEmpty())) {
|
if((message.getToList() != null && !message.getToList().isEmpty())) {
|
||||||
notifyReceivers.addAll(message.getToList());
|
notifyReceivers.addAll(message.getToList());
|
||||||
@@ -574,6 +588,7 @@ public class MemoryMessagesStore implements IMessagesStore {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
notifyReceivers.add(fromUser);
|
||||||
if (StringUtil.isNullOrEmpty(channelInfo.getCallback()) || channelInfo.getAutomatic() == 0) {
|
if (StringUtil.isNullOrEmpty(channelInfo.getCallback()) || channelInfo.getAutomatic() == 0) {
|
||||||
notifyReceivers.add(channelInfo.getOwner());
|
notifyReceivers.add(channelInfo.getOwner());
|
||||||
}
|
}
|
||||||
@@ -740,8 +755,19 @@ public class MemoryMessagesStore implements IMessagesStore {
|
|||||||
loadMessage = IS_CHATROOM_MESSAGE_REMOTE_HISTORY_MESSAGE;
|
loadMessage = IS_CHATROOM_MESSAGE_REMOTE_HISTORY_MESSAGE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String channelOwner = null;
|
||||||
|
if(conversation.getType() == ProtoConstants.ConversationType.ConversationType_Channel) {
|
||||||
|
IMap<String, WFCMessage.ChannelInfo> mIMap = m_Server.getHazelcastInstance().getMap(CHANNELS);
|
||||||
|
WFCMessage.ChannelInfo info = mIMap.get(conversation.getTarget());
|
||||||
|
if(info == null) {
|
||||||
|
loadMessage = false;
|
||||||
|
} else {
|
||||||
|
channelOwner = info.getOwner();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (loadMessage) {
|
if (loadMessage) {
|
||||||
messages = databaseStore.loadRemoteMessages(user, conversation, beforeUid, count, contentTypes);
|
messages = databaseStore.loadRemoteMessages(user, conversation, beforeUid, count, contentTypes, channelOwner);
|
||||||
} else {
|
} else {
|
||||||
messages = new ArrayList<>();
|
messages = new ArrayList<>();
|
||||||
}
|
}
|
||||||
@@ -754,6 +780,15 @@ public class MemoryMessagesStore implements IMessagesStore {
|
|||||||
return builder.build();
|
return builder.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void clearChatroomMembers(String chatroomId) {
|
||||||
|
MultiMap<String, UserClientEntry> chatroomMembers = m_Server.getHazelcastInstance().getMultiMap(CHATROOM_MEMBER_IDS);
|
||||||
|
IMap<String, String> userChatroomMap = m_Server.getHazelcastInstance().getMap(USER_CHATROOM);
|
||||||
|
chatroomMembers.get(chatroomId).forEach(userClientEntry -> {
|
||||||
|
userChatroomMap.remove(userClientEntry.userId);
|
||||||
|
});
|
||||||
|
chatroomMembers.remove(chatroomId);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Collection<UserClientEntry> getChatroomMembers(String chatroomId) {
|
public Collection<UserClientEntry> getChatroomMembers(String chatroomId) {
|
||||||
MultiMap<String, UserClientEntry> chatroomMembers = m_Server.getHazelcastInstance().getMultiMap(CHATROOM_MEMBER_IDS);
|
MultiMap<String, UserClientEntry> chatroomMembers = m_Server.getHazelcastInstance().getMultiMap(CHATROOM_MEMBER_IDS);
|
||||||
@@ -831,7 +866,7 @@ public class MemoryMessagesStore implements IMessagesStore {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long insertUserMessages(String sender, int conversationType, String target, int line, int messageContentType, String user, long messageId) {
|
public long insertUserMessages(String sender, int conversationType, String target, int line, int messageContentType, String user, long messageId, boolean directing) {
|
||||||
// messageId是全局的,messageSeq是跟个人相关的,理论上messageId的增长数度远远大于seq。
|
// messageId是全局的,messageSeq是跟个人相关的,理论上messageId的增长数度远远大于seq。
|
||||||
// 考虑到一种情况,当服务器发生变化,用户发生迁移后,messageSeq还需要保持有序。 要么把Seq持久化,要么在迁移后Seq取一个肯定比以前更大的数字(这个数字就是messageId)
|
// 考虑到一种情况,当服务器发生变化,用户发生迁移后,messageSeq还需要保持有序。 要么把Seq持久化,要么在迁移后Seq取一个肯定比以前更大的数字(这个数字就是messageId)
|
||||||
// 这里选择使用后面一种情况
|
// 这里选择使用后面一种情况
|
||||||
@@ -871,7 +906,7 @@ public class MemoryMessagesStore implements IMessagesStore {
|
|||||||
mWriteLock.unlock();
|
mWriteLock.unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
databaseStore.persistUserMessage(user, messageId, messageSeq, messageContentType);
|
databaseStore.persistUserMessage(user, messageId, messageSeq, conversationType, target, line, directing, messageContentType);
|
||||||
return messageSeq;
|
return messageSeq;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2043,6 +2078,10 @@ public class MemoryMessagesStore implements IMessagesStore {
|
|||||||
return ErrorCode.ERROR_CODE_NOT_RIGHT;
|
return ErrorCode.ERROR_CODE_NOT_RIGHT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(message.getContent().getType() == 80) {
|
||||||
|
return ErrorCode.ERROR_CODE_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
JSONObject json = new JSONObject();
|
JSONObject json = new JSONObject();
|
||||||
json.put("s", message.getFromUser());
|
json.put("s", message.getFromUser());
|
||||||
json.put("ts", message.getServerTimestamp());
|
json.put("ts", message.getServerTimestamp());
|
||||||
@@ -2134,6 +2173,12 @@ public class MemoryMessagesStore implements IMessagesStore {
|
|||||||
mUserMap.put(robot.getUid(), robot);
|
mUserMap.put(robot.getUid(), robot);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void destroyRobot(String robotId) {
|
||||||
|
HazelcastInstance hzInstance = m_Server.getHazelcastInstance();
|
||||||
|
IMap<String, WFCMessage.Robot> mUserMap = hzInstance.getMap(ROBOTS);
|
||||||
|
mUserMap.remove(robotId);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode getUserInfo(String fromUser, List<WFCMessage.UserRequest> requestList, WFCMessage.PullUserResult.Builder builder) {
|
public ErrorCode getUserInfo(String fromUser, List<WFCMessage.UserRequest> requestList, WFCMessage.PullUserResult.Builder builder) {
|
||||||
@@ -2199,7 +2244,6 @@ public class MemoryMessagesStore implements IMessagesStore {
|
|||||||
HazelcastInstance hzInstance = m_Server.getHazelcastInstance();
|
HazelcastInstance hzInstance = m_Server.getHazelcastInstance();
|
||||||
IMap<String, WFCMessage.User> mUserMap = hzInstance.getMap(USERS);
|
IMap<String, WFCMessage.User> mUserMap = hzInstance.getMap(USERS);
|
||||||
|
|
||||||
|
|
||||||
WFCMessage.User user = mUserMap.get(userId);
|
WFCMessage.User user = mUserMap.get(userId);
|
||||||
if (user == null) {
|
if (user == null) {
|
||||||
user = databaseStore.getPersistUser(userId);
|
user = databaseStore.getPersistUser(userId);
|
||||||
@@ -2263,6 +2307,7 @@ public class MemoryMessagesStore implements IMessagesStore {
|
|||||||
databaseStore.updateUser(user);
|
databaseStore.updateUser(user);
|
||||||
mUserMap.set(userId, user);
|
mUserMap.set(userId, user);
|
||||||
|
|
||||||
|
IMHandler.getPublisher().publishNotification(IMTopic.NotifyUserInfoTopic, user.getUid(), 0, null);
|
||||||
callbackUserInfoEvent(user);
|
callbackUserInfoEvent(user);
|
||||||
|
|
||||||
return ErrorCode.ERROR_CODE_SUCCESS;
|
return ErrorCode.ERROR_CODE_SUCCESS;
|
||||||
@@ -2272,6 +2317,24 @@ public class MemoryMessagesStore implements IMessagesStore {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void forceCleanOnlineStatus(String userId, String clientId) {
|
||||||
|
if (m_Server.isShutdowning()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!mMultiPlatformNotification || m_Server.getStore().sessionsStore().isMultiEndpointSupported()) {
|
||||||
|
WFCMessage.UserSettingEntry pcentry = getUserSetting(userId, kUserSettingPCOnline, "PC");
|
||||||
|
if (pcentry != null && !StringUtil.isNullOrEmpty(pcentry.getValue()) && pcentry.getValue().contains(clientId)) {
|
||||||
|
updateUserSettings(userId, WFCMessage.ModifyUserSettingReq.newBuilder().setScope(kUserSettingPCOnline).setKey("PC").setValue("").build(), clientId);
|
||||||
|
}
|
||||||
|
|
||||||
|
WFCMessage.UserSettingEntry padentry = getUserSetting(userId, kUserSettingPCOnline, "Pad");
|
||||||
|
if (padentry != null && !StringUtil.isNullOrEmpty(padentry.getValue()) && padentry.getValue().contains(clientId)) {
|
||||||
|
updateUserSettings(userId, WFCMessage.ModifyUserSettingReq.newBuilder().setScope(kUserSettingPCOnline).setKey("Pad").setValue("").build(), clientId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateUserOnlineSetting(MemorySessionStore.Session session, boolean online) {
|
public void updateUserOnlineSetting(MemorySessionStore.Session session, boolean online) {
|
||||||
if(!mMultiPlatformNotification) {
|
if(!mMultiPlatformNotification) {
|
||||||
@@ -2285,39 +2348,31 @@ public class MemoryMessagesStore implements IMessagesStore {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (session.getPlatform() == Platform_LINUX || session.getPlatform() == Platform_Windows || session.getPlatform() == Platform_OSX) {
|
String pcValue = null;
|
||||||
updateUserSettings(session.username, WFCMessage.ModifyUserSettingReq.newBuilder().setScope(kUserSettingPCOnline).setKey("PC").setValue(online ? (System.currentTimeMillis() + "|" + session.getPlatform() + "|" + session.getClientID() + "|" + session.getPhoneName()) : "").build(), session.clientID);
|
for (MemorySessionStore.Session s : m_Server.getStore().sessionsStore().sessionForUser(session.username)) {
|
||||||
} else {
|
if (s.getDeleted() != 0 || !m_Server.getConnectionsManager().isConnected(s.getClientID())) {
|
||||||
String value = null;
|
continue;
|
||||||
for (MemorySessionStore.Session s : m_Server.getStore().sessionsStore().sessionForUser(session.username)) {
|
|
||||||
if (s.getDeleted() != 0 || !m_Server.getConnectionsManager().isConnected(s.getClientID())) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (s.getPlatform()) {
|
|
||||||
case Platform_LINUX:
|
|
||||||
case Platform_Windows:
|
|
||||||
case Platform_OSX:
|
|
||||||
value = System.currentTimeMillis() + "|" + s.getPlatform() + "|" + s.getClientID() + "|" + s.getPhoneName();
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (value != null) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
WFCMessage.UserSettingEntry pcentry = getUserSetting(session.getUsername(), kUserSettingPCOnline, "PC");
|
switch (s.getPlatform()) {
|
||||||
if (value != null) {
|
case Platform_LINUX:
|
||||||
if (pcentry == null || StringUtil.isNullOrEmpty(pcentry.getValue())) {
|
case Platform_Windows:
|
||||||
updateUserSettings(session.username, WFCMessage.ModifyUserSettingReq.newBuilder().setScope(kUserSettingPCOnline).setKey("PC").setValue(value).build(), session.clientID);
|
case Platform_OSX:
|
||||||
}
|
pcValue = System.currentTimeMillis() + "|" + s.getPlatform() + "|" + s.getClientID() + "|" + s.getPhoneName();
|
||||||
} else {
|
break;
|
||||||
if (pcentry != null && !StringUtil.isNullOrEmpty(pcentry.getValue())) {
|
default:
|
||||||
updateUserSettings(session.username, WFCMessage.ModifyUserSettingReq.newBuilder().setScope(kUserSettingPCOnline).setKey("PC").setValue("").build(), session.clientID);
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
WFCMessage.UserSettingEntry pcentry = getUserSetting(session.getUsername(), kUserSettingPCOnline, "PC");
|
||||||
|
if (pcValue != null) {
|
||||||
|
if (pcentry == null || StringUtil.isNullOrEmpty(pcentry.getValue())) {
|
||||||
|
updateUserSettings(session.username, WFCMessage.ModifyUserSettingReq.newBuilder().setScope(kUserSettingPCOnline).setKey("PC").setValue(pcValue).build(), session.clientID);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (pcentry != null && !StringUtil.isNullOrEmpty(pcentry.getValue())) {
|
||||||
|
updateUserSettings(session.username, WFCMessage.ModifyUserSettingReq.newBuilder().setScope(kUserSettingPCOnline).setKey("PC").setValue("").build(), session.clientID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2368,31 +2423,31 @@ public class MemoryMessagesStore implements IMessagesStore {
|
|||||||
}
|
}
|
||||||
WFCMessage.User.Builder builder = user.toBuilder();
|
WFCMessage.User.Builder builder = user.toBuilder();
|
||||||
if((flag & Update_User_DisplayName) > 0) {
|
if((flag & Update_User_DisplayName) > 0) {
|
||||||
builder.setDisplayName(userInfo.getDisplayName());
|
builder.setDisplayName(userInfo.getDisplayName() == null ? "" : userInfo.getDisplayName());
|
||||||
}
|
}
|
||||||
if((flag & Update_User_Portrait) > 0) {
|
if((flag & Update_User_Portrait) > 0) {
|
||||||
builder.setPortrait(userInfo.getPortrait());
|
builder.setPortrait(userInfo.getPortrait() == null ? "" : userInfo.getPortrait());
|
||||||
}
|
}
|
||||||
if((flag & Update_User_Gender) > 0) {
|
if((flag & Update_User_Gender) > 0) {
|
||||||
builder.setGender(userInfo.getGender());
|
builder.setGender(userInfo.getGender());
|
||||||
}
|
}
|
||||||
if((flag & Update_User_Mobile) > 0) {
|
if((flag & Update_User_Mobile) > 0) {
|
||||||
builder.setMobile(userInfo.getMobile());
|
builder.setMobile(userInfo.getMobile() == null ? "" : userInfo.getMobile());
|
||||||
}
|
}
|
||||||
if((flag & Update_User_Email) > 0) {
|
if((flag & Update_User_Email) > 0) {
|
||||||
builder.setEmail(userInfo.getEmail());
|
builder.setEmail(userInfo.getEmail() == null ? "" : userInfo.getEmail());
|
||||||
}
|
}
|
||||||
if((flag & Update_User_Address) > 0) {
|
if((flag & Update_User_Address) > 0) {
|
||||||
builder.setAddress(userInfo.getAddress());
|
builder.setAddress(userInfo.getAddress() == null ? "" : userInfo.getAddress());
|
||||||
}
|
}
|
||||||
if((flag & Update_User_Company) > 0) {
|
if((flag & Update_User_Company) > 0) {
|
||||||
builder.setCompany(userInfo.getCompany());
|
builder.setCompany(userInfo.getCompany() == null ? "" : userInfo.getCompany());
|
||||||
}
|
}
|
||||||
if((flag & Update_User_Social) > 0) {
|
if((flag & Update_User_Social) > 0) {
|
||||||
builder.setSocial(userInfo.getSocial());
|
builder.setSocial(userInfo.getSocial() == null ? "" : userInfo.getSocial());
|
||||||
}
|
}
|
||||||
if((flag & Update_User_Extra) > 0) {
|
if((flag & Update_User_Extra) > 0) {
|
||||||
builder.setExtra(userInfo.getExtra());
|
builder.setExtra(userInfo.getExtra() == null ? "" : userInfo.getExtra());
|
||||||
}
|
}
|
||||||
if((flag & Update_User_Name) > 0) {
|
if((flag & Update_User_Name) > 0) {
|
||||||
if(StringUtil.isNullOrEmpty(userInfo.getName())) {
|
if(StringUtil.isNullOrEmpty(userInfo.getName())) {
|
||||||
@@ -2410,6 +2465,8 @@ public class MemoryMessagesStore implements IMessagesStore {
|
|||||||
return ErrorCode.ERROR_CODE_SERVER_ERROR;
|
return ErrorCode.ERROR_CODE_SERVER_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
IMHandler.getPublisher().publishNotification(IMTopic.NotifyUserInfoTopic, user.getUid(), 0, null);
|
||||||
|
|
||||||
mUserMap.put(user.getUid(), user);
|
mUserMap.put(user.getUid(), user);
|
||||||
callbackUserInfoEvent(user);
|
callbackUserInfoEvent(user);
|
||||||
return ErrorCode.ERROR_CODE_SUCCESS;
|
return ErrorCode.ERROR_CODE_SUCCESS;
|
||||||
@@ -2435,7 +2492,21 @@ public class MemoryMessagesStore implements IMessagesStore {
|
|||||||
IMap<String, WFCMessage.User> mUserMap = hzInstance.getMap(USERS);
|
IMap<String, WFCMessage.User> mUserMap = hzInstance.getMap(USERS);
|
||||||
WFCMessage.User us = mUserMap.get(userId);
|
WFCMessage.User us = mUserMap.get(userId);
|
||||||
if (us != null) {
|
if (us != null) {
|
||||||
us = WFCMessage.User.newBuilder().setUid(userId).setUpdateDt(System.currentTimeMillis()).setDisplayName("").setName(userId).setDeleted(1).build();
|
us = WFCMessage.User.newBuilder()
|
||||||
|
.setUid(userId)
|
||||||
|
.setUpdateDt(System.currentTimeMillis())
|
||||||
|
.setName(userId)
|
||||||
|
.setDeleted(1)
|
||||||
|
.clearDisplayName()
|
||||||
|
.clearAddress()
|
||||||
|
.clearCompany()
|
||||||
|
.clearEmail()
|
||||||
|
.clearExtra()
|
||||||
|
.clearMobile()
|
||||||
|
.clearPortrait()
|
||||||
|
.clearSocial()
|
||||||
|
.build();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
databaseStore.updateUser(us);
|
databaseStore.updateUser(us);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@@ -2539,6 +2610,7 @@ public class MemoryMessagesStore implements IMessagesStore {
|
|||||||
IMap<String, WFCMessage.ChatroomInfo> chatroomInfoMap = hzInstance.getMap(CHATROOMS);
|
IMap<String, WFCMessage.ChatroomInfo> chatroomInfoMap = hzInstance.getMap(CHATROOMS);
|
||||||
WFCMessage.ChatroomInfo room = chatroomInfoMap.get(chatroomId);
|
WFCMessage.ChatroomInfo room = chatroomInfoMap.get(chatroomId);
|
||||||
if (room != null) {
|
if (room != null) {
|
||||||
|
clearChatroomMembers(chatroomId);
|
||||||
room = room.toBuilder().setUpdateDt(System.currentTimeMillis()).setState(ProtoConstants.ChatroomState.Chatroom_State_End).build();
|
room = room.toBuilder().setUpdateDt(System.currentTimeMillis()).setState(ProtoConstants.ChatroomState.Chatroom_State_End).build();
|
||||||
chatroomInfoMap.put(chatroomId, room);
|
chatroomInfoMap.put(chatroomId, room);
|
||||||
callbackChatroomInfoUpdateEvent(chatroomId, Chatroom_Event_Destroy);
|
callbackChatroomInfoUpdateEvent(chatroomId, Chatroom_Event_Destroy);
|
||||||
@@ -2965,6 +3037,8 @@ public class MemoryMessagesStore implements IMessagesStore {
|
|||||||
return ErrorCode.ERROR_CODE_FRIEND_REQUEST_EXPIRED;
|
return ErrorCode.ERROR_CODE_FRIEND_REQUEST_EXPIRED;
|
||||||
} else {
|
} else {
|
||||||
existRequest = existRequest.toBuilder().setStatus(request.getStatus()).setUpdateDt(System.currentTimeMillis()).build();
|
existRequest = existRequest.toBuilder().setStatus(request.getStatus()).setUpdateDt(System.currentTimeMillis()).build();
|
||||||
|
heads[2] = existRequest.getUpdateDt();
|
||||||
|
heads[3] = existRequest.getUpdateDt();
|
||||||
databaseStore.persistOrUpdateFriendRequest(existRequest);
|
databaseStore.persistOrUpdateFriendRequest(existRequest);
|
||||||
|
|
||||||
if (request.getStatus() == ProtoConstants.FriendRequestStatus.RequestStatus_Accepted) {
|
if (request.getStatus() == ProtoConstants.FriendRequestStatus.RequestStatus_Accepted) {
|
||||||
@@ -3158,7 +3232,7 @@ public class MemoryMessagesStore implements IMessagesStore {
|
|||||||
@Override
|
@Override
|
||||||
public ErrorCode handleJoinChatroom(String userId, String clientId, String chatroomId) {
|
public ErrorCode handleJoinChatroom(String userId, String clientId, String chatroomId) {
|
||||||
IMap<String, WFCMessage.ChatroomInfo> chatroomInfoMap = m_Server.getHazelcastInstance().getMap(CHATROOMS);
|
IMap<String, WFCMessage.ChatroomInfo> chatroomInfoMap = m_Server.getHazelcastInstance().getMap(CHATROOMS);
|
||||||
if (chatroomInfoMap == null || chatroomInfoMap.get(chatroomId) == null) {
|
if (chatroomInfoMap == null || chatroomInfoMap.get(chatroomId) == null || chatroomInfoMap.get(chatroomId).getState() == ProtoConstants.ChatroomState.Chatroom_State_End) {
|
||||||
if(mChatroomCreateWhenNotExist) {
|
if(mChatroomCreateWhenNotExist) {
|
||||||
WFCMessage.ChatroomInfo.Builder builder = WFCMessage.ChatroomInfo.newBuilder().setTitle(chatroomId);
|
WFCMessage.ChatroomInfo.Builder builder = WFCMessage.ChatroomInfo.newBuilder().setTitle(chatroomId);
|
||||||
createChatroom(chatroomId, builder.build());
|
createChatroom(chatroomId, builder.build());
|
||||||
@@ -3635,7 +3709,7 @@ public class MemoryMessagesStore implements IMessagesStore {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ErrorCode distoryChannel(String operator, String channelId) {
|
public ErrorCode distoryChannel(String operator, String channelId, boolean isAdmin) {
|
||||||
HazelcastInstance hzInstance = m_Server.getHazelcastInstance();
|
HazelcastInstance hzInstance = m_Server.getHazelcastInstance();
|
||||||
IMap<String, WFCMessage.ChannelInfo> mIMap = hzInstance.getMap(CHANNELS);
|
IMap<String, WFCMessage.ChannelInfo> mIMap = hzInstance.getMap(CHANNELS);
|
||||||
|
|
||||||
@@ -3645,7 +3719,7 @@ public class MemoryMessagesStore implements IMessagesStore {
|
|||||||
return ErrorCode.ERROR_CODE_NOT_EXIST;
|
return ErrorCode.ERROR_CODE_NOT_EXIST;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (oldInfo.getOwner() == null || !oldInfo.getOwner().equals(operator)) {
|
if ((oldInfo.getOwner() == null || !oldInfo.getOwner().equals(operator)) && !isAdmin) {
|
||||||
return ErrorCode.ERROR_CODE_NOT_RIGHT;
|
return ErrorCode.ERROR_CODE_NOT_RIGHT;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3707,6 +3781,34 @@ public class MemoryMessagesStore implements IMessagesStore {
|
|||||||
return mIMap.get(channelId);
|
return mIMap.get(channelId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canSendMessageInChannel(String user, String channelId) {
|
||||||
|
IMap<String, WFCMessage.ChannelInfo> mIMap = m_Server.getHazelcastInstance().getMap(CHANNELS);
|
||||||
|
WFCMessage.ChannelInfo info = mIMap.get(channelId);
|
||||||
|
if(info == null || info.getStatus() == Channel_State_Mask_Deleted) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if(user.equals(info.getOwner())) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if((info.getStatus() & Channel_State_Mask_Global) > 0 || (info.getStatus() & Channel_State_Mask_Message_Unsubscribed) > 0) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
Collection<String> channelMembers = getChannelListener(channelId);
|
||||||
|
if (channelMembers == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
Collection<String> chatroomMembers = getChannelListener(channelId);
|
||||||
|
if (chatroomMembers == null || !chatroomMembers.contains(user)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean checkUserInChannel(String user, String channelId) {
|
public boolean checkUserInChannel(String user, String channelId) {
|
||||||
Collection<String> channelMembers = getChannelListener(channelId);
|
Collection<String> channelMembers = getChannelListener(channelId);
|
||||||
@@ -3781,6 +3883,11 @@ public class MemoryMessagesStore implements IMessagesStore {
|
|||||||
return mGroupAllowClientCustomOperationNotification;
|
return mGroupAllowClientCustomOperationNotification;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isAllowRobotCustomGroupNotification() {
|
||||||
|
return mGroupAllowRobotCustomOperationNotification;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getVisibleQuitKickoffNotification() {
|
public int getVisibleQuitKickoffNotification() {
|
||||||
return mGroupVisibleQuitKickoffNotification;
|
return mGroupVisibleQuitKickoffNotification;
|
||||||
|
|||||||
@@ -723,6 +723,11 @@ public class MemorySessionStore implements ISessionsStore {
|
|||||||
public ErrorCode kickoffPCClient(String operator, String pcClientId) {
|
public ErrorCode kickoffPCClient(String operator, String pcClientId) {
|
||||||
Session session = sessions.get(pcClientId);
|
Session session = sessions.get(pcClientId);
|
||||||
if (session != null) {
|
if (session != null) {
|
||||||
|
if(!operator.equals(session.getUsername())) {
|
||||||
|
LOG.error("kickoffPCClient failure, user {} don't have client {}", operator, pcClientId);
|
||||||
|
mServer.getProcessor().getMessagesStore().forceCleanOnlineStatus(operator, pcClientId);
|
||||||
|
return ErrorCode.ERROR_CODE_SUCCESS;
|
||||||
|
}
|
||||||
if (session.getPlatform() == ProtoConstants.Platform.Platform_LINUX
|
if (session.getPlatform() == ProtoConstants.Platform.Platform_LINUX
|
||||||
|| session.getPlatform() == ProtoConstants.Platform.Platform_WEB
|
|| session.getPlatform() == ProtoConstants.Platform.Platform_WEB
|
||||||
|| session.getPlatform() == ProtoConstants.Platform.Platform_Windows
|
|| session.getPlatform() == ProtoConstants.Platform.Platform_Windows
|
||||||
@@ -731,8 +736,12 @@ public class MemorySessionStore implements ISessionsStore {
|
|||||||
sessions.remove(pcClientId);
|
sessions.remove(pcClientId);
|
||||||
mServer.getProcessor().kickoffSession(session);
|
mServer.getProcessor().kickoffSession(session);
|
||||||
} else {
|
} else {
|
||||||
|
LOG.error("session {} is not pc client:{}", pcClientId, session.getPlatform());
|
||||||
return ErrorCode.ERROR_CODE_NOT_RIGHT;
|
return ErrorCode.ERROR_CODE_NOT_RIGHT;
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
LOG.error("Can't find the session for client <{}>", pcClientId);
|
||||||
|
mServer.getProcessor().getMessagesStore().forceCleanOnlineStatus(operator, pcClientId);
|
||||||
}
|
}
|
||||||
return ErrorCode.ERROR_CODE_SUCCESS;
|
return ErrorCode.ERROR_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
package io.moquette.persistence;
|
package io.moquette.persistence;
|
||||||
|
|
||||||
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import io.moquette.persistence.remote.*;
|
import io.moquette.persistence.remote.*;
|
||||||
import io.moquette.server.Server;
|
import io.moquette.server.Server;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
@@ -37,11 +38,7 @@ public class ServerAPIHelper {
|
|||||||
Executor getResponseExecutor();
|
Executor getResponseExecutor();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void sendRequest(String fromUser, String clientId, String request, byte[] message, Callback callback, boolean isAdmin) {
|
public static void sendRequest(String fromUser, String clientId, String request, byte[] message, Callback callback, ProtoConstants.RequestSourceType requestSourceType) {
|
||||||
sendRequest(fromUser, clientId, request, message, callback, isAdmin, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void sendRequest(String fromUser, String clientId, String request, byte[] message, Callback callback, boolean isAdmin, boolean isRobotOrChannel) {
|
|
||||||
int requestId = 0;
|
int requestId = 0;
|
||||||
|
|
||||||
if (callback != null) {
|
if (callback != null) {
|
||||||
@@ -54,7 +51,7 @@ public class ServerAPIHelper {
|
|||||||
requestMap.put(requestId, new RequestInfo(fromUser, clientId, callback, message, requestId, request));
|
requestMap.put(requestId, new RequestInfo(fromUser, clientId, callback, message, requestId, request));
|
||||||
}
|
}
|
||||||
|
|
||||||
server.onApiMessage(fromUser, clientId, message, requestId, "", request, isAdmin, isRobotOrChannel);
|
server.onApiMessage(fromUser, clientId, message, requestId, "", request, requestSourceType);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void sendResponse(int errorCode, byte[] message, String toUuid, int requestId) {
|
public static void sendResponse(int errorCode, byte[] message, String toUuid, int requestId) {
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package io.moquette.server;
|
package io.moquette.server;
|
||||||
|
|
||||||
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import cn.wildfirechat.push.PushServer;
|
import cn.wildfirechat.push.PushServer;
|
||||||
import cn.wildfirechat.server.ThreadPoolExecutorWrapper;
|
import cn.wildfirechat.server.ThreadPoolExecutorWrapper;
|
||||||
import com.hazelcast.config.ClasspathXmlConfig;
|
import com.hazelcast.config.ClasspathXmlConfig;
|
||||||
@@ -430,9 +431,9 @@ public class Server {
|
|||||||
return hazelcastInstance;
|
return hazelcastInstance;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onApiMessage(String fromUser, String clientId, byte[] message, int messageId, String from, String request, boolean isAdmin, boolean isRobotOrChannel) {
|
public void onApiMessage(String fromUser, String clientId, byte[] message, int messageId, String from, String request, ProtoConstants.RequestSourceType requestSourceType) {
|
||||||
LOG.debug("onApiMessage");
|
LOG.debug("onApiMessage");
|
||||||
m_processor.onApiMessage(fromUser, clientId, message, messageId, from, request, isAdmin, isRobotOrChannel);
|
m_processor.onApiMessage(fromUser, clientId, message, messageId, from, request, requestSourceType);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isShutdowning() {
|
public boolean isShutdowning() {
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ package io.moquette.spi;
|
|||||||
|
|
||||||
import cn.wildfirechat.pojos.InputOutputUserInfo;
|
import cn.wildfirechat.pojos.InputOutputUserInfo;
|
||||||
import cn.wildfirechat.pojos.SystemSettingPojo;
|
import cn.wildfirechat.pojos.SystemSettingPojo;
|
||||||
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import cn.wildfirechat.proto.WFCMessage;
|
import cn.wildfirechat.proto.WFCMessage;
|
||||||
import com.xiaoleilu.loServer.model.FriendData;
|
import com.xiaoleilu.loServer.model.FriendData;
|
||||||
import cn.wildfirechat.pojos.InputOutputUserBlockStatus;
|
import cn.wildfirechat.pojos.InputOutputUserBlockStatus;
|
||||||
@@ -101,11 +102,11 @@ public interface IMessagesStore {
|
|||||||
DatabaseStore getDatabaseStore();
|
DatabaseStore getDatabaseStore();
|
||||||
WFCMessage.Message storeMessage(String fromUser, String fromClientId, WFCMessage.Message message);
|
WFCMessage.Message storeMessage(String fromUser, String fromClientId, WFCMessage.Message message);
|
||||||
void storeSensitiveMessage(WFCMessage.Message message);
|
void storeSensitiveMessage(WFCMessage.Message message);
|
||||||
int getNotifyReceivers(String fromUser, WFCMessage.Message.Builder message, Set<String> notifyReceivers);
|
int getNotifyReceivers(String fromUser, WFCMessage.Message.Builder message, Set<String> notifyReceivers, ProtoConstants.RequestSourceType requestSourceType);
|
||||||
Set<String> getAllEnds();
|
Set<String> getAllEnds();
|
||||||
WFCMessage.PullMessageResult fetchMessage(String user, String exceptClientId, long fromMessageId, int pullType);
|
WFCMessage.PullMessageResult fetchMessage(String user, String exceptClientId, long fromMessageId, int pullType);
|
||||||
WFCMessage.PullMessageResult loadRemoteMessages(String user, WFCMessage.Conversation conversation, long beforeUid, int count, Collection<Integer> contentTypes);
|
WFCMessage.PullMessageResult loadRemoteMessages(String user, WFCMessage.Conversation conversation, long beforeUid, int count, Collection<Integer> contentTypes);
|
||||||
long insertUserMessages(String sender, int conversationType, String target, int line, int messageContentType, String userId, long messageId);
|
long insertUserMessages(String sender, int conversationType, String target, int line, int messageContentType, String userId, long messageId, boolean directing);
|
||||||
WFCMessage.GroupInfo createGroup(String operator, WFCMessage.GroupInfo groupInfo, List<WFCMessage.GroupMember> memberList, String memberExtra, boolean isAdmin);
|
WFCMessage.GroupInfo createGroup(String operator, WFCMessage.GroupInfo groupInfo, List<WFCMessage.GroupMember> memberList, String memberExtra, boolean isAdmin);
|
||||||
ErrorCode addGroupMembers(String operator, boolean isAdmin, String groupId, List<WFCMessage.GroupMember> memberList, String extra);
|
ErrorCode addGroupMembers(String operator, boolean isAdmin, String groupId, List<WFCMessage.GroupMember> memberList, String extra);
|
||||||
ErrorCode kickoffGroupMembers(String operator, boolean isAdmin, String groupId, List<String> memberList);
|
ErrorCode kickoffGroupMembers(String operator, boolean isAdmin, String groupId, List<String> memberList);
|
||||||
@@ -133,11 +134,14 @@ public interface IMessagesStore {
|
|||||||
|
|
||||||
WFCMessage.Robot getRobot(String robotId);
|
WFCMessage.Robot getRobot(String robotId);
|
||||||
void addRobot(WFCMessage.Robot robot);
|
void addRobot(WFCMessage.Robot robot);
|
||||||
|
void destroyRobot(String robotId);
|
||||||
|
|
||||||
ErrorCode getUserInfo(String fromUser, List<WFCMessage.UserRequest> requestList, WFCMessage.PullUserResult.Builder builder);
|
ErrorCode getUserInfo(String fromUser, List<WFCMessage.UserRequest> requestList, WFCMessage.PullUserResult.Builder builder);
|
||||||
|
|
||||||
ErrorCode modifyUserInfo(String userId, WFCMessage.ModifyMyInfoRequest request) throws Exception;
|
ErrorCode modifyUserInfo(String userId, WFCMessage.ModifyMyInfoRequest request) throws Exception;
|
||||||
|
|
||||||
|
void forceCleanOnlineStatus(String userId, String clientId);
|
||||||
|
|
||||||
void updateUserOnlineSetting(MemorySessionStore.Session session, boolean online);
|
void updateUserOnlineSetting(MemorySessionStore.Session session, boolean online);
|
||||||
|
|
||||||
ErrorCode modifyUserStatus(String userId, int status);
|
ErrorCode modifyUserStatus(String userId, int status);
|
||||||
@@ -205,10 +209,11 @@ public interface IMessagesStore {
|
|||||||
void clearUserChannels(String userId);
|
void clearUserChannels(String userId);
|
||||||
ErrorCode modifyChannelInfo(String operator, String channelId, int modifyType, String value);
|
ErrorCode modifyChannelInfo(String operator, String channelId, int modifyType, String value);
|
||||||
ErrorCode transferChannel(String operator, String channelId, String newOwner);
|
ErrorCode transferChannel(String operator, String channelId, String newOwner);
|
||||||
ErrorCode distoryChannel(String operator, String channelId);
|
ErrorCode distoryChannel(String operator, String channelId, boolean isAdmin);
|
||||||
List<WFCMessage.ChannelInfo> searchChannel(String keyword, boolean buzzy, int page);
|
List<WFCMessage.ChannelInfo> searchChannel(String keyword, boolean buzzy, int page);
|
||||||
ErrorCode listenChannel(String operator, String channelId, boolean listen);
|
ErrorCode listenChannel(String operator, String channelId, boolean listen);
|
||||||
WFCMessage.ChannelInfo getChannelInfo(String channelId);
|
WFCMessage.ChannelInfo getChannelInfo(String channelId);
|
||||||
|
boolean canSendMessageInChannel(String user, String channelId);
|
||||||
boolean checkUserInChannel(String user, String channelId);
|
boolean checkUserInChannel(String user, String channelId);
|
||||||
Collection<String> getChannelSubscriber(String channelId);
|
Collection<String> getChannelSubscriber(String channelId);
|
||||||
|
|
||||||
@@ -220,6 +225,7 @@ public interface IMessagesStore {
|
|||||||
WFCMessage.Message getMessage(long messageId);
|
WFCMessage.Message getMessage(long messageId);
|
||||||
|
|
||||||
boolean isAllowClientCustomGroupNotification();
|
boolean isAllowClientCustomGroupNotification();
|
||||||
|
boolean isAllowRobotCustomGroupNotification();
|
||||||
int getVisibleQuitKickoffNotification();
|
int getVisibleQuitKickoffNotification();
|
||||||
|
|
||||||
List<Integer> getClientForbiddenSendTypes();
|
List<Integer> getClientForbiddenSendTypes();
|
||||||
|
|||||||
@@ -160,7 +160,7 @@ public class MessagesPublisher {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void publish2Receivers(String sender, int conversationType, String target, int line, long messageId, Collection<String> receivers, String pushContent, String pushData, String exceptClientId, int pullType, int messageContentType, long serverTime, int mentionType, List<String> mentionTargets, int persistFlag) {
|
private void publish2Receivers(String sender, int conversationType, String target, int line, long messageId, Collection<String> receivers, String pushContent, String pushData, String exceptClientId, int pullType, int messageContentType, long serverTime, int mentionType, List<String> mentionTargets, int persistFlag, boolean directing) {
|
||||||
if (persistFlag == Transparent) {
|
if (persistFlag == Transparent) {
|
||||||
publishTransparentMessage2Receivers(messageId, receivers, pullType, exceptClientId);
|
publishTransparentMessage2Receivers(messageId, receivers, pullType, exceptClientId);
|
||||||
return;
|
return;
|
||||||
@@ -191,7 +191,7 @@ public class MessagesPublisher {
|
|||||||
}
|
}
|
||||||
long messageSeq;
|
long messageSeq;
|
||||||
if (pullType != ProtoConstants.PullType.Pull_ChatRoom) {
|
if (pullType != ProtoConstants.PullType.Pull_ChatRoom) {
|
||||||
messageSeq = m_messagesStore.insertUserMessages(sender, conversationType, target, line, messageContentType, user, messageId);
|
messageSeq = m_messagesStore.insertUserMessages(sender, conversationType, target, line, messageContentType, user, messageId, directing);
|
||||||
} else {
|
} else {
|
||||||
messageSeq = m_messagesStore.insertChatroomMessages(user, line, messageId);
|
messageSeq = m_messagesStore.insertChatroomMessages(user, line, messageId);
|
||||||
}
|
}
|
||||||
@@ -604,6 +604,12 @@ public class MessagesPublisher {
|
|||||||
Utility.printExecption(LOG, e, EVENT_CALLBACK_Exception);
|
Utility.printExecption(LOG, e, EVENT_CALLBACK_Exception);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
} else {
|
||||||
|
if (channelInfo == null) {
|
||||||
|
LOG.info("Channel {} not exist", message.getConversation().getTarget());
|
||||||
|
} else {
|
||||||
|
LOG.info("Channel {} callback {}", message.getConversation().getTarget(), channelInfo.getCallback());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
long messageId = message.getMessageId();
|
long messageId = message.getMessageId();
|
||||||
@@ -638,7 +644,7 @@ public class MessagesPublisher {
|
|||||||
message.getConversation().getType(), message.getConversation().getTarget(), message.getConversation().getLine(),
|
message.getConversation().getType(), message.getConversation().getTarget(), message.getConversation().getLine(),
|
||||||
messageId,
|
messageId,
|
||||||
receivers,
|
receivers,
|
||||||
pushContent, message.getContent().getPushData(), exceptClientId, pullType, message.getContent().getType(), message.getServerTimestamp(), message.getContent().getMentionedType(), message.getContent().getMentionedTargetList(), message.getContent().getPersistFlag());
|
pushContent, message.getContent().getPushData(), exceptClientId, pullType, message.getContent().getType(), message.getServerTimestamp(), message.getContent().getMentionedType(), message.getContent().getMentionedTargetList(), message.getContent().getPersistFlag(), message.hasToUser() || !message.getToList().isEmpty());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -622,14 +622,15 @@ public class ProtocolProcessor {
|
|||||||
if(session != null) {
|
if(session != null) {
|
||||||
session.refreshLastActiveTime();
|
session.refreshLastActiveTime();
|
||||||
forwardOnlineStatusEvent(username, clientID, session.getPlatform(), clearSession ? UserOnlineStatus.LOGOUT : UserOnlineStatus.OFFLINE, session.getAppName());
|
forwardOnlineStatusEvent(username, clientID, session.getPlatform(), clearSession ? UserOnlineStatus.LOGOUT : UserOnlineStatus.OFFLINE, session.getAppName());
|
||||||
m_messagesStore.updateUserOnlineSetting(session, false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ConnectionDescriptor oldConnDescr = new ConnectionDescriptor(clientID, channel);
|
ConnectionDescriptor oldConnDescr = new ConnectionDescriptor(clientID, channel);
|
||||||
if(connectionDescriptors.removeConnection(oldConnDescr)) {
|
if(connectionDescriptors.removeConnection(oldConnDescr)) {
|
||||||
m_interceptor.notifyClientConnectionLost(clientID, username);
|
m_interceptor.notifyClientConnectionLost(clientID, username);
|
||||||
}
|
}
|
||||||
|
if(session != null) {
|
||||||
|
m_messagesStore.updateUserOnlineSetting(session, false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -698,13 +699,13 @@ public class ProtocolProcessor {
|
|||||||
return m_sessionsStore;
|
return m_sessionsStore;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onApiMessage(String fromUser, String clientId, byte[] message, int messageId, String from, String request, boolean isAdmin, boolean isRobotOrChannel) {
|
public void onApiMessage(String fromUser, String clientId, byte[] message, int messageId, String from, String request, ProtoConstants.RequestSourceType requestSourceType) {
|
||||||
if(request.equals(ServerAPIHelper.KICKOFF_USER_REQUEST)) {
|
if(request.equals(ServerAPIHelper.KICKOFF_USER_REQUEST)) {
|
||||||
String userId = new String(message);
|
String userId = new String(message);
|
||||||
mServer.getImBusinessScheduler().execute(()-> kickoffUserOffline(userId));
|
mServer.getImBusinessScheduler().execute(()-> kickoffUserOffline(userId));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
qos1PublishHandler.onApiMessage(fromUser, clientId, message, messageId, from, request, isAdmin, isRobotOrChannel);
|
qos1PublishHandler.onApiMessage(fromUser, clientId, message, messageId, from, request, requestSourceType);
|
||||||
}
|
}
|
||||||
public void shutdown() {
|
public void shutdown() {
|
||||||
messagesPublisher.stopChatroomScheduler();
|
messagesPublisher.stopChatroomScheduler();
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import java.io.IOException;
|
|||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.zip.GZIPOutputStream;
|
import java.util.zip.GZIPOutputStream;
|
||||||
|
|
||||||
|
import cn.wildfirechat.proto.ProtoConstants;
|
||||||
import cn.wildfirechat.server.ThreadPoolExecutorWrapper;
|
import cn.wildfirechat.server.ThreadPoolExecutorWrapper;
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.xiaoleilu.loServer.action.ClassUtil;
|
import com.xiaoleilu.loServer.action.ClassUtil;
|
||||||
@@ -103,7 +104,7 @@ public class Qos1PublishHandler extends QosPublishHandler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onApiMessage(String fromUser, String clientId, byte[] message, int requestId, String from, String request, boolean isAdmin, boolean isRobotOrChannel) {
|
public void onApiMessage(String fromUser, String clientId, byte[] message, int requestId, String from, String request, ProtoConstants.RequestSourceType requestSourceType) {
|
||||||
if (request.equals(ServerAPIHelper.CHECK_USER_ONLINE_REQUEST)) {
|
if (request.equals(ServerAPIHelper.CHECK_USER_ONLINE_REQUEST)) {
|
||||||
checkUserOnlineHandler(message, ackPayload -> ServerAPIHelper.sendResponse(ERROR_CODE_SUCCESS.getCode(), ackPayload, from, requestId));
|
checkUserOnlineHandler(message, ackPayload -> ServerAPIHelper.sendResponse(ERROR_CODE_SUCCESS.getCode(), ackPayload, from, requestId));
|
||||||
} else {
|
} else {
|
||||||
@@ -114,7 +115,7 @@ public class Qos1PublishHandler extends QosPublishHandler {
|
|||||||
ReferenceCountUtil.release(ackPayload);
|
ReferenceCountUtil.release(ackPayload);
|
||||||
ServerAPIHelper.sendResponse(errorCode.getCode(), response, from, requestId);
|
ServerAPIHelper.sendResponse(errorCode.getCode(), response, from, requestId);
|
||||||
}
|
}
|
||||||
}, isAdmin, isRobotOrChannel);
|
}, requestSourceType);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -145,7 +146,7 @@ public class Qos1PublishHandler extends QosPublishHandler {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void imHandler(String clientID, String fromUser, String topic, byte[] payloadContent, IMCallback callback, boolean isAdmin, boolean isRobotOrChannel) {
|
void imHandler(String clientID, String fromUser, String topic, byte[] payloadContent, IMCallback callback, ProtoConstants.RequestSourceType requestSourceType) {
|
||||||
LOG.info("imHandler fromUser={}, topic={}", fromUser, topic);
|
LOG.info("imHandler fromUser={}, topic={}", fromUser, topic);
|
||||||
IMCallback wrapper = (errorcode, ackPayload) -> {
|
IMCallback wrapper = (errorcode, ackPayload) -> {
|
||||||
ackPayload.resetReaderIndex();
|
ackPayload.resetReaderIndex();
|
||||||
@@ -164,14 +165,17 @@ public class Qos1PublishHandler extends QosPublishHandler {
|
|||||||
if (session != null && session.getUsername().equals(fromUser)) {
|
if (session != null && session.getUsername().equals(fromUser)) {
|
||||||
if (data.length > 7*1024 && session.getMqttVersion().protocolLevel() >= MqttVersion.Wildfire_1.protocolLevel()) {
|
if (data.length > 7*1024 && session.getMqttVersion().protocolLevel() >= MqttVersion.Wildfire_1.protocolLevel()) {
|
||||||
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
||||||
GZIPOutputStream gzip;
|
GZIPOutputStream gzip = null;
|
||||||
try {
|
try {
|
||||||
gzip = new GZIPOutputStream(out);
|
gzip = new GZIPOutputStream(out);
|
||||||
gzip.write(data);
|
gzip.write(data);
|
||||||
gzip.close();
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
Utility.printExecption(LOG, e);
|
Utility.printExecption(LOG, e);
|
||||||
|
} finally {
|
||||||
|
if(gzip != null) {
|
||||||
|
gzip.close();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
data = out.toByteArray();
|
data = out.toByteArray();
|
||||||
code = (byte)ErrorCode.ERROR_CODE_SUCCESS_GZIPED.code;
|
code = (byte)ErrorCode.ERROR_CODE_SUCCESS_GZIPED.code;
|
||||||
@@ -201,7 +205,7 @@ public class Qos1PublishHandler extends QosPublishHandler {
|
|||||||
|
|
||||||
IMHandler handler = m_imHandlers.get(topic);
|
IMHandler handler = m_imHandlers.get(topic);
|
||||||
if (handler != null) {
|
if (handler != null) {
|
||||||
handler.doHandler(clientID, fromUser, topic, payloadContent, wrapper, isAdmin, isRobotOrChannel);
|
handler.doHandler(clientID, fromUser, topic, payloadContent, wrapper, requestSourceType);
|
||||||
} else {
|
} else {
|
||||||
LOG.error("imHandler unknown topic={}", topic);
|
LOG.error("imHandler unknown topic={}", topic);
|
||||||
ByteBuf ackPayload = Unpooled.buffer();
|
ByteBuf ackPayload = Unpooled.buffer();
|
||||||
@@ -247,7 +251,7 @@ public class Qos1PublishHandler extends QosPublishHandler {
|
|||||||
|
|
||||||
MemorySessionStore.Session session = m_sessionStore.getSession(clientID);
|
MemorySessionStore.Session session = m_sessionStore.getSession(clientID);
|
||||||
payloadContent = AES.AESDecrypt(payloadContent, session.getSecret(), true);
|
payloadContent = AES.AESDecrypt(payloadContent, session.getSecret(), true);
|
||||||
imHandler(clientID, username, imtopic, payloadContent, (errorCode, ackPayload) -> sendPubAck(clientID, messageID, ackPayload, errorCode), false, false);
|
imHandler(clientID, username, imtopic, payloadContent, (errorCode, ackPayload) -> sendPubAck(clientID, messageID, ackPayload, errorCode), ProtoConstants.RequestSourceType.Request_From_User);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sendPubAck(String clientId, int messageID, ByteBuf payload, ErrorCode errorCode) {
|
private void sendPubAck(String clientId, int messageID, ByteBuf payload, ErrorCode errorCode) {
|
||||||
|
|||||||
@@ -8,107 +8,40 @@
|
|||||||
|
|
||||||
package win.liyufan.im;
|
package win.liyufan.im;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
|
|
||||||
public class IDUtils {
|
public class IDUtils {
|
||||||
private static char getChar(int number) {
|
private static final int RADIX = 36;
|
||||||
if (number < 0 || number >= 64) {
|
private static final int IDLEN = 9;
|
||||||
number = number % 64;
|
private static final int[] FACTOR = {29,19,1,11,7,17,13,23,5};
|
||||||
}
|
|
||||||
|
private static char getChar(long number) {
|
||||||
if (number < 26) {
|
if (number < 26) {
|
||||||
return (char)('A' + number);
|
return (char)('a' + number);
|
||||||
} else if(number < 52) {
|
} else {
|
||||||
return (char)('a' + number - 26);
|
return (char)('0' + number - 26);
|
||||||
} else if(number < 62) {
|
|
||||||
return (char)('0' + number - 52);
|
|
||||||
} else if(number == 62) {
|
|
||||||
return '_';
|
|
||||||
}
|
}
|
||||||
return '-';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static int getNumber(char ch) {
|
public static String toUid(long id) {
|
||||||
|
|
||||||
if (ch >= 'A' && ch <= 'Z') {
|
|
||||||
return ch - 'A';
|
|
||||||
} else if(ch >= 'a' && ch <= 'z') {
|
|
||||||
return ch - 'a' + 26;
|
|
||||||
} else if(ch >= '0' && ch <= '9') {
|
|
||||||
return ch - '0' + 52;
|
|
||||||
} else if(ch == '+') {
|
|
||||||
return 62;
|
|
||||||
}
|
|
||||||
return 63;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String toUid(int id) {
|
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
int rand0 = 0;
|
for (int i = 0; i < IDLEN; i++) {
|
||||||
int rand3 = 0;
|
long bit = ((id % RADIX) * FACTOR[i] + FACTOR[i] + 5)%RADIX;
|
||||||
int rand6 = 0;
|
sb.append(getChar(bit));
|
||||||
for (int i = 0; i < 8; i++) {
|
id = id / RADIX;
|
||||||
if (i == 0 || i == 3 || i == 6) {
|
|
||||||
int rand = (int)(Math.random()*64+0.5);
|
|
||||||
sb.append(getChar(rand));
|
|
||||||
if (i == 0) {
|
|
||||||
rand0 = rand;
|
|
||||||
} else if (i == 3) {
|
|
||||||
rand3 = rand;
|
|
||||||
} else {
|
|
||||||
rand6 = rand;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (i < 5) {
|
|
||||||
sb.append(getChar((id + rand0) % 64));
|
|
||||||
} else if(i == 5) {
|
|
||||||
sb.append(getChar((id + rand3) % 64));
|
|
||||||
} else {
|
|
||||||
sb.append(getChar((id + rand6) % 64));
|
|
||||||
}
|
|
||||||
id = id / 64;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int fromUid(String uid) {
|
|
||||||
int id = 0;
|
|
||||||
int rand0 = 0;
|
|
||||||
int rand3 = 0;
|
|
||||||
int rand6 = 0;
|
|
||||||
for (int i = 0; i < 8; i++) {
|
|
||||||
if (i == 0 || i == 3 || i == 6) {
|
|
||||||
int rand = getNumber(uid.charAt(i));
|
|
||||||
if (i == 0) {
|
|
||||||
rand0 = rand;
|
|
||||||
} else if (i == 3) {
|
|
||||||
rand3 = rand;
|
|
||||||
} else {
|
|
||||||
rand6 = rand;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
int c = getNumber(uid.charAt(i));
|
|
||||||
|
|
||||||
if (i < 5) {
|
|
||||||
c = (c+64-rand0)%64;
|
|
||||||
} else if(i == 5) {
|
|
||||||
c = (c+64-rand3)%64;
|
|
||||||
} else {
|
|
||||||
c = (c+64-rand6)%64;
|
|
||||||
}
|
|
||||||
if (i < 3)
|
|
||||||
id = id + (c << (i-1)*6);
|
|
||||||
else if(i < 6)
|
|
||||||
id = id + (c << (i-2)*6);
|
|
||||||
else
|
|
||||||
id = id + (c << (i-3)*6);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
for (int i = 0; i < 100000000; i++) {
|
HashSet<String> idset = new HashSet<>();
|
||||||
|
for (long i = 0; i < 1000000000000L; i++) {
|
||||||
String uid = toUid(i);
|
String uid = toUid(i);
|
||||||
System.out.println(i + ", " + uid + ", " + fromUid(uid));
|
if(!idset.add(uid)) {
|
||||||
|
System.out.println("error, dupliate id");
|
||||||
|
System.exit(-1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ public interface IMTopic {
|
|||||||
|
|
||||||
String GetUserInfoTopic = "UPUI";
|
String GetUserInfoTopic = "UPUI";
|
||||||
String ModifyMyInfoTopic = "MMI";
|
String ModifyMyInfoTopic = "MMI";
|
||||||
|
String NotifyUserInfoTopic = "UIN";
|
||||||
|
|
||||||
String GetQiniuUploadTokenTopic = "GQNUT";
|
String GetQiniuUploadTokenTopic = "GQNUT";
|
||||||
|
|
||||||
@@ -70,7 +71,7 @@ public interface IMTopic {
|
|||||||
String CreateChannelTopic = "CHC";
|
String CreateChannelTopic = "CHC";
|
||||||
String ModifyChannelInfoTopic = "CHMI";
|
String ModifyChannelInfoTopic = "CHMI";
|
||||||
String TransferChannelInfoTopic = "CHT";
|
String TransferChannelInfoTopic = "CHT";
|
||||||
String DestoryChannelInfoTopic = "CHD";
|
String DestroyChannelInfoTopic = "CHD";
|
||||||
String ChannelSearchTopic = "CHS";
|
String ChannelSearchTopic = "CHS";
|
||||||
String ChannelListenTopic = "CHL";
|
String ChannelListenTopic = "CHL";
|
||||||
String ChannelPullTopic = "CHP";
|
String ChannelPullTopic = "CHP";
|
||||||
|
|||||||
@@ -25,6 +25,28 @@ public class SensitiveFilter {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private int getUrlLength(String text, int i) {
|
||||||
|
boolean startUrl = false;
|
||||||
|
if(text.charAt(i) == 'h') {
|
||||||
|
if(text.length() > i + 6 && text.substring(i, i+7).equals("http://")) {
|
||||||
|
startUrl = true;
|
||||||
|
} else if(text.length() > i + 7 && text.substring(i, i+8).equals("https://")) {
|
||||||
|
startUrl = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(startUrl) {
|
||||||
|
for (int j = i+1; j < text.length(); j++) {
|
||||||
|
char ch = text.charAt(j);
|
||||||
|
if(ch == ' ' || ch == '\n' || ch == '\r' || ch == '\t') {
|
||||||
|
return j-i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return text.length() - i - 1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
public Set<String> getSensitiveWords(String text,MatchType matchType){
|
public Set<String> getSensitiveWords(String text,MatchType matchType){
|
||||||
Set<String> sensitiveWords=new HashSet<>();
|
Set<String> sensitiveWords=new HashSet<>();
|
||||||
if(text==null||text.trim().length()==0){
|
if(text==null||text.trim().length()==0){
|
||||||
@@ -34,6 +56,11 @@ public class SensitiveFilter {
|
|||||||
String originalText = text;
|
String originalText = text;
|
||||||
text = text.toLowerCase();
|
text = text.toLowerCase();
|
||||||
for(int i=0;i<text.length();i++){
|
for(int i=0;i<text.length();i++){
|
||||||
|
int urlLength = getUrlLength(text, i);
|
||||||
|
if(urlLength > 0) {
|
||||||
|
i = i + urlLength;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
int sensitiveWordLength = getSensitiveWordLength(text, i, matchType);
|
int sensitiveWordLength = getSensitiveWordLength(text, i, matchType);
|
||||||
if(sensitiveWordLength>0){
|
if(sensitiveWordLength>0){
|
||||||
String sensitiveWord = originalText.substring(i, i + sensitiveWordLength);
|
String sensitiveWord = originalText.substring(i, i + sensitiveWordLength);
|
||||||
@@ -117,5 +144,29 @@ public class SensitiveFilter {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
Set<String> words = new HashSet<>();
|
||||||
|
words.add("sb");
|
||||||
|
words.add("xx");
|
||||||
|
SensitiveFilter sensitiveFilter = new SensitiveFilter(words);
|
||||||
|
String text1 = "u sb a";
|
||||||
|
Set<String> ss = sensitiveFilter.getSensitiveWords(text1, MatchType.MIN_MATCH);
|
||||||
|
System.out.println(ss.size());
|
||||||
|
|
||||||
|
text1 = "u xx";
|
||||||
|
ss = sensitiveFilter.getSensitiveWords(text1, MatchType.MIN_MATCH);
|
||||||
|
System.out.println(ss.size());
|
||||||
|
|
||||||
|
text1 = "a url is https://sdsbhe.com here";
|
||||||
|
ss = sensitiveFilter.getSensitiveWords(text1, MatchType.MIN_MATCH);
|
||||||
|
System.out.println(ss.size());
|
||||||
|
|
||||||
|
text1 = "a url is https://sdsbhe.com";
|
||||||
|
ss = sensitiveFilter.getSensitiveWords(text1, MatchType.MIN_MATCH);
|
||||||
|
System.out.println(ss.size());
|
||||||
|
|
||||||
|
text1 = "a url is https://sdsbhe.com\nsb";
|
||||||
|
ss = sensitiveFilter.getSensitiveWords(text1, MatchType.MIN_MATCH);
|
||||||
|
System.out.println(ss.size());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,73 +0,0 @@
|
|||||||
# Set root logger level to DEBUG and its only appender to A1.
|
|
||||||
#log4j.rootLogger=ERROR, A1
|
|
||||||
#log4j.rootLogger=INFO, stdout, file
|
|
||||||
log4j.rootLogger=INFO, file, messagelog
|
|
||||||
|
|
||||||
log4j.logger.io.moquette=INFO
|
|
||||||
log4j.logger.io.moquette.spi.impl.ProtocolProcessor=INFO
|
|
||||||
log4j.logger.io.moquette.spi.impl.ProtocolProcessorBootstrapper=WARN
|
|
||||||
|
|
||||||
#Protocol parsing
|
|
||||||
log4j.logger.io.moquette.server.netty.NettyMQTTHandler=WARN
|
|
||||||
#log4j.logger.io.moquette.server.netty.NettyMQTTHandler=DEBUG
|
|
||||||
log4j.logger.io.moquette.parser.netty=WARN
|
|
||||||
#Storage server
|
|
||||||
#log4j.logger.io.moquette.spi.impl.subscriptions.SubscriptionsDirectorytory=DEBUG
|
|
||||||
#log4j.logger.io.moquette.spi.impl.HawtDBStorageService=DEBUG
|
|
||||||
|
|
||||||
# stdout appender is set to be a ConsoleAppender.
|
|
||||||
#log4j.appender.stdout=org.apache.log4j.ConsoleAppender
|
|
||||||
#log4j.appender.stdout.Threshold=WARN
|
|
||||||
#log4j.appender.stdout.Threshold=INFO
|
|
||||||
#log4j.appender.stdout.Threshold=DEBUG
|
|
||||||
#log4j.appender.stdout.Threshold=TRACE
|
|
||||||
#log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
|
|
||||||
#log4j.appender.stdout.layout.ConversionPattern=%-4r [%t] %-5p %c{1} %x - %m%n
|
|
||||||
|
|
||||||
#file appender
|
|
||||||
log4j.appender.file=org.apache.log4j.RollingFileAppender
|
|
||||||
log4j.appender.file.Threshold=INFO
|
|
||||||
log4j.appender.file.File=logs/wildfirechat.log
|
|
||||||
log4j.appender.file.MaxFileSize=10MB
|
|
||||||
log4j.appender.file.MaxBackupIndex=20
|
|
||||||
log4j.appender.file.layout=org.apache.log4j.PatternLayout
|
|
||||||
#log4j.appender.file.layout.ConversionPattern=%-4r [%t] %-5p %c{1} %x - %m%n
|
|
||||||
log4j.appender.file.layout.ConversionPattern=%d{dd/MM/yyyy HH:mm:ss,SSS} [%t] %-5p %c{1} %L %x - %m%n
|
|
||||||
|
|
||||||
####################################
|
|
||||||
# Message Logger Configuration #
|
|
||||||
#####################################
|
|
||||||
log4j.appender.messagelog=org.apache.log4j.RollingFileAppender
|
|
||||||
log4j.appender.messagelog.Threshold=WARN
|
|
||||||
log4j.appender.messagelog.File=logs/wildfirechat_messages.log
|
|
||||||
log4j.appender.messagelog.MaxFileSize=100MB
|
|
||||||
log4j.appender.messagelog.MaxBackupIndex=1
|
|
||||||
log4j.appender.messagelog.layout=org.apache.log4j.PatternLayout
|
|
||||||
log4j.appender.messagelog.layout.ConversionPattern=%d{dd/MM/yyyy HH:mm:ss,SSS} [%t] %-5p %c{1} %L %x - %m%n
|
|
||||||
|
|
||||||
log4j.category.messageLogger=WARN, messagelog
|
|
||||||
|
|
||||||
|
|
||||||
log4j.logger.cn.wildfirechat.push=INFO, push_log
|
|
||||||
log4j.additivity.cn.wildfirechat.push=false
|
|
||||||
log4j.appender.push_log=org.apache.log4j.RollingFileAppender
|
|
||||||
log4j.appender.push_log.File=logs/push.log
|
|
||||||
log4j.appender.push_log.Append=true
|
|
||||||
log4j.appender.push_log.MaxFileSize=10MB
|
|
||||||
log4j.appender.push_log.MaxBackupIndex=5
|
|
||||||
log4j.appender.push_log.layout=org.apache.log4j.PatternLayout
|
|
||||||
log4j.appender.push_log.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p][%c{1}] [%t] - %m%n
|
|
||||||
log4j.appender.push_log.encoding=UTF-8
|
|
||||||
|
|
||||||
|
|
||||||
log4j.logger.com.xiaoleilu.loServer=INFO, http_log
|
|
||||||
log4j.additivity.com.xiaoleilu.loServer=false
|
|
||||||
log4j.appender.http_log=org.apache.log4j.RollingFileAppender
|
|
||||||
log4j.appender.http_log.File=logs/http.log
|
|
||||||
log4j.appender.http_log.Append=true
|
|
||||||
log4j.appender.http_log.MaxFileSize=10MB
|
|
||||||
log4j.appender.http_log.MaxBackupIndex=5
|
|
||||||
log4j.appender.http_log.layout=org.apache.log4j.PatternLayout
|
|
||||||
log4j.appender.http_log.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p][%c{1}] [%t] - %m%n
|
|
||||||
log4j.appender.http_log.encoding=UTF-8
|
|
||||||
|
|
||||||
Executable
+108
@@ -0,0 +1,108 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
|
||||||
|
<!--status="WARN" :用于设置log4j2自身内部日志的信息输出级别,默认是OFF-->
|
||||||
|
<!--monitorInterval="30" :间隔秒数,自动检测配置文件的变更和重新配置本身-->
|
||||||
|
<configuration status="WARN" monitorInterval="60">
|
||||||
|
<Properties>
|
||||||
|
<!--自定义一些常量,之后使用${变量名}引用-->
|
||||||
|
<Property name="MSG_LOG_HOME">./logs</Property>
|
||||||
|
<Property name="logFileName">test.log</Property>
|
||||||
|
<property name="charset">UTF-8</property>
|
||||||
|
<!--自定义的输出格式-->
|
||||||
|
<property name="pattern">%d %-5p [%t] %C{2} (%F:%L) - %m%n</property>
|
||||||
|
</Properties>
|
||||||
|
<!--appenders:定义输出内容,输出格式,输出方式,日志保存策略等,常用其下三种标签[console,File,RollingFile]-->
|
||||||
|
<appenders>
|
||||||
|
<!--console :控制台输出的配置-->
|
||||||
|
<console name="Console" target="SYSTEM_OUT">
|
||||||
|
<!--PatternLayout :输出日志的格式,LOG4J2定义了输出代码,详见第二部分-->
|
||||||
|
<PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
|
||||||
|
</console>
|
||||||
|
|
||||||
|
<RollingRandomAccessFile name="RollingFileInfo" immediateFlush="false"
|
||||||
|
fileName="${MSG_LOG_HOME}/wildfirechat.log"
|
||||||
|
filePattern="${MSG_LOG_HOME}/backup/wildfirechat.%d{yyyyMMddHH}.zip">
|
||||||
|
<Filters>
|
||||||
|
<ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
|
||||||
|
</Filters>
|
||||||
|
<PatternLayout pattern="${pattern}" />
|
||||||
|
<Policies>
|
||||||
|
<!-- TimeBasedTriggeringPolicy :时间滚动策略,默认0点小时产生新的文件,interval="6" : 自定义文件滚动时间间隔,每隔6小时产生新文件, modulate="true" : 产生文件是否以0点偏移时间,即6点,12点,18点,0点-->
|
||||||
|
<!-- <TimeBasedTriggeringPolicy interval="6" modulate="true"/>-->
|
||||||
|
<!-- SizeBasedTriggeringPolicy :文件大小滚动策略-->
|
||||||
|
<SizeBasedTriggeringPolicy size="100 MB"/>
|
||||||
|
</Policies>
|
||||||
|
|
||||||
|
<DefaultRolloverStrategy max="24">
|
||||||
|
<Delete basePath="${MSG_LOG_HOME}" maxDepth="2">
|
||||||
|
<IfFileName glob="*/wildfirechat.*.zip" />
|
||||||
|
<IfLastModified age="24H" />
|
||||||
|
</Delete>
|
||||||
|
</DefaultRolloverStrategy>
|
||||||
|
</RollingRandomAccessFile>
|
||||||
|
|
||||||
|
<RollingRandomAccessFile name="RollingFileWarn" immediateFlush="true"
|
||||||
|
fileName="${MSG_LOG_HOME}/wildfirechat_warn.log"
|
||||||
|
filePattern="${MSG_LOG_HOME}/backup/wildfirechat_warn.%d{yyyyMMddHH}.zip">
|
||||||
|
<Filters>
|
||||||
|
<ThresholdFilter level="WARN" onMatch="ACCEPT" onMismatch="DENY"/>
|
||||||
|
</Filters>
|
||||||
|
<PatternLayout pattern="${pattern}" />
|
||||||
|
<Policies>
|
||||||
|
<!-- TimeBasedTriggeringPolicy :时间滚动策略,默认0点小时产生新的文件,interval="6" : 自定义文件滚动时间间隔,每隔6小时产生新文件, modulate="true" : 产生文件是否以0点偏移时间,即6点,12点,18点,0点-->
|
||||||
|
<TimeBasedTriggeringPolicy interval="6" modulate="true"/>
|
||||||
|
<!-- SizeBasedTriggeringPolicy :文件大小滚动策略-->
|
||||||
|
<SizeBasedTriggeringPolicy size="100 MB"/>
|
||||||
|
</Policies>
|
||||||
|
|
||||||
|
<DefaultRolloverStrategy max="24">
|
||||||
|
<Delete basePath="${MSG_LOG_HOME}" maxDepth="2">
|
||||||
|
<IfFileName glob="*/wildfirechat_warn.*.zip" />
|
||||||
|
<IfLastModified age="24H" />
|
||||||
|
</Delete>
|
||||||
|
</DefaultRolloverStrategy>
|
||||||
|
</RollingRandomAccessFile>
|
||||||
|
|
||||||
|
<RollingRandomAccessFile name="RollingFileError" immediateFlush="true"
|
||||||
|
fileName="${MSG_LOG_HOME}/wildfirechat_error.log"
|
||||||
|
filePattern="${MSG_LOG_HOME}/backup/wildfirechat_error.%d{yyyyMMddHH}.zip">
|
||||||
|
<Filters>
|
||||||
|
<ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
|
||||||
|
</Filters>
|
||||||
|
<PatternLayout pattern="${pattern}" />
|
||||||
|
<Policies>
|
||||||
|
<!-- TimeBasedTriggeringPolicy :时间滚动策略,默认0点小时产生新的文件,interval="6" : 自定义文件滚动时间间隔,每隔6小时产生新文件, modulate="true" : 产生文件是否以0点偏移时间,即6点,12点,18点,0点-->
|
||||||
|
<TimeBasedTriggeringPolicy interval="6" modulate="true"/>
|
||||||
|
<!-- SizeBasedTriggeringPolicy :文件大小滚动策略-->
|
||||||
|
<SizeBasedTriggeringPolicy size="100 MB"/>
|
||||||
|
</Policies>
|
||||||
|
|
||||||
|
<DefaultRolloverStrategy max="24">
|
||||||
|
<Delete basePath="${MSG_LOG_HOME}" maxDepth="2">
|
||||||
|
<IfFileName glob="*/wildfirechat_error.*.zip" />
|
||||||
|
<IfLastModified age="24H" />
|
||||||
|
</Delete>
|
||||||
|
</DefaultRolloverStrategy>
|
||||||
|
</RollingRandomAccessFile>
|
||||||
|
</appenders>
|
||||||
|
|
||||||
|
<!--然后定义logger,只有定义了logger并引入的appender,appender才会生效-->
|
||||||
|
<loggers>
|
||||||
|
<!--过滤掉spring和mybatis的一些无用的DEBUG信息-->
|
||||||
|
<!--Logger节点用来单独指定日志的形式,name为包路径,比如要为org.springframework包下所有日志指定为INFO级别等。 -->
|
||||||
|
<!-- <logger name="org.springframework" level="INFO"></logger>-->
|
||||||
|
<!-- <logger name="org.mybatis" level="INFO"></logger>-->
|
||||||
|
<!-- Root节点用来指定项目的根日志,如果没有单独指定Logger,那么就会默认使用该Root日志输出 -->
|
||||||
|
<root level="INFO">
|
||||||
|
<appender-ref ref="Console"/>
|
||||||
|
<appender-ref ref="RollingFileInfo"/>
|
||||||
|
<appender-ref ref="RollingFileWarn"/>
|
||||||
|
<appender-ref ref="RollingFileError"/>
|
||||||
|
</root>
|
||||||
|
<!--AsyncLogger :异步日志,LOG4J有三种日志模式,全异步日志,混合模式,同步日志,性能从高到底,线程越多效率越高,也可以避免日志卡死线程情况发生-->
|
||||||
|
<!--additivity="false" : additivity设置事件是否在root logger输出,为了避免重复输出,可以在Logger 标签下设置additivity为”false”-->
|
||||||
|
<AsyncLogger name="AsyncLogger" level="trace" includeLocation="true" additivity="false">
|
||||||
|
<appender-ref ref="RollingFileInfo"/>
|
||||||
|
</AsyncLogger>
|
||||||
|
</loggers>
|
||||||
|
</configuration>
|
||||||
+1
-1
@@ -5,7 +5,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>wildfirechat-parent</artifactId>
|
<artifactId>wildfirechat-parent</artifactId>
|
||||||
<groupId>cn.wildfirechat</groupId>
|
<groupId>cn.wildfirechat</groupId>
|
||||||
<version>0.76</version>
|
<version>0.85</version>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
|||||||
@@ -32,6 +32,8 @@ public interface APIPath {
|
|||||||
String User_Put_Setting = "/admin/user/put_setting";
|
String User_Put_Setting = "/admin/user/put_setting";
|
||||||
String User_Get_Setting = "/admin/user/get_setting";
|
String User_Get_Setting = "/admin/user/get_setting";
|
||||||
String User_Kickoff_Client = "/admin/user/kickoff_client";
|
String User_Kickoff_Client = "/admin/user/kickoff_client";
|
||||||
|
String User_Online_Count = "/admin/user/online_count";
|
||||||
|
String User_Online_List = "/admin/user/online_list";
|
||||||
|
|
||||||
String Friend_Update_Status = "/admin/friend/status";
|
String Friend_Update_Status = "/admin/friend/status";
|
||||||
String Friend_Get_List = "/admin/friend/list";
|
String Friend_Get_List = "/admin/friend/list";
|
||||||
@@ -47,6 +49,7 @@ public interface APIPath {
|
|||||||
String Msg_Send = "/admin/message/send";
|
String Msg_Send = "/admin/message/send";
|
||||||
String Msg_Recall = "/admin/message/recall";
|
String Msg_Recall = "/admin/message/recall";
|
||||||
String Msg_Delete = "/admin/message/delete";
|
String Msg_Delete = "/admin/message/delete";
|
||||||
|
String Msg_Update = "/admin/message/update";
|
||||||
String Msg_Broadcast = "/admin/message/broadcast";
|
String Msg_Broadcast = "/admin/message/broadcast";
|
||||||
String Msg_Multicast = "/admin/message/multicast";
|
String Msg_Multicast = "/admin/message/multicast";
|
||||||
String Msg_RecallBroadCast = "/admin/message/recall_broadcast";
|
String Msg_RecallBroadCast = "/admin/message/recall_broadcast";
|
||||||
@@ -69,6 +72,8 @@ public interface APIPath {
|
|||||||
String Group_Set_Member_Extra = "/admin/group/member/set_extra";
|
String Group_Set_Member_Extra = "/admin/group/member/set_extra";
|
||||||
|
|
||||||
String Create_Channel = "/admin/channel/create";
|
String Create_Channel = "/admin/channel/create";
|
||||||
|
String Destroy_Channel = "/admin/channel/destroy";
|
||||||
|
String Get_Channel_Info = "/admin/channel/get";
|
||||||
String Get_System_Setting = "/admin/system/get_setting";
|
String Get_System_Setting = "/admin/system/get_setting";
|
||||||
String Put_System_Setting = "/admin/system/put_setting";
|
String Put_System_Setting = "/admin/system/put_setting";
|
||||||
|
|
||||||
|
|||||||
@@ -48,7 +48,10 @@ public enum ErrorCode {
|
|||||||
ERROR_CODE_ROBOT_NO_TOKEN(27, "robot no token"),
|
ERROR_CODE_ROBOT_NO_TOKEN(27, "robot no token"),
|
||||||
ERROR_CODE_WS_NOT_CONFIGURED_CORRECTLY(28, "ws not configured correctly"),
|
ERROR_CODE_WS_NOT_CONFIGURED_CORRECTLY(28, "ws not configured correctly"),
|
||||||
ERROR_CODE_CONFERENCE_ROOM_NOT_EXIST(60, "conference room not exist"),
|
ERROR_CODE_CONFERENCE_ROOM_NOT_EXIST(60, "conference room not exist"),
|
||||||
|
ERROR_CODE_CONFERENCE_SERVICE_NOT_AVAILABLE(61, "conference service not available"),
|
||||||
|
|
||||||
|
ERROR_CODE_CHANNEL_NO_EXIST(236, "channel no exist"),
|
||||||
|
ERROR_CODE_CHANNEL_NO_SECRET(237, "channel no secret"),
|
||||||
ERROR_CODE_USER_NOT_PREPARED(238, "user not prepared"),
|
ERROR_CODE_USER_NOT_PREPARED(238, "user not prepared"),
|
||||||
ERROR_CODE_API_NOT_SIGNED(239, "api not signed or sign parameter not completion"),
|
ERROR_CODE_API_NOT_SIGNED(239, "api not signed or sign parameter not completion"),
|
||||||
ERROR_CODE_GROUP_EXCEED_MAX_MEMBER_COUNT(240, "group exceed max member count"),
|
ERROR_CODE_GROUP_EXCEED_MAX_MEMBER_COUNT(240, "group exceed max member count"),
|
||||||
|
|||||||
@@ -0,0 +1,10 @@
|
|||||||
|
package cn.wildfirechat.pojos;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
public class GetOnlineUserCountResult extends ArrayList<GetOnlineUserCountResult.Node> {
|
||||||
|
public static class Node {
|
||||||
|
public int node;
|
||||||
|
public int count;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
package cn.wildfirechat.pojos;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
public class GetOnlineUserRequest {
|
||||||
|
public int nodeId;
|
||||||
|
public int offset;
|
||||||
|
public int count;
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
package cn.wildfirechat.pojos;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
public class GetOnlineUserResult {
|
||||||
|
public static class UserClient {
|
||||||
|
public String userId;
|
||||||
|
public String clientId;
|
||||||
|
public int platform;
|
||||||
|
}
|
||||||
|
|
||||||
|
ArrayList<GetOnlineUserResult.UserClient> userClients;
|
||||||
|
public int totalCount;
|
||||||
|
public int offset;
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
package cn.wildfirechat.pojos;
|
||||||
|
|
||||||
|
public class InputChannelId {
|
||||||
|
public String channelId;
|
||||||
|
|
||||||
|
public InputChannelId() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public InputChannelId(String channelId) {
|
||||||
|
this.channelId = channelId;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -55,7 +55,7 @@ public class InputModifyGroupInfo extends InputGroupBase {
|
|||||||
return WFCMessage.ModifyGroupInfoRequest.newBuilder()
|
return WFCMessage.ModifyGroupInfoRequest.newBuilder()
|
||||||
.setGroupId(group_id)
|
.setGroupId(group_id)
|
||||||
.setType(type)
|
.setType(type)
|
||||||
.setValue(value)
|
.setValue(value == null ? "" : value)
|
||||||
.addAllToLine(to_lines == null || to_lines.isEmpty() ? Arrays.asList(0) : to_lines)
|
.addAllToLine(to_lines == null || to_lines.isEmpty() ? Arrays.asList(0) : to_lines)
|
||||||
.setNotifyContent(notify_message.toProtoMessageContent())
|
.setNotifyContent(notify_message.toProtoMessageContent())
|
||||||
.build();
|
.build();
|
||||||
@@ -63,7 +63,7 @@ public class InputModifyGroupInfo extends InputGroupBase {
|
|||||||
return WFCMessage.ModifyGroupInfoRequest.newBuilder()
|
return WFCMessage.ModifyGroupInfoRequest.newBuilder()
|
||||||
.setGroupId(group_id)
|
.setGroupId(group_id)
|
||||||
.setType(type)
|
.setType(type)
|
||||||
.setValue(value)
|
.setValue(value == null ? "" : value)
|
||||||
.addAllToLine(to_lines == null || to_lines.isEmpty() ? Arrays.asList(0) : to_lines)
|
.addAllToLine(to_lines == null || to_lines.isEmpty() ? Arrays.asList(0) : to_lines)
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,10 +18,12 @@ public class OutputGetChannelInfo {
|
|||||||
private String portrait;
|
private String portrait;
|
||||||
private String extra;
|
private String extra;
|
||||||
private String owner;
|
private String owner;
|
||||||
|
private int state;
|
||||||
private int status;
|
private int status;
|
||||||
private long updateDt;
|
private long updateDt;
|
||||||
private String callback;
|
private String callback;
|
||||||
private int automatic;
|
private int automatic;
|
||||||
|
private String secret;
|
||||||
|
|
||||||
|
|
||||||
public String getChannelId() {
|
public String getChannelId() {
|
||||||
@@ -72,12 +74,12 @@ public class OutputGetChannelInfo {
|
|||||||
this.owner = owner;
|
this.owner = owner;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getStatus() {
|
public int getState() {
|
||||||
return status;
|
return state;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setStatus(int status) {
|
public void setState(int state) {
|
||||||
this.status = status;
|
this.state = state;
|
||||||
}
|
}
|
||||||
|
|
||||||
public long getUpdateDt() {
|
public long getUpdateDt() {
|
||||||
@@ -104,6 +106,22 @@ public class OutputGetChannelInfo {
|
|||||||
this.automatic = automatic;
|
this.automatic = automatic;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getStatus() {
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStatus(int status) {
|
||||||
|
this.status = status;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSecret() {
|
||||||
|
return secret;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSecret(String secret) {
|
||||||
|
this.secret = secret;
|
||||||
|
}
|
||||||
|
|
||||||
public static OutputGetChannelInfo fromPbInfo(WFCMessage.ChannelInfo channelInfo) {
|
public static OutputGetChannelInfo fromPbInfo(WFCMessage.ChannelInfo channelInfo) {
|
||||||
OutputGetChannelInfo out = new OutputGetChannelInfo();
|
OutputGetChannelInfo out = new OutputGetChannelInfo();
|
||||||
out.automatic = channelInfo.getAutomatic();
|
out.automatic = channelInfo.getAutomatic();
|
||||||
@@ -114,8 +132,10 @@ public class OutputGetChannelInfo {
|
|||||||
out.name = channelInfo.getName();
|
out.name = channelInfo.getName();
|
||||||
out.owner = channelInfo.getOwner();
|
out.owner = channelInfo.getOwner();
|
||||||
out.portrait = channelInfo.getPortrait();
|
out.portrait = channelInfo.getPortrait();
|
||||||
out.status = channelInfo.getStatus();
|
out.state = channelInfo.getStatus();
|
||||||
|
out.status = channelInfo.getStatus();;
|
||||||
out.updateDt = channelInfo.getUpdateDt();
|
out.updateDt = channelInfo.getUpdateDt();
|
||||||
|
out.secret = channelInfo.getSecret();
|
||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,4 +8,5 @@ public class PojoConferenceCreate {
|
|||||||
public int bitrate;
|
public int bitrate;
|
||||||
public boolean advance;
|
public boolean advance;
|
||||||
public boolean recording;
|
public boolean recording;
|
||||||
|
public boolean permanent;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ public class PojoGroupMember {
|
|||||||
String alias;
|
String alias;
|
||||||
int type;
|
int type;
|
||||||
String extra;
|
String extra;
|
||||||
|
long createDt;
|
||||||
|
|
||||||
public String getMember_id() {
|
public String getMember_id() {
|
||||||
return member_id;
|
return member_id;
|
||||||
@@ -45,4 +46,12 @@ public class PojoGroupMember {
|
|||||||
public void setExtra(String extra) {
|
public void setExtra(String extra) {
|
||||||
this.extra = extra;
|
this.extra = extra;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public long getCreateDt() {
|
||||||
|
return createDt;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCreateDt(long createDt) {
|
||||||
|
this.createDt = createDt;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user