| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197 |
- const http = require('node:http')
- const https = require('node:https')
- http.globalAgent.keepAlive = false
- https.globalAgent.keepAlive = false
- module.exports = {
- internal: {
- documentupdater: {
- host: process.env.LISTEN_ADDRESS || '127.0.0.1',
- port: 3003,
- },
- },
- apis: {
- web: {
- url: `http://${
- process.env.WEB_API_HOST || process.env.WEB_HOST || '127.0.0.1'
- }:${process.env.WEB_API_PORT || process.env.WEB_PORT || 3000}`,
- user: process.env.WEB_API_USER || 'overleaf',
- pass: process.env.WEB_API_PASSWORD || 'password',
- },
- project_history: {
- url: `http://${process.env.PROJECT_HISTORY_HOST || '127.0.0.1'}:3054`,
- },
- },
- redis: {
- pubsub: {
- host:
- process.env.PUBSUB_REDIS_HOST || process.env.REDIS_HOST || '127.0.0.1',
- port: process.env.PUBSUB_REDIS_PORT || process.env.REDIS_PORT || '6379',
- password:
- process.env.PUBSUB_REDIS_PASSWORD || process.env.REDIS_PASSWORD || '',
- maxRetriesPerRequest: parseInt(
- process.env.REDIS_MAX_RETRIES_PER_REQUEST || '20'
- ),
- },
- history: {
- port: process.env.HISTORY_REDIS_PORT || process.env.REDIS_PORT || '6379',
- host:
- process.env.HISTORY_REDIS_HOST || process.env.REDIS_HOST || '127.0.0.1',
- password:
- process.env.HISTORY_REDIS_PASSWORD || process.env.REDIS_PASSWORD || '',
- maxRetriesPerRequest: parseInt(
- process.env.REDIS_MAX_RETRIES_PER_REQUEST || '20'
- ),
- },
- project_history: {
- port: process.env.HISTORY_REDIS_PORT || process.env.REDIS_PORT || '6379',
- host:
- process.env.HISTORY_REDIS_HOST || process.env.REDIS_HOST || '127.0.0.1',
- password:
- process.env.HISTORY_REDIS_PASSWORD || process.env.REDIS_PASSWORD || '',
- maxRetriesPerRequest: parseInt(
- process.env.REDIS_MAX_RETRIES_PER_REQUEST || '20'
- ),
- key_schema: {
- projectHistoryOps({ project_id: projectId }) {
- return `ProjectHistory:Ops:{${projectId}}`
- },
- projectHistoryFirstOpTimestamp({ project_id: projectId }) {
- return `ProjectHistory:FirstOpTimestamp:{${projectId}}`
- },
- },
- },
- lock: {
- port: process.env.LOCK_REDIS_PORT || process.env.REDIS_PORT || '6379',
- host:
- process.env.LOCK_REDIS_HOST || process.env.REDIS_HOST || '127.0.0.1',
- password:
- process.env.LOCK_REDIS_PASSWORD || process.env.REDIS_PASSWORD || '',
- maxRetriesPerRequest: parseInt(
- process.env.REDIS_MAX_RETRIES_PER_REQUEST || '20'
- ),
- key_schema: {
- blockingKey({ doc_id: docId }) {
- return `Blocking:{${docId}}`
- },
- },
- },
- documentupdater: {
- port:
- process.env.DOC_UPDATER_REDIS_PORT || process.env.REDIS_PORT || '6379',
- host:
- process.env.DOC_UPDATER_REDIS_HOST ||
- process.env.REDIS_HOST ||
- '127.0.0.1',
- password:
- process.env.DOC_UPDATER_REDIS_PASSWORD ||
- process.env.REDIS_PASSWORD ||
- '',
- maxRetriesPerRequest: parseInt(
- process.env.REDIS_MAX_RETRIES_PER_REQUEST || '20'
- ),
- key_schema: {
- blockingKey({ doc_id: docId }) {
- return `Blocking:{${docId}}`
- },
- docLines({ doc_id: docId }) {
- return `doclines:{${docId}}`
- },
- docOps({ doc_id: docId }) {
- return `DocOps:{${docId}}`
- },
- docVersion({ doc_id: docId }) {
- return `DocVersion:{${docId}}`
- },
- docHash({ doc_id: docId }) {
- return `DocHash:{${docId}}`
- },
- projectKey({ doc_id: docId }) {
- return `ProjectId:{${docId}}`
- },
- docsInProject({ project_id: projectId }) {
- return `DocsIn:{${projectId}}`
- },
- ranges({ doc_id: docId }) {
- return `Ranges:{${docId}}`
- },
- unflushedTime({ doc_id: docId }) {
- return `UnflushedTime:{${docId}}`
- },
- pathname({ doc_id: docId }) {
- return `Pathname:{${docId}}`
- },
- projectHistoryId({ doc_id: docId }) {
- return `ProjectHistoryId:{${docId}}`
- },
- projectState({ project_id: projectId }) {
- return `ProjectState:{${projectId}}`
- },
- projectBlock({ project_id: projectId }) {
- return `ProjectBlock:{${projectId}}`
- },
- pendingUpdates({ doc_id: docId }) {
- return `PendingUpdates:{${docId}}`
- },
- lastUpdatedBy({ doc_id: docId }) {
- return `lastUpdatedBy:{${docId}}`
- },
- lastUpdatedAt({ doc_id: docId }) {
- return `lastUpdatedAt:{${docId}}`
- },
- resolvedCommentIds({ doc_id: docId }) {
- return `ResolvedCommentIds:{${docId}}`
- },
- flushAndDeleteQueue() {
- return 'DocUpdaterFlushAndDeleteQueue'
- },
- historyRangesSupport() {
- return 'HistoryRangesSupport'
- },
- projectNotificationTimestamp({ project_id: projectId }) {
- return `ProjectNotificationTimestamp:{${projectId}}`
- },
- },
- },
- },
- max_doc_length: 2 * 1024 * 1024, // 2mb
- maxJsonRequestSize:
- parseInt(process.env.MAX_JSON_REQUEST_SIZE, 10) || 8 * 1024 * 1024,
- dispatcherCount: parseInt(process.env.DISPATCHER_COUNT || 10, 10),
- redisLockTTLSeconds: 30,
- mongo: {
- url:
- process.env.MONGO_CONNECTION_STRING ||
- `mongodb://${process.env.MONGO_HOST || '127.0.0.1'}/sharelatex`,
- options: {
- monitorCommands: true,
- },
- },
- publishOnIndividualChannels:
- process.env.PUBLISH_ON_INDIVIDUAL_CHANNELS === 'true',
- continuousBackgroundFlush: process.env.CONTINUOUS_BACKGROUND_FLUSH === 'true',
- smoothingOffset: process.env.SMOOTHING_OFFSET || 1000, // milliseconds
- gracefulShutdownDelayInMs:
- parseInt(process.env.GRACEFUL_SHUTDOWN_DELAY_SECONDS ?? '10', 10) * 1000,
- maxUnflushedAgeMs:
- parseInt(process.env.MAX_UNFLUSHED_AGE_SECONDS ?? '300', 10) * 1000, // 5 mins by default
- shortHistoryQueues: (process.env.SHORT_HISTORY_QUEUES || '')
- .split(',')
- .filter(s => !!s),
- }
|