2015-07-09 23:01:43 +01:00
|
|
|
import virustotal from 'virustotal.js';
|
|
|
|
|
2015-08-30 18:35:05 +02:00
|
|
|
virustotal.setKey(process.env.VIRUSTOTAL_KEY);
|
2015-07-09 23:01:43 +01:00
|
|
|
|
|
|
|
const extensions = ['EXE', 'PIF', 'APPLICATION', 'GADGET', 'MSI', 'MSP', 'COM', 'SCR', 'HTA', 'CPL', 'MSC',
|
|
|
|
'JAR', 'BAT', 'CMD', 'VB', 'VBS', 'VBE', 'JS', 'JSE', 'WS', 'WSF', 'WSC', 'WSH', 'PS1', 'PS1XML', 'PS2',
|
|
|
|
'PS2XML', 'PSC1', 'PSC2', 'MSH', 'MSH1', 'MSH2', 'MSHXML', 'MSH1XML', 'MSH2XML', 'SCF', 'LNK', 'INF', 'REG',
|
|
|
|
'PDF', 'DOC', 'XLS', 'PPT', 'DOCM', 'DOTM', 'XLSM', 'XLTM', 'XLAM', 'PPTM', 'POTM', 'PPAM', 'PPSM', 'SLDM',
|
2015-08-23 22:12:32 +01:00
|
|
|
'RAR', 'TAR', 'ZIP', 'GZ',
|
2015-07-09 23:01:43 +01:00
|
|
|
];
|
|
|
|
|
|
|
|
function getExtension(filename) {
|
|
|
|
const i = filename.lastIndexOf('.');
|
|
|
|
return (i < 0) ? '' : filename.substr(i + 1);
|
2015-08-23 22:12:32 +01:00
|
|
|
}
|
2015-07-09 23:01:43 +01:00
|
|
|
|
2015-08-23 22:12:32 +01:00
|
|
|
export default function(file) {
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
if (extensions.indexOf(getExtension(file.file_name.toUpperCase())) >= 0) {
|
|
|
|
virustotal.getFileReport(file.md5, (err, res) => {
|
|
|
|
if (err) {
|
|
|
|
return reject(err);
|
|
|
|
}
|
|
|
|
if (res.scans) {
|
|
|
|
resolve({positive: res.positives >= 5, result: res});
|
|
|
|
} else {
|
|
|
|
resolve();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
resolve();
|
|
|
|
}
|
2015-07-09 23:01:43 +01:00
|
|
|
});
|
2015-08-23 22:12:32 +01:00
|
|
|
}
|