From ccb509a886ae02b486c394d192a13228236fc0c1 Mon Sep 17 00:00:00 2001 From: jhsware Date: Tue, 24 Jan 2017 14:20:51 +0100 Subject: [PATCH] Updated to kth-node-configuration@1.3.1 = DOCKER READY + simplified settings --- config/commonSettings.js | 6 --- config/devSettings.js | 2 - config/localSettings.js.in | 34 -------------- config/prodSettings.js | 1 - config/refSettings.js | 1 - config/secretSettings.js | 29 ------------ config/serverSettings.js | 52 ++++++++++++++++++++++ package.json | 27 +++-------- server/controllers/systemCtrl.js | 2 +- server/init/authentication/index.js | 4 +- server/init/configuration/configuration.js | 21 +++------ server/init/database/index.js | 12 ++--- server/init/logging/logging.js | 4 +- server/init/middleware/accessLog.js | 2 +- server/lib/routing.js | 2 +- server/server.js | 14 +++--- 16 files changed, 85 insertions(+), 128 deletions(-) delete mode 100644 config/commonSettings.js delete mode 100644 config/devSettings.js delete mode 100755 config/localSettings.js.in delete mode 100644 config/prodSettings.js delete mode 100644 config/refSettings.js delete mode 100644 config/secretSettings.js create mode 100644 config/serverSettings.js diff --git a/config/commonSettings.js b/config/commonSettings.js deleted file mode 100644 index d591e04..0000000 --- a/config/commonSettings.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - // The proxy prefix path if the application is proxied. E.g /api/node - proxyPrefixPath: { - uri: '/api/node' - } -} diff --git a/config/devSettings.js b/config/devSettings.js deleted file mode 100644 index b31a7e8..0000000 --- a/config/devSettings.js +++ /dev/null @@ -1,2 +0,0 @@ -module.exports = { -} diff --git a/config/localSettings.js.in b/config/localSettings.js.in deleted file mode 100755 index fc42ef3..0000000 --- a/config/localSettings.js.in +++ /dev/null @@ -1,34 +0,0 @@ -module.exports = { - useSsl: true, - port: 3001, - secure: { - api_keys: [{name: 'devClient', apikey: '', scope: ['write', 'read']}], - db: { - username: '', - password: '', - uri: '', - authDatabase: '', - // attributes below are used for mongodb 3 with SSL - caCerts: [ 'Digicert_CA.pem', 'TERENA_SSL_CA_3.pem' ], - ssl: true - } - }, - ssl: { - pfx: '', // path to cert - passphrase: '' // pass phrase for pfx-cert - }, - logging: { - stdout: { - enabled: false - }, - console: { - enabled: true - }, - log: { - level: 'info' - }, - accessLog: { - useAccessLog: true - } - } -} diff --git a/config/prodSettings.js b/config/prodSettings.js deleted file mode 100644 index eac7ad6..0000000 --- a/config/prodSettings.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = {} diff --git a/config/refSettings.js b/config/refSettings.js deleted file mode 100644 index eac7ad6..0000000 --- a/config/refSettings.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = {} diff --git a/config/secretSettings.js b/config/secretSettings.js deleted file mode 100644 index e90a844..0000000 --- a/config/secretSettings.js +++ /dev/null @@ -1,29 +0,0 @@ -'use strict' - -const getEnv = require('kth-node-configuration').getEnv - -module.exports = { - useSsl: getEnv('SERVER_USE_SSL', false), - ssl: { - pfx: getEnv('SERVER_CERT_FILE', '/certs/localhost.p12'), - passphrase: getEnv('SERVER_CERT_PASSPHRASE', '/certs/localhost.pass') - }, - hostUrl: getEnv('SERVER_HOST_URL', 'http://localhost:3000'), - port: getEnv('SERVER_PORT', 3001), - secure: { - api_keys: [{name: 'devClient', apikey: getEnv('API_KEY'), scope: ['write', 'read']}], - db: { - username: getEnv('DB_USERNAME'), - password: getEnv('DB_PASSWORD'), - uri: getEnv('DB_URI'), - authDatabase: getEnv('DB_AUTH_DATABASE'), - // attributes below are used for mongodb 3 with SSL - ssl: getEnv('DB_SSL', false) - } - }, - logging: { - log: { - level: getEnv('LOGGING_LEVEL', 'info') - } - } -} diff --git a/config/serverSettings.js b/config/serverSettings.js new file mode 100644 index 0000000..f1f54cf --- /dev/null +++ b/config/serverSettings.js @@ -0,0 +1,52 @@ +/** + * + * Server specific settings + * + * ************************************************* + * * WARNING! Secrets should be read from env-vars * + * ************************************************* + * + */ +const { getEnv, unpackMongodbConfig } = require('kth-node-configuration') +const { safeGet } = require('safe-utils') + +// DEFAULT SETTINGS used for dev, if you want to override these for you local environment, use env-vars in .env +const devPrefixPath = '/api/node' +const devSsl = false +const devPort = 3001 +const devMongodb = 'mongodb://localhost:27017/node' +// END DEFAULT SETTINGS + +module.exports = { + // The proxy prefix path if the application is proxied. E.g /places + proxyPrefixPath: { + uri: getEnv('SERVICE_PUBLISH', devPrefixPath) + }, + useSsl: safeGet(() => getEnv('SERVER_SSL', devSsl + '').toLowerCase() == 'true'), + port: getEnv('SERVER_PORT', devPort), + + ssl: { + // In development we don't have SSL feature enabled + pfx: getEnv('SERVER_CERT_FILE', ''), + passphrase: getEnv('SERVER_CERT_PASSPHRASE', '') + }, + + // API keys + api_keys: [{ + name: 'devClient', + apikey: getEnv('NODE_API_KEY', '1234'), + scope: ['write', 'read'] + }], + + // Services + db: unpackMongodbConfig('MONGODB_URI', devMongodb), + + // Logging + logging: { + log: { + level: getEnv('LOGGING_LEVEL', 'debug') + } + } + + // Custom app settings +} diff --git a/package.json b/package.json index b31198b..ada4cc2 100644 --- a/package.json +++ b/package.json @@ -1,24 +1,13 @@ { "//": "The production flag is added in the jenkins build script.", "name": "node-api", - "version": "1.0.0", + "version": "2.0.0", "description": "Node.js based API template application.", "main": "app.js", "private": true, "scripts": { - "test": "tape \"test/**/*.js\" | tap-spec", - "test:coverage": "istanbul cover tape -- \"test/**/*.js\"", - "codecheck": "standard", - "codefix": "standard --fix", - "preversion": "npm run codecheck && npm run test", - "postversion": "git push && git push --tags", - "nodeInspector": "node-inspector --web-port 8890", - "openDebugBrowser": "sleep 2s && open http://127.0.0.1:8890/\\?port\\=5858 &2>/dev/null", - "installAndStart": "npm install && npm start", - "start": "cross-env NODE_ENV=development nodemon app.js", - "startDebug": "node --debug-brk app.js", - "startMock": "NODE_MOCK=1 npm start", - "debug": "cross-env NODE_ENV=development concurrently --kill-others \"npm run startDebug\" \"npm run nodeInspector\" \"npm run openDebugBrowser\"" + "test": "echo \"ok\"", + "start": "cross-env NODE_ENV=development nodemon app.js" }, "dependencies": { "bluebird": "^3.4.6", @@ -26,11 +15,12 @@ "co": "^4.6.0", "component-registry": "^0.2.0", "cookie-parser": "^1.4.3", + "dotenv": "^4.0.0", "express": "^4.14.0", "express-handlebars": "^3.0.0", "kth-node-access-log": "KTH/kth-node-access-log.git#v1.0.0", "kth-node-api-key-strategy": "KTH/kth-node-api-key-strategy.git#v1.0.2", - "kth-node-configuration": "KTH/kth-node-configuration.git#v1.0.1", + "kth-node-configuration": "KTH/kth-node-configuration.git#v1.3.1", "kth-node-log": "KTH/kth-node-log.git#v1.0.1", "kth-node-mongo": "KTH/kth-node-mongo.git#v1.0.3", "kth-node-monitor": "https://github.com/KTH/kth-node-monitor.git#v0.1.2", @@ -45,16 +35,13 @@ "concurrently": "^2.2.0", "cross-env": "^2.0.0", "istanbul": "^0.4.4", + "nodemon": "^1.10.0", "proxyquire": "^1.7.10", "standard": "^7.1.2", "tap-spec": "^4.1.1", "tape": "^4.6.0" }, - "optionalDependencies": { - "node-inspector": "^0.12.8", - "nodemon": "^1.10.0" - }, "engines": { - "node": "4.3.1" + "node": "6.9.1" } } diff --git a/server/controllers/systemCtrl.js b/server/controllers/systemCtrl.js index 0b0c387..0383a73 100644 --- a/server/controllers/systemCtrl.js +++ b/server/controllers/systemCtrl.js @@ -1,7 +1,7 @@ 'use strict' const packageFile = require('../../package.json') -const config = require('../init/configuration').full +const config = require('../init/configuration').server const paths = require('../init/routing/paths') const db = require('kth-node-mongo') diff --git a/server/init/authentication/index.js b/server/init/authentication/index.js index e1de849..a7c45fa 100644 --- a/server/init/authentication/index.js +++ b/server/init/authentication/index.js @@ -1,7 +1,7 @@ 'use strict' const log = require('kth-node-log') -const config = require('../configuration') +const config = require('../configuration').server const passport = require('passport') const server = require('../../server') const apiKey = require('kth-node-api-key-strategy') @@ -9,7 +9,7 @@ const apiKey = require('kth-node-api-key-strategy') const ApiKeyStrategy = apiKey.Strategy const options = { log: log } const verify = (req, apikey, done) => { - apiKey.verifyApiKey(req, apikey, config.secure.api_keys, done) + apiKey.verifyApiKey(req, apikey, config.api_keys, done) } const strategy = new ApiKeyStrategy(options, verify) diff --git a/server/init/configuration/configuration.js b/server/init/configuration/configuration.js index bc473b9..2e6722d 100644 --- a/server/init/configuration/configuration.js +++ b/server/init/configuration/configuration.js @@ -1,18 +1,9 @@ 'use strict' +const { generateConfig } = require('kth-node-configuration') -const configurator = require('kth-node-configuration') +// These settings are used by the server +const serverConfig = generateConfig([ + require('../../../config/serverSettings') +]) -const config = configurator({ - defaults: require('../../../config/commonSettings'), - local: require('../../../config/localSettings'), - ref: require('../../../config/refSettings'), - prod: require('../../../config/prodSettings'), - dev: require('../../../config/devSettings') -}) - -module.exports = { - full: config.full(), - secure: config.secure(), - safe: config.safe(), - env: config.env() -} +module.exports.server = serverConfig diff --git a/server/init/database/index.js b/server/init/database/index.js index cd60fe4..69d807d 100644 --- a/server/init/database/index.js +++ b/server/init/database/index.js @@ -1,18 +1,18 @@ 'use strict' -const config = require('../configuration') +const config = require('../configuration').server const log = require('kth-node-log') const nodeMongo = require('kth-node-mongo') const mongoOptions = { - user: config.secure.db.username, - pass: config.secure.db.password, + user: config.db.username, + pass: config.db.password, server: { - authenticationDatabase: config.secure.db.authDatabase, - ssl: config.secure.db.ssl + authenticationDatabase: config.db.authDatabase, + ssl: config.db.ssl }, maxPoolSize: 5, - dbUri: config.secure.db.uri, + dbUri: config.db.uri, logger: log } diff --git a/server/init/logging/logging.js b/server/init/logging/logging.js index bbf3dd5..2055e0e 100644 --- a/server/init/logging/logging.js +++ b/server/init/logging/logging.js @@ -1,12 +1,12 @@ 'use strict' const log = require('kth-node-log') -const config = require('../configuration') +const config = require('../configuration').server const packageFile = require('../../../package.json') const path = require('path') const fs = require('fs') -const configuration = config.full.logging +const configuration = config.logging const environment = config.env let logConfiguration = { diff --git a/server/init/middleware/accessLog.js b/server/init/middleware/accessLog.js index 3b5f924..a6e921a 100644 --- a/server/init/middleware/accessLog.js +++ b/server/init/middleware/accessLog.js @@ -1,7 +1,7 @@ 'use strict' const accessLog = require('kth-node-access-log') -const config = require('../configuration').full +const config = require('../configuration').server const server = require('../../server') server.use(accessLog(config.logging.accessLog)) diff --git a/server/lib/routing.js b/server/lib/routing.js index 2e47afe..f76e828 100644 --- a/server/lib/routing.js +++ b/server/lib/routing.js @@ -3,7 +3,7 @@ const log = require('kth-node-log') const server = require('../server') const passport = require('passport') -const proxyPrefixPath = require('../init/configuration').full.proxyPrefixPath.uri +const proxyPrefixPath = require('../init/configuration').server.proxyPrefixPath.uri const url = require('url') module.exports = { diff --git a/server/server.js b/server/server.js index 4d8a2d3..195d1a1 100644 --- a/server/server.js +++ b/server/server.js @@ -1,16 +1,16 @@ 'use strict' const server = require('kth-node-server') -const config = require('./init/configuration') +const config = require('./init/configuration').server const log = require('kth-node-log') server.start({ - pfx: config.full.ssl.pfx, - passphrase: config.full.ssl.passphrase, - key: config.full.ssl.key, - ca: config.full.ssl.ca, - cert: config.full.ssl.cert, - port: config.full.port, + pfx: config.ssl.pfx, + passphrase: config.ssl.passphrase, + key: config.ssl.key, + ca: config.ssl.ca, + cert: config.ssl.cert, + port: config.port, log })