2017-06-05 22:35:36 +00:00
|
|
|
const convict = require('convict');
|
2017-09-06 20:25:27 +00:00
|
|
|
const { tmpdir } = require('os');
|
|
|
|
const path = require('path');
|
|
|
|
const { randomBytes } = require('crypto');
|
2017-06-05 22:35:36 +00:00
|
|
|
|
2017-06-09 17:44:12 +00:00
|
|
|
const conf = convict({
|
2018-08-09 21:49:52 +00:00
|
|
|
s3_bucket: {
|
|
|
|
format: String,
|
|
|
|
default: '',
|
|
|
|
env: 'S3_BUCKET'
|
2018-08-08 18:07:09 +00:00
|
|
|
},
|
2018-08-09 21:49:52 +00:00
|
|
|
num_of_prefixes: {
|
2018-08-08 18:07:09 +00:00
|
|
|
format: Number,
|
2018-08-09 21:49:52 +00:00
|
|
|
default: 5,
|
|
|
|
env: 'NUM_OF_PREFIXES'
|
|
|
|
},
|
|
|
|
expire_prefixes: {
|
|
|
|
format: Array,
|
|
|
|
default: ['5minutes', '1hour', '1day', '1week', '2weeks'],
|
|
|
|
env: 'EXPIRE_PREFIXES'
|
2018-08-08 18:07:09 +00:00
|
|
|
},
|
|
|
|
expire_times_seconds: {
|
|
|
|
format: Array,
|
2018-08-07 22:40:17 +00:00
|
|
|
default: [300, 3600, 86400, 604800],
|
2018-08-08 18:07:09 +00:00
|
|
|
env: 'EXPIRE_TIMES_SECONDS'
|
|
|
|
},
|
|
|
|
default_expire_seconds: {
|
|
|
|
format: Number,
|
|
|
|
default: 86400,
|
|
|
|
env: 'DEFAULT_EXPIRE_SECONDS'
|
|
|
|
},
|
|
|
|
max_expire_seconds: {
|
|
|
|
format: Number,
|
2018-08-07 22:40:17 +00:00
|
|
|
default: 86400 * 7,
|
2018-08-08 18:07:09 +00:00
|
|
|
env: 'MAX_EXPIRE_SECONDS'
|
2017-06-07 06:52:56 +00:00
|
|
|
},
|
2018-08-07 22:40:17 +00:00
|
|
|
anon_max_expire_seconds: {
|
|
|
|
format: Number,
|
|
|
|
default: 86400,
|
|
|
|
env: 'ANON_MAX_EXPIRE_SECONDS'
|
|
|
|
},
|
|
|
|
max_downloads: {
|
|
|
|
format: Number,
|
|
|
|
default: 200,
|
|
|
|
env: 'MAX_DOWNLOADS'
|
|
|
|
},
|
|
|
|
anon_max_downloads: {
|
|
|
|
format: Number,
|
|
|
|
default: 20,
|
|
|
|
env: 'ANON_MAX_DOWNLOADS'
|
|
|
|
},
|
|
|
|
max_files_per_archive: {
|
|
|
|
format: Number,
|
|
|
|
default: 64,
|
|
|
|
env: 'MAX_FILES_PER_ARCHIVE'
|
|
|
|
},
|
|
|
|
max_archives_per_user: {
|
|
|
|
format: Number,
|
|
|
|
default: 16,
|
|
|
|
env: 'MAX_ARCHIVES_PER_USER'
|
|
|
|
},
|
2017-06-07 06:52:56 +00:00
|
|
|
redis_host: {
|
|
|
|
format: String,
|
|
|
|
default: 'localhost',
|
2017-07-24 19:02:41 +00:00
|
|
|
env: 'REDIS_HOST'
|
2017-06-07 06:52:56 +00:00
|
|
|
},
|
2017-11-15 12:31:22 +00:00
|
|
|
redis_event_expire: {
|
|
|
|
format: Boolean,
|
|
|
|
default: false,
|
|
|
|
env: 'REDIS_EVENT_EXPIRE'
|
|
|
|
},
|
2017-12-09 01:21:55 +00:00
|
|
|
listen_address: {
|
2018-01-24 18:23:13 +00:00
|
|
|
format: 'ipaddress',
|
|
|
|
default: '0.0.0.0',
|
|
|
|
env: 'IP_ADDRESS'
|
2017-12-09 01:21:55 +00:00
|
|
|
},
|
2017-06-07 06:52:56 +00:00
|
|
|
listen_port: {
|
|
|
|
format: 'port',
|
|
|
|
default: 1443,
|
|
|
|
arg: 'port',
|
2017-06-20 22:48:36 +00:00
|
|
|
env: 'PORT'
|
2017-06-06 17:24:58 +00:00
|
|
|
},
|
2017-06-21 20:54:24 +00:00
|
|
|
analytics_id: {
|
|
|
|
format: String,
|
2017-06-24 03:01:32 +00:00
|
|
|
default: '',
|
2017-06-21 20:54:24 +00:00
|
|
|
env: 'GOOGLE_ANALYTICS_ID'
|
|
|
|
},
|
2017-06-22 21:50:57 +00:00
|
|
|
sentry_id: {
|
|
|
|
format: String,
|
2017-06-24 03:01:32 +00:00
|
|
|
default: '',
|
2017-07-24 19:02:41 +00:00
|
|
|
env: 'SENTRY_CLIENT'
|
2017-06-23 17:53:11 +00:00
|
|
|
},
|
|
|
|
sentry_dsn: {
|
|
|
|
format: String,
|
2017-06-24 03:01:32 +00:00
|
|
|
default: '',
|
2017-07-24 19:02:41 +00:00
|
|
|
env: 'SENTRY_DSN'
|
2017-06-22 21:50:57 +00:00
|
|
|
},
|
2017-06-06 17:24:58 +00:00
|
|
|
env: {
|
2017-06-19 21:34:12 +00:00
|
|
|
format: ['production', 'development', 'test'],
|
2017-06-06 17:24:58 +00:00
|
|
|
default: 'development',
|
|
|
|
env: 'NODE_ENV'
|
2017-07-20 19:50:20 +00:00
|
|
|
},
|
|
|
|
max_file_size: {
|
|
|
|
format: Number,
|
2018-08-07 22:40:17 +00:00
|
|
|
default: 1024 * 1024 * 1024 * 4,
|
2017-07-24 19:02:41 +00:00
|
|
|
env: 'MAX_FILE_SIZE'
|
2017-07-24 20:07:49 +00:00
|
|
|
},
|
2018-08-07 22:40:17 +00:00
|
|
|
anon_max_file_size: {
|
|
|
|
format: Number,
|
|
|
|
default: 1024 * 1024 * 500,
|
|
|
|
env: 'ANON_MAX_FILE_SIZE'
|
|
|
|
},
|
2017-07-25 21:28:49 +00:00
|
|
|
l10n_dev: {
|
|
|
|
format: Boolean,
|
|
|
|
default: false,
|
|
|
|
env: 'L10N_DEV'
|
2017-08-11 21:02:44 +00:00
|
|
|
},
|
|
|
|
base_url: {
|
|
|
|
format: 'url',
|
|
|
|
default: 'https://send.firefox.com',
|
|
|
|
env: 'BASE_URL'
|
2017-09-06 20:25:27 +00:00
|
|
|
},
|
|
|
|
file_dir: {
|
|
|
|
format: 'String',
|
|
|
|
default: `${tmpdir()}${path.sep}send-${randomBytes(4).toString('hex')}`,
|
|
|
|
env: 'FILE_DIR'
|
2018-08-07 22:40:17 +00:00
|
|
|
},
|
|
|
|
fxa_url: {
|
|
|
|
format: 'url',
|
2018-09-20 21:13:07 +00:00
|
|
|
default: 'https://send-fxa.dev.lcip.org',
|
2018-08-07 22:40:17 +00:00
|
|
|
env: 'FXA_URL'
|
|
|
|
},
|
|
|
|
fxa_client_id: {
|
|
|
|
format: String,
|
2018-09-24 20:04:29 +00:00
|
|
|
default: '', // disabled
|
2018-08-07 22:40:17 +00:00
|
|
|
env: 'FXA_CLIENT_ID'
|
2017-06-06 17:24:58 +00:00
|
|
|
}
|
|
|
|
});
|
2017-06-05 22:35:36 +00:00
|
|
|
|
2017-06-06 17:24:58 +00:00
|
|
|
// Perform validation
|
|
|
|
conf.validate({ allowed: 'strict' });
|
|
|
|
|
2017-06-09 17:44:12 +00:00
|
|
|
const props = conf.getProperties();
|
2017-06-08 22:01:04 +00:00
|
|
|
module.exports = props;
|