Authored by 毕凯

Merge branch 'feature/cusService-vulnerablity' into 'gray'

Feature/cus service vulnerablity



See merge request !392
@@ -39,10 +39,9 @@ exports.page = (req, res, next) => { @@ -39,10 +39,9 @@ exports.page = (req, res, next) => {
39 pageStyle: 'service-chat', 39 pageStyle: 'service-chat',
40 width750: true, 40 width750: true,
41 localCss: true, 41 localCss: true,
42 - imServer: global.yoho.config.domains.imServer, 42 + imCs: global.yoho.config.domains.imCs,
43 imSocket: global.yoho.config.domains.imSocket, 43 imSocket: global.yoho.config.domains.imSocket,
44 userData: { 44 userData: {
45 - uid: uid,  
46 encrypteduid: crypto.encryption(null, uid + ''), 45 encrypteduid: crypto.encryption(null, uid + ''),
47 avatar: helpers.image(userinfo.head_ico, 100, 100), 46 avatar: helpers.image(userinfo.head_ico, 100, 100),
48 uname: userinfo.profile_name 47 uname: userinfo.profile_name
@@ -80,15 +79,10 @@ exports.getOrders = (req, res, next) => { @@ -80,15 +79,10 @@ exports.getOrders = (req, res, next) => {
80 * 79 *
81 */ 80 */
82 exports.fetchHistory = (req, res) => { 81 exports.fetchHistory = (req, res) => {
83 - let uid = req.user.uid;  
84 -  
85 - if (!uid) {  
86 - uid = req.query.uid;  
87 - } 82 + const encryptedUid = req.body.encryptedUid;
  83 + const endTime = req.body.endTime;
88 84
89 - const endTime = req.query.endTime;  
90 -  
91 - imApi.fetchImHistory(uid, endTime).then(result => { 85 + imApi.fetchImHistory(encryptedUid, endTime).then(result => {
92 res.json(result); 86 res.json(result);
93 }); 87 });
94 }; 88 };
@@ -115,16 +109,11 @@ exports.msghistory = (req, res) => { @@ -115,16 +109,11 @@ exports.msghistory = (req, res) => {
115 * content 留言内容 109 * content 留言内容
116 */ 110 */
117 exports.saveMSG = (req, res) => { 111 exports.saveMSG = (req, res) => {
118 - let uid = req.user.uid;  
119 -  
120 - if (!uid) {  
121 - uid = req.body.uid;  
122 - }  
123 - 112 + let encryptedUid = req.body.encryptedUid;
124 const conversationId = req.body.conversationId; 113 const conversationId = req.body.conversationId;
125 const content = req.body.content; 114 const content = req.body.content;
126 115
127 - imApi.saveMessage(uid, conversationId, content) 116 + imApi.saveMessage(encryptedUid, conversationId, content)
128 .then(result => { 117 .then(result => {
129 res.json(result); 118 res.json(result);
130 }); 119 });
@@ -139,14 +128,9 @@ exports.saveMSG = (req, res) => { @@ -139,14 +128,9 @@ exports.saveMSG = (req, res) => {
139 * 2. 失败情况 128 * 2. 失败情况
140 */ 129 */
141 exports.fetchOrders = (req, res) => { 130 exports.fetchOrders = (req, res) => {
142 - let uid = req.user.uid;  
143 -  
144 - if (!uid) {  
145 - uid = req.query.uid;  
146 - }  
147 - 131 + let encryptedUid = req.body.encryptedUid;
148 132
149 - imApi.fetchOrderList(uid) 133 + imApi.fetchOrderList(encryptedUid)
150 .then(result => { 134 .then(result => {
151 imModel.handleOrderList(result.data, 128, 170); 135 imModel.handleOrderList(result.data, 128, 170);
152 res.json(result); 136 res.json(result);
@@ -159,19 +143,13 @@ exports.fetchOrders = (req, res) => { @@ -159,19 +143,13 @@ exports.fetchOrders = (req, res) => {
159 }; 143 };
160 144
161 exports.saveEvalute = (req, res) => { 145 exports.saveEvalute = (req, res) => {
162 - let uid = req.user.uid;  
163 -  
164 - if (!uid) {  
165 - uid = req.body.uid;  
166 - }  
167 -  
168 - 146 + const encryptedUid = req.body.encryptedUid;
169 const conversationId = req.body.conversationId; 147 const conversationId = req.body.conversationId;
170 const promoter = req.body.promoter; 148 const promoter = req.body.promoter;
171 const stars = req.body.stars; 149 const stars = req.body.stars;
172 const reasonMsg = req.body.reasonMsg || ''; 150 const reasonMsg = req.body.reasonMsg || '';
173 151
174 - imApi.saveEvalute(uid, conversationId, promoter, stars, reasonMsg) 152 + imApi.saveEvalute(encryptedUid, conversationId, promoter, stars, reasonMsg)
175 .then(result => { 153 .then(result => {
176 return res.json(result); 154 return res.json(result);
177 }).catch(() => { 155 }).catch(() => {
@@ -184,12 +162,7 @@ exports.saveEvalute = (req, res) => { @@ -184,12 +162,7 @@ exports.saveEvalute = (req, res) => {
184 162
185 163
186 exports.queryGlobalOrder = (req, res) => { 164 exports.queryGlobalOrder = (req, res) => {
187 - let uid = req.user.uid;  
188 -  
189 - if (!uid) {  
190 - uid = req.query.uid;  
191 - }  
192 - 165 + let encryptedUid = req.body.encryptedUid;
193 166
194 let emptyOrder = { 167 let emptyOrder = {
195 code: 200, 168 code: 200,
@@ -197,7 +170,7 @@ exports.queryGlobalOrder = (req, res) => { @@ -197,7 +170,7 @@ exports.queryGlobalOrder = (req, res) => {
197 message: '获取失败' 170 message: '获取失败'
198 }; 171 };
199 172
200 - imApi.queryGlobalOrder(uid) 173 + imApi.queryGlobalOrder(encryptedUid)
201 .then(result=> { 174 .then(result=> {
202 imModel.handleOrderList(result.data, 128, 170); 175 imModel.handleOrderList(result.data, 128, 170);
203 res.json(result); 176 res.json(result);
@@ -213,13 +186,7 @@ exports.queryGlobalOrder = (req, res) => { @@ -213,13 +186,7 @@ exports.queryGlobalOrder = (req, res) => {
213 * cvId 会话id 186 * cvId 会话id
214 */ 187 */
215 exports.queryReasons = (req, res) => { 188 exports.queryReasons = (req, res) => {
216 - let uid = req.user.uid;  
217 -  
218 - if (!uid) {  
219 - uid = req.body.uid;  
220 - }  
221 -  
222 - const cvId = req.query.conversationId; 189 + const cvId = req.body.conversationId;
223 190
224 imApi.queryReasons(cvId) 191 imApi.queryReasons(cvId)
225 .then(result=> { 192 .then(result=> {
@@ -16,16 +16,15 @@ const encryptedUid = uid => crypto.encryption(null, uid + ''); @@ -16,16 +16,15 @@ const encryptedUid = uid => crypto.encryption(null, uid + '');
16 * 新建留言信息 16 * 新建留言信息
17 * path: {host}/leavemessage/saveLeavemessage 17 * path: {host}/leavemessage/saveLeavemessage
18 * 18 *
19 - * @param {int} uid 用户id 19 + * @param {int} encryptedUid 加密用户id
20 * @param {int} conversationId 会话id 20 * @param {int} conversationId 会话id
21 * @param {str} content 留言内容 21 * @param {str} content 留言内容
22 */ 22 */
23 -exports.saveMessage = (uid, conversationId, content) => { 23 +exports.saveMessage = (encryptedUid, conversationId, content) => {
24 let params = { 24 let params = {
25 - uid,  
26 conversationId, 25 conversationId,
27 content, 26 content,
28 - encryptedUid: encryptedUid(uid) 27 + encryptedUid
29 }; 28 };
30 29
31 30
@@ -36,25 +35,24 @@ exports.saveMessage = (uid, conversationId, content) => { @@ -36,25 +35,24 @@ exports.saveMessage = (uid, conversationId, content) => {
36 35
37 /** 36 /**
38 * 查询用户聊天记录 37 * 查询用户聊天记录
39 - * @param {int} uid 用户uid 38 + * @param {string} encryptedUid 加密用户uid
40 * @param [int] pageSize 每次加载的聊天记录 39 * @param [int] pageSize 每次加载的聊天记录
41 * @param [int] startTime 40 * @param [int] startTime
42 * @param [int] endTime 41 * @param [int] endTime
43 */ 42 */
44 -exports.fetchImHistory = (uid, endTime, pageSize, startTime) => { 43 +exports.fetchImHistory = (encryptedUid, endTime, pageSize, startTime) => {
45 pageSize = pageSize || 10; 44 pageSize = pageSize || 10;
46 45
47 let params = { 46 let params = {
48 - uid,  
49 pageSize, 47 pageSize,
50 - encryptedUid: encryptedUid(uid) 48 + encryptedUid
51 }; 49 };
52 50
53 _.forEach({startTime, endTime}, (val, key) => { 51 _.forEach({startTime, endTime}, (val, key) => {
54 val && (params[key] = val); 52 val && (params[key] = val);
55 }); 53 });
56 54
57 - return ImService.get('/api/conversationMessage/pageList', params) 55 + return ImService.post('/api/conversationMessage/pageList', params)
58 .then(result => { 56 .then(result => {
59 return result; 57 return result;
60 }, () => { 58 }, () => {
@@ -69,13 +67,12 @@ exports.fetchImHistory = (uid, endTime, pageSize, startTime) => { @@ -69,13 +67,12 @@ exports.fetchImHistory = (uid, endTime, pageSize, startTime) => {
69 67
70 /** 68 /**
71 * 获取用户订单, 默认最近10笔 69 * 获取用户订单, 默认最近10笔
72 - * @param {int} uid 用户uid 70 + * @param {string} encryptedUid 用户加密uid
73 * @param {init} createTimeBegin 开始时间 71 * @param {init} createTimeBegin 开始时间
74 */ 72 */
75 -exports.fetchOrderList = (uid, createTimeBegin) => { 73 +exports.fetchOrderList = (encryptedUid, createTimeBegin) => {
76 let params = { 74 let params = {
77 - uid,  
78 - encryptedUid: encryptedUid(uid), 75 + encryptedUid,
79 imgSize: '90x120', 76 imgSize: '90x120',
80 }; 77 };
81 78
@@ -83,7 +80,7 @@ exports.fetchOrderList = (uid, createTimeBegin) => { @@ -83,7 +80,7 @@ exports.fetchOrderList = (uid, createTimeBegin) => {
83 val && (params[key] = val); 80 val && (params[key] = val);
84 }); 81 });
85 82
86 - return ImService.get('/api/order/queryLastTenOrder', params); 83 + return ImService.post('/api/order/queryLastTenOrder', params);
87 }; 84 };
88 85
89 86
@@ -97,7 +94,7 @@ exports.fetchOrderList = (uid, createTimeBegin) => { @@ -97,7 +94,7 @@ exports.fetchOrderList = (uid, createTimeBegin) => {
97 ``` 94 ```
98 ### 请求参数说明 95 ### 请求参数说明
99 | 名称 | 类型 | 是否必须 | 描述 | 96 | 名称 | 类型 | 是否必须 | 描述 |
100 -| -------------- | ------ | ---- | --------------- | 97 +| -------------- | ------ | ---- | --------------- |
101 | conversationId | long | Y | 会话id | 98 | conversationId | long | Y | 会话id |
102 | uid | int | Y | 用户ID | 99 | uid | int | Y | 用户ID |
103 |encryptedUid | String |Y |加密的用户标识 | 100 |encryptedUid | String |Y |加密的用户标识 |
@@ -108,11 +105,10 @@ exports.fetchOrderList = (uid, createTimeBegin) => { @@ -108,11 +105,10 @@ exports.fetchOrderList = (uid, createTimeBegin) => {
108 | reasonMsg | string | N | 其他原因 | 105 | reasonMsg | string | N | 其他原因 |
109 106
110 */ 107 */
111 -exports.saveEvalute = (uid, conversationId, promoter, stars, reasonMsg) => { 108 +exports.saveEvalute = (encryptedUid, conversationId, promoter, stars, reasonMsg) => {
112 let params = { 109 let params = {
113 conversationId, 110 conversationId,
114 - uid,  
115 - encryptedUid: encryptedUid(uid), 111 + encryptedUid,
116 promoter, 112 promoter,
117 stars, 113 stars,
118 reasonMsg 114 reasonMsg
@@ -126,12 +122,12 @@ exports.saveEvalute = (uid, conversationId, promoter, stars, reasonMsg) => { @@ -126,12 +122,12 @@ exports.saveEvalute = (uid, conversationId, promoter, stars, reasonMsg) => {
126 * 获取全球购的订单 122 * 获取全球购的订单
127 */ 123 */
128 124
129 -exports.queryGlobalOrder = uid => { 125 +exports.queryGlobalOrder = encryptedUid => {
130 let params = { 126 let params = {
131 - uId: uid 127 + encryptedUid
132 }; 128 };
133 129
134 - return ImService.get('/api/order/queryGlobalOrder', params); 130 + return ImService.post('/api/order/queryGlobalOrder', params);
135 }; 131 };
136 132
137 /** 133 /**
@@ -143,5 +139,5 @@ exports.queryReasons = cvId => { @@ -143,5 +139,5 @@ exports.queryReasons = cvId => {
143 conversationId: cvId 139 conversationId: cvId
144 }; 140 };
145 141
146 - return ImService.get('/api/evalute/queryReasonByConversationId', params); 142 + return ImService.post('/api/evalute/queryReasonByConversationId', params);
147 }; 143 };
@@ -20,11 +20,11 @@ const disableBFCache = require('../../doraemon/middleware/disable-BFCache'); @@ -20,11 +20,11 @@ const disableBFCache = require('../../doraemon/middleware/disable-BFCache');
20 20
21 // Your controller here 21 // Your controller here
22 router.get('/im', disableBFCache, chat.appAdapter, authGuard, chat.page); 22 router.get('/im', disableBFCache, chat.appAdapter, authGuard, chat.page);
23 -router.get('/im/fetchHistory', chat.fetchHistory); 23 +router.post('/im/fetchHistory', chat.fetchHistory);
24 router.get('/getOrders', chat.getOrders); 24 router.get('/getOrders', chat.getOrders);
25 -router.get('/im/global-list', chat.queryGlobalOrder);  
26 -router.get('/im/order-list', chat.fetchOrders);  
27 -router.get('/im/queryReasons', chat.queryReasons); 25 +router.post('/im/global-list', chat.queryGlobalOrder);
  26 +router.post('/im/order-list', chat.fetchOrders);
  27 +router.post('/im/queryReasons', chat.queryReasons);
28 router.post('/leavemsg/save.json', chat.saveMSG); 28 router.post('/leavemsg/save.json', chat.saveMSG);
29 router.post('/im/saveEvalute', chat.saveEvalute); 29 router.post('/im/saveEvalute', chat.saveEvalute);
30 30
@@ -60,9 +60,8 @@ @@ -60,9 +60,8 @@
60 {{> chat/leave-msg}} 60 {{> chat/leave-msg}}
61 {{> chat/order-list}} 61 {{> chat/order-list}}
62 62
63 -<input type="hidden" id="js-im" name="im-server" value="{{imServer}}"> 63 +<input type="hidden" id="js-im" name="im-server" value="{{imCs}}">
64 {{#with userData}} 64 {{#with userData}}
65 -<input type="hidden" id="js-uid" value="{{uid}}">  
66 <input type="hidden" id="js-eid" value="{{encrypteduid}}"> 65 <input type="hidden" id="js-eid" value="{{encrypteduid}}">
67 <input type="hidden" id="js-avatar" value="{{avatar}}"> 66 <input type="hidden" id="js-avatar" value="{{avatar}}">
68 <input type="hidden" id="js-uname" value="{{uname}}"> 67 <input type="hidden" id="js-uname" value="{{uname}}">
@@ -70,6 +69,6 @@ @@ -70,6 +69,6 @@
70 <script> 69 <script>
71 var gDomains = { 70 var gDomains = {
72 imSocket: "{{imSocket}}", 71 imSocket: "{{imSocket}}",
73 - imServer: "{{imServer}}", 72 + imCs: "{{imCs}}",
74 }; 73 };
75 </script> 74 </script>
@@ -21,8 +21,7 @@ const domains = { @@ -21,8 +21,7 @@ const domains = {
21 // singleApi: 'http://single.yoho.cn/', 21 // singleApi: 'http://single.yoho.cn/',
22 22
23 imSocket: 'ws://socket.yohobuy.com:10240', 23 imSocket: 'ws://socket.yohobuy.com:10240',
24 - imCs: 'https://im.yohobuy.com/api',  
25 - imServer: 'https://im.yohobuy.com/server' 24 + imCs: 'http://im.yohobuy.com/api'
26 }; 25 };
27 26
28 module.exports = { 27 module.exports = {
@@ -120,8 +119,7 @@ if (isProduction) { @@ -120,8 +119,7 @@ if (isProduction) {
120 liveApi: 'http://api.live.yoho.cn/', 119 liveApi: 'http://api.live.yoho.cn/',
121 singleApi: 'http://single.yoho.cn/', 120 singleApi: 'http://single.yoho.cn/',
122 imSocket: 'wss://imsocket.yohobuy.com:443', 121 imSocket: 'wss://imsocket.yohobuy.com:443',
123 - imCs: 'https://imhttp.yohobuy.com/api',  
124 - imServer: 'https://imhttp.yohobuy.com/server' 122 + imCs: 'https://imhttp.yohobuy.com/api'
125 }, 123 },
126 memcache: { 124 memcache: {
127 master: ['memcache1.yohoops.org:12111', 'memcache2.yohoops.org:12111', 'memcache3.yohoops.org:12111'], 125 master: ['memcache1.yohoops.org:12111', 'memcache2.yohoops.org:12111', 'memcache3.yohoops.org:12111'],
@@ -169,8 +167,7 @@ if (isProduction) { @@ -169,8 +167,7 @@ if (isProduction) {
169 liveApi: process.env.TEST_LIVE || 'http://testapi.live.yohops.com:9999/', 167 liveApi: process.env.TEST_LIVE || 'http://testapi.live.yohops.com:9999/',
170 singleApi: process.env.TEST_SINGLE || 'http://api-test1.yohops.com:9999/', 168 singleApi: process.env.TEST_SINGLE || 'http://api-test1.yohops.com:9999/',
171 imSocket: process.env.TEST_IM_SOCKET || 'ws://socket.yohobuy.com:10240', 169 imSocket: process.env.TEST_IM_SOCKET || 'ws://socket.yohobuy.com:10240',
172 - imCs: process.env.TEST_IM_CS || 'http://im.yohobuy.com/api',  
173 - imServer: process.env.TEST_IM_SERVER || 'http://im.yohobuy.com/server' 170 + imCs: process.env.TEST_IM_CS || 'http://im.yohobuy.com/api'
174 }, 171 },
175 memcache: { 172 memcache: {
176 master: ['127.0.0.1:12111'], 173 master: ['127.0.0.1:12111'],
@@ -39,7 +39,6 @@ const msgTypeMap = { @@ -39,7 +39,6 @@ const msgTypeMap = {
39 }; 39 };
40 40
41 let userName = $('#js-uname').val(); 41 let userName = $('#js-uname').val();
42 -let uid = $('#js-uid').val() || 0;  
43 let encryptedUid = cmEntity.encryptedUid = $('#js-eid').val() || 0; 42 let encryptedUid = cmEntity.encryptedUid = $('#js-eid').val() || 0;
44 let userAvatar = cmEntity.userHead = socketConf.defaultUserHead; 43 let userAvatar = cmEntity.userHead = socketConf.defaultUserHead;
45 44
@@ -267,7 +266,6 @@ var chat = { @@ -267,7 +266,6 @@ var chat = {
267 266
268 this.$ratingView.on('click', '.submit', function() { 267 this.$ratingView.on('click', '.submit', function() {
269 self.ratingView.post({ 268 self.ratingView.post({
270 - uid,  
271 encryptedUid, 269 encryptedUid,
272 conversationId: cmEntity.conversationId, 270 conversationId: cmEntity.conversationId,
273 }); 271 });
@@ -616,7 +614,7 @@ var chat = { @@ -616,7 +614,7 @@ var chat = {
616 break; 614 break;
617 case allTypes.IN_QUNEUE: 615 case allTypes.IN_QUNEUE:
618 this._sysInfo(chatMessage.content); 616 this._sysInfo(chatMessage.content);
619 - break; 617 + break;
620 case allTypes.CS_CHANGE_STATE: 618 case allTypes.CS_CHANGE_STATE:
621 if (msgType === 5) { // 重复登陆 619 if (msgType === 5) { // 重复登陆
622 this._sysInfo(chatMessage.content); 620 this._sysInfo(chatMessage.content);
@@ -762,7 +760,7 @@ var chat = { @@ -762,7 +760,7 @@ var chat = {
762 return $.Deferred().resolve(false); // eslint-disable-line 760 return $.Deferred().resolve(false); // eslint-disable-line
763 } 761 }
764 762
765 - return api.msghistory(uid, encryptedUid, msgHistory.endTime) 763 + return api.msghistory(encryptedUid, msgHistory.endTime)
766 .done(function(result) { 764 .done(function(result) {
767 if (!result || result.code !== 200 || !result.data) { 765 if (!result || result.code !== 200 || !result.data) {
768 return false; 766 return false;
@@ -932,7 +930,7 @@ $upload.on('change', function() { @@ -932,7 +930,7 @@ $upload.on('change', function() {
932 $elem.removeClass('send-fail').addClass('send-loading'); 930 $elem.removeClass('send-fail').addClass('send-loading');
933 $.ajax({ 931 $.ajax({
934 type: 'POST', 932 type: 'POST',
935 - url: `${gDomains.imServer}/fileManage/uploadFile`, 933 + url: `${gDomains.imCs}/fileManage/uploadFile`,
936 data: formData, 934 data: formData,
937 processData: false, // 告诉jQuery不要去处理发送的数据 935 processData: false, // 告诉jQuery不要去处理发送的数据
938 contentType: false 936 contentType: false
@@ -5,7 +5,7 @@ const socketConf = require('./socket-config'); @@ -5,7 +5,7 @@ const socketConf = require('./socket-config');
5 const conversation = socketConf.conversationMessage; 5 const conversation = socketConf.conversationMessage;
6 const slice = Array.prototype.slice; 6 const slice = Array.prototype.slice;
7 7
8 -let uid = $('#js-uid').val(); 8 +let encryptedUid = $('#js-eid').val();
9 9
10 // EventEmitter 10 // EventEmitter
11 //-------------------------------------------------------- 11 //--------------------------------------------------------
@@ -55,7 +55,7 @@ let api = { @@ -55,7 +55,7 @@ let api = {
55 return $.post('/service/leavemsg/save.json', { 55 return $.post('/service/leavemsg/save.json', {
56 conversationId: conversation.conversationId, 56 conversationId: conversation.conversationId,
57 content, 57 content,
58 - uid 58 + encryptedUid
59 }); 59 });
60 }, 60 },
61 61
@@ -67,30 +67,29 @@ let api = { @@ -67,30 +67,29 @@ let api = {
67 fetchOrders: function(type) { 67 fetchOrders: function(type) {
68 let url = `/service/im/${type}-list`; 68 let url = `/service/im/${type}-list`;
69 69
70 - return $.get(url, {uid}); 70 + return $.post(url, {encryptedUid});
71 }, 71 },
72 72
73 // 获取10条历史记录 73 // 获取10条历史记录
74 - msghistory: function(uid, encryptedUid, endTime) { 74 + msghistory: function(encryptedUid, endTime) {
75 let url = '/service/im/fetchHistory'; 75 let url = '/service/im/fetchHistory';
76 let data = { 76 let data = {
77 - uid,  
78 encryptedUid 77 encryptedUid
79 }; 78 };
80 79
81 endTime && (data.endTime = endTime); 80 endTime && (data.endTime = endTime);
82 81
83 - return $.get(url, data); 82 + return $.post(url, data);
84 }, 83 },
85 84
86 saveEvalute: function(data) { 85 saveEvalute: function(data) {
87 - data.uid = uid; 86 + data.encryptedUid = encryptedUid;
88 return $.post('/service/im/saveEvalute', data); 87 return $.post('/service/im/saveEvalute', data);
89 }, 88 },
90 89
91 // 获取评价原因 90 // 获取评价原因
92 queryReasons: function(data) { 91 queryReasons: function(data) {
93 - return $.get('/service/im/queryReasons', data); 92 + return $.post('/service/im/queryReasons', data);
94 } 93 }
95 }; 94 };
96 95