settings.defaults.js 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. /*
  2. * decaffeinate suggestions:
  3. * DS207: Consider shorter variations of null checks
  4. * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
  5. */
  6. const http = require('http')
  7. http.globalAgent.maxSockets = 300
  8. const Settings = {
  9. internal: {
  10. docstore: {
  11. port: 3016,
  12. host: process.env.LISTEN_ADDRESS || 'localhost',
  13. },
  14. },
  15. mongo: {},
  16. docstore: {
  17. backend: process.env.BACKEND || 's3',
  18. healthCheck: {
  19. project_id: process.env.HEALTH_CHECK_PROJECT_ID,
  20. },
  21. bucket: process.env.BUCKET_NAME || process.env.AWS_BUCKET || 'bucket',
  22. gcs: {
  23. unlockBeforeDelete: process.env.GCS_UNLOCK_BEFORE_DELETE === 'true',
  24. deletedBucketSuffix: process.env.GCS_DELETED_BUCKET_SUFFIX,
  25. deleteConcurrency: parseInt(process.env.GCS_DELETE_CONCURRENCY) || 50,
  26. },
  27. },
  28. max_doc_length: parseInt(process.env.MAX_DOC_LENGTH) || 2 * 1024 * 1024, // 2mb
  29. }
  30. if (process.env.MONGO_CONNECTION_STRING != null) {
  31. Settings.mongo.url = process.env.MONGO_CONNECTION_STRING
  32. } else if (process.env.MONGO_HOST != null) {
  33. Settings.mongo.url = `mongodb://${process.env.MONGO_HOST}/sharelatex`
  34. } else {
  35. Settings.mongo.url = 'mongodb://127.0.0.1/sharelatex'
  36. }
  37. if (
  38. process.env.AWS_ACCESS_KEY_ID != null &&
  39. process.env.AWS_SECRET_ACCESS_KEY != null &&
  40. process.env.AWS_BUCKET != null
  41. ) {
  42. Settings.docstore.s3 = {
  43. key: process.env.AWS_ACCESS_KEY_ID,
  44. secret: process.env.AWS_SECRET_ACCESS_KEY,
  45. bucket: process.env.AWS_BUCKET,
  46. endpoint: process.env.AWS_S3_ENDPOINT,
  47. pathStyle: process.env.AWS_S3_PATH_STYLE,
  48. partSize: parseInt(process.env.AWS_S3_PARTSIZE) || 100 * 1024 * 1024,
  49. }
  50. }
  51. if (process.env.GCS_API_ENDPOINT) {
  52. Settings.docstore.gcs.endpoint = {
  53. apiEndpoint: process.env.GCS_API_ENDPOINT,
  54. apiScheme: process.env.GCS_API_SCHEME,
  55. projectId: process.env.GCS_PROJECT_ID,
  56. }
  57. }
  58. if (process.env.FALLBACK_BACKEND) {
  59. Settings.docstore.fallback = {
  60. backend: process.env.FALLBACK_BACKEND,
  61. // mapping of bucket names on the fallback, to bucket names on the primary.
  62. // e.g. { myS3UserFilesBucketName: 'myGoogleUserFilesBucketName' }
  63. buckets: JSON.parse(process.env.FALLBACK_BUCKET_MAPPING || '{}'),
  64. copyOnMiss: process.env.COPY_ON_MISS === 'true',
  65. }
  66. }
  67. module.exports = Settings