UNPKG

domotz-remote-pawn

Version:

Domotz Agent

66 lines (60 loc) 2.04 kB
var nmapVersionStringPattern = 'Nmap'; var libraryStringPattern = 'Compiled with:'; var nmapInfo = {}; var noOutput = {}; var q = require('q'); var childProcess = require('child_process'); const numericRegex = '\\d+\\.\\d+'; function parseStdOut(data) { var libraryString; var libraryName = ''; if (data) { var lines = data.split(/\r?\n/g); var versionStringFilter = lines.filter(function (line) { if (line) { return line.indexOf(nmapVersionStringPattern, 0) === 0; } }); if (versionStringFilter.length > 0) { var versionString = versionStringFilter.toString(); var nmapVersion = versionString.match(numericRegex); nmapInfo.nmap = nmapVersion.toString(); } else { return noOutput; } var libraryStringFilter = lines.filter(function (line) { if (line) { return line.indexOf(libraryStringPattern, 0) === 0; } }); if (libraryStringFilter.length > 0) { libraryString = libraryStringFilter[0].replace(libraryStringPattern, '').trim(); } else { return noOutput; } var library = libraryString.split(' '); library.forEach(function (line) { var libraryVersion = line.split('-').pop(); libraryName = line.substring(0, line.lastIndexOf('-')); if (!line.includes('-')) { nmapInfo[line] = true; } else { nmapInfo[libraryName] = libraryVersion; } }); return nmapInfo; } return noOutput; } function getNmapInformation() { var deferred = q.defer(); childProcess.exec('domotz_nmap --version', function (err, stdout, stderr) { if (err || stderr) { deferred.resolve({}); } else { deferred.resolve(parseStdOut(stdout)); } }); return deferred.promise; } module.exports.getNmapInformation = getNmapInformation;