Merge branch 'staging' into oo
This commit is contained in:
76
server.js
76
server.js
@@ -10,6 +10,7 @@ var NetfluxSrv = require('./node_modules/chainpad-server/NetfluxWebsocketSrv');
|
||||
var Package = require('./package.json');
|
||||
var Path = require("path");
|
||||
var OOServer = require('./ooserver.js');
|
||||
var nThen = require("nthen");
|
||||
|
||||
var config;
|
||||
try {
|
||||
@@ -21,10 +22,25 @@ try {
|
||||
var websocketPort = config.websocketPort || config.httpPort;
|
||||
var useSecureWebsockets = config.useSecureWebsockets || false;
|
||||
|
||||
// This is stuff which will become available to replify
|
||||
const debuggableStore = new WeakMap();
|
||||
const debuggable = function (name, x) {
|
||||
if (name in debuggableStore) {
|
||||
try { throw new Error(); } catch (e) {
|
||||
console.error('cannot add ' + name + ' more than once [' + e.stack + ']');
|
||||
}
|
||||
} else {
|
||||
debuggableStore[name] = x;
|
||||
}
|
||||
return x;
|
||||
};
|
||||
debuggable('global', global);
|
||||
debuggable('config', config);
|
||||
|
||||
// support multiple storage back ends
|
||||
var Storage = require(config.storage||'./storage/file');
|
||||
|
||||
var app = Express();
|
||||
var app = debuggable('app', Express());
|
||||
|
||||
var httpsOpts;
|
||||
|
||||
@@ -102,6 +118,7 @@ Fs.exists(__dirname + "/customize", function (e) {
|
||||
|
||||
var mainPages = config.mainPages || ['index', 'privacy', 'terms', 'about', 'contact'];
|
||||
var mainPagePattern = new RegExp('^\/(' + mainPages.join('|') + ').html$');
|
||||
app.get(mainPagePattern, Express.static(__dirname + '/customize'));
|
||||
app.get(mainPagePattern, Express.static(__dirname + '/customize.dist'));
|
||||
|
||||
app.use("/blob", Express.static(Path.join(__dirname, (config.blobPath || './blob')), {
|
||||
@@ -251,32 +268,39 @@ if (config.httpSafePort) {
|
||||
|
||||
var wsConfig = { server: httpServer };
|
||||
|
||||
var createSocketServer = function (err, rpc) {
|
||||
if(!config.useExternalWebsocket) {
|
||||
if (websocketPort !== config.httpPort) {
|
||||
console.log("setting up a new websocket server");
|
||||
wsConfig = { port: websocketPort};
|
||||
}
|
||||
var wsSrv = new WebSocketServer(wsConfig);
|
||||
Storage.create(config, function (store) {
|
||||
NetfluxSrv.run(store, wsSrv, config, rpc);
|
||||
});
|
||||
}
|
||||
};
|
||||
var rpc;
|
||||
|
||||
var loadRPC = function (cb) {
|
||||
var nt = nThen(function (w) {
|
||||
if (!config.enableTaskScheduling) { return; }
|
||||
var Tasks = require("./storage/tasks");
|
||||
console.log("loading task scheduler");
|
||||
Tasks.create(config, w(function (e, tasks) {
|
||||
config.tasks = tasks;
|
||||
}));
|
||||
}).nThen(function (w) {
|
||||
config.rpc = typeof(config.rpc) === 'undefined'? './rpc.js' : config.rpc;
|
||||
|
||||
if (typeof(config.rpc) === 'string') {
|
||||
// load pin store...
|
||||
var Rpc = require(config.rpc);
|
||||
Rpc.create(config, function (e, rpc) {
|
||||
if (e) { throw e; }
|
||||
cb(void 0, rpc);
|
||||
});
|
||||
} else {
|
||||
cb();
|
||||
if (typeof(config.rpc) !== 'string') { return; }
|
||||
// load pin store...
|
||||
var Rpc = require(config.rpc);
|
||||
Rpc.create(config, debuggable, w(function (e, _rpc) {
|
||||
if (e) {
|
||||
w.abort();
|
||||
throw e;
|
||||
}
|
||||
rpc = _rpc;
|
||||
}));
|
||||
}).nThen(function () {
|
||||
if(config.useExternalWebsocket) { return; }
|
||||
if (websocketPort !== config.httpPort) {
|
||||
console.log("setting up a new websocket server");
|
||||
wsConfig = { port: websocketPort};
|
||||
}
|
||||
};
|
||||
var wsSrv = new WebSocketServer(wsConfig);
|
||||
Storage.create(config, function (store) {
|
||||
NetfluxSrv.run(store, wsSrv, config, rpc);
|
||||
});
|
||||
});
|
||||
|
||||
loadRPC(createSocketServer);
|
||||
if (config.debugReplName) {
|
||||
require('replify')({ name: config.debugReplName, app: debuggableStore });
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user