n8n-nodes-dns 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +186 -0
- package/dist/coverage/lcov-report/favicon.png +0 -0
- package/dist/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/dist/package.json +97 -0
- package/dist/src/credentials/DnsServerApi.credentials.d.ts +7 -0
- package/dist/src/credentials/DnsServerApi.credentials.js +30 -0
- package/dist/src/credentials/DnsServerApi.credentials.js.map +1 -0
- package/dist/src/credentials/dnsServerApi.svg +4 -0
- package/dist/src/nodes/DnsLookup/DnsLookup.node.d.ts +16 -0
- package/dist/src/nodes/DnsLookup/DnsLookup.node.js +222 -0
- package/dist/src/nodes/DnsLookup/DnsLookup.node.js.map +1 -0
- package/dist/src/nodes/DnsLookup/DnsLookup.node.json +33 -0
- package/dist/src/nodes/DnsLookup/dnsLookup.svg +4 -0
- package/dist/src/nodes/DnsWatch/DnsWatch.node.d.ts +15 -0
- package/dist/src/nodes/DnsWatch/DnsWatch.node.js +247 -0
- package/dist/src/nodes/DnsWatch/DnsWatch.node.js.map +1 -0
- package/dist/src/nodes/DnsWatch/DnsWatch.node.json +26 -0
- package/dist/src/nodes/DnsWatch/dnsWatch.svg +4 -0
- package/dist/src/nodes/shared/dns-node-helpers.d.ts +43 -0
- package/dist/src/nodes/shared/dns-node-helpers.js +133 -0
- package/dist/src/nodes/shared/dns-node-helpers.js.map +1 -0
- package/dist/src/nodes/shared/dns-node-properties.d.ts +6 -0
- package/dist/src/nodes/shared/dns-node-properties.js +139 -0
- package/dist/src/nodes/shared/dns-node-properties.js.map +1 -0
- package/dist/src/transport/dns-client.d.ts +22 -0
- package/dist/src/transport/dns-client.js +168 -0
- package/dist/src/transport/dns-client.js.map +1 -0
- package/dist/src/transport/dns-packet.d.ts +49 -0
- package/dist/src/transport/dns-packet.js +178 -0
- package/dist/src/transport/dns-packet.js.map +1 -0
- package/dist/src/transport/dns-resolvers.d.ts +18 -0
- package/dist/src/transport/dns-resolvers.js +132 -0
- package/dist/src/transport/dns-resolvers.js.map +1 -0
- package/dist/src/transport/index.d.ts +6 -0
- package/dist/src/transport/index.js +21 -0
- package/dist/src/transport/index.js.map +1 -0
- package/dist/src/utils/authoritative-discovery.d.ts +9 -0
- package/dist/src/utils/authoritative-discovery.js +77 -0
- package/dist/src/utils/authoritative-discovery.js.map +1 -0
- package/dist/src/utils/index.d.ts +8 -0
- package/dist/src/utils/index.js +13 -0
- package/dist/src/utils/index.js.map +1 -0
- package/dist/src/utils/name-compression.d.ts +5 -0
- package/dist/src/utils/name-compression.js +63 -0
- package/dist/src/utils/name-compression.js.map +1 -0
- package/dist/src/utils/record-parsers.d.ts +53 -0
- package/dist/src/utils/record-parsers.js +232 -0
- package/dist/src/utils/record-parsers.js.map +1 -0
- package/dist/src/utils/txt-parsers.d.ts +40 -0
- package/dist/src/utils/txt-parsers.js +204 -0
- package/dist/src/utils/txt-parsers.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +97 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { INodeType, INodeTypeDescription, IPollFunctions, INodeExecutionData } from 'n8n-workflow';
|
|
2
|
+
import type { FormattedRecord } from '../shared/dns-node-helpers';
|
|
3
|
+
export declare function answersContainValue(answers: FormattedRecord[], expectedValue: string): boolean;
|
|
4
|
+
export declare function checkFireCondition(mode: string, context: {
|
|
5
|
+
currentHash: string;
|
|
6
|
+
previousHash: string;
|
|
7
|
+
currentHasRecords: boolean;
|
|
8
|
+
previousHadRecords: boolean;
|
|
9
|
+
currentAnswers: FormattedRecord[];
|
|
10
|
+
expectedValue: string;
|
|
11
|
+
}): boolean;
|
|
12
|
+
export declare class DnsWatch implements INodeType {
|
|
13
|
+
description: INodeTypeDescription;
|
|
14
|
+
poll(this: IPollFunctions): Promise<INodeExecutionData[][] | null>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DnsWatch = void 0;
|
|
4
|
+
exports.answersContainValue = answersContainValue;
|
|
5
|
+
exports.checkFireCondition = checkFireCondition;
|
|
6
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
7
|
+
const transport_1 = require("../../transport");
|
|
8
|
+
const dns_node_helpers_1 = require("../shared/dns-node-helpers");
|
|
9
|
+
const dns_node_properties_1 = require("../shared/dns-node-properties");
|
|
10
|
+
function answersContainValue(answers, expectedValue) {
|
|
11
|
+
return answers.some((answer) => {
|
|
12
|
+
const valueAsString = typeof answer.value === 'string' ? answer.value : JSON.stringify(answer.value);
|
|
13
|
+
return valueAsString === expectedValue;
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
const fireConditionCheckers = {
|
|
17
|
+
anyChange: ({ currentHash, previousHash }) => currentHash !== previousHash,
|
|
18
|
+
recordAppears: ({ previousHadRecords, currentHasRecords }) => !previousHadRecords && currentHasRecords,
|
|
19
|
+
recordDisappears: ({ previousHadRecords, currentHasRecords }) => previousHadRecords && !currentHasRecords,
|
|
20
|
+
valueMatches: ({ currentHash, previousHash, currentAnswers, expectedValue }) => {
|
|
21
|
+
if (currentHash === previousHash)
|
|
22
|
+
return false;
|
|
23
|
+
return answersContainValue(currentAnswers, expectedValue);
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
function checkFireCondition(mode, context) {
|
|
27
|
+
const checker = fireConditionCheckers[mode];
|
|
28
|
+
if (!checker) {
|
|
29
|
+
throw new Error(`Unknown fire condition mode: ${mode}`);
|
|
30
|
+
}
|
|
31
|
+
return checker(context);
|
|
32
|
+
}
|
|
33
|
+
class DnsWatch {
|
|
34
|
+
constructor() {
|
|
35
|
+
this.description = {
|
|
36
|
+
displayName: 'DNS Watch',
|
|
37
|
+
name: 'dnsWatch',
|
|
38
|
+
icon: 'file:dnsWatch.svg',
|
|
39
|
+
group: ['trigger'],
|
|
40
|
+
version: [1],
|
|
41
|
+
description: 'Watch for DNS record changes by polling',
|
|
42
|
+
defaults: {
|
|
43
|
+
name: 'DNS Watch',
|
|
44
|
+
},
|
|
45
|
+
polling: true,
|
|
46
|
+
inputs: [],
|
|
47
|
+
outputs: [n8n_workflow_1.NodeConnectionTypes.Main],
|
|
48
|
+
usableAsTool: true,
|
|
49
|
+
credentials: [
|
|
50
|
+
{
|
|
51
|
+
name: 'dnsServerApi',
|
|
52
|
+
required: false,
|
|
53
|
+
},
|
|
54
|
+
],
|
|
55
|
+
properties: [
|
|
56
|
+
{
|
|
57
|
+
displayName: 'Domain',
|
|
58
|
+
name: 'domain',
|
|
59
|
+
type: 'string',
|
|
60
|
+
required: true,
|
|
61
|
+
default: '',
|
|
62
|
+
placeholder: 'example.com',
|
|
63
|
+
description: 'The domain name to watch',
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
displayName: 'Record Type',
|
|
67
|
+
name: 'recordType',
|
|
68
|
+
type: 'options',
|
|
69
|
+
noDataExpression: true,
|
|
70
|
+
options: dns_node_properties_1.RECORD_TYPE_OPTIONS,
|
|
71
|
+
default: 'A',
|
|
72
|
+
description: 'The DNS record type to watch',
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
displayName: 'Resolver Mode',
|
|
76
|
+
name: 'resolverMode',
|
|
77
|
+
type: 'options',
|
|
78
|
+
noDataExpression: true,
|
|
79
|
+
options: dns_node_properties_1.RESOLVER_MODE_OPTIONS,
|
|
80
|
+
default: 'wellKnown',
|
|
81
|
+
description: 'How to select the DNS server to query',
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
displayName: 'Resolvers',
|
|
85
|
+
name: 'resolvers',
|
|
86
|
+
type: 'multiOptions',
|
|
87
|
+
displayOptions: {
|
|
88
|
+
show: {
|
|
89
|
+
resolverMode: ['wellKnown'],
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
options: dns_node_properties_1.WELL_KNOWN_RESOLVER_OPTIONS,
|
|
93
|
+
default: ['Cloudflare'],
|
|
94
|
+
description: 'Public DNS resolver to use for monitoring. The first resolved server is queried on each poll',
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
displayName: 'Custom Servers',
|
|
98
|
+
name: 'customServers',
|
|
99
|
+
type: 'fixedCollection',
|
|
100
|
+
typeOptions: {
|
|
101
|
+
multipleValues: true,
|
|
102
|
+
},
|
|
103
|
+
displayOptions: {
|
|
104
|
+
show: {
|
|
105
|
+
resolverMode: ['custom'],
|
|
106
|
+
},
|
|
107
|
+
},
|
|
108
|
+
default: {},
|
|
109
|
+
placeholder: 'Add Server',
|
|
110
|
+
options: [
|
|
111
|
+
{
|
|
112
|
+
name: 'serverValues',
|
|
113
|
+
displayName: 'Server',
|
|
114
|
+
values: dns_node_properties_1.CUSTOM_SERVER_FIELD_VALUES,
|
|
115
|
+
},
|
|
116
|
+
],
|
|
117
|
+
description: 'Custom DNS server to query',
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
displayName: 'Fire On',
|
|
121
|
+
name: 'fireOn',
|
|
122
|
+
type: 'options',
|
|
123
|
+
noDataExpression: true,
|
|
124
|
+
options: [
|
|
125
|
+
{
|
|
126
|
+
name: 'Any Change',
|
|
127
|
+
value: 'anyChange',
|
|
128
|
+
description: 'Fire when the DNS answer set changes in any way',
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
name: 'Record Appears',
|
|
132
|
+
value: 'recordAppears',
|
|
133
|
+
description: 'Fire when a record appears (e.g. NXDOMAIN transitions to a valid answer)',
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
name: 'Record Disappears',
|
|
137
|
+
value: 'recordDisappears',
|
|
138
|
+
description: 'Fire when a record disappears (e.g. a valid answer transitions to NXDOMAIN)',
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
name: 'Value Matches',
|
|
142
|
+
value: 'valueMatches',
|
|
143
|
+
description: 'Fire when the answer changes and contains a specific expected value',
|
|
144
|
+
},
|
|
145
|
+
],
|
|
146
|
+
default: 'anyChange',
|
|
147
|
+
description: 'The condition that triggers the workflow',
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
displayName: 'Expected Value',
|
|
151
|
+
name: 'expectedValue',
|
|
152
|
+
type: 'string',
|
|
153
|
+
displayOptions: {
|
|
154
|
+
show: {
|
|
155
|
+
fireOn: ['valueMatches'],
|
|
156
|
+
},
|
|
157
|
+
},
|
|
158
|
+
default: '',
|
|
159
|
+
placeholder: '93.184.216.34',
|
|
160
|
+
description: 'The value to match against answer records. For simple records (A, AAAA, CNAME), use the plain value. For complex records (MX, SRV), use the JSON representation.',
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
displayName: 'Options',
|
|
164
|
+
name: 'options',
|
|
165
|
+
type: 'collection',
|
|
166
|
+
placeholder: 'Add Option',
|
|
167
|
+
default: {},
|
|
168
|
+
options: dns_node_properties_1.COMMON_DNS_OPTIONS,
|
|
169
|
+
},
|
|
170
|
+
],
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
async poll() {
|
|
174
|
+
var _a;
|
|
175
|
+
const domain = this.getNodeParameter('domain');
|
|
176
|
+
const recordType = this.getNodeParameter('recordType');
|
|
177
|
+
const resolverMode = this.getNodeParameter('resolverMode');
|
|
178
|
+
const fireOn = this.getNodeParameter('fireOn');
|
|
179
|
+
const options = this.getNodeParameter('options', {});
|
|
180
|
+
const clientOptions = (0, dns_node_helpers_1.buildClientOptions)(options);
|
|
181
|
+
const wellKnownNames = resolverMode === 'wellKnown' ? this.getNodeParameter('resolvers') : [];
|
|
182
|
+
const customServers = resolverMode === 'custom'
|
|
183
|
+
? (0, dns_node_helpers_1.extractCustomServers)(this.getNodeParameter('customServers', {}))
|
|
184
|
+
: [];
|
|
185
|
+
let servers;
|
|
186
|
+
try {
|
|
187
|
+
servers = await (0, dns_node_helpers_1.resolveTargetDnsServers)({
|
|
188
|
+
mode: resolverMode,
|
|
189
|
+
wellKnownNames,
|
|
190
|
+
customServers,
|
|
191
|
+
domain,
|
|
192
|
+
clientOptions,
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
catch (error) {
|
|
196
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), error.message);
|
|
197
|
+
}
|
|
198
|
+
if (servers.length === 0) {
|
|
199
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `No DNS servers resolved for mode "${resolverMode}"`);
|
|
200
|
+
}
|
|
201
|
+
const server = servers[0];
|
|
202
|
+
let result;
|
|
203
|
+
try {
|
|
204
|
+
result = await (0, transport_1.querySingleServer)(domain, recordType, server, clientOptions);
|
|
205
|
+
}
|
|
206
|
+
catch (error) {
|
|
207
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `DNS query failed: ${error.message}`);
|
|
208
|
+
}
|
|
209
|
+
(0, dns_node_helpers_1.assertNotFormerr)(result, domain, this.getNode());
|
|
210
|
+
if ((0, dns_node_helpers_1.isWarnableResponseCode)(result.responseCode)) {
|
|
211
|
+
this.logger.warn((0, dns_node_helpers_1.buildWarningMessage)(domain, result.server.address, result.responseCode));
|
|
212
|
+
}
|
|
213
|
+
const formatted = (0, dns_node_helpers_1.formatServerResult)(result);
|
|
214
|
+
const currentAnswers = formatted.answers;
|
|
215
|
+
const currentHash = (0, dns_node_helpers_1.serializeAnswerValues)(currentAnswers);
|
|
216
|
+
const currentHasRecords = currentAnswers.length > 0;
|
|
217
|
+
const isManualTest = this.getMode() === 'manual';
|
|
218
|
+
const staticData = this.getWorkflowStaticData('node');
|
|
219
|
+
if (staticData.previousAnswerHash === undefined) {
|
|
220
|
+
staticData.previousAnswerHash = currentHash;
|
|
221
|
+
staticData.previousHadRecords = currentHasRecords;
|
|
222
|
+
if (!isManualTest) {
|
|
223
|
+
return null;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
if (!isManualTest) {
|
|
227
|
+
const expectedValue = fireOn === 'valueMatches' ? this.getNodeParameter('expectedValue') : '';
|
|
228
|
+
const shouldFire = checkFireCondition(fireOn, {
|
|
229
|
+
currentHash,
|
|
230
|
+
previousHash: staticData.previousAnswerHash,
|
|
231
|
+
currentHasRecords,
|
|
232
|
+
previousHadRecords: (_a = staticData.previousHadRecords) !== null && _a !== void 0 ? _a : false,
|
|
233
|
+
currentAnswers,
|
|
234
|
+
expectedValue,
|
|
235
|
+
});
|
|
236
|
+
staticData.previousAnswerHash = currentHash;
|
|
237
|
+
staticData.previousHadRecords = currentHasRecords;
|
|
238
|
+
if (!shouldFire) {
|
|
239
|
+
return null;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
const outputJson = (0, dns_node_helpers_1.buildSingleServerOutput)(domain, recordType, result);
|
|
243
|
+
return [[{ json: outputJson, pairedItem: { item: 0 } }]];
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
exports.DnsWatch = DnsWatch;
|
|
247
|
+
//# sourceMappingURL=DnsWatch.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DnsWatch.node.js","sourceRoot":"","sources":["../../../../src/nodes/DnsWatch/DnsWatch.node.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"node": "n8n-nodes-dns.dnsWatch",
|
|
3
|
+
"nodeVersion": "1.0",
|
|
4
|
+
"codexVersion": "1.0",
|
|
5
|
+
"categories": ["Utility"],
|
|
6
|
+
"alias": [
|
|
7
|
+
"dns",
|
|
8
|
+
"domain",
|
|
9
|
+
"nameserver",
|
|
10
|
+
"dns watch",
|
|
11
|
+
"dns monitor",
|
|
12
|
+
"dns trigger",
|
|
13
|
+
"domain monitor",
|
|
14
|
+
"propagation check"
|
|
15
|
+
],
|
|
16
|
+
"resources": {
|
|
17
|
+
"primaryDocumentation": [
|
|
18
|
+
{
|
|
19
|
+
"url": "https://github.com/ClaasBusemann/n8n-nodes-dns?tab=readme-ov-file"
|
|
20
|
+
}
|
|
21
|
+
]
|
|
22
|
+
},
|
|
23
|
+
"subcategories": {
|
|
24
|
+
"Utility": ["DNS"]
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" fill="none">
|
|
2
|
+
<circle cx="12" cy="12" r="10" stroke="#4DA6FF" stroke-width="2" fill="#4DA6FF" fill-opacity="0.15"/>
|
|
3
|
+
<text x="12" y="16" text-anchor="middle" font-size="10" font-weight="bold" font-family="sans-serif" fill="#4DA6FF" stroke="none">D</text>
|
|
4
|
+
</svg>
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { INode } from 'n8n-workflow';
|
|
2
|
+
import type { DnsClientOptions, DnsServer, DnsServerResult } from '../../transport';
|
|
3
|
+
import type { RecordValue } from '../../utils';
|
|
4
|
+
export declare const AUTHORITATIVE_RECURSIVE_RESOLVER: DnsServer;
|
|
5
|
+
export interface FormattedRecord {
|
|
6
|
+
name: string;
|
|
7
|
+
type: string;
|
|
8
|
+
ttl: number;
|
|
9
|
+
value: RecordValue;
|
|
10
|
+
}
|
|
11
|
+
export interface ServerResultEntry {
|
|
12
|
+
server: string;
|
|
13
|
+
serverName: string;
|
|
14
|
+
authoritative: boolean;
|
|
15
|
+
responseCode: string;
|
|
16
|
+
responseTimeMs: number;
|
|
17
|
+
answers: FormattedRecord[];
|
|
18
|
+
authority: FormattedRecord[];
|
|
19
|
+
additional: FormattedRecord[];
|
|
20
|
+
truncated?: boolean;
|
|
21
|
+
}
|
|
22
|
+
export declare function formatServerResult(result: DnsServerResult): ServerResultEntry;
|
|
23
|
+
export declare function buildSingleServerOutput(domain: string, recordType: string, result: DnsServerResult): Record<string, unknown>;
|
|
24
|
+
export declare function serializeAnswerValues(answers: FormattedRecord[]): string;
|
|
25
|
+
export declare function buildClientOptions(options: {
|
|
26
|
+
timeout?: number;
|
|
27
|
+
retryCount?: number;
|
|
28
|
+
recursionDesired?: boolean;
|
|
29
|
+
}): DnsClientOptions;
|
|
30
|
+
export declare function extractCustomServers(paramValue: unknown): DnsServer[];
|
|
31
|
+
export interface ResolveServerOptions {
|
|
32
|
+
mode: string;
|
|
33
|
+
wellKnownNames: string[];
|
|
34
|
+
customServers: DnsServer[];
|
|
35
|
+
domain: string;
|
|
36
|
+
clientOptions: DnsClientOptions;
|
|
37
|
+
}
|
|
38
|
+
export declare function resolveTargetDnsServers(options: ResolveServerOptions): Promise<DnsServer[]>;
|
|
39
|
+
export declare function isWarnableResponseCode(code: string): boolean;
|
|
40
|
+
export declare function isFatalResponseCode(code: string): boolean;
|
|
41
|
+
export declare function buildWarningMessage(domain: string, serverAddress: string, responseCode: string): string;
|
|
42
|
+
export declare function assertNotFormerr(result: DnsServerResult, domain: string, node: INode, itemIndex?: number): void;
|
|
43
|
+
export declare function collectResponseWarnings(results: DnsServerResult[], domain: string): string[];
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AUTHORITATIVE_RECURSIVE_RESOLVER = void 0;
|
|
4
|
+
exports.formatServerResult = formatServerResult;
|
|
5
|
+
exports.buildSingleServerOutput = buildSingleServerOutput;
|
|
6
|
+
exports.serializeAnswerValues = serializeAnswerValues;
|
|
7
|
+
exports.buildClientOptions = buildClientOptions;
|
|
8
|
+
exports.extractCustomServers = extractCustomServers;
|
|
9
|
+
exports.resolveTargetDnsServers = resolveTargetDnsServers;
|
|
10
|
+
exports.isWarnableResponseCode = isWarnableResponseCode;
|
|
11
|
+
exports.isFatalResponseCode = isFatalResponseCode;
|
|
12
|
+
exports.buildWarningMessage = buildWarningMessage;
|
|
13
|
+
exports.assertNotFormerr = assertNotFormerr;
|
|
14
|
+
exports.collectResponseWarnings = collectResponseWarnings;
|
|
15
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
16
|
+
const transport_1 = require("../../transport");
|
|
17
|
+
const utils_1 = require("../../utils");
|
|
18
|
+
exports.AUTHORITATIVE_RECURSIVE_RESOLVER = {
|
|
19
|
+
address: '1.1.1.1',
|
|
20
|
+
port: transport_1.DNS_DEFAULT_PORT,
|
|
21
|
+
};
|
|
22
|
+
const ipToResolverName = new Map();
|
|
23
|
+
for (const resolver of transport_1.WELL_KNOWN_RESOLVERS) {
|
|
24
|
+
ipToResolverName.set(resolver.primary, resolver.name);
|
|
25
|
+
ipToResolverName.set(resolver.secondary, resolver.name);
|
|
26
|
+
}
|
|
27
|
+
function getServerName(address) {
|
|
28
|
+
var _a;
|
|
29
|
+
return (_a = ipToResolverName.get(address)) !== null && _a !== void 0 ? _a : address;
|
|
30
|
+
}
|
|
31
|
+
function formatResourceRecords(records, rawPacket) {
|
|
32
|
+
return records.map((record) => {
|
|
33
|
+
var _a;
|
|
34
|
+
return ({
|
|
35
|
+
name: record.name,
|
|
36
|
+
type: (_a = transport_1.RECORD_TYPE_NAMES[record.recordType]) !== null && _a !== void 0 ? _a : `TYPE${record.recordType}`,
|
|
37
|
+
ttl: record.ttl,
|
|
38
|
+
value: (0, utils_1.parseRdata)(record, rawPacket),
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
function formatServerResult(result) {
|
|
43
|
+
var _a;
|
|
44
|
+
const response = result.response;
|
|
45
|
+
const entry = {
|
|
46
|
+
server: result.server.address,
|
|
47
|
+
serverName: getServerName(result.server.address),
|
|
48
|
+
authoritative: (_a = response === null || response === void 0 ? void 0 : response.header.flags.authoritative) !== null && _a !== void 0 ? _a : false,
|
|
49
|
+
responseCode: result.responseCode,
|
|
50
|
+
responseTimeMs: result.responseTimeMilliseconds,
|
|
51
|
+
answers: response ? formatResourceRecords(response.answers, response.rawPacket) : [],
|
|
52
|
+
authority: response ? formatResourceRecords(response.authorities, response.rawPacket) : [],
|
|
53
|
+
additional: response ? formatResourceRecords(response.additionals, response.rawPacket) : [],
|
|
54
|
+
};
|
|
55
|
+
if (result.truncated) {
|
|
56
|
+
entry.truncated = true;
|
|
57
|
+
}
|
|
58
|
+
return entry;
|
|
59
|
+
}
|
|
60
|
+
function buildSingleServerOutput(domain, recordType, result) {
|
|
61
|
+
return {
|
|
62
|
+
domain,
|
|
63
|
+
type: recordType,
|
|
64
|
+
...formatServerResult(result),
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
function serializeAnswerValues(answers) {
|
|
68
|
+
const normalized = answers
|
|
69
|
+
.map((answer) => JSON.stringify({ name: answer.name, type: answer.type, value: answer.value }))
|
|
70
|
+
.sort();
|
|
71
|
+
return JSON.stringify(normalized);
|
|
72
|
+
}
|
|
73
|
+
function buildClientOptions(options) {
|
|
74
|
+
return {
|
|
75
|
+
...(options.timeout !== undefined && { timeoutMilliseconds: options.timeout }),
|
|
76
|
+
...(options.retryCount !== undefined && { retryCount: options.retryCount }),
|
|
77
|
+
...(options.recursionDesired !== undefined && {
|
|
78
|
+
recursionDesired: options.recursionDesired,
|
|
79
|
+
}),
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
function extractCustomServers(paramValue) {
|
|
83
|
+
var _a;
|
|
84
|
+
const collection = paramValue;
|
|
85
|
+
return ((_a = collection.serverValues) !== null && _a !== void 0 ? _a : []).map((server) => {
|
|
86
|
+
var _a;
|
|
87
|
+
return ({
|
|
88
|
+
address: server.address,
|
|
89
|
+
port: (_a = server.port) !== null && _a !== void 0 ? _a : transport_1.DNS_DEFAULT_PORT,
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
async function resolveTargetDnsServers(options) {
|
|
94
|
+
switch (options.mode) {
|
|
95
|
+
case 'wellKnown':
|
|
96
|
+
return (0, transport_1.getWellKnownServers)(options.wellKnownNames);
|
|
97
|
+
case 'custom':
|
|
98
|
+
return options.customServers;
|
|
99
|
+
case 'authoritative':
|
|
100
|
+
return (0, utils_1.walkDelegationChain)(options.domain, {
|
|
101
|
+
recursiveResolver: exports.AUTHORITATIVE_RECURSIVE_RESOLVER,
|
|
102
|
+
clientOptions: options.clientOptions,
|
|
103
|
+
});
|
|
104
|
+
case 'system':
|
|
105
|
+
return (0, transport_1.readSystemResolvers)();
|
|
106
|
+
default:
|
|
107
|
+
throw new Error(`Unknown resolver mode: ${options.mode}`);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
const WARNABLE_RESPONSE_CODES = new Set(['SERVFAIL', 'REFUSED', 'NOTIMP']);
|
|
111
|
+
const FATAL_RESPONSE_CODE = 'FORMERR';
|
|
112
|
+
function isWarnableResponseCode(code) {
|
|
113
|
+
return WARNABLE_RESPONSE_CODES.has(code);
|
|
114
|
+
}
|
|
115
|
+
function isFatalResponseCode(code) {
|
|
116
|
+
return code === FATAL_RESPONSE_CODE;
|
|
117
|
+
}
|
|
118
|
+
function buildWarningMessage(domain, serverAddress, responseCode) {
|
|
119
|
+
return `DNS server ${serverAddress} returned ${responseCode} for ${domain}`;
|
|
120
|
+
}
|
|
121
|
+
function assertNotFormerr(result, domain, node, itemIndex) {
|
|
122
|
+
if (isFatalResponseCode(result.responseCode)) {
|
|
123
|
+
const message = `DNS server ${result.server.address} returned FORMERR for ${domain} — this indicates a malformed query`;
|
|
124
|
+
const options = itemIndex !== undefined ? { itemIndex } : {};
|
|
125
|
+
throw new n8n_workflow_1.NodeOperationError(node, message, options);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
function collectResponseWarnings(results, domain) {
|
|
129
|
+
return results
|
|
130
|
+
.filter((result) => isWarnableResponseCode(result.responseCode))
|
|
131
|
+
.map((result) => buildWarningMessage(domain, result.server.address, result.responseCode));
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=dns-node-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dns-node-helpers.js","sourceRoot":"","sources":["../../../../src/nodes/shared/dns-node-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { INodeProperties, INodePropertyOptions } from 'n8n-workflow';
|
|
2
|
+
export declare const RECORD_TYPE_OPTIONS: INodePropertyOptions[];
|
|
3
|
+
export declare const RESOLVER_MODE_OPTIONS: INodePropertyOptions[];
|
|
4
|
+
export declare const WELL_KNOWN_RESOLVER_OPTIONS: INodePropertyOptions[];
|
|
5
|
+
export declare const CUSTOM_SERVER_FIELD_VALUES: INodeProperties[];
|
|
6
|
+
export declare const COMMON_DNS_OPTIONS: INodeProperties[];
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.COMMON_DNS_OPTIONS = exports.CUSTOM_SERVER_FIELD_VALUES = exports.WELL_KNOWN_RESOLVER_OPTIONS = exports.RESOLVER_MODE_OPTIONS = exports.RECORD_TYPE_OPTIONS = void 0;
|
|
4
|
+
exports.RECORD_TYPE_OPTIONS = [
|
|
5
|
+
{ name: 'A', value: 'A', description: 'IPv4 address record' },
|
|
6
|
+
{ name: 'AAAA', value: 'AAAA', description: 'IPv6 address record' },
|
|
7
|
+
{ name: 'CAA', value: 'CAA', description: 'Certificate Authority Authorization' },
|
|
8
|
+
{ name: 'CNAME', value: 'CNAME', description: 'Canonical name (alias)' },
|
|
9
|
+
{ name: 'DNSKEY', value: 'DNSKEY', description: 'DNSSEC public key' },
|
|
10
|
+
{ name: 'MX', value: 'MX', description: 'Mail exchange server' },
|
|
11
|
+
{ name: 'NAPTR', value: 'NAPTR', description: 'Naming Authority Pointer' },
|
|
12
|
+
{ name: 'NS', value: 'NS', description: 'Authoritative nameserver' },
|
|
13
|
+
{ name: 'PTR', value: 'PTR', description: 'Pointer record (reverse DNS)' },
|
|
14
|
+
{ name: 'SOA', value: 'SOA', description: 'Start of authority' },
|
|
15
|
+
{ name: 'SRV', value: 'SRV', description: 'Service locator' },
|
|
16
|
+
{ name: 'TLSA', value: 'TLSA', description: 'TLS certificate association' },
|
|
17
|
+
{
|
|
18
|
+
name: 'TXT',
|
|
19
|
+
value: 'TXT',
|
|
20
|
+
description: 'Text record (SPF, DMARC, DKIM, verification)',
|
|
21
|
+
},
|
|
22
|
+
];
|
|
23
|
+
exports.RESOLVER_MODE_OPTIONS = [
|
|
24
|
+
{
|
|
25
|
+
name: 'Well-Known',
|
|
26
|
+
value: 'wellKnown',
|
|
27
|
+
description: 'Use public DNS resolvers (Cloudflare, Google, etc.)',
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
name: 'Custom',
|
|
31
|
+
value: 'custom',
|
|
32
|
+
description: 'Specify custom DNS server addresses',
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: 'Authoritative (Auto-Discover)',
|
|
36
|
+
value: 'authoritative',
|
|
37
|
+
description: 'Auto-discover and query the authoritative nameservers for the domain',
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
name: 'System',
|
|
41
|
+
value: 'system',
|
|
42
|
+
description: 'Use the system DNS resolver from /etc/resolv.conf',
|
|
43
|
+
},
|
|
44
|
+
];
|
|
45
|
+
exports.WELL_KNOWN_RESOLVER_OPTIONS = [
|
|
46
|
+
{
|
|
47
|
+
name: 'AdGuard',
|
|
48
|
+
value: 'AdGuard',
|
|
49
|
+
description: 'Ad blocking DNS (94.140.14.14)',
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
name: 'Cloudflare',
|
|
53
|
+
value: 'Cloudflare',
|
|
54
|
+
description: 'Fastest average response time (1.1.1.1)',
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
name: 'Cloudflare Family',
|
|
58
|
+
value: 'Cloudflare Family',
|
|
59
|
+
description: 'Malware + adult content blocking (1.1.1.3)',
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
name: 'Cloudflare Malware',
|
|
63
|
+
value: 'Cloudflare Malware',
|
|
64
|
+
description: 'Malware blocking (1.1.1.2)',
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
name: 'Control D',
|
|
68
|
+
value: 'Control D',
|
|
69
|
+
description: 'Configurable filtering (76.76.2.0)',
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
name: 'Google',
|
|
73
|
+
value: 'Google',
|
|
74
|
+
description: 'Widest adoption (8.8.8.8)',
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
name: 'OpenDNS',
|
|
78
|
+
value: 'OpenDNS',
|
|
79
|
+
description: 'Cisco-operated (208.67.222.222)',
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
name: 'Quad9',
|
|
83
|
+
value: 'Quad9',
|
|
84
|
+
description: 'Malware blocking enabled (9.9.9.9)',
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
name: 'Quad9 Unfiltered',
|
|
88
|
+
value: 'Quad9 Unfiltered',
|
|
89
|
+
description: 'No filtering (9.9.9.10)',
|
|
90
|
+
},
|
|
91
|
+
];
|
|
92
|
+
exports.CUSTOM_SERVER_FIELD_VALUES = [
|
|
93
|
+
{
|
|
94
|
+
displayName: 'IP Address',
|
|
95
|
+
name: 'address',
|
|
96
|
+
type: 'string',
|
|
97
|
+
required: true,
|
|
98
|
+
default: '',
|
|
99
|
+
placeholder: '1.1.1.1',
|
|
100
|
+
description: 'IP address of the DNS server',
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
displayName: 'Port',
|
|
104
|
+
name: 'port',
|
|
105
|
+
type: 'number',
|
|
106
|
+
default: 53,
|
|
107
|
+
description: 'UDP port of the DNS server',
|
|
108
|
+
},
|
|
109
|
+
];
|
|
110
|
+
exports.COMMON_DNS_OPTIONS = [
|
|
111
|
+
{
|
|
112
|
+
displayName: 'Recursion Desired',
|
|
113
|
+
name: 'recursionDesired',
|
|
114
|
+
type: 'boolean',
|
|
115
|
+
default: true,
|
|
116
|
+
description: 'Whether to set the RD (Recursion Desired) flag in the DNS query',
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
displayName: 'Retry Count',
|
|
120
|
+
name: 'retryCount',
|
|
121
|
+
type: 'number',
|
|
122
|
+
default: 1,
|
|
123
|
+
typeOptions: {
|
|
124
|
+
minValue: 0,
|
|
125
|
+
},
|
|
126
|
+
description: 'Number of retries on timeout',
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
displayName: 'Timeout',
|
|
130
|
+
name: 'timeout',
|
|
131
|
+
type: 'number',
|
|
132
|
+
default: 5000,
|
|
133
|
+
typeOptions: {
|
|
134
|
+
minValue: 100,
|
|
135
|
+
},
|
|
136
|
+
description: 'Per-query timeout in milliseconds',
|
|
137
|
+
},
|
|
138
|
+
];
|
|
139
|
+
//# sourceMappingURL=dns-node-properties.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dns-node-properties.js","sourceRoot":"","sources":["../../../../src/nodes/shared/dns-node-properties.ts"],"names":[],"mappings":"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"}
|