From c2c27d30323ffdc0bddb4af4ea9ea1376058d89b Mon Sep 17 00:00:00 2001 From: yu-i-i Date: Fri, 6 Dec 2024 12:45:15 +0100 Subject: [PATCH] Allow selecting a TeX Live image for a project --- server-ce/config/settings.js | 8 +------- services/clsi/app/js/DockerRunner.js | 5 ++--- .../app/src/Features/Project/ProjectOptionsHandler.mjs | 1 - services/web/config/settings.defaults.js | 9 +++++++++ 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/server-ce/config/settings.js b/server-ce/config/settings.js index 1b744eb8b7..0e2e46b39a 100644 --- a/server-ce/config/settings.js +++ b/server-ce/config/settings.js @@ -496,13 +496,7 @@ if (process.env.SANDBOXED_COMPILES === 'true') { dockerRunner: true, docker: { image: process.env.TEX_LIVE_DOCKER_IMAGE, - env: { - HOME: '/tmp', - PATH: - process.env.COMPILER_PATH || - '/usr/local/bin:/usr/bin:/bin', - }, - user: 'www-data', + user: process.env.TEX_LIVE_DOCKER_USER || 'www-data', } } diff --git a/services/clsi/app/js/DockerRunner.js b/services/clsi/app/js/DockerRunner.js index 113b4baf37..ecfc6b5b54 100644 --- a/services/clsi/app/js/DockerRunner.js +++ b/services/clsi/app/js/DockerRunner.js @@ -235,10 +235,9 @@ const DockerRunner = { } } // set the path based on the image year - const match = image.match(/:([0-9]+)\.[0-9]+/) + const match = image.match(/:([0-9]+)\.[0-9]+|:TL([0-9]+)/) // the rolling build does not follow our .. convention - const year = match ? match[1] : 'rolling' - + const year = match ? match[1] || match[2] : 'rolling' env.PATH = `/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/texlive/${year}/bin/x86_64-linux/` const options = { Cmd: command, diff --git a/services/web/app/src/Features/Project/ProjectOptionsHandler.mjs b/services/web/app/src/Features/Project/ProjectOptionsHandler.mjs index 8004d9b1f3..2c90084b71 100644 --- a/services/web/app/src/Features/Project/ProjectOptionsHandler.mjs +++ b/services/web/app/src/Features/Project/ProjectOptionsHandler.mjs @@ -39,7 +39,6 @@ const ProjectOptionsHandler = { if (!imageName || !Array.isArray(settings.allowedImageNames)) { return undefined } - imageName = imageName.toLowerCase() const isAllowed = settings.allowedImageNames.find( allowed => imageName === allowed.imageName ) diff --git a/services/web/config/settings.defaults.js b/services/web/config/settings.defaults.js index 56a4731912..0cc3959a77 100644 --- a/services/web/config/settings.defaults.js +++ b/services/web/config/settings.defaults.js @@ -1089,6 +1089,15 @@ module.exports = { managedUsers: { enabled: false, }, + + 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, } module.exports.mergeWith = function (overrides) {