remove apps upload api in favor of sftp container api
This commit is contained in:
-27
@@ -93,7 +93,6 @@ exports = module.exports = {
|
||||
listEventlog,
|
||||
|
||||
downloadFile,
|
||||
uploadFile,
|
||||
|
||||
writeConfig,
|
||||
loadConfig,
|
||||
@@ -2888,32 +2887,6 @@ async function downloadFile(app, filePath) {
|
||||
return { stream: stdoutStream, filename, size };
|
||||
}
|
||||
|
||||
async function uploadFile(app, sourceFilePath, destFilePath) {
|
||||
assert.strictEqual(typeof app, 'object');
|
||||
assert.strictEqual(typeof sourceFilePath, 'string');
|
||||
assert.strictEqual(typeof destFilePath, 'string');
|
||||
|
||||
// the built-in bash printf understands "%q" but not /usr/bin/printf.
|
||||
// ' gets replaced with '\'' . the first closes the quote and last one starts a new one
|
||||
const escapedDestFilePath = await shell.exec('uploadFile', `printf %q '${destFilePath.replace(/'/g, '\'\\\'\'')}'`, { shell: '/bin/bash' });
|
||||
debug(`uploadFile: ${sourceFilePath} -> ${escapedDestFilePath}`);
|
||||
|
||||
const execId = await createExec(app, { cmd: [ 'bash', '-c', `cat - > ${escapedDestFilePath}` ], tty: false });
|
||||
const destStream = await startExec(app, execId, { tty: false });
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
const done = once(error => reject(new BoxError(BoxError.FS_ERROR, error.message)));
|
||||
|
||||
const sourceStream = fs.createReadStream(sourceFilePath);
|
||||
sourceStream.on('error', done);
|
||||
destStream.on('error', done);
|
||||
|
||||
destStream.on('finish', resolve);
|
||||
|
||||
sourceStream.pipe(destStream);
|
||||
});
|
||||
}
|
||||
|
||||
async function writeConfig(app) {
|
||||
assert.strictEqual(typeof app, 'object');
|
||||
|
||||
|
||||
@@ -57,7 +57,6 @@ exports = module.exports = {
|
||||
|
||||
clone,
|
||||
|
||||
uploadFile,
|
||||
downloadFile,
|
||||
|
||||
updateBackup,
|
||||
@@ -930,21 +929,6 @@ async function downloadBackup(req, res, next) {
|
||||
result.stream.pipe(res);
|
||||
}
|
||||
|
||||
async function uploadFile(req, res, next) {
|
||||
assert.strictEqual(typeof req.app, 'object');
|
||||
|
||||
if (typeof req.query.file !== 'string' || !req.query.file) return next(new HttpError(400, 'file query argument must be provided'));
|
||||
if (!req.files.file) return next(new HttpError(400, 'file must be provided as multipart'));
|
||||
|
||||
req.clearTimeout();
|
||||
|
||||
const [error] = await safe(apps.uploadFile(req.app, req.files.file.path, req.query.file));
|
||||
safe.fs.unlinkSync(req.files.file.path);
|
||||
|
||||
if (error) return next(BoxError.toHttpError(error));
|
||||
next(new HttpSuccess(202, {}));
|
||||
}
|
||||
|
||||
async function downloadFile(req, res, next) {
|
||||
assert.strictEqual(typeof req.app, 'object');
|
||||
|
||||
|
||||
@@ -283,7 +283,6 @@ async function initializeExpressSync() {
|
||||
router.get ('/api/v1/apps/:id/graphs', token, routes.apps.load, authorizeOperator, routes.apps.getGraphs);
|
||||
router.post('/api/v1/apps/:id/clone', json, token, routes.apps.load, authorizeAdmin, routes.apps.clone);
|
||||
router.get ('/api/v1/apps/:id/download', token, routes.apps.load, authorizeOperator, routes.apps.downloadFile);
|
||||
router.post('/api/v1/apps/:id/upload', json, token, multipart, routes.apps.load, authorizeOperator, routes.apps.uploadFile);
|
||||
router.use ('/api/v1/apps/:id/files/*', token, routes.apps.load, authorizeOperator, routes.filemanager.proxy('app'));
|
||||
router.post('/api/v1/apps/:id/exec', json, token, routes.apps.load, authorizeOperator, routes.apps.createExec);
|
||||
router.get ('/api/v1/apps/:id/exec/:execId/start', token, routes.apps.load, authorizeOperator, routes.apps.startExec);
|
||||
|
||||
Reference in New Issue
Block a user