Added DNS Monitor Type

This commit is contained in:
Ponkhy 2021-08-23 00:05:48 +02:00
parent 2912ca1248
commit c79be19ec3
6 changed files with 204 additions and 2 deletions

View file

@ -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()) {