@@ -229,27 +229,29 @@ module.exports = function(RED) {
229
229
var callback = function ( client ) {
230
230
//client.setMaxListeners(0);
231
231
clients [ client . id ] = client ;
232
+ //get ip of user connected to the _sessionid, check to see if its proxied first
233
+ var sessionip = client . headers [ 'x-real-ip' ] || client . headers [ 'x-forwarded-for' ] || client . remoteAddress ;
232
234
node . status ( { fill :"green" , shape :"dot" , text :"connected " + Object . keys ( clients ) . length , _sessionid :client . id } ) ;
233
235
client . on ( 'data' , function ( message ) {
234
236
message = JSON . parse ( message ) ;
235
237
if ( message . hasOwnProperty ( "action" ) ) {
236
238
if ( ( node . events === "files" ) && ( message . action === "file" ) ) {
237
239
message . content = Buffer . from ( message . content . split ( 'base64,' ) [ 1 ] , 'base64' ) ;
238
- setImmediate ( function ( ) { node . send ( { payload :message , topic :node . path . substr ( 1 ) , _sessionid :client . id } ) } ) ;
240
+ setImmediate ( function ( ) { node . send ( { payload :message , topic :node . path . substr ( 1 ) , _sessionid :client . id , _sessionip : sessionip } ) } ) ;
239
241
}
240
242
else if ( ( node . events === "connect" ) && ( message . action === "connected" ) ) {
241
- setImmediate ( function ( ) { node . send ( { payload :message , topic :node . path . substr ( 1 ) , _sessionid :client . id } ) } ) ;
243
+ setImmediate ( function ( ) { node . send ( { payload :message , topic :node . path . substr ( 1 ) , _sessionid :client . id , _sessionip : sessionip } ) } ) ;
242
244
}
243
245
else if ( node . events === "all" ) {
244
- setImmediate ( function ( ) { node . send ( { payload :message , topic :node . path . substr ( 1 ) , _sessionid :client . id } ) } ) ;
246
+ setImmediate ( function ( ) { node . send ( { payload :message , topic :node . path . substr ( 1 ) , _sessionid :client . id , _sessionip : sessionip } ) } ) ;
245
247
}
246
248
}
247
249
} ) ;
248
250
client . on ( 'close' , function ( ) {
249
251
delete clients [ client . id ] ;
250
252
node . status ( { fill :"green" , shape :"ring" , text :"connected " + Object . keys ( clients ) . length , _sessionid :client . id } ) ;
251
253
if ( node . events !== "files" ) {
252
- node . send ( { payload :{ action :"disconnect" , clients :Object . keys ( clients ) . length } , topic :node . path . substr ( 1 ) , _sessionid :client . id } ) ;
254
+ node . send ( { payload :{ action :"disconnect" , clients :Object . keys ( clients ) . length } , topic :node . path . substr ( 1 ) , _sessionid :client . id , _sessionip : sessionip } ) ;
253
255
}
254
256
} ) ;
255
257
}
0 commit comments