mirror of
https://github.com/louislam/uptime-kuma.git
synced 2025-07-24 07:21:09 -04:00
Added DNS Monitor Type
This commit is contained in:
parent
2912ca1248
commit
c79be19ec3
6 changed files with 204 additions and 2 deletions
|
@ -7,7 +7,7 @@ dayjs.extend(timezone)
|
|||
const axios = require("axios");
|
||||
const { Prometheus } = require("../prometheus");
|
||||
const { debug, UP, DOWN, PENDING, flipStatus, TimeLogger } = require("../../src/util");
|
||||
const { tcping, ping, checkCertificate, checkStatusCode } = require("../util-server");
|
||||
const { tcping, ping, dnsResolve, checkCertificate, checkStatusCode } = require("../util-server");
|
||||
const { R } = require("redbean-node");
|
||||
const { BeanModel } = require("redbean-node/dist/bean-model");
|
||||
const { Notification } = require("../notification")
|
||||
|
@ -48,6 +48,8 @@ class Monitor extends BeanModel {
|
|||
upsideDown: this.isUpsideDown(),
|
||||
maxredirects: this.maxredirects,
|
||||
accepted_statuscodes: this.getAcceptedStatuscodes(),
|
||||
dns_resolve_type: this.dns_resolve_type,
|
||||
dns_resolve_server: this.dns_resolve_server,
|
||||
notificationIDList,
|
||||
};
|
||||
}
|
||||
|
@ -175,6 +177,44 @@ class Monitor extends BeanModel {
|
|||
bean.ping = await ping(this.hostname);
|
||||
bean.msg = ""
|
||||
bean.status = UP;
|
||||
} else if (this.type === "dns") {
|
||||
let startTime = dayjs().valueOf();
|
||||
|
||||
var dnsRes = await dnsResolve(this.hostname, this.dns_resolve_server, this.dns_resolve_type);
|
||||
|
||||
var dnsMessage = "";
|
||||
|
||||
if (this.dns_resolve_type == 'A' || this.dns_resolve_type == 'AAAA' || this.dns_resolve_type == 'CNAME' || this.dns_resolve_type == 'PTR') {
|
||||
var dnsMessage = dnsRes[0];
|
||||
} else if (this.dns_resolve_type == 'CAA') {
|
||||
var dnsMessage = dnsRes[0].issue;
|
||||
} else if (this.dns_resolve_type == 'MX') {
|
||||
dnsRes.forEach(record => {
|
||||
dnsMessage += `Server: ${record.exchange} - Priority: ${record.priority} | `;
|
||||
});
|
||||
var dnsMessage = dnsMessage.slice(0, -2)
|
||||
} else if (this.dns_resolve_type == 'NS') {
|
||||
dnsRes.forEach(record => {
|
||||
dnsMessage += `Server: ${record} | `;
|
||||
});
|
||||
var dnsMessage = dnsMessage.slice(0, -2)
|
||||
} else if (this.dns_resolve_type == 'SOA') {
|
||||
dnsMessage += `NS-Name: ${dnsRes.nsname} | Hostmaster: ${dnsRes.hostmaster} | Serial: ${dnsRes.serial} | Refresh: ${dnsRes.refresh} | Retry: ${dnsRes.retry} | Expire: ${dnsRes.expire} | MinTTL: ${dnsRes.minttl}`;
|
||||
} else if (this.dns_resolve_type == 'SRV') {
|
||||
dnsRes.forEach(record => {
|
||||
dnsMessage += `Name: ${record.name} | Port: ${record.port} | Priority: ${record.priority} | Weight: ${record.weight} | `;
|
||||
});
|
||||
var dnsMessage = dnsMessage.slice(0, -2)
|
||||
} else if (this.dns_resolve_type == 'TXT') {
|
||||
dnsRes.forEach(record => {
|
||||
dnsMessage += `Record: ${record} | `;
|
||||
});
|
||||
var dnsMessage = dnsMessage.slice(0, -2)
|
||||
}
|
||||
|
||||
bean.msg = dnsMessage;
|
||||
bean.ping = dayjs().valueOf() - startTime;
|
||||
bean.status = UP;
|
||||
}
|
||||
|
||||
if (this.isUpsideDown()) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue