mirror of
https://github.com/Lissy93/web-check.git
synced 2024-11-26 10:13:27 +01:00
Write lambda functions for getting DNS records and Robots.txt
This commit is contained in:
parent
6062473efc
commit
bc15c94315
59
server/lambda/get-dns.js
Normal file
59
server/lambda/get-dns.js
Normal file
@ -0,0 +1,59 @@
|
||||
const dns = require('dns');
|
||||
const util = require('util');
|
||||
|
||||
exports.handler = async function(event, context) {
|
||||
let hostname = event.queryStringParameters.url;
|
||||
|
||||
// Handle URLs by extracting hostname
|
||||
if (hostname.startsWith('http://') || hostname.startsWith('https://')) {
|
||||
hostname = new URL(hostname).hostname;
|
||||
}
|
||||
|
||||
try {
|
||||
const lookupPromise = util.promisify(dns.lookup);
|
||||
const resolve4Promise = util.promisify(dns.resolve4);
|
||||
const resolve6Promise = util.promisify(dns.resolve6);
|
||||
const resolveMxPromise = util.promisify(dns.resolveMx);
|
||||
const resolveTxtPromise = util.promisify(dns.resolveTxt);
|
||||
const resolveNsPromise = util.promisify(dns.resolveNs);
|
||||
const resolveCnamePromise = util.promisify(dns.resolveCname);
|
||||
const resolveSoaPromise = util.promisify(dns.resolveSoa);
|
||||
const resolveSrvPromise = util.promisify(dns.resolveSrv);
|
||||
const resolvePtrPromise = util.promisify(dns.resolvePtr);
|
||||
|
||||
const [a, aaaa, mx, txt, ns, cname, soa, srv, ptr] = await Promise.all([
|
||||
lookupPromise(hostname),
|
||||
resolve4Promise(hostname).catch(() => []), // A record
|
||||
resolve6Promise(hostname).catch(() => []), // AAAA record
|
||||
resolveMxPromise(hostname).catch(() => []), // MX record
|
||||
resolveTxtPromise(hostname).catch(() => []), // TXT record
|
||||
resolveNsPromise(hostname).catch(() => []), // NS record
|
||||
resolveCnamePromise(hostname).catch(() => []), // CNAME record
|
||||
resolveSoaPromise(hostname).catch(() => []), // SOA record
|
||||
resolveSrvPromise(hostname).catch(() => []), // SRV record
|
||||
resolvePtrPromise(hostname).catch(() => []) // PTR record
|
||||
]);
|
||||
|
||||
return {
|
||||
statusCode: 200,
|
||||
body: JSON.stringify({
|
||||
A: a,
|
||||
AAAA: aaaa,
|
||||
MX: mx,
|
||||
TXT: txt,
|
||||
NS: ns,
|
||||
CNAME: cname,
|
||||
SOA: soa,
|
||||
SRV: srv,
|
||||
PTR: ptr
|
||||
})
|
||||
};
|
||||
} catch (error) {
|
||||
return {
|
||||
statusCode: 500,
|
||||
body: JSON.stringify({
|
||||
error: error.message
|
||||
})
|
||||
};
|
||||
}
|
||||
};
|
37
server/lambda/read-robots-txt.js
Normal file
37
server/lambda/read-robots-txt.js
Normal file
@ -0,0 +1,37 @@
|
||||
const fetch = require('node-fetch');
|
||||
|
||||
exports.handler = async function(event, context) {
|
||||
const siteURL = event.queryStringParameters.url;
|
||||
|
||||
if (!siteURL) {
|
||||
return {
|
||||
statusCode: 400,
|
||||
body: 'Missing URL parameter',
|
||||
};
|
||||
}
|
||||
|
||||
const parsedURL = new URL(siteURL);
|
||||
const robotsURL = `${parsedURL.protocol}//${parsedURL.hostname}/robots.txt`;
|
||||
|
||||
try {
|
||||
const response = await fetch(robotsURL);
|
||||
const text = await response.text();
|
||||
|
||||
if (response.ok) {
|
||||
return {
|
||||
statusCode: 200,
|
||||
body: text,
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
statusCode: response.status,
|
||||
body: `Failed to fetch robots.txt`,
|
||||
};
|
||||
}
|
||||
} catch (error) {
|
||||
return {
|
||||
statusCode: 500,
|
||||
body: `Error fetching robots.txt: ${error.toString()}`,
|
||||
};
|
||||
}
|
||||
};
|
Loading…
Reference in New Issue
Block a user