Ability to override idle time and/or temporary disable from MRC

This commit is contained in:
Bryan Ashby 2019-06-09 13:41:11 -06:00
parent 487968dac9
commit 5c978e05bf
No known key found for this signature in database
GPG Key ID: B49EB437951D2542
2 changed files with 36 additions and 1 deletions

View File

@ -439,6 +439,11 @@ Client.prototype.setTermType = function(termType) {
};
Client.prototype.startIdleMonitor = function() {
// clear existing, if any
if(this.idleCheck) {
this.stopIdleMonitor();
}
this.lastKeyPressMs = Date.now();
//
@ -474,6 +479,9 @@ Client.prototype.startIdleMonitor = function() {
idleLogoutSeconds = Config().users.preAuthIdleLogoutSeconds;
}
// use override value if set
idleLogoutSeconds = this.idleLogoutSecondsOverride || idleLogoutSeconds;
if(nowMs - this.lastKeyPressMs >= (idleLogoutSeconds * 1000)) {
this.emit('idle timeout');
}
@ -481,7 +489,18 @@ Client.prototype.startIdleMonitor = function() {
};
Client.prototype.stopIdleMonitor = function() {
clearInterval(this.idleCheck);
if(this.idleCheck) {
clearInterval(this.idleCheck);
delete this.idleCheck;
}
};
Client.prototype.overrideIdleLogoutSeconds = function(seconds) {
this.idleLogoutSecondsOverride = seconds;
};
Client.prototype.restoreIdleLogoutSeconds = function() {
delete this.idleLogoutSecondsOverride;
};
Client.prototype.end = function () {

View File

@ -158,6 +158,16 @@ exports.getModule = class mrcModule extends MenuModule {
this.sendHeartbeat();
this.sendServerMessage('STATS');
}, 60000);
// override idle logout seconds if configured
const idleLogoutSeconds = parseInt(this.config.idleLogoutSeconds);
if(0 === idleLogoutSeconds) {
this.log.debug('Temporary disable idle monitor due to config');
this.client.stopIdleMonitor();
} else if (!isNaN(idleLogoutSeconds) && idleLogoutSeconds >= 60) {
this.log.debug( { idleLogoutSeconds }, 'Temporary override idle logout seconds due to config');
this.client.overrideIdleLogoutSeconds(idleLogoutSeconds);
}
});
// when we get data, process it
@ -187,6 +197,12 @@ exports.getModule = class mrcModule extends MenuModule {
leave() {
this.quitServer();
// restore idle monitor to previous state
this.log.debug('Restoring idle monitor to previous state');
this.client.restoreIdleLogoutSeconds();
this.client.startIdleMonitor();
return super.leave();
}