Skip to content

Commit 0ce2ebb

Browse files
mixelburgautofix-ci[bot]CommanderStorm
authored
feat(dns): add configurable timeout for DNS monitor (louislam#6990)
Co-authored-by: Maks Pikov <mixelburg@users.noreply.github.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: Frank Elsinga <frank@elsinga.de>
1 parent bd68103 commit 0ce2ebb

File tree

2 files changed

+11
-3
lines changed

2 files changed

+11
-3
lines changed

server/monitor-types/dns.js

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,13 @@ class DnsMonitorType extends MonitorType {
2424
let dnsMessage = "";
2525

2626
const resolverServers = await this.resolveDnsResolverServers(monitor.dns_resolve_server);
27-
let dnsRes = await this.dnsResolve(monitor.hostname, resolverServers, monitor.port, monitor.dns_resolve_type);
27+
let dnsRes = await this.dnsResolve(
28+
monitor.hostname,
29+
resolverServers,
30+
monitor.port,
31+
monitor.dns_resolve_type,
32+
monitor.timeout != null ? monitor.timeout * 1000 : 5000
33+
);
2834
heartbeat.ping = dayjs().valueOf() - startTime;
2935

3036
const conditions = ConditionExpressionGroup.fromMonitor(monitor);
@@ -169,10 +175,11 @@ class DnsMonitorType extends MonitorType {
169175
* @param {string[]} resolverServer Array of DNS server IP addresses to use
170176
* @param {string} resolverPort Port the DNS server is listening on
171177
* @param {string} rrtype The type of record to request
178+
* @param {number} timeout Timeout in milliseconds for the DNS query (defaults to c-ares default of 5000ms)
172179
* @returns {Promise<(string[] | object[] | object)>} DNS response
173180
*/
174-
async dnsResolve(hostname, resolverServer, resolverPort, rrtype) {
175-
const resolver = new Resolver();
181+
async dnsResolve(hostname, resolverServer, resolverPort, rrtype, timeout = 5000) {
182+
const resolver = new Resolver({ timeout });
176183
resolver.setServers(resolverServer.map((server) => `[${server}]:${resolverPort}`));
177184
if (rrtype === "PTR") {
178185
return await resolver.reverse(hostname);

src/pages/EditMonitor.vue

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1430,6 +1430,7 @@
14301430
<!-- Timeout: HTTP / JSON query / Keyword / Ping / RabbitMQ / SNMP / Websocket Upgrade only -->
14311431
<div
14321432
v-if="
1433+
monitor.type === 'dns' ||
14331434
monitor.type === 'http' ||
14341435
monitor.type === 'json-query' ||
14351436
monitor.type === 'keyword' ||

0 commit comments

Comments
 (0)