| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- const Path = require('path')
- module.exports = {
- // 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/db.sqlite'),
- pool: {
- max: 1,
- min: 1
- },
- retry: {
- max: 10
- }
- }
- },
- compileSizeLimit: process.env.COMPILE_SIZE_LIMIT || '7mb',
- processLifespanLimitMs:
- parseInt(process.env.PROCESS_LIFE_SPAN_LIMIT_MS) || 60 * 60 * 24 * 1000 * 2,
- path: {
- compilesDir: Path.resolve(__dirname, '../compiles'),
- clsiCacheDir: Path.resolve(__dirname, '../cache'),
- synctexBaseDir(projectId) {
- return Path.join(this.compilesDir, projectId)
- }
- },
- internal: {
- clsi: {
- port: 3013,
- host: process.env.LISTEN_ADDRESS || 'localhost'
- },
- load_balancer_agent: {
- report_load: true,
- load_port: 3048,
- local_port: 3049
- }
- },
- apis: {
- clsi: {
- url: `http://${process.env.CLSI_HOST || 'localhost'}:3013`
- }
- },
- 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,
- texliveOpenoutAny: process.env.TEXLIVE_OPENOUT_ANY,
- sentry: {
- dsn: process.env.SENTRY_DSN
- }
- }
- if (process.env.ALLOWED_COMPILE_GROUPS) {
- try {
- module.exports.allowedCompileGroups = process.env.ALLOWED_COMPILE_GROUPS.split(
- ' '
- )
- } catch (error) {
- console.error(error, 'could not apply allowed compile group setting')
- process.exit(1)
- }
- }
- if (process.env.DOCKER_RUNNER) {
- let seccompProfilePath
- module.exports.clsi = {
- dockerRunner: process.env.DOCKER_RUNNER === 'true',
- docker: {
- runtime: process.env.DOCKER_RUNTIME,
- 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'
- },
- optimiseInDocker: true,
- expireProjectAfterIdleMs: 24 * 60 * 60 * 1000,
- checkProjectsIntervalMs: 10 * 60 * 1000
- }
- try {
- // Override individual docker settings using path-based keys, e.g.:
- // compileGroupDockerConfigs = {
- // priority: { 'HostConfig.CpuShares': 100 }
- // beta: { 'dotted.path.here', 'value'}
- // }
- const compileGroupConfig = JSON.parse(
- process.env.COMPILE_GROUP_DOCKER_CONFIGS || '{}'
- )
- module.exports.clsi.docker.compileGroupConfig = compileGroupConfig
- } catch (error) {
- console.error(error, 'could not apply compile group docker configs')
- process.exit(1)
- }
- try {
- seccompProfilePath = Path.resolve(__dirname, '../seccomp/clsi-profile.json')
- module.exports.clsi.docker.seccomp_profile = JSON.stringify(
- JSON.parse(require('fs').readFileSync(seccompProfilePath))
- )
- } catch (error) {
- console.error(
- error,
- `could not load seccomp profile from ${seccompProfilePath}`
- )
- process.exit(1)
- }
- module.exports.path.synctexBaseDir = () => '/compile'
- module.exports.path.sandboxedCompilesHostDir = process.env.COMPILES_HOST_DIR
- module.exports.path.synctexBinHostPath = process.env.SYNCTEX_BIN_HOST_PATH
- }
|