extended windows support (users, inetLatency)

This commit is contained in:
Sebastian Hildebrandt
2017-06-19 11:20:15 +02:00
parent a907480ca7
commit 63c7d2be54
5 changed files with 80 additions and 56 deletions
+9 -13
View File
@@ -181,7 +181,7 @@ function getDynamicData(srv, iface, callback) {
// use closure to track ƒ completion
let functionProcessed = (function () {
let totalFunctions = (_windows ? 5 : 14);
let totalFunctions = (_windows ? 7 : 14);
return function () {
if (--totalFunctions === 0) {
@@ -220,12 +220,10 @@ function getDynamicData(srv, iface, callback) {
functionProcessed();
});
if (!_windows) {
users.users().then(res => {
data.users = res;
functionProcessed();
});
}
users.users().then(res => {
data.users = res;
functionProcessed();
});
if (!_windows) {
processes.processes().then(res => {
@@ -296,12 +294,10 @@ function getDynamicData(srv, iface, callback) {
});
}
if (!_windows) {
internet.inetLatency().then(res => {
data.inetLatency = res;
functionProcessed();
});
}
internet.inetLatency().then(res => {
data.inetLatency = res;
functionProcessed();
});
});
});
}
+35 -20
View File
@@ -79,29 +79,44 @@ function inetLatency(host, callback) {
return new Promise((resolve, reject) => {
process.nextTick(() => {
if (_windows) {
let error = new Error(NOT_SUPPORTED);
if (callback) { callback(NOT_SUPPORTED) }
reject(error);
}
let t = Date.now();
let cmd;
if (_linux) {
cmd = "ping -c 2 -w 3 " + host + " | grep rtt | cut -d'/' -f4 | awk '{ print $3 }'";
}
if (_darwin) {
cmd = "ping -c 2 -t 3 " + host + " | grep avg | cut -d'/' -f4 | awk '{ print $3 }'";
}
exec(cmd, function (error, stdout) {
let result = -1;
if (!error) {
result = parseFloat(stdout.toString());
if (_linux || _darwin) {
if (_linux) {
cmd = "ping -c 2 -w 3 " + host + " | grep rtt | cut -d'/' -f4 | awk '{ print $3 }'";
}
if (callback) { callback(result) }
resolve(result);
})
if (_darwin) {
cmd = "ping -c 2 -t 3 " + host + " | grep avg | cut -d'/' -f4 | awk '{ print $3 }'";
}
exec(cmd, function (error, stdout) {
let result = -1;
if (!error) {
result = parseFloat(stdout.toString());
}
if (callback) { callback(result) }
resolve(result);
})
}
if (_windows) {
exec('ping ' + host + ' -n 1', function (error, stdout) {
let result = -1;
if (!error) {
let lines = stdout.toString().split('\r\n');
lines.shift();
lines.forEach(function (line) {
if (line.toLowerCase().startsWith(' min')) {
let l = line.replace(/ +/g, " ").split(' ');
if (l.length > 8) {
result = parseFloat(l[9])
}
}
});
}
if (callback) { callback(result) }
resolve(result);
})
}
});
});
}
+28 -17
View File
@@ -140,12 +140,6 @@ function users(callback) {
return new Promise((resolve, reject) => {
process.nextTick(() => {
if (_windows) {
let error = new Error(NOT_SUPPORTED);
if (callback) { callback(NOT_SUPPORTED) }
reject(error);
}
let result = [];
// linux
@@ -161,12 +155,9 @@ function users(callback) {
// lines / split
lines = stdout.toString().split('\n');
result = parseUsers1(lines);
if (callback) { callback(result) }
resolve(result);
} else {
if (callback) { callback(result) }
resolve(result);
}
if (callback) { callback(result) }
resolve(result);
});
} else {
if (callback) { callback(result) }
@@ -185,13 +176,33 @@ function users(callback) {
// lines / split
let lines = stdout.toString().split('\n');
result = parseUsers2(lines);
if (callback) { callback(result) }
resolve(result);
} else {
if (callback) { callback(result) }
resolve(result);
}
if (callback) { callback(result) }
resolve(result);
});
}
if (_windows) {
exec("query user", function (error, stdout) {
if (stdout) {
// lines / split
let lines = stdout.toString().split('\r\n');
lines.shift();
lines.forEach(function (line) {
let l = line.replace(/ +/g, " ").split(' ');
if (l.length >= 7) {
result.push({
user: l[0].replace(/>/g, " "),
tty: l[1],
date: l[5].substr(6,4) + '-' + l[5].substr(3,2) + '-' + l[5].substr(0,2),
time: l[4],
ip: '',
command: ''
})
}
})
}
if (callback) { callback(result) }
resolve(result);
});
}