mirror of
https://github.com/NuSkooler/enigma-bbs.git
synced 2025-07-25 12:08:21 +02:00
* msg_network.js: Management of message network modules (start/stop/etc.)
* Minor updates to ES6 in some areas * Better bbs.js startup seq * Better iterator support for loadModulesForCategory() * Start work on loading message network modules & tieing in record() (WIP) * FTN PacketHeader is now a ES6 class * Various FTN utils, e.g. Via line creation
This commit is contained in:
parent
13d5c4d8f4
commit
74f5342997
10 changed files with 388 additions and 96 deletions
77
core/bbs.js
77
core/bbs.js
|
@ -5,36 +5,37 @@
|
|||
//SegfaultHandler.registerHandler('enigma-bbs-segfault.log');
|
||||
|
||||
// ENiGMA½
|
||||
var conf = require('./config.js');
|
||||
var logger = require('./logger.js');
|
||||
var miscUtil = require('./misc_util.js');
|
||||
var database = require('./database.js');
|
||||
var clientConns = require('./client_connections.js');
|
||||
let conf = require('./config.js');
|
||||
let logger = require('./logger.js');
|
||||
let miscUtil = require('./misc_util.js');
|
||||
let database = require('./database.js');
|
||||
let clientConns = require('./client_connections.js');
|
||||
|
||||
var paths = require('path');
|
||||
var async = require('async');
|
||||
var util = require('util');
|
||||
var _ = require('lodash');
|
||||
var assert = require('assert');
|
||||
var mkdirp = require('mkdirp');
|
||||
let paths = require('path');
|
||||
let async = require('async');
|
||||
let util = require('util');
|
||||
let _ = require('lodash');
|
||||
let assert = require('assert');
|
||||
let mkdirp = require('mkdirp');
|
||||
|
||||
exports.bbsMain = bbsMain;
|
||||
// our main entry point
|
||||
exports.bbsMain = bbsMain;
|
||||
|
||||
function bbsMain() {
|
||||
async.waterfall(
|
||||
[
|
||||
function processArgs(callback) {
|
||||
const args = parseArgs();
|
||||
const args = process.argv.slice(2);
|
||||
|
||||
var configPath;
|
||||
|
||||
if(args.indexOf('--help') > 0) {
|
||||
// :TODO: display help
|
||||
} else {
|
||||
var argCount = args.length;
|
||||
for(var i = 0; i < argCount; ++i) {
|
||||
var arg = args[i];
|
||||
if('--config' == arg) {
|
||||
let argCount = args.length;
|
||||
for(let i = 0; i < argCount; ++i) {
|
||||
const arg = args[i];
|
||||
if('--config' === arg) {
|
||||
configPath = args[i + 1];
|
||||
}
|
||||
}
|
||||
|
@ -70,25 +71,19 @@ function bbsMain() {
|
|||
}
|
||||
callback(err);
|
||||
});
|
||||
},
|
||||
function listenConnections(callback) {
|
||||
startListening(callback);
|
||||
}
|
||||
],
|
||||
function complete(err) {
|
||||
if(!err) {
|
||||
startListening();
|
||||
if(err) {
|
||||
logger.log.error(err);
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
function parseArgs() {
|
||||
var args = [];
|
||||
process.argv.slice(2).forEach(function(val, index, array) {
|
||||
args.push(val);
|
||||
});
|
||||
|
||||
return args;
|
||||
}
|
||||
|
||||
function initialize(cb) {
|
||||
async.series(
|
||||
[
|
||||
|
@ -171,6 +166,9 @@ function initialize(cb) {
|
|||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
function readyMessageNetworkSupport(callback) {
|
||||
require('./msg_network.js').startup(callback);
|
||||
}
|
||||
],
|
||||
function onComplete(err) {
|
||||
|
@ -179,29 +177,30 @@ function initialize(cb) {
|
|||
);
|
||||
}
|
||||
|
||||
function startListening() {
|
||||
function startListening(cb) {
|
||||
if(!conf.config.servers) {
|
||||
// :TODO: Log error ... output to stderr as well. We can do it all with the logger
|
||||
logger.log.error('No servers configured');
|
||||
return [];
|
||||
//logger.log.error('No servers configured');
|
||||
cb(new Error('No servers configured'));
|
||||
return;
|
||||
}
|
||||
|
||||
var moduleUtil = require('./module_util.js'); // late load so we get Config
|
||||
let moduleUtil = require('./module_util.js'); // late load so we get Config
|
||||
|
||||
moduleUtil.loadModulesForCategory('servers', function onServerModule(err, module) {
|
||||
moduleUtil.loadModulesForCategory('servers', (err, module) => {
|
||||
if(err) {
|
||||
logger.log.info(err);
|
||||
return;
|
||||
}
|
||||
|
||||
var port = parseInt(module.runtime.config.port);
|
||||
const port = parseInt(module.runtime.config.port);
|
||||
if(isNaN(port)) {
|
||||
logger.log.error( { port : module.runtime.config.port, server : module.moduleInfo.name }, 'Cannot load server (Invalid port)');
|
||||
return;
|
||||
}
|
||||
|
||||
var moduleInst = new module.getModule();
|
||||
var server = moduleInst.createServer();
|
||||
const moduleInst = new module.getModule();
|
||||
const server = moduleInst.createServer();
|
||||
|
||||
// :TODO: handle maxConnections, e.g. conf.maxConnections
|
||||
|
||||
|
@ -262,7 +261,11 @@ function startListening() {
|
|||
});
|
||||
|
||||
server.listen(port);
|
||||
logger.log.info({ server : module.moduleInfo.name, port : port }, 'Listening for connections');
|
||||
|
||||
logger.log.info(
|
||||
{ server : module.moduleInfo.name, port : port }, 'Listening for connections');
|
||||
}, err => {
|
||||
cb(err);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue