use realpath to resolve links
This commit is contained in:
13
src/sftp.js
13
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" \
|
||||
|
||||
Reference in New Issue
Block a user