Files
PasswordManager/node_modules/tedious/lib/sender.js

78 lines
9.9 KiB
JavaScript
Raw Normal View History

2025-11-12 10:13:24 -05:00
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.sendInParallel = sendInParallel;
exports.sendMessage = sendMessage;
var _dgram = _interopRequireDefault(require("dgram"));
var _net = _interopRequireDefault(require("net"));
var _nodeUrl = _interopRequireDefault(require("node:url"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
async function sendInParallel(addresses, port, request, signal) {
signal.throwIfAborted();
return await new Promise((resolve, reject) => {
const sockets = [];
let errorCount = 0;
const onError = err => {
errorCount++;
if (errorCount === addresses.length) {
signal.removeEventListener('abort', onAbort);
clearSockets();
reject(err);
}
};
const onMessage = message => {
signal.removeEventListener('abort', onAbort);
clearSockets();
resolve(message);
};
const onAbort = () => {
clearSockets();
reject(signal.reason);
};
const clearSockets = () => {
for (const socket of sockets) {
socket.removeListener('error', onError);
socket.removeListener('message', onMessage);
socket.close();
}
};
signal.addEventListener('abort', onAbort, {
once: true
});
for (let j = 0; j < addresses.length; j++) {
const udpType = addresses[j].family === 6 ? 'udp6' : 'udp4';
const socket = _dgram.default.createSocket(udpType);
sockets.push(socket);
socket.on('error', onError);
socket.on('message', onMessage);
socket.send(request, 0, request.length, port, addresses[j].address);
}
});
}
async function sendMessage(host, port, lookup, signal, request) {
signal.throwIfAborted();
let addresses;
if (_net.default.isIP(host)) {
addresses = [{
address: host,
family: _net.default.isIPv6(host) ? 6 : 4
}];
} else {
addresses = await new Promise((resolve, reject) => {
const onAbort = () => {
reject(signal.reason);
};
const domainInASCII = _nodeUrl.default.domainToASCII(host);
lookup(domainInASCII === '' ? host : domainInASCII, {
all: true
}, (err, addresses) => {
signal.removeEventListener('abort', onAbort);
err ? reject(err) : resolve(addresses);
});
});
}
return await sendInParallel(addresses, port, request, signal);
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGdyYW0iLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9uZXQiLCJfbm9kZVVybCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0Iiwic2VuZEluUGFyYWxsZWwiLCJhZGRyZXNzZXMiLCJwb3J0IiwicmVxdWVzdCIsInNpZ25hbCIsInRocm93SWZBYm9ydGVkIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJzb2NrZXRzIiwiZXJyb3JDb3VudCIsIm9uRXJyb3IiLCJlcnIiLCJsZW5ndGgiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwib25BYm9ydCIsImNsZWFyU29ja2V0cyIsIm9uTWVzc2FnZSIsIm1lc3NhZ2UiLCJyZWFzb24iLCJzb2NrZXQiLCJyZW1vdmVMaXN0ZW5lciIsImNsb3NlIiwiYWRkRXZlbnRMaXN0ZW5lciIsIm9uY2UiLCJqIiwidWRwVHlwZSIsImZhbWlseSIsImRncmFtIiwiY3JlYXRlU29ja2V0IiwicHVzaCIsIm9uIiwic2VuZCIsImFkZHJlc3MiLCJzZW5kTWVzc2FnZSIsImhvc3QiLCJsb29rdXAiLCJuZXQiLCJpc0lQIiwiaXNJUHY2IiwiZG9tYWluSW5BU0NJSSIsInVybCIsImRvbWFpblRvQVNDSUkiLCJhbGwiXSwic291cmNlcyI6WyIuLi9zcmMvc2VuZGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkZ3JhbSBmcm9tICdkZ3JhbSc7XG5pbXBvcnQgZG5zIGZyb20gJ2Rucyc7XG5pbXBvcnQgbmV0IGZyb20gJ25ldCc7XG5pbXBvcnQgdXJsIGZyb20gJ25vZGU6dXJsJztcblxudHlwZSBMb29rdXBGdW5jdGlvbiA9IChob3N0bmFtZTogc3RyaW5nLCBvcHRpb25zOiBkbnMuTG9va3VwQWxsT3B0aW9ucywgY2FsbGJhY2s6IChlcnI6IE5vZGVKUy5FcnJub0V4Y2VwdGlvbiB8IG51bGwsIGFkZHJlc3NlczogZG5zLkxvb2t1cEFkZHJlc3NbXSkgPT4gdm9pZCkgPT4gdm9pZDtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlbmRJblBhcmFsbGVsKGFkZHJlc3NlczogZG5zLkxvb2t1cEFkZHJlc3NbXSwgcG9ydDogbnVtYmVyLCByZXF1ZXN0OiBCdWZmZXIsIHNpZ25hbDogQWJvcnRTaWduYWwpIHtcbiAgc2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG5cbiAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlPEJ1ZmZlcj4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHNvY2tldHM6IGRncmFtLlNvY2tldFtdID0gW107XG5cbiAgICBsZXQgZXJyb3JDb3VudCA9IDA7XG5cbiAgICBjb25zdCBvbkVycm9yID0gKGVycjogRXJyb3IpID0+IHtcbiAgICAgIGVycm9yQ291bnQrKztcblxuICAgICAgaWYgKGVycm9yQ291bnQgPT09IGFkZHJlc3Nlcy5sZW5ndGgpIHtcbiAgICAgICAgc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgb25BYm9ydCk7XG4gICAgICAgIGNsZWFyU29ja2V0cygpO1xuXG4gICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBvbk1lc3NhZ2UgPSAobWVzc2FnZTogQnVmZmVyKSA9PiB7XG4gICAgICBzaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBvbkFib3J0KTtcbiAgICAgIGNsZWFyU29ja2V0cygpO1xuXG4gICAgICByZXNvbHZlKG1lc3NhZ2UpO1xuICAgIH07XG5cbiAgICBjb25zdCBvbkFib3J0ID0gKCkgPT4ge1xuICAgICAgY2xlYXJTb2NrZXRzKCk7XG5cbiAgICAgIHJlamVjdChzaWduYWwucmVhc29uKTtcbiAgICB9O1xuXG4gICAgY29uc3QgY2xlYXJTb2NrZXRzID0gKCkgPT4ge1xuICAgICAgZm9yIChjb25zdCBzb2NrZXQgb2Ygc29ja2V0cykge1xuICAgICAgICBzb2NrZXQucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgb25FcnJvcik7XG4gICAgICAgIHNvY2tldC5yZW1vdmVMaXN0ZW5lcignbWVzc2FnZScsIG9uTWVzc2FnZSk7XG4gICAgICAgIHNvY2tldC5jbG9zZSgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBzaWduYWwuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBvbkFib3J0LCB7IG9uY2U6IHRydWUgfSk7XG5cbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IGFkZHJlc3Nlcy5sZW5ndGg7IGorKykge1xuICAgICAgY29uc3QgdWRwVHlwZSA9IGFkZHJlc3Nlc1tqXS5mYW1pbHkgPT09IDYgPyAndWRwNicgOiAndWRwNCc7XG5cbiAgICAgIGNvbnN0IHNvY2tldCA9IGRncmFtLmNyZWF0ZVNvY2tldCh1ZHBUeXBlKTtcbiAgICAgIHNvY2tldHMucHVzaChzb2NrZXQpO1xuICAgICAgc29ja2V0Lm9uKCdlcnJvcicsIG9uRXJyb3IpO1xuICAgICAgc29ja2V0Lm9uKCdtZXNzYWdlJywgb25NZXNzYWdlKTtcbiAgICAgIHNvY2tldC5zZW5kKHJlcXVlc3QsIDAsIHJlcXVlc3QubGVuZ3RoLCBwb3J0LCBhZGRyZXNzZXNbal0uYWRkcmVzcyk7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlbmRNZXNzYWdlKGhvc3Q6IHN0cmluZywgcG9ydDogbnVtYmVyLCBsb29rdXA6IExvb2t1cEZ1bmN0aW9uLCBzaWduYWw6IEFib3J0U2lnbmFsLCByZXF1ZXN0OiBCdWZmZXIpIHtcbiAgc2lnbmFsLnRocm93SWZBYm9ydGVkKCk7XG5cbiAgbGV0IGFkZHJlc3NlczogZG5zLkxvb2t1cEFkZHJlc3NbXTtcblxuICBpZiAobmV0LmlzSVAoaG9zdCkpIHtcbiAgICBhZGRyZXNzZXMgPSBbXG4gICAgICB7IGFkZHJlc3M6IGhvc3QsIGZhbWlseTogbmV0LmlzSVB2Nihob3N0KSA/IDYgOiA0IH1cbiAgICBdO1xuICB9IGVsc2Uge1xuICAgIGFkZHJlc3NlcyA9IGF3YWl0IG5ldyBQcm9taXNlPGRucy5Mb29rdXBBZGRyZXNzW10+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IG9uQWJvcnQgPSAoKSA9PiB7XG4gICAgICAgIHJlamVjdChzaWduYWwucmVhc29uKTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGRvbWFpbkluQVNDSUkgPSB1cmwuZG9tYWluVG9BU0NJSShob3N0KTtcbiAgICAgIGxvb2t1cChkb21haW5JbkFTQ0lJID09PSAnJyA/IGhvc3QgOiBkb21haW5JbkFTQ0lJLCB7IGFsbDogdHJ1ZSB9LCAoZXJyLCBhZGRyZXNzZXMpID0+IHtcbiAgICAgICAgc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgb25BYm9ydCk7XG5cbiAgICAgICAgZXJyID8gcmV