From 90482f0263cd0b0472e2ec3e4f3deb202f6c356a Mon Sep 17 00:00:00 2001 From: Girish Ramakrishnan Date: Sun, 26 Sep 2021 18:36:33 -0700 Subject: [PATCH] use realpath to resolve links --- src/sftp.js | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/sftp.js b/src/sftp.js index 1c06cac0f..6ec9c2208 100644 --- a/src/sftp.js +++ b/src/sftp.js @@ -31,10 +31,8 @@ async function rebuild(serviceConfig, options) { const memory = system.getMemoryAllocation(memoryLimit); const cloudronToken = hat(8 * 128); - const stat = safe.fs.lstatSync(paths.APPS_DATA_DIR); - if (!stat) throw new BoxError(BoxError.FS_ERROR, safe.error); - - const resolvedAppDataDir = stat.isSymbolicLink() ? safe.fs.readlinkSync(paths.APPS_DATA_DIR) : paths.APPS_DATA_DIR; + const resolvedAppDataDir = safe.fs.realpathSync(paths.APPS_DATA_DIR); + if (!resolvedAppDataDir) throw new BoxError(BoxError.FS_ERROR, `Could not resolve apps data dir: ${safe.error.message}`); const dataDirs = [{ hostDir: resolvedAppDataDir, mountDir: '/mnt/appsdata' }]; @@ -68,10 +66,9 @@ async function rebuild(serviceConfig, options) { } // mail data dir - const stat2 = safe.fs.lstatSync(paths.BOX_DATA_DIR); - if (!stat2) throw new BoxError(BoxError.FS_ERROR, `Could not stat mail data dir: ${safe.error.message}`); - const resolvedBoxDataDir = stat2.isSymbolicLink() ? safe.fs.readlinkSync(paths.BOX_DATA_DIR) : paths.BOX_DATA_DIR; - dataDirs.push({ hostDir: path.join(resolvedBoxDataDir, 'mail'), mountDir: '/mnt/maildata' }); + const resolvedMailDataDir = safe.fs.realpathSync(paths.MAIL_DATA_DIR); + if (!resolvedMailDataDir) throw new BoxError(BoxError.FS_ERROR, `Could not resolve mail data dir: ${safe.error.message}`); + dataDirs.push({ hostDir: resolvedMailDataDir, mountDir: '/mnt/maildata' }); const mounts = dataDirs.map(v => `-v "${v.hostDir}:${v.mountDir}"`).join(' '); const cmd = `docker run --restart=always -d --name="sftp" \