Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Copyright (c) TySoft Limited 2014 - ALL RIGHTS RESERVED.
- */
- 'use strict';
- var _ = require('underscore');
- /**
- * Config keys.
- */
- var keys = exports.keys = {
- port: 'port',
- server_url: 'server_url',
- session_key: 'session_key',
- session_secret: 'session_secret',
- database_dsn: 'database_dsn',
- redis_dsn: 'redis_dsn',
- encryption_two_way_key: 'encryption_two_way_key',
- github_client_id: 'github_client_id',
- github_client_secret: 'github_client_secret',
- google_client_id: 'google_client_id',
- google_client_secret: 'google_client_secret'
- };
- /**
- * Config values that must be configured when running in production.
- */
- var required = [
- keys.session_secret,
- keys.encryption_two_way_key,
- keys.server_url,
- keys.database_dsn,
- keys.redis_dsn,
- keys.github_client_id,
- keys.github_client_secret,
- keys.google_client_id,
- keys.google_client_secret];
- /**
- * Default configuration values.
- */
- var defaults = {};
- (function () {
- defaults[keys.port] = 4000;
- defaults[keys.server_url] = 'http://localhost:' + defaults[keys.port];
- defaults[keys.session_key] = 'poker';
- defaults[keys.session_secret] = 'CHANGE_ME_FOOL';
- defaults[keys.database_dsn] = 'mongodb://localhost/test';
- defaults[keys.redis_dsn] = 'redis://127.0.0.1:6379/0';
- defaults[keys.encryption_two_way_key] = 'CHANGE_ME_FOOL';
- defaults[keys.github_client_id] = '8c33e3fe8f1633a9a3';
- defaults[keys.github_client_secret] = '281bfe2ssdf1ba5f2b2e1a2afsa1b08d402e8';
- defaults[keys.google_client_id] = '1226332829-h2m4i4zdsssd3uufvfbbk9kccql4r.apps.googleusercontent.com';
- defaults[keys.google_client_secret] = 'PNlfDD@#22FOK-rwO4SjOH';
- }());
- /**
- * Gets the value for a config var.
- * @param key The name of the variable to get the value of.
- */
- var getConfig = exports.getConfig = function (key) {
- var env_var = process.env[key.toUpperCase()];
- if (!_.isUndefined(env_var)) {
- return env_var;
- }
- var default_val = defaults[key];
- if (!_.isUndefined(default_val)) {
- return default_val;
- }
- return null;
- };
- /**
- * Returns true if running in production.
- */
- var inProduction = exports.inProduction = function () {
- return process.env.NODE_ENV === 'production';
- };
- /**
- * Checks the environment config and warns where default values are in use. Will forcefully exit if running in
- * production and encryption keys have not been changed from the default.
- */
- exports.checkConfig = function () {
- _.each(defaults, function (value, key) {
- if (getConfig(key) === value) {
- // Throw if required values haven't been configured in production
- if (required.indexOf(key) !== -1 && inProduction()) {
- throw new Error(key + ' hasn\'t been configured but has been marked as required for production.');
- }
- console.log(key + ' hasn\'t been configured, using default value: ' + value);
- }
- });
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement