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,204 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.enrichTxtRecord = enrichTxtRecord;
|
|
4
|
+
const SPF_QUALIFIERS = new Set(['+', '-', '~', '?']);
|
|
5
|
+
const SPF_MECHANISM_TYPES = new Set([
|
|
6
|
+
'ip4',
|
|
7
|
+
'ip6',
|
|
8
|
+
'include',
|
|
9
|
+
'a',
|
|
10
|
+
'mx',
|
|
11
|
+
'all',
|
|
12
|
+
'redirect',
|
|
13
|
+
'exists',
|
|
14
|
+
]);
|
|
15
|
+
const DMARC_ALIGNMENT_MAP = {
|
|
16
|
+
r: 'relaxed',
|
|
17
|
+
s: 'strict',
|
|
18
|
+
};
|
|
19
|
+
function parseSpfToken(token) {
|
|
20
|
+
let qualifier = '+';
|
|
21
|
+
let remainder = token;
|
|
22
|
+
const firstChar = remainder.charAt(0);
|
|
23
|
+
if (SPF_QUALIFIERS.has(firstChar)) {
|
|
24
|
+
qualifier = firstChar;
|
|
25
|
+
remainder = remainder.slice(1);
|
|
26
|
+
}
|
|
27
|
+
if (remainder.startsWith('redirect=')) {
|
|
28
|
+
return { qualifier, type: 'redirect', value: remainder.slice('redirect='.length) };
|
|
29
|
+
}
|
|
30
|
+
const colonIndex = remainder.indexOf(':');
|
|
31
|
+
let mechanismType;
|
|
32
|
+
let value;
|
|
33
|
+
if (colonIndex !== -1) {
|
|
34
|
+
mechanismType = remainder.slice(0, colonIndex);
|
|
35
|
+
value = remainder.slice(colonIndex + 1);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
mechanismType = remainder;
|
|
39
|
+
value = null;
|
|
40
|
+
}
|
|
41
|
+
if (!SPF_MECHANISM_TYPES.has(mechanismType)) {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
return { qualifier, type: mechanismType, value };
|
|
45
|
+
}
|
|
46
|
+
function detectSpf(raw) {
|
|
47
|
+
if (!raw.startsWith('v=spf1') || (raw.length > 6 && raw[6] !== ' ')) {
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
const body = raw.slice(6).trim();
|
|
51
|
+
if (body === '') {
|
|
52
|
+
return { parsed: { type: 'spf', version: 'spf1', mechanisms: [] } };
|
|
53
|
+
}
|
|
54
|
+
const tokens = body.split(/\s+/);
|
|
55
|
+
const mechanisms = [];
|
|
56
|
+
for (const token of tokens) {
|
|
57
|
+
const mechanism = parseSpfToken(token);
|
|
58
|
+
if (mechanism === null) {
|
|
59
|
+
return { parsed: null, parseError: `Unrecognized SPF mechanism: ${token}` };
|
|
60
|
+
}
|
|
61
|
+
mechanisms.push(mechanism);
|
|
62
|
+
}
|
|
63
|
+
return { parsed: { type: 'spf', version: 'spf1', mechanisms } };
|
|
64
|
+
}
|
|
65
|
+
function parseTagValue(pair) {
|
|
66
|
+
const equalsIndex = pair.indexOf('=');
|
|
67
|
+
if (equalsIndex === -1) {
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
return {
|
|
71
|
+
tag: pair.slice(0, equalsIndex).trim(),
|
|
72
|
+
value: pair.slice(equalsIndex + 1).trim(),
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
function splitUriList(value) {
|
|
76
|
+
return value.split(',').map((uri) => uri.trim());
|
|
77
|
+
}
|
|
78
|
+
function resolveAlignment(value) {
|
|
79
|
+
var _a;
|
|
80
|
+
if (value === undefined) {
|
|
81
|
+
return 'relaxed';
|
|
82
|
+
}
|
|
83
|
+
return (_a = DMARC_ALIGNMENT_MAP[value]) !== null && _a !== void 0 ? _a : 'relaxed';
|
|
84
|
+
}
|
|
85
|
+
function detectDmarc(raw) {
|
|
86
|
+
var _a;
|
|
87
|
+
if (!raw.startsWith('v=DMARC1') || (raw.length > 8 && raw[8] !== ';' && raw[8] !== ' ')) {
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
const pairs = raw.split(';').slice(1);
|
|
91
|
+
const tags = new Map();
|
|
92
|
+
for (const pair of pairs) {
|
|
93
|
+
const trimmed = pair.trim();
|
|
94
|
+
if (trimmed === '') {
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
const parsed = parseTagValue(trimmed);
|
|
98
|
+
if (parsed !== null) {
|
|
99
|
+
tags.set(parsed.tag, parsed.value);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
const policy = tags.get('p');
|
|
103
|
+
if (policy === undefined) {
|
|
104
|
+
return { parsed: null, parseError: 'DMARC record missing required p (policy) tag' };
|
|
105
|
+
}
|
|
106
|
+
const rawPercentage = tags.get('pct');
|
|
107
|
+
let percentage = 100;
|
|
108
|
+
if (rawPercentage !== undefined) {
|
|
109
|
+
percentage = parseInt(rawPercentage, 10);
|
|
110
|
+
if (isNaN(percentage)) {
|
|
111
|
+
return {
|
|
112
|
+
parsed: null,
|
|
113
|
+
parseError: `DMARC pct tag is not a valid number: ${rawPercentage}`,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return {
|
|
118
|
+
parsed: {
|
|
119
|
+
type: 'dmarc',
|
|
120
|
+
version: 'DMARC1',
|
|
121
|
+
policy,
|
|
122
|
+
subdomainPolicy: (_a = tags.get('sp')) !== null && _a !== void 0 ? _a : null,
|
|
123
|
+
percentage,
|
|
124
|
+
reportAggregate: tags.has('rua') ? splitUriList(tags.get('rua')) : [],
|
|
125
|
+
reportForensic: tags.has('ruf') ? splitUriList(tags.get('ruf')) : [],
|
|
126
|
+
alignmentDkim: resolveAlignment(tags.get('adkim')),
|
|
127
|
+
alignmentSpf: resolveAlignment(tags.get('aspf')),
|
|
128
|
+
},
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
function splitColonList(value) {
|
|
132
|
+
return value.split(':').map((item) => item.trim());
|
|
133
|
+
}
|
|
134
|
+
function detectDkim(raw) {
|
|
135
|
+
var _a;
|
|
136
|
+
if (!raw.startsWith('v=DKIM1') || (raw.length > 7 && raw[7] !== ';' && raw[7] !== ' ')) {
|
|
137
|
+
return null;
|
|
138
|
+
}
|
|
139
|
+
const pairs = raw.split(';').slice(1);
|
|
140
|
+
const tags = new Map();
|
|
141
|
+
for (const pair of pairs) {
|
|
142
|
+
const trimmed = pair.trim();
|
|
143
|
+
if (trimmed === '') {
|
|
144
|
+
continue;
|
|
145
|
+
}
|
|
146
|
+
const parsed = parseTagValue(trimmed);
|
|
147
|
+
if (parsed !== null) {
|
|
148
|
+
tags.set(parsed.tag, parsed.value);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
const publicKey = tags.get('p');
|
|
152
|
+
if (publicKey === undefined) {
|
|
153
|
+
return { parsed: null, parseError: 'DKIM record missing required p (public key) tag' };
|
|
154
|
+
}
|
|
155
|
+
return {
|
|
156
|
+
parsed: {
|
|
157
|
+
type: 'dkim',
|
|
158
|
+
version: 'DKIM1',
|
|
159
|
+
keyType: (_a = tags.get('k')) !== null && _a !== void 0 ? _a : 'rsa',
|
|
160
|
+
publicKey: publicKey.replace(/\s+/g, ''),
|
|
161
|
+
hashAlgorithms: tags.has('h') ? splitColonList(tags.get('h')) : ['sha256'],
|
|
162
|
+
serviceTypes: tags.has('s') ? splitColonList(tags.get('s')) : ['*'],
|
|
163
|
+
flags: tags.has('t') ? splitColonList(tags.get('t')) : [],
|
|
164
|
+
},
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
const VERIFICATION_PREFIXES = [
|
|
168
|
+
{ prefix: 'google-site-verification=', provider: 'google' },
|
|
169
|
+
{ prefix: 'facebook-domain-verification=', provider: 'facebook' },
|
|
170
|
+
{ prefix: 'MS=', provider: 'microsoft' },
|
|
171
|
+
{ prefix: 'atlassian-domain-verification=', provider: 'atlassian' },
|
|
172
|
+
{ prefix: 'apple-domain-verification=', provider: 'apple' },
|
|
173
|
+
{ prefix: '_github-pages-challenge-', provider: 'github' },
|
|
174
|
+
{ prefix: 'stripe-verification=', provider: 'stripe' },
|
|
175
|
+
{ prefix: 'postmark-verification=', provider: 'postmark' },
|
|
176
|
+
];
|
|
177
|
+
function detectVerification(raw) {
|
|
178
|
+
for (const { prefix, provider } of VERIFICATION_PREFIXES) {
|
|
179
|
+
if (raw.startsWith(prefix)) {
|
|
180
|
+
return {
|
|
181
|
+
parsed: {
|
|
182
|
+
type: 'verification',
|
|
183
|
+
provider,
|
|
184
|
+
token: raw.slice(prefix.length),
|
|
185
|
+
},
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
return null;
|
|
190
|
+
}
|
|
191
|
+
const TXT_DETECTORS = [detectSpf, detectDmarc, detectDkim, detectVerification];
|
|
192
|
+
function enrichTxtRecord(raw) {
|
|
193
|
+
for (const detector of TXT_DETECTORS) {
|
|
194
|
+
const result = detector(raw);
|
|
195
|
+
if (result !== null) {
|
|
196
|
+
if (result.parsed !== null) {
|
|
197
|
+
return { parsed: result.parsed };
|
|
198
|
+
}
|
|
199
|
+
return { parsed: null, parseError: result.parseError };
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
return { parsed: null };
|
|
203
|
+
}
|
|
204
|
+
//# sourceMappingURL=txt-parsers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"txt-parsers.js","sourceRoot":"","sources":["../../../src/utils/txt-parsers.ts"],"names":[],"mappings":"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"}
|