config.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. const convict = require('convict');
  2. const { tmpdir } = require('os');
  3. const path = require('path');
  4. const { randomBytes } = require('crypto');
  5. const conf = convict({
  6. s3_bucket: {
  7. format: String,
  8. default: '',
  9. env: 'S3_BUCKET'
  10. },
  11. redis_host: {
  12. format: String,
  13. default: 'localhost',
  14. env: 'REDIS_HOST'
  15. },
  16. listen_port: {
  17. format: 'port',
  18. default: 1443,
  19. arg: 'port',
  20. env: 'PORT'
  21. },
  22. analytics_id: {
  23. format: String,
  24. default: '',
  25. env: 'GOOGLE_ANALYTICS_ID'
  26. },
  27. sentry_id: {
  28. format: String,
  29. default: '',
  30. env: 'SENTRY_CLIENT'
  31. },
  32. sentry_dsn: {
  33. format: String,
  34. default: '',
  35. env: 'SENTRY_DSN'
  36. },
  37. env: {
  38. format: ['production', 'development', 'test'],
  39. default: 'development',
  40. env: 'NODE_ENV'
  41. },
  42. max_file_size: {
  43. format: Number,
  44. default: 1024 * 1024 * 1024 * 2,
  45. env: 'MAX_FILE_SIZE'
  46. },
  47. expire_seconds: {
  48. format: Number,
  49. default: 86400,
  50. env: 'EXPIRE_SECONDS'
  51. },
  52. l10n_dev: {
  53. format: Boolean,
  54. default: false,
  55. env: 'L10N_DEV'
  56. },
  57. base_url: {
  58. format: 'url',
  59. default: 'https://send.firefox.com',
  60. env: 'BASE_URL'
  61. },
  62. file_dir: {
  63. format: 'String',
  64. default: `${tmpdir()}${path.sep}send-${randomBytes(4).toString('hex')}`,
  65. env: 'FILE_DIR'
  66. }
  67. });
  68. // Perform validation
  69. conf.validate({ allowed: 'strict' });
  70. const props = conf.getProperties();
  71. module.exports = props;