send/server/config.js

210 lines
4.1 KiB
JavaScript
Raw Normal View History

const convict = require('convict');
const { tmpdir } = require('os');
const path = require('path');
const { randomBytes } = require('crypto');
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
},
2019-11-08 16:58:33 +00:00
s3_endpoint: {
format: String,
default: '',
env: 'S3_ENDPOINT'
},
s3_use_path_style_endpoint: {
format: Boolean,
default: false,
env: 'S3_USE_PATH_STYLE_ENDPOINT'
},
2018-10-05 18:01:58 +00:00
gcs_bucket: {
format: String,
default: '',
env: 'GCS_BUCKET'
},
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
},
download_counts: {
format: Array,
2019-03-01 00:31:37 +00:00
default: [1, 2, 3, 4, 5, 20, 50, 100],
env: 'DOWNLOAD_COUNTS'
},
2018-08-07 22:40:17 +00:00
max_downloads: {
format: Number,
2019-03-01 00:31:37 +00:00
default: 100,
2018-08-07 22:40:17 +00:00
env: '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',
env: 'REDIS_HOST'
2017-06-07 06:52:56 +00:00
},
2021-04-18 03:08:35 +00:00
redis_port: {
format: Number,
default: 6379,
env: 'REDIS_PORT'
},
redis_password: {
format: String,
default: '',
env: 'REDIS_PASSWORD'
},
redis_event_expire: {
format: Boolean,
default: false,
env: 'REDIS_EVENT_EXPIRE'
},
2020-04-21 20:30:39 +00:00
redis_retry_time: {
format: Number,
default: 10000,
env: 'REDIS_RETRY_TIME'
},
redis_retry_delay: {
format: Number,
default: 500,
env: 'REDIS_RETRY_DELAY'
},
listen_address: {
2018-01-24 18:23:13 +00:00
format: 'ipaddress',
default: '0.0.0.0',
env: 'IP_ADDRESS'
},
2017-06-07 06:52:56 +00:00
listen_port: {
format: 'port',
default: 1443,
arg: 'port',
env: 'PORT'
},
2017-06-22 21:50:57 +00:00
sentry_id: {
format: String,
2017-06-24 03:01:32 +00:00
default: '',
env: 'SENTRY_CLIENT'
2017-06-23 17:53:11 +00:00
},
sentry_dsn: {
format: String,
2017-06-24 03:01:32 +00:00
default: '',
env: 'SENTRY_DSN'
2017-06-22 21:50:57 +00:00
},
env: {
2017-06-19 21:34:12 +00:00
format: ['production', 'development', 'test'],
default: 'development',
env: 'NODE_ENV'
2017-07-20 19:50:20 +00:00
},
max_file_size: {
format: Number,
2019-03-01 00:31:37 +00:00
default: 1024 * 1024 * 1024 * 2.5,
env: 'MAX_FILE_SIZE'
},
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'
},
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,
default: '', // disabled
2018-08-07 22:40:17 +00:00
env: 'FXA_CLIENT_ID'
2018-12-18 21:55:46 +00:00
},
fxa_key_scope: {
format: String,
default: 'https://identity.mozilla.com/apps/send',
env: 'FXA_KEY_SCOPE'
2019-04-26 20:30:33 +00:00
},
fxa_csp_oauth_url: {
format: String,
default: '',
env: 'FXA_CSP_OAUTH_URL'
},
fxa_csp_content_url: {
format: String,
default: '',
env: 'FXA_CSP_CONTENT_URL'
},
fxa_csp_profile_url: {
format: String,
default: '',
env: 'FXA_CSP_PROFILE_URL'
},
fxa_csp_profileimage_url: {
format: String,
default: '',
env: 'FXA_CSP_PROFILEIMAGE_URL'
},
2019-04-26 20:30:33 +00:00
survey_url: {
format: String,
default: '',
env: 'SURVEY_URL'
2020-01-11 22:06:17 +00:00
},
ip_db: {
format: String,
default: '',
env: 'IP_DB'
},
footer_donate_url: {
format: String,
default: '',
env: 'SEND_FOOTER_DONATE_URL'
},
footer_cli_url: {
format: String,
default: 'https://github.com/timvisee/ffsend',
env: 'SEND_FOOTER_CLI_URL'
},
footer_dmca_url: {
format: String,
default: '',
env: 'SEND_FOOTER_DMCA_URL'
},
footer_source_url: {
format: String,
default: 'https://github.com/timvisee/send',
env: 'SEND_FOOTER_SOURCE_URL'
}
});
// Perform validation
conf.validate({ allowed: 'strict' });
2017-06-09 17:44:12 +00:00
const props = conf.getProperties();
module.exports = props;