diff --git a/lib/users.js b/lib/users.js index bc66df4..f0e519c 100644 --- a/lib/users.js +++ b/lib/users.js @@ -344,6 +344,21 @@ function parseWinSessions(sessionParts) { return sessions; } +function fuzzyMatch(name1, name2) { + name1 = name1.toLowerCase(); + name2 = name2.toLowerCase(); + let eq = 0; + let len = name1.length; + if (name2.length > len) { len = name1.length; } + + for (let i = 0; i < len; i++) { + const c1 = name1[i] || ''; + const c2 = name2[i] || ''; + if (c1 === c2) { eq++; } + } + return (len > 10 ? eq / len > 0.9 : (len > 0 ? eq / len > 0.8 : false)); +} + function parseWinUsers(userParts, userQuery) { const users = []; userParts.forEach(user => { @@ -354,7 +369,7 @@ function parseWinUsers(userParts, userQuery) { const sessionid = util.getValue(lines, 'sessionid', ':', true); if (username) { - const quser = userQuery.filter(item => item.user === username); + const quser = userQuery.filter(item => fuzzyMatch(item.user, username)); users.push({ domain, user: username, @@ -390,7 +405,7 @@ function parseWinLoggedOn(loggedonParts) { } function parseWinUsersQuery(lines) { - + lines = lines.filter(item => item); let result = []; const header = lines[0]; const headerDelimiter = [];