use realpath to resolve links

This commit is contained in:
Girish Ramakrishnan
2021-09-26 18:36:33 -07:00
parent 9584990d7a
commit 90482f0263

View File

@@ -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" \