neoss
Version:
<div align="center"> <h1>neoss</h1> <i>Socket statistics, with a UI.</i> </div> <p align="center"> <a href="https://img.shields.io/github/v/release/pablolec/neoss" target="_blank"> <img src="https://img.shields.io/github/v/release/pablolec/neo
80 lines (79 loc) • 3.41 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getStats = getStats;
const dns_1 = require("dns");
const screen_1 = require("../ui/screen");
const sockets_1 = require("./sockets");
const users_1 = require("./users");
const helper_1 = require("./helper");
const popups_1 = require("../ui/popups");
let usedSockets;
let socketList = [];
function getStats() {
return __awaiter(this, void 0, void 0, function* () {
let socketListPromise = (0, sockets_1.getSockets)();
let usedSocketsPromise = (0, users_1.getUsedSockets)();
let usersPromises = [];
(0, popups_1.loadingPopup)();
yield Promise.all([socketListPromise, usedSocketsPromise]).then(function ([socketListResult, usedSocketsResult]) {
usedSockets = usedSocketsResult;
let i = 0;
for (let socket in socketListResult) {
socketList[i] = socketListResult[socket];
if (socket in usedSockets) {
usersPromises.push(parseUsersData(socket, i));
}
else {
socketList[i].users.text = "/";
}
i++;
}
});
yield Promise.all(usersPromises);
(0, screen_1.setData)((0, helper_1.sortBy)(null, socketList));
(0, popups_1.removePopup)();
yield reverseNSLookup();
});
}
function parseUsersData(socket, i) {
return __awaiter(this, void 0, void 0, function* () {
for (let j = 0; j < usedSockets[socket].length; j++) {
socketList[i].users[j] = {};
socketList[i].users[j].pid = usedSockets[socketList[i].inode][j];
let userData = yield (0, users_1.getUserData)(socketList[i].users[j].pid);
socketList[i].users[j].name = userData[0];
socketList[i].users[j].owner = userData[1];
socketList[i].users[j].cmdline = userData[2];
}
if (usedSockets[socketList[i].inode].length == 1) {
socketList[i].users.text = socketList[i].users[0].name;
}
else {
socketList[i].users.text = usedSockets[socketList[i].inode].length + " users";
}
});
}
function reverseNSLookup() {
return __awaiter(this, void 0, void 0, function* () {
for (const element of socketList) {
(0, dns_1.reverse)(element.peerAddress, (err, result) => {
if (!err) {
if (result.length == 0 || result[0].length == 0) {
return;
}
element.peerAddress = result[0];
(0, screen_1.refreshScreen)();
}
});
}
});
}