mirror of
https://github.com/PretendoNetwork/account.git
synced 2026-04-24 14:59:39 -05:00
Added loading config from env
This commit is contained in:
parent
3dceb422c5
commit
625bab0e25
18
example.env
Normal file
18
example.env
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
PN_ACT_PREFER_ENV_CONFIG=true # Load config from ENV instead of config.json
|
||||
PN_ACT_CONFIG_HTTP_PORT=7070
|
||||
PN_ACT_CONFIG_MONGO_URI=mongodb://localhost:27017
|
||||
PN_ACT_CONFIG_MONGO_DB_NAME=database_name
|
||||
PN_ACT_CONFIG_MONGOOSE_OPTION_useNewUrlParser=true
|
||||
PN_ACT_CONFIG_MONGOOSE_OPTION_useUnifiedTopology=true
|
||||
PN_ACT_CONFIG_REDIS_URL=redis://localhost:6379
|
||||
PN_ACT_CONFIG_EMAIL_HOST=smtp.gmail.com
|
||||
PN_ACT_CONFIG_EMAIL_PORT=587
|
||||
PN_ACT_CONFIG_EMAIL_SECURE=false
|
||||
PN_ACT_CONFIG_EMAIL_USERNAME=username
|
||||
PN_ACT_CONFIG_EMAIL_PASSWORD=password
|
||||
PN_ACT_CONFIG_EMAIL_FROM=Company Name <user@company.net>
|
||||
PN_ACT_CONFIG_S3_ACCESS_KEY=ACCESS_KEY
|
||||
PN_ACT_CONFIG_S3_ACCESS_SECRET=ACCESS_SECRET
|
||||
PN_ACT_CONFIG_HCAPTCHA_SECRET=0x0000000000000000000000000000000000000000
|
||||
PN_ACT_CONFIG_CDN_BASE=https://example.com
|
||||
PN_ACT_CONFIG_WEBSITE_BASE=https://example.com
|
||||
14
package-lock.json
generated
14
package-lock.json
generated
|
|
@ -14,6 +14,7 @@
|
|||
"colors": "^1.4.0",
|
||||
"cors": "^2.8.5",
|
||||
"dicer": "^0.2.5",
|
||||
"dotenv": "^16.0.3",
|
||||
"email-validator": "^2.0.4",
|
||||
"express": "^4.17.1",
|
||||
"express-form-data": "^2.0.17",
|
||||
|
|
@ -1083,6 +1084,14 @@
|
|||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
|
||||
"integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
|
||||
},
|
||||
"node_modules/dotenv": {
|
||||
"version": "16.0.3",
|
||||
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz",
|
||||
"integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==",
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/dtype": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/dtype/-/dtype-2.0.0.tgz",
|
||||
|
|
@ -4540,6 +4549,11 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"dotenv": {
|
||||
"version": "16.0.3",
|
||||
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz",
|
||||
"integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ=="
|
||||
},
|
||||
"dtype": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/dtype/-/dtype-2.0.0.tgz",
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@
|
|||
"colors": "^1.4.0",
|
||||
"cors": "^2.8.5",
|
||||
"dicer": "^0.2.5",
|
||||
"dotenv": "^16.0.3",
|
||||
"email-validator": "^2.0.4",
|
||||
"express": "^4.17.1",
|
||||
"express-form-data": "^2.0.17",
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
const fs = require('fs-extra');
|
||||
const logger = require('../logger');
|
||||
|
||||
require('dotenv').config();
|
||||
|
||||
/**
|
||||
* @typedef {Object} Config
|
||||
* @property {object} http HTTP server settings
|
||||
|
|
@ -16,7 +18,7 @@ const logger = require('../logger');
|
|||
* @property {string} email.host SMTP server address
|
||||
* @property {number} email.port SMTP server port
|
||||
* @property {boolean} email.secure Secure SMTP
|
||||
* @property {string} email.from Email "from" name/address
|
||||
* @property {string} email.from Email 'from' name/address
|
||||
* @property {object} email.auth Email authentication settings
|
||||
* @property {string} email.auth.user Email username
|
||||
* @property {string} email.auth.pass Email password
|
||||
|
|
@ -36,12 +38,60 @@ const logger = require('../logger');
|
|||
let config = {};
|
||||
|
||||
function configure() {
|
||||
if (!fs.pathExistsSync(`${__dirname}/../config.json`)) {
|
||||
logger.error('Failed to locate config.json file');
|
||||
process.exit(0);
|
||||
}
|
||||
if (process.env.PN_ACT_PREFER_ENV_CONFIG === 'true') {
|
||||
logger.info('Loading config from env');
|
||||
|
||||
config = require(`${__dirname}/../config.json`);
|
||||
config = {
|
||||
http: {
|
||||
port: Number(process.env.PN_ACT_CONFIG_HTTP_PORT)
|
||||
},
|
||||
mongoose: {
|
||||
uri: process.env.PN_ACT_CONFIG_MONGO_URI,
|
||||
database: process.env.PN_ACT_CONFIG_MONGO_DB_NAME,
|
||||
options: Object.keys(process.env)
|
||||
.filter(key => key.startsWith('PN_ACT_CONFIG_MONGOOSE_OPTION_'))
|
||||
.reduce((obj, key) => {
|
||||
obj[key.split('_').pop()] = process.env[key];
|
||||
return obj;
|
||||
}, {})
|
||||
},
|
||||
redis: {
|
||||
client: {
|
||||
url: process.env.PN_ACT_CONFIG_REDIS_URL
|
||||
}
|
||||
},
|
||||
email: {
|
||||
host: process.env.PN_ACT_CONFIG_EMAIL_HOST,
|
||||
port: Number(process.env.PN_ACT_CONFIG_EMAIL_PORT),
|
||||
secure: Boolean(process.env.PN_ACT_CONFIG_EMAIL_SECURE),
|
||||
auth: {
|
||||
user: process.env.PN_ACT_CONFIG_EMAIL_USERNAME,
|
||||
pass: process.env.PN_ACT_CONFIG_EMAIL_PASSWORD
|
||||
},
|
||||
from: process.env.PN_ACT_CONFIG_EMAIL_FROM
|
||||
},
|
||||
aws: {
|
||||
spaces: {
|
||||
key: process.env.PN_ACT_CONFIG_S3_ACCESS_KEY,
|
||||
secret: process.env.PN_ACT_CONFIG_S3_ACCESS_SECRET
|
||||
}
|
||||
},
|
||||
hcaptcha: {
|
||||
secret: process.env.PN_ACT_CONFIG_HCAPTCHA_SECRET
|
||||
},
|
||||
cdn_base: process.env.PN_ACT_CONFIG_CDN_BASE,
|
||||
website_base: process.env.PN_ACT_CONFIG_WEBSITE_BASE
|
||||
};
|
||||
} else {
|
||||
logger.info('Loading config from config.json');
|
||||
|
||||
if (!fs.pathExistsSync(`${__dirname}/../config.json`)) {
|
||||
logger.error('Failed to locate config.json file');
|
||||
process.exit(0);
|
||||
}
|
||||
|
||||
config = require(`${__dirname}/../config.json`);
|
||||
}
|
||||
|
||||
module.exports.config = config;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user