Исправление бага - падение сервера при распаковке битых архивов

This commit is contained in:
Book Pauk
2019-06-04 17:35:32 +07:00
parent 2c4ff856cd
commit 31afce8304
5 changed files with 143 additions and 87 deletions

View File

@@ -2,9 +2,9 @@ const fs = require('fs-extra');
const zlib = require('zlib');
const crypto = require('crypto');
const path = require('path');
const extractZip = require('extract-zip');
const unbzip2Stream = require('unbzip2-stream');
const tar = require('tar-fs')
const tar = require('tar-fs');
const DecompressZip = require('decompress-zip');
const utils = require('./utils');
const FileDetector = require('./FileDetector');
@@ -114,16 +114,24 @@ class FileDecompressor {
async unZip(filename, outputDir) {
return new Promise((resolve, reject) => {
const files = [];
extractZip(filename, {
dir: outputDir,
onEntry: (entry) => {
files.push({path: entry.fileName, size: entry.uncompressedSize});
}
}, (err) => {
if (err)
reject(err);
const unzipper = new DecompressZip(filename);
unzipper.on('error', function(err) {
reject(err);
});
unzipper.on('extract', function() {
resolve(files);
});
unzipper.extract({
path: outputDir,
filter: function(file) {
if (file.type == 'File')
files.push({path: file.path, size: file.uncompressedSize});
return true;
}
});
});
}
@@ -184,6 +192,10 @@ class FileDecompressor {
resolve([file]);
});
stream.on('error', (err) => {
reject(err);
});
inputStream.on('error', (err) => {
reject(err);
});