From f42e22b58f54c02a3db1f5116a02762b9a19f999 Mon Sep 17 00:00:00 2001 From: Sabe Jones Date: Thu, 6 Dec 2018 10:13:49 -0600 Subject: [PATCH] Make env vars more palatable for containerization (#10895) * refactor(env-vars): remove object/colon syntax * fix(tests): correct config expectations --- config.json.example | 193 +++++++----------- scripts/paypalBillingSetup.js | 24 +-- .../libs/payments/paypal/checkout.test.js | 1 + test/api/unit/libs/slack.js | 2 +- ...POST-groups_id_chat_id_clear_flags.test.js | 2 +- .../groups/POST-groups_invite.test.js | 2 +- .../user/auth/POST-login-local.test.js | 2 +- .../user/auth/PUT-user_update_email.test.js | 2 +- webpack/config/prod.env.js | 16 +- website/server/controllers/api-v3/auth.js | 2 +- website/server/controllers/api-v3/groups.js | 2 +- website/server/controllers/api-v3/user.js | 2 +- .../controllers/top-level/dataexport.js | 2 +- website/server/libs/auth/utils.js | 2 +- website/server/libs/aws.js | 4 +- .../libs/chatReporting/groupChatReporter.js | 2 +- website/server/libs/email.js | 6 +- website/server/libs/inAppPurchases.js | 8 +- website/server/libs/logger.js | 4 +- website/server/libs/payments/amazon.js | 10 +- website/server/libs/payments/groupPayments.js | 2 +- website/server/libs/payments/paypal.js | 10 +- website/server/libs/pushNotifications.js | 10 +- website/server/libs/slack.js | 6 +- website/server/middlewares/auth.js | 2 +- 25 files changed, 140 insertions(+), 178 deletions(-) diff --git a/config.json.example b/config.json.example index a7ba44372c..94c5c7b043 100644 --- a/config.json.example +++ b/config.json.example @@ -1,116 +1,81 @@ { - "PORT":3000, - "ENABLE_CONSOLE_LOGS_IN_PROD":"false", - "IP":"0.0.0.0", - "WEB_CONCURRENCY":1, - "BASE_URL":"http://localhost:3000", - "FACEBOOK_KEY":"123456789012345", - "FACEBOOK_SECRET":"aaaabbbbccccddddeeeeffff00001111", - "GOOGLE_CLIENT_ID":"123456789012345", - "GOOGLE_CLIENT_SECRET":"aaaabbbbccccddddeeeeffff00001111", - "PLAY_API": { - "CLIENT_ID": "aaaabbbbccccddddeeeeffff00001111", - "CLIENT_SECRET": "aaaabbbbccccddddeeeeffff00001111", - "ACCESS_TOKEN":"aaaabbbbccccddddeeeeffff00001111", - "REFRESH_TOKEN":"aaaabbbbccccddddeeeeffff00001111" - }, - "NODE_DB_URI":"mongodb://localhost/habitrpg", - "TEST_DB_URI":"mongodb://localhost/habitrpg_test", - "NODE_ENV":"development", - "ENABLE_CONSOLE_LOGS_IN_TEST": "false", - "CRON_SAFE_MODE":"false", - "CRON_SEMI_SAFE_MODE":"false", - "MAINTENANCE_MODE": "false", - "SESSION_SECRET":"YOUR SECRET HERE", - "SESSION_SECRET_KEY": "1234567891234567891234567891234567891234567891234567891234567891", - "SESSION_SECRET_IV": "12345678912345678912345678912345", - "ADMIN_EMAIL": "you@example.com", - "SMTP_USER":"user@example.com", - "SMTP_PASS":"password", - "SMTP_SERVICE":"Gmail", - "SMTP_HOST":"example.com", - "SMTP_PORT": 587, - "SMTP_TLS": true, - "STRIPE_API_KEY":"aaaabbbbccccddddeeeeffff00001111", - "STRIPE_PUB_KEY":"22223333444455556666777788889999", - "NEW_RELIC_LICENSE_KEY":"NEW_RELIC_LICENSE_KEY", - "NEW_RELIC_NO_CONFIG_FILE":"true", - "NEW_RELIC_APPLICATION_ID":"NEW_RELIC_APPLICATION_ID", - "NEW_RELIC_API_KEY":"NEW_RELIC_API_KEY", - "GA_ID": "GA_ID", - "AMPLITUDE_KEY": "AMPLITUDE_KEY", - "AMPLITUDE_SECRET": "AMPLITUDE_SECRET", - "AMAZON_PAYMENTS": { - "SELLER_ID": "SELLER_ID", - "CLIENT_ID": "CLIENT_ID", - "MWS_KEY": "", - "MWS_SECRET": "", - "MODE": "sandbox" - }, - "FLAG_REPORT_EMAIL": "email@mod.com,email2@mod.com", - "EMAIL_SERVER": { - "url": "http://example.com", - "authUser": "user", - "authPassword": "password" - }, - "S3":{ - "bucket":"bucket", - "accessKeyId":"accessKeyId", - "secretAccessKey":"secretAccessKey" - }, - "SLACK_URL": "https://hooks.slack.com/services/some-url", - "TRANSIFEX_SLACK_CHANNEL": "transifex", - "PAYPAL":{ - "billing_plans": { - "basic_earned":"basic_earned", - "basic_3mo":"basic_3mo", - "basic_6mo":"basic_6mo", - "google_6mo":"google_6mo", - "basic_12mo":"basic_12mo" - }, - "mode":"sandbox", - "client_id":"client_id", - "client_secret":"client_secret", - "experience_profile_id": "" - }, - "IAP_GOOGLE_KEYDIR": "/path/to/google/public/key/dir/", - "LOGGLY_TOKEN": "token", - "LOGGLY_CLIENT_TOKEN": "token", - "LOGGLY_ACCOUNT": "account", - "PUSH_CONFIGS": { - "GCM_SERVER_API_KEY": "", - "APN_ENABLED": "false", - "APN_KEY_ID": "xxxxxxxxxx", - "APN_KEY": "xxxxxxxxxx", - "APN_TEAM_ID": "aaabbbcccd", - "FCM_SERVER_API_KEY": "" - }, - "SITE_HTTP_AUTH": { - "ENABLED": "false", - "USERNAME": "admin", - "PASSWORD": "password" - }, - "SLACK": { - "FLAGGING_URL": "https://hooks.slack.com/services/id/id/id", - "FLAGGING_FOOTER_LINK": "https://habitrpg.github.io/flag-o-rama/", - "SUBSCRIPTIONS_URL": "https://hooks.slack.com/services/id/id/id" - }, - "ITUNES_SHARED_SECRET": "aaaabbbbccccddddeeeeffff00001111", - "EMAILS" : { - "COMMUNITY_MANAGER_EMAIL" : "admin@habitica.com", - "TECH_ASSISTANCE_EMAIL" : "admin@habitica.com", - "PRESS_ENQUIRY_EMAIL" : "admin@habitica.com" - }, - "LOGGLY" : { - "TOKEN" : "example-token", - "SUBDOMAIN" : "exmaple-subdomain" - }, - "KAFKA": { - "GROUP_ID": "", - "CLOUDKARAFKA_BROKERS": "", - "CLOUDKARAFKA_USERNAME": "", - "CLOUDKARAFKA_PASSWORD": "", - "CLOUDKARAFKA_TOPIC_PREFIX": "" - }, - "MIGRATION_CONNECT_STRING": "mongodb://localhost:27017/habitrpg?auto_reconnect=true" + "ADMIN_EMAIL": "you@example.com", + "AMAZON_PAYMENTS_CLIENT_ID": "CLIENT_ID", + "AMAZON_PAYMENTS_MODE": "sandbox", + "AMAZON_PAYMENTS_MWS_KEY": "MWS_KEY", + "AMAZON_PAYMENTS_MWS_SECRET": "MWS_SECRET", + "AMAZON_PAYMENTS_SELLER_ID": "SELLER_ID", + "AMPLITUDE_KEY": "AMPLITUDE_KEY", + "AMPLITUDE_SECRET": "AMPLITUDE_SECRET", + "BASE_URL": "http://localhost:3000", + "CRON_SAFE_MODE": "false", + "CRON_SEMI_SAFE_MODE": "false", + "DISABLE_REQUEST_LOGGING": "true", + "EMAILS_COMMUNITY_MANAGER_EMAIL": "admin@habitica.com", + "EMAILS_PRESS_ENQUIRY_EMAIL": "admin@habitica.com", + "EMAILS_TECH_ASSISTANCE_EMAIL": "admin@habitica.com", + "EMAIL_SERVER_AUTH_PASSWORD": "password", + "EMAIL_SERVER_AUTH_USER": "user", + "EMAIL_SERVER_URL": "http://example.com", + "ENABLE_CONSOLE_LOGS_IN_PROD": "false", + "ENABLE_CONSOLE_LOGS_IN_TEST": "false", + "FACEBOOK_KEY": "123456789012345", + "FACEBOOK_SECRET": "aaaabbbbccccddddeeeeffff00001111", + "FLAG_REPORT_EMAIL": "email@example.com, email2@example.com", + "GA_ID": "GA_ID", + "GOOGLE_CLIENT_ID": "123456789012345", + "GOOGLE_CLIENT_SECRET": "aaaabbbbccccddddeeeeffff00001111", + "IAP_GOOGLE_KEYDIR": "/path/to/google/public/key/dir/", + "IGNORE_REDIRECT": "true", + "ITUNES_SHARED_SECRET": "aaaabbbbccccddddeeeeffff00001111", + "LOGGLY_CLIENT_TOKEN": "token", + "LOGGLY_SUBDOMAIN": "example-subdomain", + "LOGGLY_TOKEN": "example-token", + "MAINTENANCE_MODE": "false", + "NODE_DB_URI": "mongodb://localhost/habitrpg", + "NODE_ENV": "development", + "PATH": "bin:node_modules/.bin:/usr/local/bin:/usr/bin:/bin", + "PAYPAL_BILLING_PLANS_basic_12mo": "basic_12mo", + "PAYPAL_BILLING_PLANS_basic_3mo": "basic_3mo", + "PAYPAL_BILLING_PLANS_basic_6mo": "basic_6mo", + "PAYPAL_BILLING_PLANS_basic_earned": "basic_earned", + "PAYPAL_BILLING_PLANS_google_6mo": "google_6mo", + "PAYPAL_CLIENT_ID": "client_id", + "PAYPAL_CLIENT_SECRET": "client_secret", + "PAYPAL_EXPERIENCE_PROFILE_ID": "xp_profile_id", + "PAYPAL_MODE": "sandbox", + "PLAY_API_ACCESS_TOKEN": "aaaabbbbccccddddeeeeffff00001111", + "PLAY_API_CLIENT_ID": "aaaabbbbccccddddeeeeffff00001111", + "PLAY_API_CLIENT_SECRET": "aaaabbbbccccddddeeeeffff00001111", + "PLAY_API_REFRESH_TOKEN": "aaaabbbbccccddddeeeeffff00001111", + "PORT": 3000, + "PUSH_CONFIGS_APN_ENABLED": "false", + "PUSH_CONFIGS_APN_KEY": "xxxxxxxxxx", + "PUSH_CONFIGS_APN_KEY_ID": "xxxxxxxxxx", + "PUSH_CONFIGS_APN_TEAM_ID": "aaabbbcccd", + "PUSH_CONFIGS_FCM_SERVER_API_KEY": "aaabbbcccd", + "S3_ACCESS_KEY_ID": "accessKeyId", + "S3_BUCKET": "bucket", + "S3_SECRET_ACCESS_KEY": "secretAccessKey", + "SESSION_SECRET": "YOUR SECRET HERE", + "SESSION_SECRET_IV": "12345678912345678912345678912345", + "SESSION_SECRET_KEY": "1234567891234567891234567891234567891234567891234567891234567891", + "SITE_HTTP_AUTH_ENABLED": "false", + "SITE_HTTP_AUTH_PASSWORD": "password", + "SITE_HTTP_AUTH_USERNAME": "admin", + "SLACK_FLAGGING_FOOTER_LINK": "https://habitrpg.github.io/flag-o-rama/", + "SLACK_FLAGGING_URL": "https://hooks.slack.com/services/id/id/id", + "SLACK_SUBSCRIPTIONS_URL": "https://hooks.slack.com/services/id/id/id", + "SLACK_URL": "https://hooks.slack.com/services/some-url", + "SMTP_HOST": "example.com", + "SMTP_PASS": "password", + "SMTP_PORT": 587, + "SMTP_SERVICE": "Gmail", + "SMTP_TLS": "true", + "SMTP_USER": "user@example.com", + "STRIPE_API_KEY": "aaaabbbbccccddddeeeeffff00001111", + "STRIPE_PUB_KEY": "22223333444455556666777788889999", + "TEST_DB_URI": "mongodb://localhost/habitrpg_test", + "TRANSIFEX_SLACK_CHANNEL": "transifex", + "WEB_CONCURRENCY": 1 } diff --git a/scripts/paypalBillingSetup.js b/scripts/paypalBillingSetup.js index 72bec34d61..e99ffe31b8 100644 --- a/scripts/paypalBillingSetup.js +++ b/scripts/paypalBillingSetup.js @@ -12,28 +12,27 @@ const nconf = require('nconf'); const _ = require('lodash'); const paypal = require('paypal-rest-sdk'); const blocks = require('../website/common').content.subscriptionBlocks; -const live = nconf.get('PAYPAL:mode') === 'live'; +const live = nconf.get('PAYPAL_MODE') === 'live'; nconf.argv().env().file('user', path.join(path.resolve(__dirname, '../config.json'))); -let OP = 'create'; // list create update remove +let OP = 'create'; // list get update create create-webprofile paypal.configure({ - mode: nconf.get('PAYPAL:mode'), // sandbox or live - client_id: nconf.get('PAYPAL:client_id'), - client_secret: nconf.get('PAYPAL:client_secret'), + mode: nconf.get('PAYPAL_MODE'), // sandbox or live + client_id: nconf.get('PAYPAL_CLIENT_ID'), + client_secret: nconf.get('PAYPAL_CLIENT_SECRET'), }); // https://developer.paypal.com/docs/api/#billing-plans-and-agreements let billingPlanTitle = 'Habitica Subscription'; let billingPlanAttributes = { - name: billingPlanTitle, description: billingPlanTitle, type: 'INFINITE', merchant_preferences: { auto_bill_amount: 'yes', cancel_url: live ? 'https://habitica.com' : 'http://localhost:3000', - return_url: `${live ? 'https://habitica.com' : 'http://localhost:3000' }/paypal/subscribe/success`, + return_url: `${live ? 'https://habitica.com' : 'http://localhost:3000'}/paypal/subscribe/success`, }, payment_definitions: [{ type: 'REGULAR', @@ -45,7 +44,7 @@ let billingPlanAttributes = { _.each(blocks, (block) => { block.definition = _.cloneDeep(billingPlanAttributes); _.merge(block.definition.payment_definitions[0], { - name: `${billingPlanTitle } ($${block.price} every ${block.months} months, recurring)`, + name: `${billingPlanTitle} ($${block.price} every ${block.months} months, recurring)`, frequency_interval: `${block.months}`, amount: { currency: 'USD', @@ -63,7 +62,7 @@ switch (OP) { }); break; case 'get': - paypal.billingPlan.get(nconf.get('PAYPAL:billing_plans:12'), (err, plan) => { + paypal.billingPlan.get(nconf.get('PAYPAL_BILLING_PLANS_basic_12mo'), (err, plan) => { console.log({err, plan}); }); break; @@ -75,7 +74,7 @@ switch (OP) { cancel_url: 'https://habitica.com', }, }; - paypal.billingPlan.update(nconf.get('PAYPAL:billing_plans:12'), updatePayload, (err, res) => { + paypal.billingPlan.update(nconf.get('PAYPAL_BILLING_PLANS_basic_12mo'), updatePayload, (err, res) => { console.log({err, plan: res}); }); break; @@ -101,9 +100,6 @@ switch (OP) { }); }); break; - - case 'remove': break; - case 'create-webprofile': let webexpinfo = { name: 'HabiticaProfile', @@ -116,4 +112,4 @@ switch (OP) { console.log(error, result); }); break; -} \ No newline at end of file +} diff --git a/test/api/unit/libs/payments/paypal/checkout.test.js b/test/api/unit/libs/payments/paypal/checkout.test.js index 4b45b0dca7..25e381bcc1 100644 --- a/test/api/unit/libs/payments/paypal/checkout.test.js +++ b/test/api/unit/libs/payments/paypal/checkout.test.js @@ -15,6 +15,7 @@ describe('checkout', () => { function getPaypalCreateOptions (description, amount) { return { + experience_profile_id: 'xp_profile_id', intent: 'sale', payer: { payment_method: 'Paypal' }, redirect_urls: { diff --git a/test/api/unit/libs/slack.js b/test/api/unit/libs/slack.js index c8d44ff876..3252ed7e16 100644 --- a/test/api/unit/libs/slack.js +++ b/test/api/unit/libs/slack.js @@ -110,7 +110,7 @@ describe('slack', () => { }); it('noops if no flagging url is provided', () => { - sandbox.stub(nconf, 'get').withArgs('SLACK:FLAGGING_URL').returns(''); + sandbox.stub(nconf, 'get').withArgs('SLACK_FLAGGING_URL').returns(''); sandbox.stub(logger, 'error'); let reRequiredSlack = requireAgain('../../../../website/server/libs/slack'); diff --git a/test/api/v3/integration/chat/POST-groups_id_chat_id_clear_flags.test.js b/test/api/v3/integration/chat/POST-groups_id_chat_id_clear_flags.test.js index 153bc3bd0a..98ce34d35a 100644 --- a/test/api/v3/integration/chat/POST-groups_id_chat_id_clear_flags.test.js +++ b/test/api/v3/integration/chat/POST-groups_id_chat_id_clear_flags.test.js @@ -106,7 +106,7 @@ describe('POST /groups/:id/chat/:id/clearflags', () => { .to.eventually.be.rejected.and.eql({ code: 400, error: 'BadRequest', - message: t('messageCannotFlagSystemMessages', {communityManagerEmail: config.EMAILS.COMMUNITY_MANAGER_EMAIL}), + message: t('messageCannotFlagSystemMessages', {communityManagerEmail: config.EMAILS_COMMUNITY_MANAGER_EMAIL}), }); // let messages = await members[0].get(`/groups/${group._id}/chat`); // expect(messages[0].id).to.eql(skillMsg.id); diff --git a/test/api/v3/integration/groups/POST-groups_invite.test.js b/test/api/v3/integration/groups/POST-groups_invite.test.js index 56f8236752..f5069b3875 100644 --- a/test/api/v3/integration/groups/POST-groups_invite.test.js +++ b/test/api/v3/integration/groups/POST-groups_invite.test.js @@ -333,7 +333,7 @@ describe('Post /groups/:groupId/invite', () => { .to.eventually.be.rejected.and.eql({ code: 401, error: 'NotAuthorized', - message: t('inviteLimitReached', {techAssistanceEmail: nconf.get('EMAILS:TECH_ASSISTANCE_EMAIL')}), + message: t('inviteLimitReached', {techAssistanceEmail: nconf.get('EMAILS_TECH_ASSISTANCE_EMAIL')}), }); }); diff --git a/test/api/v3/integration/user/auth/POST-login-local.test.js b/test/api/v3/integration/user/auth/POST-login-local.test.js index dc47eead78..ad1eecb778 100644 --- a/test/api/v3/integration/user/auth/POST-login-local.test.js +++ b/test/api/v3/integration/user/auth/POST-login-local.test.js @@ -45,7 +45,7 @@ describe('POST /user/auth/local/login', () => { })).to.eventually.be.rejected.and.eql({ code: 401, error: 'NotAuthorized', - message: t('accountSuspended', { communityManagerEmail: nconf.get('EMAILS:COMMUNITY_MANAGER_EMAIL'), userId: user._id }), + message: t('accountSuspended', { communityManagerEmail: nconf.get('EMAILS_COMMUNITY_MANAGER_EMAIL'), userId: user._id }), }); }); diff --git a/test/api/v3/integration/user/auth/PUT-user_update_email.test.js b/test/api/v3/integration/user/auth/PUT-user_update_email.test.js index c3f306843f..d540dbd27b 100644 --- a/test/api/v3/integration/user/auth/PUT-user_update_email.test.js +++ b/test/api/v3/integration/user/auth/PUT-user_update_email.test.js @@ -71,7 +71,7 @@ describe('PUT /user/auth/update-email', () => { })).to.eventually.be.rejected.and.eql({ code: 401, error: 'NotAuthorized', - message: t('cannotFulfillReq', { techAssistanceEmail: nconf.get('EMAILS:TECH_ASSISTANCE_EMAIL') }), + message: t('cannotFulfillReq', { techAssistanceEmail: nconf.get('EMAILS_TECH_ASSISTANCE_EMAIL') }), }); }); diff --git a/webpack/config/prod.env.js b/webpack/config/prod.env.js index fd784d87ef..7b89084678 100644 --- a/webpack/config/prod.env.js +++ b/webpack/config/prod.env.js @@ -15,11 +15,11 @@ setupNconf(configFile); // @TODO: Do we need? const CLIENT_VARS = ['language', 'isStaticPage', 'availableLanguages', 'translations', // 'FACEBOOK_KEY', 'GOOGLE_CLIENT_ID', 'NODE_ENV', 'BASE_URL', 'GA_ID', // 'AMAZON_PAYMENTS', 'STRIPE_PUB_KEY', 'AMPLITUDE_KEY', -// 'worldDmg', 'mods', 'IS_MOBILE', 'PUSHER:KEY', 'PUSHER:ENABLED']; +// 'worldDmg', 'mods', 'IS_MOBILE']; -const AMAZON_SELLER_ID = nconf.get('AMAZON_PAYMENTS:SELLER_ID') || nconf.get('AMAZON_PAYMENTS_SELLER_ID'); -const AMAZON_CLIENT_ID = nconf.get('AMAZON_PAYMENTS:CLIENT_ID') || nconf.get('AMAZON_PAYMENTS_CLIENT_ID'); -const AMAZON_MODE = nconf.get('AMAZON_PAYMENTS:MODE') || nconf.get('AMAZON_PAYMENTS_MODE'); +const AMAZON_SELLER_ID = nconf.get('AMAZON_PAYMENTS_SELLER_ID'); +const AMAZON_CLIENT_ID = nconf.get('AMAZON_PAYMENTS_CLIENT_ID'); +const AMAZON_MODE = nconf.get('AMAZON_PAYMENTS_MODE'); let env = { NODE_ENV: '"production"', @@ -30,13 +30,13 @@ let env = { MODE: `"${AMAZON_MODE}"`, }, EMAILS: { - COMMUNITY_MANAGER_EMAIL: `"${nconf.get('EMAILS:COMMUNITY_MANAGER_EMAIL')}"`, - TECH_ASSISTANCE_EMAIL: `"${nconf.get('EMAILS:TECH_ASSISTANCE_EMAIL')}"`, - PRESS_ENQUIRY_EMAIL: `"${nconf.get('EMAILS:PRESS_ENQUIRY_EMAIL')}"`, + COMMUNITY_MANAGER_EMAIL: `"${nconf.get('EMAILS_COMMUNITY_MANAGER_EMAIL')}"`, + TECH_ASSISTANCE_EMAIL: `"${nconf.get('EMAILS_TECH_ASSISTANCE_EMAIL')}"`, + PRESS_ENQUIRY_EMAIL: `"${nconf.get('EMAILS_PRESS_ENQUIRY_EMAIL')}"`, }, }; -'NODE_ENV BASE_URL GA_ID STRIPE_PUB_KEY FACEBOOK_KEY GOOGLE_CLIENT_ID AMPLITUDE_KEY PUSHER:KEY PUSHER:ENABLED LOGGLY_CLIENT_TOKEN' +'NODE_ENV BASE_URL GA_ID STRIPE_PUB_KEY FACEBOOK_KEY GOOGLE_CLIENT_ID AMPLITUDE_KEY LOGGLY_CLIENT_TOKEN' .split(' ') .forEach(key => { env[key] = `"${nconf.get(key)}"`; diff --git a/website/server/controllers/api-v3/auth.js b/website/server/controllers/api-v3/auth.js index 15d9fa8ecd..37d7f7e451 100644 --- a/website/server/controllers/api-v3/auth.js +++ b/website/server/controllers/api-v3/auth.js @@ -23,7 +23,7 @@ import { import {verifyUsername} from '../../libs/user/validation'; const BASE_URL = nconf.get('BASE_URL'); -const TECH_ASSISTANCE_EMAIL = nconf.get('EMAILS:TECH_ASSISTANCE_EMAIL'); +const TECH_ASSISTANCE_EMAIL = nconf.get('EMAILS_TECH_ASSISTANCE_EMAIL'); let api = {}; diff --git a/website/server/controllers/api-v3/groups.js b/website/server/controllers/api-v3/groups.js index e17362c0f6..166f82e430 100644 --- a/website/server/controllers/api-v3/groups.js +++ b/website/server/controllers/api-v3/groups.js @@ -29,7 +29,7 @@ import shared from '../../../common'; import apiError from '../../libs/apiError'; const MAX_EMAIL_INVITES_BY_USER = 200; -const TECH_ASSISTANCE_EMAIL = nconf.get('EMAILS:TECH_ASSISTANCE_EMAIL'); +const TECH_ASSISTANCE_EMAIL = nconf.get('EMAILS_TECH_ASSISTANCE_EMAIL'); /** * @apiDefine GroupBodyInvalid diff --git a/website/server/controllers/api-v3/user.js b/website/server/controllers/api-v3/user.js index b23522e125..641adf93c8 100644 --- a/website/server/controllers/api-v3/user.js +++ b/website/server/controllers/api-v3/user.js @@ -23,7 +23,7 @@ import * as userLib from '../../libs/user'; import nconf from 'nconf'; import get from 'lodash/get'; -const TECH_ASSISTANCE_EMAIL = nconf.get('EMAILS:TECH_ASSISTANCE_EMAIL'); +const TECH_ASSISTANCE_EMAIL = nconf.get('EMAILS_TECH_ASSISTANCE_EMAIL'); const DELETE_CONFIRMATION = 'DELETE'; /** diff --git a/website/server/controllers/top-level/dataexport.js b/website/server/controllers/top-level/dataexport.js index 70cb25a91a..710f620fa2 100644 --- a/website/server/controllers/top-level/dataexport.js +++ b/website/server/controllers/top-level/dataexport.js @@ -17,7 +17,7 @@ import { S3, } from '../../libs/aws'; -const S3_BUCKET = nconf.get('S3:bucket'); +const S3_BUCKET = nconf.get('S3_BUCKET'); const BASE_URL = nconf.get('BASE_URL'); diff --git a/website/server/libs/auth/utils.js b/website/server/libs/auth/utils.js index 954dfc36f0..588c596037 100644 --- a/website/server/libs/auth/utils.js +++ b/website/server/libs/auth/utils.js @@ -3,7 +3,7 @@ import shortid from 'short-uuid'; import { NotAuthorized } from '../errors'; -const COMMUNITY_MANAGER_EMAIL = nconf.get('EMAILS:COMMUNITY_MANAGER_EMAIL'); +const COMMUNITY_MANAGER_EMAIL = nconf.get('EMAILS_COMMUNITY_MANAGER_EMAIL'); const translator = shortid('0123456789abcdefghijklmnopqrstuvwxyz'); function generateUsername () { diff --git a/website/server/libs/aws.js b/website/server/libs/aws.js index 82b151c81f..8185a8601a 100644 --- a/website/server/libs/aws.js +++ b/website/server/libs/aws.js @@ -2,6 +2,6 @@ import AWS from 'aws-sdk'; import nconf from 'nconf'; export const S3 = new AWS.S3({ - accessKeyId: nconf.get('S3:accessKeyId'), - secretAccessKey: nconf.get('S3:secretAccessKey'), + accessKeyId: nconf.get('S3_ACCESS_KEY_ID'), + secretAccessKey: nconf.get('S3_SECRET_ACCESS_KEY'), }); diff --git a/website/server/libs/chatReporting/groupChatReporter.js b/website/server/libs/chatReporting/groupChatReporter.js index 1e06d24d5c..ff625bfb8a 100644 --- a/website/server/libs/chatReporting/groupChatReporter.js +++ b/website/server/libs/chatReporting/groupChatReporter.js @@ -12,7 +12,7 @@ import { model as Group } from '../../models/group'; import { chatModel as Chat } from '../../models/message'; import apiError from '../apiError'; -const COMMUNITY_MANAGER_EMAIL = nconf.get('EMAILS:COMMUNITY_MANAGER_EMAIL'); +const COMMUNITY_MANAGER_EMAIL = nconf.get('EMAILS_COMMUNITY_MANAGER_EMAIL'); const FLAG_REPORT_EMAILS = nconf.get('FLAG_REPORT_EMAIL').split(',').map((email) => { return { email, canSend: true }; }); diff --git a/website/server/libs/email.js b/website/server/libs/email.js index 62d8feabc0..42ec7387a4 100644 --- a/website/server/libs/email.js +++ b/website/server/libs/email.js @@ -8,10 +8,10 @@ import common from '../../common'; const IS_PROD = nconf.get('IS_PROD'); const EMAIL_SERVER = { - url: nconf.get('EMAIL_SERVER:url'), + url: nconf.get('EMAIL_SERVER_URL'), auth: { - user: nconf.get('EMAIL_SERVER:authUser'), - password: nconf.get('EMAIL_SERVER:authPassword'), + user: nconf.get('EMAIL_SERVER_AUTH_USER'), + password: nconf.get('EMAIL_SERVER_AUTH_PASSWORD'), }, }; const BASE_URL = nconf.get('BASE_URL'); diff --git a/website/server/libs/inAppPurchases.js b/website/server/libs/inAppPurchases.js index e75fbe5e5f..dab5edd1f6 100644 --- a/website/server/libs/inAppPurchases.js +++ b/website/server/libs/inAppPurchases.js @@ -10,10 +10,10 @@ import iap from 'in-app-purchase'; iap.config({ // This is the path to the directory containing iap-sanbox/iap-live files googlePublicKeyPath: nconf.get('IAP_GOOGLE_KEYDIR'), - googleAccToken: nconf.get('PLAY_API:ACCESS_TOKEN'), - googleRefToken: nconf.get('PLAY_API:REFRESH_TOKEN'), - googleClientID: nconf.get('PLAY_API:CLIENT_ID'), - googleClientSecret: nconf.get('PLAY_API:CLIENT_SECRET'), + googleAccToken: nconf.get('PLAY_API_ACCESS_TOKEN'), + googleRefToken: nconf.get('PLAY_API_REFRESH_TOKEN'), + googleClientID: nconf.get('PLAY_API_CLIENT_ID'), + googleClientSecret: nconf.get('PLAY_API_CLIENT_SECRET'), applePassword: nconf.get('ITUNES_SHARED_SECRET'), }); diff --git a/website/server/libs/logger.js b/website/server/libs/logger.js index 75d58c936b..7f39b3792f 100644 --- a/website/server/libs/logger.js +++ b/website/server/libs/logger.js @@ -22,8 +22,8 @@ if (IS_PROD) { prettyPrint: false, }); logger.add(winston.transports.Loggly, { - inputToken: nconf.get('LOGGLY:TOKEN'), - subdomain: nconf.get('LOGGLY:SUBDOMAIN'), + inputToken: nconf.get('LOGGLY_TOKEN'), + subdomain: nconf.get('LOGGLY_SUBDOMAIN'), tags: ['Winston-NodeJS'], json: true, }); diff --git a/website/server/libs/payments/amazon.js b/website/server/libs/payments/amazon.js index a257bca221..60c9ac5ab9 100644 --- a/website/server/libs/payments/amazon.js +++ b/website/server/libs/payments/amazon.js @@ -22,14 +22,14 @@ import { model as Coupon } from '../../models/coupon'; // TODO better handling of errors const i18n = common.i18n; -const IS_SANDBOX = nconf.get('AMAZON_PAYMENTS:MODE') === 'sandbox'; +const IS_SANDBOX = nconf.get('AMAZON_PAYMENTS_MODE') === 'sandbox'; let amzPayment = amazonPayments.connect({ environment: amazonPayments.Environment[IS_SANDBOX ? 'Sandbox' : 'Production'], - sellerId: nconf.get('AMAZON_PAYMENTS:SELLER_ID'), - mwsAccessKey: nconf.get('AMAZON_PAYMENTS:MWS_KEY'), - mwsSecretKey: nconf.get('AMAZON_PAYMENTS:MWS_SECRET'), - clientId: nconf.get('AMAZON_PAYMENTS:CLIENT_ID'), + sellerId: nconf.get('AMAZON_PAYMENTS_SELLER_ID'), + mwsAccessKey: nconf.get('AMAZON_PAYMENTS_MWS_KEY'), + mwsSecretKey: nconf.get('AMAZON_PAYMENTS_MWS_SECRET'), + clientId: nconf.get('AMAZON_PAYMENTS_CLIENT_ID'), }); let api = {}; diff --git a/website/server/libs/payments/groupPayments.js b/website/server/libs/payments/groupPayments.js index 2ad944d71f..b632667284 100644 --- a/website/server/libs/payments/groupPayments.js +++ b/website/server/libs/payments/groupPayments.js @@ -12,7 +12,7 @@ import { sendTxn as txnEmail, } from '../email'; -const TECH_ASSISTANCE_EMAIL = nconf.get('EMAILS:TECH_ASSISTANCE_EMAIL'); +const TECH_ASSISTANCE_EMAIL = nconf.get('EMAILS_TECH_ASSISTANCE_EMAIL'); const JOINED_GROUP_PLAN = 'joined group plan'; function _dateDiff (earlyDate, lateDate) { diff --git a/website/server/libs/payments/paypal.js b/website/server/libs/payments/paypal.js index 350af84094..c1a376de1b 100644 --- a/website/server/libs/payments/paypal.js +++ b/website/server/libs/payments/paypal.js @@ -28,16 +28,16 @@ const i18n = shared.i18n; // a web interface for billing-plan creation), see ./paypalBillingSetup.js for how. After the billing plan is created // there, get it's plan.id and store it in config.json _.each(shared.content.subscriptionBlocks, (block) => { - block.paypalKey = nconf.get(`PAYPAL:billing_plans:${block.key}`); + block.paypalKey = nconf.get(`PAYPAL_BILLING_PLANS_${block.key}`); }); paypal.configure({ - mode: nconf.get('PAYPAL:mode'), // sandbox or live - client_id: nconf.get('PAYPAL:client_id'), - client_secret: nconf.get('PAYPAL:client_secret'), + mode: nconf.get('PAYPAL_MODE'), // sandbox or live + client_id: nconf.get('PAYPAL_CLIENT_ID'), + client_secret: nconf.get('PAYPAL_CLIENT_SECRET'), }); -let experienceProfileId = nconf.get('PAYPAL:experience_profile_id'); +let experienceProfileId = nconf.get('PAYPAL_EXPERIENCE_PROFILE_ID'); // TODO better handling of errors // @TODO: Create constants diff --git a/website/server/libs/pushNotifications.js b/website/server/libs/pushNotifications.js index 41cfb4bd1f..0dc2db8018 100644 --- a/website/server/libs/pushNotifications.js +++ b/website/server/libs/pushNotifications.js @@ -4,20 +4,20 @@ import apn from 'apn'; import logger from './logger'; import gcmLib from 'node-gcm'; // works with FCM notifications too -const FCM_API_KEY = nconf.get('PUSH_CONFIGS:FCM_SERVER_API_KEY'); +const FCM_API_KEY = nconf.get('PUSH_CONFIGS_FCM_SERVER_API_KEY'); const fcmSender = FCM_API_KEY ? new gcmLib.Sender(FCM_API_KEY) : undefined; let apnProvider; // Load APN certificate and key from S3 -const APN_ENABLED = nconf.get('PUSH_CONFIGS:APN_ENABLED') === 'true'; +const APN_ENABLED = nconf.get('PUSH_CONFIGS_APN_ENABLED') === 'true'; if (APN_ENABLED) { apnProvider = APN_ENABLED ? new apn.Provider({ token: { - key: nconf.get('PUSH_CONFIGS:APN_KEY'), - keyId: nconf.get('PUSH_CONFIGS:APN_KEY_ID'), - teamId: nconf.get('PUSH_CONFIGS:APN_TEAM_ID'), + key: nconf.get('PUSH_CONFIGS_APN_KEY'), + keyId: nconf.get('PUSH_CONFIGS_APN_KEY_ID'), + teamId: nconf.get('PUSH_CONFIGS_APN_TEAM_ID'), }, production: nconf.get('IS_PROD'), }) : undefined; diff --git a/website/server/libs/slack.js b/website/server/libs/slack.js index 99a601ee67..b0b5bb8898 100644 --- a/website/server/libs/slack.js +++ b/website/server/libs/slack.js @@ -5,9 +5,9 @@ import { TAVERN_ID } from '../models/group'; import nconf from 'nconf'; import moment from 'moment'; -const SLACK_FLAGGING_URL = nconf.get('SLACK:FLAGGING_URL'); -const SLACK_FLAGGING_FOOTER_LINK = nconf.get('SLACK:FLAGGING_FOOTER_LINK'); -const SLACK_SUBSCRIPTIONS_URL = nconf.get('SLACK:SUBSCRIPTIONS_URL'); +const SLACK_FLAGGING_URL = nconf.get('SLACK_FLAGGING_URL'); +const SLACK_FLAGGING_FOOTER_LINK = nconf.get('SLACK_FLAGGING_FOOTER_LINK'); +const SLACK_SUBSCRIPTIONS_URL = nconf.get('SLACK_SUBSCRIPTIONS_URL'); const BASE_URL = nconf.get('BASE_URL'); let flagSlack; diff --git a/website/server/middlewares/auth.js b/website/server/middlewares/auth.js index 906c8f42e9..ab5987b50e 100644 --- a/website/server/middlewares/auth.js +++ b/website/server/middlewares/auth.js @@ -7,7 +7,7 @@ import { import nconf from 'nconf'; import url from 'url'; -const COMMUNITY_MANAGER_EMAIL = nconf.get('EMAILS:COMMUNITY_MANAGER_EMAIL'); +const COMMUNITY_MANAGER_EMAIL = nconf.get('EMAILS_COMMUNITY_MANAGER_EMAIL'); function getUserFields (options, req) { // A list of user fields that aren't needed for the route and are not loaded from the db.