users tty improvement (windows)
This commit is contained in:
parent
1aed87d72e
commit
d760a2ccec
85
lib/users.js
85
lib/users.js
@ -176,44 +176,6 @@ function parseUsersDarwin(lines) {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
// function parseUsersWin(lines, culture) {
|
|
||||||
|
|
||||||
// let result = [];
|
|
||||||
// const header = lines[0];
|
|
||||||
// const headerDelimiter = [];
|
|
||||||
// if (header) {
|
|
||||||
// const start = (header[0] === ' ') ? 1 : 0;
|
|
||||||
// headerDelimiter.push(start - 1);
|
|
||||||
// let nextSpace = 0;
|
|
||||||
// for (let i = start + 1; i < header.length; i++) {
|
|
||||||
// if (header[i] === ' ' && ((header[i - 1] === ' ') || (header[i - 1] === '.'))) {
|
|
||||||
// nextSpace = i;
|
|
||||||
// } else {
|
|
||||||
// if (nextSpace) {
|
|
||||||
// headerDelimiter.push(nextSpace);
|
|
||||||
// nextSpace = 0;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// for (let i = 1; i < lines.length; i++) {
|
|
||||||
// if (lines[i].trim()) {
|
|
||||||
// const user = lines[i].substring(headerDelimiter[0] + 1, headerDelimiter[1]).trim() || '';
|
|
||||||
// const tty = lines[i].substring(headerDelimiter[1] + 1, headerDelimiter[2] - 2).trim() || '';
|
|
||||||
// const dateTime = util.parseDateTime(lines[i].substring(headerDelimiter[5] + 1, 2000).trim(), culture) || '';
|
|
||||||
// result.push({
|
|
||||||
// user: user,
|
|
||||||
// tty: tty,
|
|
||||||
// date: dateTime.date,
|
|
||||||
// time: dateTime.time,
|
|
||||||
// ip: '',
|
|
||||||
// command: ''
|
|
||||||
// });
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// return result;
|
|
||||||
// }
|
|
||||||
|
|
||||||
function users(callback) {
|
function users(callback) {
|
||||||
|
|
||||||
return new Promise((resolve) => {
|
return new Promise((resolve) => {
|
||||||
@ -293,7 +255,8 @@ function users(callback) {
|
|||||||
// ).then(data => {
|
// ).then(data => {
|
||||||
let cmd = 'Get-WmiObject Win32_LogonSession | fl *' + '; echo \'#-#-#-#\';';
|
let cmd = 'Get-WmiObject Win32_LogonSession | fl *' + '; echo \'#-#-#-#\';';
|
||||||
cmd += 'Get-WmiObject Win32_LoggedOnUser | fl *' + '; echo \'#-#-#-#\';';
|
cmd += 'Get-WmiObject Win32_LoggedOnUser | fl *' + '; echo \'#-#-#-#\';';
|
||||||
cmd += 'Get-WmiObject Win32_Process -Filter "name=\'explorer.exe\'" | Select @{Name="sessionid";Expression={$_.SessionId}}, @{Name="domain";Expression={$_.GetOwner().Domain}}, @{Name="username";Expression={$_.GetOwner().User}} | fl';
|
cmd += 'Get-WmiObject Win32_Process -Filter "name=\'explorer.exe\'" | Select @{Name="sessionid";Expression={$_.SessionId}}, @{Name="domain";Expression={$_.GetOwner().Domain}}, @{Name="username";Expression={$_.GetOwner().User}} | fl' + '; echo \'#-#-#-#\';';
|
||||||
|
cmd += 'query user';
|
||||||
util.powerShell(cmd).then(data => {
|
util.powerShell(cmd).then(data => {
|
||||||
// controller + vram
|
// controller + vram
|
||||||
// let accounts = parseWinAccounts(data[0].split(/\n\s*\n/));
|
// let accounts = parseWinAccounts(data[0].split(/\n\s*\n/));
|
||||||
@ -301,7 +264,8 @@ function users(callback) {
|
|||||||
data = data.split('#-#-#-#');
|
data = data.split('#-#-#-#');
|
||||||
let sessions = parseWinSessions(data[0].split(/\n\s*\n/));
|
let sessions = parseWinSessions(data[0].split(/\n\s*\n/));
|
||||||
let loggedons = parseWinLoggedOn(data[1].split(/\n\s*\n/));
|
let loggedons = parseWinLoggedOn(data[1].split(/\n\s*\n/));
|
||||||
let users = parseWinUsers(data[2].split(/\n\s*\n/));
|
let queryUser = parseWinUsersQuery(data[3].split('\r\n'));
|
||||||
|
let users = parseWinUsers(data[2].split(/\n\s*\n/), queryUser);
|
||||||
for (let id in loggedons) {
|
for (let id in loggedons) {
|
||||||
if ({}.hasOwnProperty.call(loggedons, id)) {
|
if ({}.hasOwnProperty.call(loggedons, id)) {
|
||||||
loggedons[id].dateTime = {}.hasOwnProperty.call(sessions, id) ? sessions[id] : '';
|
loggedons[id].dateTime = {}.hasOwnProperty.call(sessions, id) ? sessions[id] : '';
|
||||||
@ -380,7 +344,7 @@ function parseWinSessions(sessionParts) {
|
|||||||
return sessions;
|
return sessions;
|
||||||
}
|
}
|
||||||
|
|
||||||
function parseWinUsers(userParts) {
|
function parseWinUsers(userParts, userQuery) {
|
||||||
const users = [];
|
const users = [];
|
||||||
userParts.forEach(user => {
|
userParts.forEach(user => {
|
||||||
const lines = user.split('\r\n');
|
const lines = user.split('\r\n');
|
||||||
@ -388,12 +352,13 @@ function parseWinUsers(userParts) {
|
|||||||
const domain = util.getValue(lines, 'domain', ':', true);
|
const domain = util.getValue(lines, 'domain', ':', true);
|
||||||
const username = util.getValue(lines, 'username', ':', true);
|
const username = util.getValue(lines, 'username', ':', true);
|
||||||
const sessionid = util.getValue(lines, 'sessionid', ':', true);
|
const sessionid = util.getValue(lines, 'sessionid', ':', true);
|
||||||
|
|
||||||
if (username) {
|
if (username) {
|
||||||
|
const quser = userQuery.filter(item => item.user === username);
|
||||||
users.push({
|
users.push({
|
||||||
domain,
|
domain,
|
||||||
user: username,
|
user: username,
|
||||||
tty: sessionid
|
tty: quser && quser[0] && quser[0].tty ? quser[0].tty : sessionid
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -424,4 +389,38 @@ function parseWinLoggedOn(loggedonParts) {
|
|||||||
return loggedons;
|
return loggedons;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function parseWinUsersQuery(lines) {
|
||||||
|
|
||||||
|
let result = [];
|
||||||
|
const header = lines[0];
|
||||||
|
const headerDelimiter = [];
|
||||||
|
if (header) {
|
||||||
|
const start = (header[0] === ' ') ? 1 : 0;
|
||||||
|
headerDelimiter.push(start - 1);
|
||||||
|
let nextSpace = 0;
|
||||||
|
for (let i = start + 1; i < header.length; i++) {
|
||||||
|
if (header[i] === ' ' && ((header[i - 1] === ' ') || (header[i - 1] === '.'))) {
|
||||||
|
nextSpace = i;
|
||||||
|
} else {
|
||||||
|
if (nextSpace) {
|
||||||
|
headerDelimiter.push(nextSpace);
|
||||||
|
nextSpace = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (let i = 1; i < lines.length; i++) {
|
||||||
|
if (lines[i].trim()) {
|
||||||
|
const user = lines[i].substring(headerDelimiter[0] + 1, headerDelimiter[1]).trim() || '';
|
||||||
|
const tty = lines[i].substring(headerDelimiter[1] + 1, headerDelimiter[2] - 2).trim() || '';
|
||||||
|
// const dateTime = util.parseDateTime(lines[i].substring(headerDelimiter[5] + 1, 2000).trim(), culture) || '';
|
||||||
|
result.push({
|
||||||
|
user: user,
|
||||||
|
tty: tty,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
exports.users = users;
|
exports.users = users;
|
||||||
|
|||||||
@ -5,7 +5,7 @@ const testWithTimeout = async (fn) => {
|
|||||||
(async () => {
|
(async () => {
|
||||||
const timeout = setTimeout(() => {
|
const timeout = setTimeout(() => {
|
||||||
reject('Test Timeout');
|
reject('Test Timeout');
|
||||||
}, 60000);
|
}, 80000);
|
||||||
const result = await fn();
|
const result = await fn();
|
||||||
clearTimeout(timeout);
|
clearTimeout(timeout);
|
||||||
return resolve(result);
|
return resolve(result);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user