diff --git a/bin/debugRun.sh b/bin/debugRun.sh index 01197a6b8..b963744d8 100755 --- a/bin/debugRun.sh +++ b/bin/debugRun.sh @@ -23,7 +23,7 @@ node-inspector & echo "If you are new to node-inspector, take a look at this video: http://youtu.be/AOnK3NVnxL8" cd "node" -node --debug server.js +node --debug serve.js #kill node-inspector before ending kill $! diff --git a/bin/run.sh b/bin/run.sh index a5245ff77..878e0a55c 100755 --- a/bin/run.sh +++ b/bin/run.sh @@ -26,4 +26,4 @@ bin/installDeps.sh || exit 1 #Move to the node folder and start echo "start..." cd "node" -node server.js +node serve.js diff --git a/node/serve.js b/node/serve.js new file mode 100644 index 000000000..e0e75c317 --- /dev/null +++ b/node/serve.js @@ -0,0 +1 @@ +require("./server").init(function(){}); diff --git a/node/server.js b/node/server.js index a6a57497a..8b9b3fcc3 100644 --- a/node/server.js +++ b/node/server.js @@ -67,7 +67,15 @@ exports.maxAge = 1000*60*60*6; //set loglevel log4js.setGlobalLogLevel(settings.loglevel); -async.waterfall([ +function init(additionalSetup){ + //additionalSetup is an optional argument that must be a function + //the purpose of additionalSetup is + //to allow whoever initializes the server to add functionality + //before the server begins listening + if("function" != typeof additionalSetup) + //the default value for initialSetup is a no-op + additionalSetup = function additionalSetup(app, db, managers, handlers){}; + async.waterfall([ //initalize the database function (callback) { @@ -401,6 +409,23 @@ async.waterfall([ } }); }); + + //additionalSetup is a hook for modifying the app before it begins listening + //some things such a hook might need are the app itself, the database, and any managers and handlers it might want to use + //rather than passing the managers and handlers one by one, each of those collections is passed as a dictionary + additionalSetup( + app, db, + { + "ro": readOnlyManager, + pad: padManager, + security: securityManager + }, + { + "export": exportHandler, + "import": importHandler, + api: apiHandler + } + ); //let the server listen app.listen(settings.port, settings.ip); @@ -492,3 +517,5 @@ async.waterfall([ callback(null); } ]); +} +this.init = init; diff --git a/start.bat b/start.bat index cf6a60f18..0fe44b3f9 100644 --- a/start.bat +++ b/start.bat @@ -1,2 +1,2 @@ cd node -..\bin\node server.js +..\bin\node serve.js