From 7f14fb3adc175eebac9795ab71e3ef55564cc425 Mon Sep 17 00:00:00 2001 From: Josh Harvey Date: Thu, 30 Apr 2015 18:13:13 -0400 Subject: [PATCH] reload config on each poll --- lib/app.js | 12 ++++++++++++ lib/plugins.js | 7 ++++--- lib/routes.js | 5 +++-- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/lib/app.js b/lib/app.js index 6d21ec5a..709f78d2 100644 --- a/lib/app.js +++ b/lib/app.js @@ -46,6 +46,17 @@ module.exports = function(options) { app.use(express.bodyParser()); + var reloadConfigMiddleware = function(req, res, next) { + lamassuConfig.load(function(err, config) { + if (err) { + logger.error('Error while reloading config'); + return next(err) + } + plugins.configure(config); + next(); + }); + }; + var authMiddleware; if (options.https) { @@ -91,6 +102,7 @@ module.exports = function(options) { lamassuConfig: lamassuConfig, plugins: plugins, authMiddleware: authMiddleware, + reloadConfigMiddleware: reloadConfigMiddleware, mock: options.mock }); diff --git a/lib/plugins.js b/lib/plugins.js index f0b1870a..0867c43c 100644 --- a/lib/plugins.js +++ b/lib/plugins.js @@ -119,8 +119,9 @@ function loadOrConfigPlugin(pluginHandle, pluginType, currency, if (pluginHandle && !pluginChanged) pluginHandle.config(pluginConfig); else { pluginHandle = loadPlugin(currentName, pluginConfig); + currentlyUsedPlugins[pluginType] = currentName logger.debug('plugin(%s) loaded: %s', pluginType, pluginHandle.NAME || - currentName); + currentName); } } @@ -183,7 +184,7 @@ exports.configure = function configure(config) { 'info' ); }; -exports.getCachedConfig = function getCachedConfig() { +exports.getConfig = function getConfig() { return cachedConfig; }; @@ -210,7 +211,7 @@ function buildCartridges(cartridges, virtualCartridges, rec) { exports.pollQueries = function pollQueries(session, cb) { var cartridges = cachedConfig.exchanges.settings.cartridges; - if (!cartridges) return null; + if (!cartridges) return cb(null, {}); var virtualCartridges = cachedConfig.exchanges.settings.virtualCartridges; db.cartridgeCounts(session, function(err, result) { diff --git a/lib/routes.js b/lib/routes.js index 1c16440d..1647cbd2 100644 --- a/lib/routes.js +++ b/lib/routes.js @@ -51,7 +51,7 @@ function poll(req, res) { return res.json({err: 'No balance available'}); } - var config = plugins.getCachedConfig(); + var config = plugins.getConfig(); var settings = config.exchanges.settings; var complianceSettings = settings.compliance; var fiatCommission = settings.fiatCommission || settings.commission; @@ -183,9 +183,10 @@ function init(localConfig) { mock = localConfig.mock; var authMiddleware = localConfig.authMiddleware; + var reloadConfigMiddleware = localConfig.reloadConfigMiddleware; var app = localConfig.app; - app.get('/poll', authMiddleware, poll); + app.get('/poll', authMiddleware, reloadConfigMiddleware, poll); app.post('/trade', authMiddleware, trade); app.post('/send', authMiddleware, send);