Skip to content

Commit 1af46ff

Browse files
committed
JSON validation logic for DT which used in establishing connection
1 parent cbd1371 commit 1af46ff

2 files changed

Lines changed: 58 additions & 3 deletions

File tree

lib/server/channel-server.js

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -968,9 +968,6 @@ ChannelServer.prototype.startup = function() {
968968
}
969969

970970
if (_mode == 'CHANNEL_ONLY') { // without session socket Server.
971-
console.log(ChannelServer.proc);
972-
console.log(this.proc);
973-
console.log(self.proc);
974971
var _us = self.channels[_app + '^' + _channel];
975972

976973
if (!_us) {
@@ -1167,6 +1164,14 @@ ChannelServer.prototype.startup = function() {
11671164

11681165
socket.join(_room);
11691166

1167+
// DT
1168+
var err = serverUtils.validJsonParams(socket.handshake.query, ['DT']);
1169+
if (err) {
1170+
socket.emit( "connect_error", err );
1171+
socket.disconnect();
1172+
return;
1173+
}
1174+
11701175
socket._userId = socket.handshake.query.U;
11711176
socket._deviceId = socket.handshake.query.D;
11721177

lib/server/utils.js

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,56 @@ exports.validSocketParams = function(params, paramArray) {
4848
return false;
4949
};
5050

51+
exports.validJsonParams = function(params, paramArray) {
52+
for (var i in paramArray) {
53+
var param = params[paramArray[i]];
54+
55+
if ( param && typeof param == 'object') {
56+
return false;
57+
} else if ( param && typeof param == 'string' ){
58+
59+
var json = parseJson( param );
60+
61+
if( !json ) {
62+
return {
63+
status: 'error',
64+
message: '[' + paramArray[i] + '] must be JSON format'
65+
};
66+
}
67+
68+
return false;
69+
} else if( param ) {
70+
return {
71+
status: 'error',
72+
message: '[' + paramArray[i] + '] must be JSON format'
73+
};
74+
}
75+
}
76+
77+
return false;
78+
};
79+
80+
var parseJson = function( instance ){
81+
var json;
82+
try{
83+
84+
json = JSON.parse( instance );
85+
86+
if( typeof json == 'string' ){
87+
json = parseJson( json );
88+
}
89+
90+
} catch(err){
91+
json = null;
92+
}
93+
94+
return json;
95+
};
96+
97+
exports.parseJson = function( instance ){
98+
return parseJson( instance );
99+
};
100+
51101
exports.regExpEscape = function(s) {
52102
return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
53103
};

0 commit comments

Comments
 (0)