settings.defaults.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. const Path = require('path')
  2. module.exports = {
  3. // Options are passed to Sequelize.
  4. // See http://sequelizejs.com/documentation#usage-options for details
  5. mysql: {
  6. clsi: {
  7. database: 'clsi',
  8. username: 'clsi',
  9. dialect: 'sqlite',
  10. storage:
  11. process.env.SQLITE_PATH || Path.resolve(__dirname + '/../db.sqlite'),
  12. pool: {
  13. max: 1,
  14. min: 1
  15. },
  16. retry: {
  17. max: 10
  18. }
  19. }
  20. },
  21. compileSizeLimit: process.env.COMPILE_SIZE_LIMIT || '7mb',
  22. processLifespanLimitMs:
  23. process.env.PROCESS_LIFE_SPAN_LIMIT_MS || 60 * 60 * 24 * 1000 * 2,
  24. path: {
  25. compilesDir: Path.resolve(__dirname + '/../compiles'),
  26. clsiCacheDir: Path.resolve(__dirname + '/../cache'),
  27. synctexBaseDir(project_id) {
  28. return Path.join(this.compilesDir, project_id)
  29. }
  30. },
  31. internal: {
  32. clsi: {
  33. port: 3013,
  34. host: process.env.LISTEN_ADDRESS || 'localhost'
  35. },
  36. load_balancer_agent: {
  37. report_load: true,
  38. load_port: 3048,
  39. local_port: 3049
  40. }
  41. },
  42. apis: {
  43. clsi: {
  44. url: `http://${process.env.CLSI_HOST || 'localhost'}:3013`
  45. }
  46. },
  47. smokeTest: process.env.SMOKE_TEST || false,
  48. project_cache_length_ms: 1000 * 60 * 60 * 24,
  49. parallelFileDownloads: process.env.FILESTORE_PARALLEL_FILE_DOWNLOADS || 1,
  50. parallelSqlQueryLimit: process.env.FILESTORE_PARALLEL_SQL_QUERY_LIMIT || 1,
  51. filestoreDomainOveride: process.env.FILESTORE_DOMAIN_OVERRIDE,
  52. texliveImageNameOveride: process.env.TEX_LIVE_IMAGE_NAME_OVERRIDE,
  53. sentry: {
  54. dsn: process.env.SENTRY_DSN
  55. }
  56. }
  57. if (process.env.DOCKER_RUNNER) {
  58. let seccomp_profile_path
  59. module.exports.clsi = {
  60. dockerRunner: process.env.DOCKER_RUNNER === 'true',
  61. docker: {
  62. image:
  63. process.env.TEXLIVE_IMAGE || 'quay.io/sharelatex/texlive-full:2017.1',
  64. env: {
  65. HOME: '/tmp'
  66. },
  67. socketPath: '/var/run/docker.sock',
  68. user: process.env.TEXLIVE_IMAGE_USER || 'tex'
  69. },
  70. expireProjectAfterIdleMs: 24 * 60 * 60 * 1000,
  71. checkProjectsIntervalMs: 10 * 60 * 1000
  72. }
  73. try {
  74. seccomp_profile_path = Path.resolve(
  75. __dirname + '/../seccomp/clsi-profile.json'
  76. )
  77. module.exports.clsi.docker.seccomp_profile = JSON.stringify(
  78. JSON.parse(require('fs').readFileSync(seccomp_profile_path))
  79. )
  80. } catch (error) {
  81. console.log(
  82. error,
  83. `could not load seccom profile from ${seccomp_profile_path}`
  84. )
  85. }
  86. module.exports.path.synctexBaseDir = () => '/compile'
  87. module.exports.path.sandboxedCompilesHostDir = process.env.COMPILES_HOST_DIR
  88. module.exports.path.synctexBinHostPath = process.env.SYNCTEX_BIN_HOST_PATH
  89. }