203 lines
5.5 KiB
JavaScript
203 lines
5.5 KiB
JavaScript
module.exports.methods = {
|
|
|
|
/* Request:
|
|
{
|
|
"action": "PING"
|
|
}
|
|
Reply:
|
|
{
|
|
"action": "PONG",
|
|
}
|
|
*/
|
|
action_PONG(action, payload){
|
|
clearTimeout(this.keepAliveBomb);
|
|
this.keepAliveNextTimeout = setTimeout(this.keepAlive.bind(this),this.config.server.keepAliveInterval*1000);
|
|
},
|
|
|
|
|
|
/* Request:
|
|
{
|
|
"action": "TIME"
|
|
"reqid": "6az5e4r6a"
|
|
}
|
|
Reply:
|
|
{
|
|
"action": "TIME",
|
|
"success": true,
|
|
"payload" : {
|
|
wssGatewayTime: "2022-09-01T14:42:22.603Z",
|
|
redisTime: "2022-09-01T14:42:22.603Z"
|
|
},
|
|
"reqid": "6az5e4r6a"
|
|
}
|
|
*/
|
|
action_TIME(action, payload, reqid){
|
|
var tmstp =new Date().toISOString();
|
|
var reply = {
|
|
'action': action,
|
|
'payload': {
|
|
wssGatewayTime: tmstp,
|
|
redisTime: this.rediscnx.redisClient.time()
|
|
},
|
|
'success': true,
|
|
};
|
|
if(reqid) reply.reqid = reqid;
|
|
this.send(JSON.stringify(reply));
|
|
},
|
|
|
|
|
|
/* Request:
|
|
{
|
|
"action": "RELOADACCESSRIGHTS"
|
|
}
|
|
Reply:
|
|
{
|
|
"success": true,
|
|
"reqid": "6az5e4r6a"
|
|
}
|
|
*/
|
|
action_RELOADACCESSRIGHTS(action, payload, reqid){
|
|
if(!this.accessRights.canDo(this.roles, 'reloadAccessRights')) {
|
|
this.sendErr(action, 'Unauthorized action !', reqid);
|
|
return
|
|
}
|
|
this.wssSrv.reloadAccessRights()
|
|
var reply = {
|
|
'action': action,
|
|
'success': true,
|
|
};
|
|
if(reqid) reply.reqid = reqid;
|
|
this.send(JSON.stringify(reply));
|
|
},
|
|
|
|
/* Request:
|
|
{
|
|
"action": "GETACCESSRIGHTS"
|
|
}
|
|
Reply:
|
|
{
|
|
"success": true,
|
|
"reqid": "6az5e4r6a",
|
|
"payload": { the accessrights }
|
|
}
|
|
|
|
Kept for backward compatibility : GETCONFIG gets everything !
|
|
*/
|
|
action_GETACCESSRIGHTS(action, payload, reqid){
|
|
if(!this.accessRights.canDo(this.roles, 'reloadAccessRights')) {
|
|
this.sendErr(action, 'Unauthorized action !', reqid);
|
|
return
|
|
}
|
|
|
|
var reply = {
|
|
'action': action,
|
|
'success': true,
|
|
'payload': this.wssSrv.wssGatewayConfig.accessRights
|
|
};
|
|
if(reqid) reply.reqid = reqid;
|
|
this.send(JSON.stringify(reply));
|
|
},
|
|
|
|
/* Request:
|
|
{
|
|
"action": "GETCONFIG"
|
|
}
|
|
Reply:
|
|
{
|
|
"success": true,
|
|
"reqid": "6az5e4r6a",
|
|
"payload": { the config }
|
|
}
|
|
*/
|
|
action_GETCONFIG(action, payload, reqid){
|
|
if(!this.accessRights.canDo(this.roles, 'reloadAccessRights')) {
|
|
this.sendErr(action, 'Unauthorized action !', reqid);
|
|
return
|
|
}
|
|
|
|
var reply = {
|
|
'action': action,
|
|
'success': true,
|
|
'payload': this.wssSrv.wssGatewayConfig
|
|
};
|
|
if(reqid) reply.reqid = reqid;
|
|
this.send(JSON.stringify(reply));
|
|
},
|
|
|
|
|
|
/* Request:
|
|
{
|
|
"action": "GETPROCESSINFO"
|
|
}
|
|
Reply:
|
|
{
|
|
"success": true,
|
|
"reqid": "6az5e4r6a",
|
|
"payload": { the result of redis INFO command }
|
|
}
|
|
*/
|
|
action_GETPROCESSINFO(action, payload, reqid){
|
|
if(!this.accessRights.canDo(this.roles, 'getProcessInfo')) {
|
|
this.sendErr(action, 'Unauthorized action !', reqid);
|
|
return
|
|
}
|
|
|
|
var reply = {
|
|
'action': action,
|
|
'success': true,
|
|
'payload': this.rediscnx.getProcessInfo
|
|
};
|
|
if(reqid) reply.reqid = reqid;
|
|
this.send(JSON.stringify(reply));
|
|
},
|
|
|
|
action_REDPILL(action, payload, reqid){
|
|
if(!this.accessRights.canDo(this.roles, 'REDPILL', this.userId)) {
|
|
this.sendErr(action, 'Unauthorized action', reqid);
|
|
return;
|
|
};
|
|
|
|
if(!this.rediscnx.redPillsUuids.includes(this.uuid)) {
|
|
this.rediscnx.redPillsUuids.push(this.uuid)
|
|
setTimeout(() => {
|
|
if(this.rediscnx.redPillsUuids.includes(this.uuid)){ // could have been removed meanwhile & splice(-1) would remove the last !!!
|
|
this.rediscnx.redPillsUuids.splice(this.rediscnx.redPillsUuids.indexOf(this.uuid),1)
|
|
}
|
|
let reply = {
|
|
'action': 'BLUEPILL',
|
|
'payload': {},
|
|
'success': true,
|
|
};
|
|
this.send(JSON.stringify(reply));
|
|
}, 600000) // Back to blupill after 10min
|
|
}
|
|
|
|
let reply = {
|
|
'action': action,
|
|
'payload': {},
|
|
'success': true,
|
|
};
|
|
if(reqid) reply.reqid = reqid;
|
|
this.send(JSON.stringify(reply));
|
|
},
|
|
|
|
action_BLUEPILL(action, payload, reqid){
|
|
if(!this.accessRights.canDo(this.roles, 'BLUEPILL', this.userId)) {
|
|
this.sendErr(action, 'Unauthorized action', reqid);
|
|
return;
|
|
};
|
|
|
|
if(this.rediscnx.redPillsUuids.includes(this.uuid)) {
|
|
this.rediscnx.redPillsUuids.splice(this.rediscnx.redPillsUuids.indexOf(this.uuid),1)
|
|
}
|
|
|
|
let reply = {
|
|
'action': action,
|
|
'payload': {},
|
|
'success': true,
|
|
};
|
|
if(reqid) reply.reqid = reqid;
|
|
this.send(JSON.stringify(reply));
|
|
},
|
|
|
|
} |