2020-02-19 06:16:18 -05:00
|
|
|
const Path = require('path')
|
2014-04-02 16:59:44 -04:00
|
|
|
|
2020-02-19 06:16:17 -05:00
|
|
|
module.exports = {
|
2020-02-19 06:16:18 -05:00
|
|
|
// Options are passed to Sequelize.
|
|
|
|
// See http://sequelizejs.com/documentation#usage-options for details
|
|
|
|
mysql: {
|
|
|
|
clsi: {
|
|
|
|
database: 'clsi',
|
|
|
|
username: 'clsi',
|
|
|
|
dialect: 'sqlite',
|
|
|
|
storage:
|
|
|
|
process.env.SQLITE_PATH || Path.resolve(__dirname + '/../db.sqlite'),
|
|
|
|
pool: {
|
|
|
|
max: 1,
|
|
|
|
min: 1
|
|
|
|
},
|
|
|
|
retry: {
|
|
|
|
max: 10
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
2014-04-02 16:59:44 -04:00
|
|
|
|
2020-02-19 06:16:18 -05:00
|
|
|
compileSizeLimit: process.env.COMPILE_SIZE_LIMIT || '7mb',
|
2014-04-02 16:59:44 -04:00
|
|
|
|
2020-02-19 06:16:18 -05:00
|
|
|
path: {
|
|
|
|
compilesDir: Path.resolve(__dirname + '/../compiles'),
|
|
|
|
clsiCacheDir: Path.resolve(__dirname + '/../cache'),
|
|
|
|
synctexBaseDir(project_id) {
|
|
|
|
return Path.join(this.compilesDir, project_id)
|
|
|
|
}
|
|
|
|
},
|
2019-01-08 07:56:16 -05:00
|
|
|
|
2020-02-19 06:16:18 -05:00
|
|
|
internal: {
|
|
|
|
clsi: {
|
|
|
|
port: 3013,
|
|
|
|
host: process.env.LISTEN_ADDRESS || 'localhost'
|
|
|
|
},
|
2017-12-29 03:08:19 -05:00
|
|
|
|
2020-02-19 06:16:18 -05:00
|
|
|
load_balancer_agent: {
|
|
|
|
report_load: true,
|
|
|
|
load_port: 3048,
|
|
|
|
local_port: 3049
|
|
|
|
}
|
|
|
|
},
|
|
|
|
apis: {
|
|
|
|
clsi: {
|
|
|
|
url: `http://${process.env.CLSI_HOST || 'localhost'}:3013`
|
|
|
|
}
|
|
|
|
},
|
2018-06-28 11:04:34 -04:00
|
|
|
|
2020-02-19 06:16:18 -05:00
|
|
|
smokeTest: process.env.SMOKE_TEST || false,
|
|
|
|
project_cache_length_ms: 1000 * 60 * 60 * 24,
|
|
|
|
parallelFileDownloads: process.env.FILESTORE_PARALLEL_FILE_DOWNLOADS || 1,
|
|
|
|
parallelSqlQueryLimit: process.env.FILESTORE_PARALLEL_SQL_QUERY_LIMIT || 1,
|
|
|
|
filestoreDomainOveride: process.env.FILESTORE_DOMAIN_OVERRIDE,
|
|
|
|
texliveImageNameOveride: process.env.TEX_LIVE_IMAGE_NAME_OVERRIDE,
|
|
|
|
sentry: {
|
|
|
|
dsn: process.env.SENTRY_DSN
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (process.env.DOCKER_RUNNER) {
|
|
|
|
let seccomp_profile_path
|
|
|
|
module.exports.clsi = {
|
|
|
|
dockerRunner: process.env.DOCKER_RUNNER === 'true',
|
|
|
|
docker: {
|
|
|
|
image:
|
|
|
|
process.env.TEXLIVE_IMAGE ||
|
|
|
|
'quay.io/sharelatex/texlive-full:2017.1',
|
|
|
|
env: {
|
|
|
|
HOME: '/tmp'
|
|
|
|
},
|
|
|
|
socketPath: '/var/run/docker.sock',
|
|
|
|
user: process.env.TEXLIVE_IMAGE_USER || 'tex'
|
|
|
|
},
|
|
|
|
expireProjectAfterIdleMs: 24 * 60 * 60 * 1000,
|
|
|
|
checkProjectsIntervalMs: 10 * 60 * 1000
|
|
|
|
}
|
|
|
|
|
|
|
|
try {
|
|
|
|
seccomp_profile_path = Path.resolve(
|
|
|
|
__dirname + '/../seccomp/clsi-profile.json'
|
|
|
|
)
|
|
|
|
module.exports.clsi.docker.seccomp_profile = JSON.stringify(
|
|
|
|
JSON.parse(require('fs').readFileSync(seccomp_profile_path))
|
|
|
|
)
|
|
|
|
} catch (error) {
|
|
|
|
console.log(
|
|
|
|
error,
|
|
|
|
`could not load seccom profile from ${seccomp_profile_path}`
|
|
|
|
)
|
|
|
|
}
|
2018-06-26 09:44:03 -04:00
|
|
|
|
2020-02-19 06:16:18 -05:00
|
|
|
module.exports.path.synctexBaseDir = () => '/compile'
|
2018-02-13 07:05:10 -05:00
|
|
|
|
2020-02-19 06:16:18 -05:00
|
|
|
module.exports.path.sandboxedCompilesHostDir =
|
|
|
|
process.env.COMPILES_HOST_DIR
|
2018-03-01 08:55:55 -05:00
|
|
|
|
2020-02-19 06:16:18 -05:00
|
|
|
module.exports.path.synctexBinHostPath = process.env.SYNCTEX_BIN_HOST_PATH
|
2020-02-19 06:16:17 -05:00
|
|
|
}
|