diff --git a/.gitignore b/.gitignore index 1117f82..5adfbb2 100644 --- a/.gitignore +++ b/.gitignore @@ -18,4 +18,5 @@ node_modules *.local -config.* +config.env +config.json diff --git a/app/index.js b/app/index.js index 452a63e..877ad6a 100644 --- a/app/index.js +++ b/app/index.js @@ -6,6 +6,7 @@ if ( process.env.NEW_RELIC_ENABLED ) { require( "newrelic" ); } +const config = require('./lib/config'); const restify = require('restify'); const applyRoutes = require('./routes'); const logger = require('./lib/logger') @@ -32,7 +33,7 @@ applyRoutes(server); module.exports = server; if (!module.parent) { - server.listen(process.env.PORT || 8080, function () { + server.listen( config( 'PORT', 8080), function () { console.log('%s listening at %s', server.name, server.url); }); } diff --git a/app/lib/config.js b/app/lib/config.js new file mode 100644 index 0000000..abeb71b --- /dev/null +++ b/app/lib/config.js @@ -0,0 +1,8 @@ +const path = require('path'); +const config = require('config-store'); + +try { + exports = module.exports = config(path.join(__dirname, '../../config.json')); +} catch (e) { + exports = module.exports = config(); +} diff --git a/app/lib/db.js b/app/lib/db.js index fe456de..7e77cd9 100644 --- a/app/lib/db.js +++ b/app/lib/db.js @@ -1,12 +1,13 @@ var streamsql = require('streamsql'); var mysql = require('mysql'); +const config = require('./config'); var options = { driver: 'mysql', - host: process.env.DB_HOST, - user: process.env.DB_USER, - password: process.env.DB_PASSWORD, - database: process.env.DB_NAME, + host: config( 'DB_HOST'), + user: config( 'DB_USER'), + password: config( 'DB_PASSWORD'), + database: config( 'DB_NAME'), } var db = streamsql.connect(options); diff --git a/app/lib/middleware.js b/app/lib/middleware.js index 1810526..d9372e2 100644 --- a/app/lib/middleware.js +++ b/app/lib/middleware.js @@ -23,6 +23,8 @@ const restify = require('restify') const url = require('url') const log = require('../lib/logger') const hash = require('../lib/hash').hash +const config = require('../lib/config'); + const models = { system: require('../models/system'), issuer: require('../models/issuer'), @@ -128,7 +130,7 @@ function attachPageData() { } function verifyRequest() { - if (process.env.NODE_ENV == 'test') { + if ( process.env.NODE_ENV == 'test') { log.warn('In test environment, bypassing request verification') return function (req, res, next) { return next() @@ -198,7 +200,7 @@ function verifyRequest() { return next(new http403('Missing JWT claim: key')) if (auth.key === 'master') { - const masterSecret = process.env.MASTER_SECRET + const masterSecret = config( 'MASTER_SECRET') if (!jws.verify(token, masterSecret)) return next(new http403('Invalid token signature')) return success() diff --git a/package.json b/package.json index 476b4f5..39423a9 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,8 @@ "async": "~0.2.10", "db-migrate": "~0.6.3", "optimist": "~0.6.1", - "lodash": "~2.4.1" + "lodash": "~2.4.1", + "config-store": "~0.2.0" }, "devDependencies": { "concat-stream": "~1.4.1",