2020-02-16 09:03:43 -05:00
|
|
|
/*
|
|
|
|
* decaffeinate suggestions:
|
|
|
|
* DS207: Consider shorter variations of null checks
|
|
|
|
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
|
|
|
|
*/
|
2020-02-16 09:03:45 -05:00
|
|
|
const http = require('http')
|
|
|
|
http.globalAgent.maxSockets = 300
|
2014-04-28 11:45:59 -04:00
|
|
|
|
2020-02-16 09:03:43 -05:00
|
|
|
const Settings = {
|
2020-02-16 09:03:45 -05:00
|
|
|
internal: {
|
|
|
|
docstore: {
|
|
|
|
port: 3016,
|
|
|
|
host: process.env.LISTEN_ADDRESS || 'localhost'
|
|
|
|
}
|
|
|
|
},
|
2014-04-28 11:45:59 -04:00
|
|
|
|
2020-09-10 05:36:15 -04:00
|
|
|
mongo: {
|
|
|
|
options: {
|
|
|
|
useUnifiedTopology:
|
|
|
|
(process.env.MONGO_USE_UNIFIED_TOPOLOGY || 'true') === 'true'
|
|
|
|
}
|
|
|
|
},
|
2015-06-01 17:24:40 -04:00
|
|
|
|
2020-02-16 09:03:45 -05:00
|
|
|
docstore: {
|
2021-01-04 08:36:19 -05:00
|
|
|
archiveOnSoftDelete: process.env.ARCHIVE_ON_SOFT_DELETE === 'true',
|
2021-01-04 12:04:33 -05:00
|
|
|
keepSoftDeletedDocsArchived:
|
|
|
|
process.env.KEEP_SOFT_DELETED_DOCS_ARCHIVED === 'true',
|
2021-01-04 08:36:19 -05:00
|
|
|
|
2020-07-23 14:42:20 -04:00
|
|
|
backend: process.env.BACKEND || 's3',
|
2020-02-16 09:03:45 -05:00
|
|
|
healthCheck: {
|
|
|
|
project_id: process.env.HEALTH_CHECK_PROJECT_ID
|
2020-07-23 14:42:20 -04:00
|
|
|
},
|
2020-08-10 06:55:39 -04:00
|
|
|
bucket: process.env.BUCKET_NAME || process.env.AWS_BUCKET || 'bucket',
|
2020-07-23 14:42:20 -04:00
|
|
|
gcs: {
|
|
|
|
unlockBeforeDelete: process.env.GCS_UNLOCK_BEFORE_DELETE === 'true',
|
|
|
|
deletedBucketSuffix: process.env.GCS_DELETED_BUCKET_SUFFIX,
|
|
|
|
deleteConcurrency: parseInt(process.env.GCS_DELETE_CONCURRENCY) || 50
|
2020-02-16 09:03:45 -05:00
|
|
|
}
|
|
|
|
},
|
2015-11-06 07:42:44 -05:00
|
|
|
|
2021-02-18 05:10:14 -05:00
|
|
|
max_deleted_docs: parseInt(process.env.MAX_DELETED_DOCS, 10) || 2000,
|
|
|
|
|
2020-03-09 08:36:59 -04:00
|
|
|
max_doc_length: parseInt(process.env.MAX_DOC_LENGTH) || 2 * 1024 * 1024 // 2mb
|
2020-02-16 09:03:45 -05:00
|
|
|
}
|
2016-11-28 11:51:43 -05:00
|
|
|
|
2020-02-16 09:03:45 -05:00
|
|
|
if (process.env.MONGO_CONNECTION_STRING != null) {
|
|
|
|
Settings.mongo.url = process.env.MONGO_CONNECTION_STRING
|
|
|
|
} else if (process.env.MONGO_HOST != null) {
|
|
|
|
Settings.mongo.url = `mongodb://${process.env.MONGO_HOST}/sharelatex`
|
2020-02-16 09:03:43 -05:00
|
|
|
} else {
|
2020-02-16 09:03:45 -05:00
|
|
|
Settings.mongo.url = 'mongodb://127.0.0.1/sharelatex'
|
2020-02-16 09:03:43 -05:00
|
|
|
}
|
2018-09-28 06:50:38 -04:00
|
|
|
|
2020-02-16 09:03:45 -05:00
|
|
|
if (
|
|
|
|
process.env.AWS_ACCESS_KEY_ID != null &&
|
|
|
|
process.env.AWS_SECRET_ACCESS_KEY != null &&
|
|
|
|
process.env.AWS_BUCKET != null
|
|
|
|
) {
|
|
|
|
Settings.docstore.s3 = {
|
|
|
|
key: process.env.AWS_ACCESS_KEY_ID,
|
|
|
|
secret: process.env.AWS_SECRET_ACCESS_KEY,
|
2020-07-23 14:42:20 -04:00
|
|
|
bucket: process.env.AWS_BUCKET,
|
|
|
|
endpoint: process.env.AWS_S3_ENDPOINT,
|
|
|
|
pathStyle: process.env.AWS_S3_PATH_STYLE,
|
|
|
|
partSize: parseInt(process.env.AWS_S3_PARTSIZE) || 100 * 1024 * 1024
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (process.env.GCS_API_ENDPOINT) {
|
|
|
|
Settings.docstore.gcs.endpoint = {
|
|
|
|
apiEndpoint: process.env.GCS_API_ENDPOINT,
|
|
|
|
apiScheme: process.env.GCS_API_SCHEME,
|
|
|
|
projectId: process.env.GCS_PROJECT_ID
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (process.env.FALLBACK_BACKEND) {
|
|
|
|
Settings.docstore.fallback = {
|
|
|
|
backend: process.env.FALLBACK_BACKEND,
|
|
|
|
// mapping of bucket names on the fallback, to bucket names on the primary.
|
|
|
|
// e.g. { myS3UserFilesBucketName: 'myGoogleUserFilesBucketName' }
|
|
|
|
buckets: JSON.parse(process.env.FALLBACK_BUCKET_MAPPING || '{}'),
|
|
|
|
copyOnMiss: process.env.COPY_ON_MISS === 'true'
|
2020-02-16 09:03:45 -05:00
|
|
|
}
|
2020-02-16 09:03:43 -05:00
|
|
|
}
|
2018-09-28 06:50:38 -04:00
|
|
|
|
2020-02-16 09:03:45 -05:00
|
|
|
module.exports = Settings
|