mirror of
https://github.com/louislam/uptime-kuma.git
synced 2024-11-27 16:54:04 +00:00
retry ping domain with ipv6, if domain is not found
This commit is contained in:
parent
2a4695a774
commit
4d4d504d6e
2 changed files with 23 additions and 8 deletions
|
@ -30,7 +30,7 @@ function Ping(host, options) {
|
||||||
|
|
||||||
const defaultArgs = [ "-n", "-w", "2", "-c", "1", host ];
|
const defaultArgs = [ "-n", "-w", "2", "-c", "1", host ];
|
||||||
|
|
||||||
if (net.isIPv6(host)) {
|
if (net.isIPv6(host) || options.ipv6) {
|
||||||
defaultArgs.unshift("-6");
|
defaultArgs.unshift("-6");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -115,7 +115,7 @@ Ping.prototype.send = function(callback) {
|
||||||
ms = stdout.match(self._regmatch); // parse out the ##ms response
|
ms = stdout.match(self._regmatch); // parse out the ##ms response
|
||||||
ms = (ms && ms[1]) ? Number(ms[1]) : ms;
|
ms = (ms && ms[1]) ? Number(ms[1]) : ms;
|
||||||
|
|
||||||
callback(null, ms);
|
callback(null, ms, stdout);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -45,15 +45,30 @@ exports.tcping = function (hostname, port) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
exports.ping = function (hostname) {
|
exports.ping = async (hostname) => {
|
||||||
return new Promise((resolve, reject) => {
|
try {
|
||||||
const ping = new Ping(hostname);
|
await exports.pingAsync(hostname);
|
||||||
|
} catch (e) {
|
||||||
|
// If the host cannot be resolved, try again with ipv6
|
||||||
|
if (e.message.includes("service not known")) {
|
||||||
|
await exports.pingAsync(hostname, true);
|
||||||
|
} else {
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ping.send(function (err, ms) {
|
exports.pingAsync = function (hostname, ipv6 = false) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
const ping = new Ping(hostname, {
|
||||||
|
ipv6
|
||||||
|
});
|
||||||
|
|
||||||
|
ping.send(function (err, ms, stdout) {
|
||||||
if (err) {
|
if (err) {
|
||||||
reject(err)
|
reject(err);
|
||||||
} else if (ms === null) {
|
} else if (ms === null) {
|
||||||
reject(new Error("timeout"))
|
reject(new Error(stdout))
|
||||||
} else {
|
} else {
|
||||||
resolve(Math.round(ms))
|
resolve(Math.round(ms))
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue