mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2026-11-12 13:13:45 +01:00
Refactor Sandboxed Compiles
This commit is contained in:
@@ -498,35 +498,6 @@ if (
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Overleaf Extended CE Compiler options to enable sandboxed compiles.
|
|
||||||
// -----------
|
|
||||||
if (process.env.SANDBOXED_COMPILES === 'true') {
|
|
||||||
settings.clsi = {
|
|
||||||
...settings.clsi,
|
|
||||||
dockerRunner: true,
|
|
||||||
docker: {
|
|
||||||
image: process.env.TEX_LIVE_DOCKER_IMAGE,
|
|
||||||
user: process.env.TEX_LIVE_DOCKER_USER || 'www-data',
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (settings.path == null) {
|
|
||||||
settings.path = {}
|
|
||||||
}
|
|
||||||
settings.path.synctexBaseDir = () => '/compile'
|
|
||||||
if (process.env.SANDBOXED_COMPILES_SIBLING_CONTAINERS === 'true') {
|
|
||||||
console.log('Using sibling containers for sandboxed compiles')
|
|
||||||
if (process.env.SANDBOXED_COMPILES_HOST_DIR) {
|
|
||||||
settings.path.sandboxedCompilesHostDir =
|
|
||||||
process.env.SANDBOXED_COMPILES_HOST_DIR
|
|
||||||
} else {
|
|
||||||
console.error(
|
|
||||||
'Sibling containers, but SANDBOXED_COMPILES_HOST_DIR not set'
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// With lots of incoming and outgoing HTTP connections to different services,
|
// With lots of incoming and outgoing HTTP connections to different services,
|
||||||
// sometimes long running, it is a good idea to increase the default number
|
// sometimes long running, it is a good idea to increase the default number
|
||||||
// of sockets that Node will hold open.
|
// of sockets that Node will hold open.
|
||||||
|
|||||||
@@ -151,7 +151,7 @@ if ((process.env.DOCKER_RUNNER || process.env.SANDBOXED_COMPILES) === 'true') {
|
|||||||
CLSI: 1,
|
CLSI: 1,
|
||||||
},
|
},
|
||||||
socketPath: '/var/run/docker.sock',
|
socketPath: '/var/run/docker.sock',
|
||||||
user: process.env.TEXLIVE_IMAGE_USER || 'tex',
|
user: process.env.TEXLIVE_IMAGE_USER || 'www-data',
|
||||||
},
|
},
|
||||||
optimiseInDocker: true,
|
optimiseInDocker: true,
|
||||||
expireProjectAfterIdleMs: 24 * 60 * 60 * 1000,
|
expireProjectAfterIdleMs: 24 * 60 * 60 * 1000,
|
||||||
|
|||||||
@@ -1096,6 +1096,7 @@ module.exports = {
|
|||||||
'launchpad',
|
'launchpad',
|
||||||
'server-ce-scripts',
|
'server-ce-scripts',
|
||||||
'user-activate',
|
'user-activate',
|
||||||
|
'sandboxed-compiles',
|
||||||
'symbol-palette',
|
'symbol-palette',
|
||||||
'track-changes',
|
'track-changes',
|
||||||
'authentication/ldap',
|
'authentication/ldap',
|
||||||
@@ -1131,15 +1132,6 @@ module.exports = {
|
|||||||
|
|
||||||
enablePandocConversions: process.env.ENABLE_PANDOC_CONVERSIONS === 'true',
|
enablePandocConversions: process.env.ENABLE_PANDOC_CONVERSIONS === 'true',
|
||||||
|
|
||||||
allowedImageNames: process.env.SANDBOXED_COMPILES === 'true'
|
|
||||||
? parseTextExtensions(process.env.ALL_TEX_LIVE_DOCKER_IMAGES)
|
|
||||||
.map((imageName, index) => ({
|
|
||||||
imageName,
|
|
||||||
imageDesc: parseTextExtensions(process.env.ALL_TEX_LIVE_DOCKER_IMAGE_NAMES)[index]
|
|
||||||
|| imageName.split(':')[1],
|
|
||||||
}))
|
|
||||||
: undefined,
|
|
||||||
|
|
||||||
oauthProviders: {
|
oauthProviders: {
|
||||||
...(process.env.EXTERNAL_AUTH && process.env.EXTERNAL_AUTH.includes('oidc') && {
|
...(process.env.EXTERNAL_AUTH && process.env.EXTERNAL_AUTH.includes('oidc') && {
|
||||||
[process.env.OVERLEAF_OIDC_PROVIDER_ID || 'oidc']: {
|
[process.env.OVERLEAF_OIDC_PROVIDER_ID || 'oidc']: {
|
||||||
|
|||||||
@@ -0,0 +1,22 @@
|
|||||||
|
import Settings from '@overleaf/settings'
|
||||||
|
|
||||||
|
const parseTextExtensions = function (extensions) {
|
||||||
|
if (extensions) {
|
||||||
|
return extensions.split(',').map(ext => ext.trim())
|
||||||
|
} else {
|
||||||
|
return []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (process.env.SANDBOXED_COMPILES === 'true') {
|
||||||
|
Settings.allowedImageNames = parseTextExtensions(process.env.ALL_TEX_LIVE_DOCKER_IMAGES)
|
||||||
|
.map((imageName, index) => ({
|
||||||
|
imageName,
|
||||||
|
imageDesc: parseTextExtensions(process.env.ALL_TEX_LIVE_DOCKER_IMAGE_NAMES)[index]
|
||||||
|
|| imageName.split(':')[1],
|
||||||
|
}))
|
||||||
|
if(!process.env.TEX_LIVE_DOCKER_IMAGE) {
|
||||||
|
process.env.TEX_LIVE_DOCKER_IMAGE = Settings.allowedImageNames[0].imageName
|
||||||
|
}
|
||||||
|
Settings.currentImageName = process.env.TEX_LIVE_DOCKER_IMAGE
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user