diff --git a/core/door_party.js b/core/door_party.js index 184416f7..aee4438c 100644 --- a/core/door_party.js +++ b/core/door_party.js @@ -67,6 +67,7 @@ exports.getModule = class DoorPartyModule extends MenuModule { if(doorTracking) { trackDoorRunEnd(doorTracking); + doorTracking = null; } } }; @@ -103,6 +104,10 @@ exports.getModule = class DoorPartyModule extends MenuModule { self.client.term.rawWrite(d); }); + stream.on('end', () => { + sshClient.end(); + }); + stream.on('close', () => { restorePipe(); sshClient.end(); diff --git a/core/telnet_bridge.js b/core/telnet_bridge.js index 0c17715f..20397cd3 100644 --- a/core/telnet_bridge.js +++ b/core/telnet_bridge.js @@ -51,14 +51,22 @@ class TelnetClientConnection extends EventEmitter { constructor(client) { super(); - this.client = client; + this.client = client; + + this.dataHits = 0; } + updateActivity() { + if (0 === (this.dataHits++ % 4)) { + this.client.explicitActivityTimeUpdate(); + } + } restorePipe() { if(!this.pipeRestored) { this.pipeRestored = true; - this.client.dataPassthrough = false; + + this.client.restoreDataHandler(); // client may have bailed if(null !== _.get(this, 'client.term.output', null)) { @@ -75,11 +83,15 @@ class TelnetClientConnection extends EventEmitter { this.emit('connected'); this.pipeRestored = false; - this.client.dataPassthrough = true; - this.client.term.output.pipe(this.bridgeConnection); + this.client.setTemporaryDirectDataHandler(data => { + this.updateActivity(); + this.bridgeConnection.write(data); + }); }); this.bridgeConnection.on('data', data => { + this.updateActivity(); + this.client.term.rawWrite(data); // diff --git a/docs/messageareas/configuring-a-message-area.md b/docs/messageareas/configuring-a-message-area.md index 011e9497..444cb091 100644 --- a/docs/messageareas/configuring-a-message-area.md +++ b/docs/messageareas/configuring-a-message-area.md @@ -1,15 +1,17 @@ --- layout: page -title: Configuring a Message Area +title: Message Base --- -## Message Conferences -**Message Conferences** and **Areas** allow for grouping of message base topics. +## General Information +In ENiGMA½, a message base is divided into two logical grouping components: **Message Conferences** and **Areas**. Message conferences are top level containers while areas are for a specific topic. Messages are always stored internally with a area tag. ## Conferences Message Conferences are the top level container for *1:n* Message *Areas* via the `messageConferences` block in `config.hjson`. A common setup may include a local conference and one or more conferences each dedicated to a particular message network such as fsxNet, ArakNet, etc. Each conference is represented by a entry under `messageConferences`. Each entries top level key is it's *conference tag*. +:information_source: It is **highly** recommended to use snake_case style message *conference tags* and *area tags*! + | Config Item | Required | Description | |-------------|----------|-------------| | `name` | :+1: | Friendly conference name |