-
Notifications
You must be signed in to change notification settings - Fork 0
/
dnsquery.js
55 lines (42 loc) · 1.63 KB
/
dnsquery.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
//2020-07-25 dnsquery jorge@jorgechamorro.com
//2021-10-14 v1.0.7
module.exports= function(RED) {
"use strict";
var dns= require("dns");
function dnsquery (config) {
RED.nodes.createNode(this, config);
var node= this;
node.domain_name = config.domain_name || "";
node.record_type = config.record_type || "A";
node.dns_ip = config.dns_ip || dns.getServers()[0];
node.on('input', function (msg) {
var payload = msg.payload;
var dns_ip = node.dns_ip;
var domain = node.domain_name;
var record_type = node.record_type;
//msg.payload overrides?
//Si msg.payload contiene domain_name se usa msg.payload.domain_name
//Si no, se usa config.domain_name
//Idem para record_type
//Idem para dns_ip
if (typeof payload === "object") {
if (payload.dns_ip) dns_ip = payload.dns_ip;
if (payload.domain_name) domain = payload.domain_name;
if (payload.record_type) record_type = payload.record_type;
}
if (dns_ip !== dns.getServers()[0]) dns.setServers([ dns_ip ]);
dns.resolve(domain, record_type, function cb (err, o) {
msg.payload= {
ok:(!err),
error:err,
dns_ip: dns_ip,
type:record_type,
domain:domain,
answer:o
};
node.send(msg, false);
});
});
}
RED.nodes.registerType("dnsquery", dnsquery);
};