Merge branch 'master' of github.com:NuSkooler/enigma-bbs into 459-activitypub-integration
This commit is contained in:
commit
51308a5ad3
|
@ -18,7 +18,7 @@ Below are just some of the features ENiGMA½ supports out of the box:
|
|||
* [SQLite](http://sqlite.org/) storage of users, message areas, etc.
|
||||
* Strong [PBKDF2](https://en.wikipedia.org/wiki/PBKDF2) backed password encryption.
|
||||
* Support for **2-Factor Authentication** with One-Time-Passwords
|
||||
* [Door support](./docs/_docs/modding/door-servers.md) including common dropfile formats for legacy DOS doors. Built in [BBSLink](http://bbslink.net/), [DoorParty](http://forums.throwbackbbs.com/), [Exodus](https://oddnetwork.org/exodus/) and [CombatNet](http://combatnet.us/) support!
|
||||
* [Door support](./docs/_docs/modding/door-servers.md) including common dropfile formats for legacy DOS doors. Built in [BBSLink](http://bbslink.net/), [DoorParty](http://forums.throwbackbbs.com/), and [Exodus](https://oddnetwork.org/exodus/)!
|
||||
* Structured [Bunyan](https://github.com/trentm/node-bunyan) logging!
|
||||
* [Message networks](./docs/_docs/messageareas/message-networks.md) with FidoNet Type Network (FTN) + BinkleyTerm Style Outbound (BSO) message import/export. Messages Bases can also be exposed via [Gopher](./docs/_docs/servers/contentservers/gopher.md), or [NNTP](./docs/_docs/servers/contentservers/nntp.md)!
|
||||
* [Gazelle](https://github.com/WhatCD/Gazelle) inspired File Bases including fast fully indexed full text search (FTS), #tags, and HTTP(S) temporary download URLs using a built in [web server](./docs/_docs/servers/contentservers/web-server.md). Legacy X/Y/Z modem also supported!
|
||||
|
|
|
@ -7,6 +7,7 @@ This document attempts to track **major** changes and additions in ENiGMA½. For
|
|||
* Some internal routes such as those used for password resets live within `/_enig/`.
|
||||
* Routes for the file base now default to `/_f/` prefixed instead of just `/f/`. If `/f/` is in your `config.hjson` you are encouraged to update it!
|
||||
* Finally, the system will search for `index.html` and `index.htm` in that order, if another suitable route cannot be established.
|
||||
* CombatNet has shut down, so the module (`combatnet.js`) has been removed.
|
||||
|
||||
## 0.0.13-beta
|
||||
* **Note for contributors**: ENiGMA has switched to [Prettier](https://prettier.io) for formatting/style. Please see [CONTRIBUTING](CONTRIBUTING.md) and the Prettier website for more information.
|
||||
|
|
|
@ -1,136 +0,0 @@
|
|||
/* jslint node: true */
|
||||
'use strict';
|
||||
|
||||
// enigma-bbs
|
||||
const { MenuModule } = require('../core/menu_module.js');
|
||||
const { resetScreen } = require('../core/ansi_term.js');
|
||||
const { Errors } = require('./enig_error.js');
|
||||
const { trackDoorRunBegin, trackDoorRunEnd } = require('./door_util.js');
|
||||
|
||||
// deps
|
||||
const async = require('async');
|
||||
const RLogin = require('rlogin');
|
||||
|
||||
exports.moduleInfo = {
|
||||
name: 'CombatNet',
|
||||
desc: 'CombatNet Access Module',
|
||||
author: 'Dave Stephens',
|
||||
};
|
||||
|
||||
exports.getModule = class CombatNetModule extends MenuModule {
|
||||
constructor(options) {
|
||||
super(options);
|
||||
|
||||
// establish defaults
|
||||
this.config = options.menuConfig.config;
|
||||
this.config.host = this.config.host || 'bbs.combatnet.us';
|
||||
this.config.rloginPort = this.config.rloginPort || 4513;
|
||||
}
|
||||
|
||||
initSequence() {
|
||||
const self = this;
|
||||
|
||||
async.series(
|
||||
[
|
||||
function validateConfig(callback) {
|
||||
return self.validateConfigFields(
|
||||
{
|
||||
host: 'string',
|
||||
password: 'string',
|
||||
bbsTag: 'string',
|
||||
rloginPort: 'number',
|
||||
},
|
||||
callback
|
||||
);
|
||||
},
|
||||
function establishRloginConnection(callback) {
|
||||
self.client.term.write(resetScreen());
|
||||
self.client.term.write('Connecting to CombatNet, please wait...\n');
|
||||
|
||||
let doorTracking;
|
||||
|
||||
const restorePipeToNormal = function () {
|
||||
if (self.client.term.output) {
|
||||
self.client.term.output.removeListener(
|
||||
'data',
|
||||
sendToRloginBuffer
|
||||
);
|
||||
|
||||
if (doorTracking) {
|
||||
trackDoorRunEnd(doorTracking);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const rlogin = new RLogin({
|
||||
clientUsername: self.config.password,
|
||||
serverUsername: `${self.config.bbsTag}${self.client.user.username}`,
|
||||
host: self.config.host,
|
||||
port: self.config.rloginPort,
|
||||
terminalType: self.client.term.termClient,
|
||||
terminalSpeed: 57600,
|
||||
});
|
||||
|
||||
// If there was an error ...
|
||||
rlogin.on('error', err => {
|
||||
self.client.log.info(
|
||||
`CombatNet rlogin client error: ${err.message}`
|
||||
);
|
||||
restorePipeToNormal();
|
||||
return callback(err);
|
||||
});
|
||||
|
||||
// If we've been disconnected ...
|
||||
rlogin.on('disconnect', () => {
|
||||
self.client.log.info('Disconnected from CombatNet');
|
||||
restorePipeToNormal();
|
||||
return callback(null);
|
||||
});
|
||||
|
||||
function sendToRloginBuffer(buffer) {
|
||||
rlogin.send(buffer);
|
||||
}
|
||||
|
||||
rlogin.on(
|
||||
'connect',
|
||||
/* The 'connect' event handler will be supplied with one argument,
|
||||
a boolean indicating whether or not the connection was established. */
|
||||
|
||||
function (state) {
|
||||
if (state) {
|
||||
self.client.log.info('Connected to CombatNet');
|
||||
self.client.term.output.on('data', sendToRloginBuffer);
|
||||
|
||||
doorTracking = trackDoorRunBegin(self.client);
|
||||
} else {
|
||||
return callback(
|
||||
Errors.General(
|
||||
'Failed to establish establish CombatNet connection'
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
// If data (a Buffer) has been received from the server ...
|
||||
rlogin.on('data', data => {
|
||||
self.client.term.rawWrite(data);
|
||||
});
|
||||
|
||||
// connect...
|
||||
rlogin.connect();
|
||||
|
||||
// note: no explicit callback() until we're finished!
|
||||
},
|
||||
],
|
||||
err => {
|
||||
if (err) {
|
||||
self.client.log.warn({ error: err.message }, 'CombatNet error');
|
||||
}
|
||||
|
||||
// if the client is still here, go to previous
|
||||
self.prevMenu();
|
||||
}
|
||||
);
|
||||
}
|
||||
};
|
|
@ -115,7 +115,7 @@ exports.getModule = class GoldmineModule extends MenuModule {
|
|||
);
|
||||
}
|
||||
|
||||
this.client.log.info('Connected to CombatNet');
|
||||
this.client.log.info('Connected to gOLD mINE');
|
||||
this.client.term.output.on('data', rloginSend);
|
||||
|
||||
doorTracking = trackDoorRunBegin(this.client);
|
||||
|
|
|
@ -40,22 +40,5 @@ doorParty: {
|
|||
|
||||
Fill in `username`, `password`, and `bbsTag` with credentials provided to you and you should be in business!
|
||||
|
||||
## The CombatNet Module
|
||||
The `combatnet` module provides native support for [CombatNet](http://combatnet.us/). Add the following to your menu config:
|
||||
|
||||
````hjson
|
||||
combatNet: {
|
||||
desc: Using CombatNet
|
||||
module: combatnet
|
||||
config: {
|
||||
bbsTag: CBNxxx
|
||||
password: XXXXXXXXX
|
||||
}
|
||||
}
|
||||
````
|
||||
Update `bbsTag` (in the format CBNxxx) and `password` with the details provided when you register, then
|
||||
you should be ready to rock!
|
||||
|
||||
## The Exodus Module
|
||||
|
||||
TBC
|
|
@ -21,7 +21,7 @@ ENiGMA½ is a modern BBS software with a nostalgic flair!
|
|||
* [SQLite](http://sqlite.org/) storage of users, message areas, etc.
|
||||
* Strong [PBKDF2](https://en.wikipedia.org/wiki/PBKDF2) backed password encryption.
|
||||
* Support for 2-Factor Authentication with One-Time-Passwords
|
||||
* [Door support](_docs/modding/door-servers.md) including common dropfile formats for legacy DOS doors. Built in [BBSLink](http://bbslink.net/), [DoorParty](http://forums.throwbackbbs.com/), [Exodus](https://oddnetwork.org/exodus/) and [CombatNet](http://combatnet.us/) support!
|
||||
* [Door support](_docs/modding/door-servers.md) including common dropfile formats for legacy DOS doors. Built in [BBSLink](http://bbslink.net/), [DoorParty](http://forums.throwbackbbs.com/), and [Exodus](https://oddnetwork.org/exodus/)!
|
||||
* [Bunyan](https://github.com/trentm/node-bunyan) logging!
|
||||
* [Message networks](_docs/messageareas/message-networks.md) with FidoNet Type Network (FTN) + BinkleyTerm Style Outbound (BSO) message import/export. Messages Bases can also be exposed via [Gopher](_docs/servers/contentservers/gopher.md), or [NNTP](_docs/servers/contentservers/nntp.md)!
|
||||
* [Gazelle](https://github.com/WhatCD/Gazelle) inspired File Bases including fast fully indexed full text search (FTS), #tags, and HTTP(S) temporary download URLs using a built in [web server](_docs/servers/contentservers/web-server.md). Legacy X/Y/Z modem also supported!
|
||||
|
|
|
@ -34,10 +34,6 @@
|
|||
value: { command: "DP" }
|
||||
action: @menu:doorPartyExample
|
||||
}
|
||||
{
|
||||
value: { command: "CN" }
|
||||
action: @menu:doorCombatNetExample
|
||||
}
|
||||
{
|
||||
value: { command: "EXODUS" }
|
||||
action: @menu:doorExodusCataclysm
|
||||
|
@ -100,20 +96,6 @@
|
|||
}
|
||||
}
|
||||
|
||||
//
|
||||
// CombatNet Example
|
||||
//
|
||||
// Register @ http://combatnet.us/
|
||||
//
|
||||
doorCombatNetExample: {
|
||||
desc: Using CombatNet
|
||||
module: combatnet
|
||||
config: {
|
||||
bbsTag: CBNxxx
|
||||
password: XXXXXXXXX
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Exodus Example (cataclysm)
|
||||
// Register @ https://oddnetwork.org/exodus/
|
||||
|
|
Loading…
Reference in New Issue