mirror of
https://github.com/Lissy93/web-check.git
synced 2025-06-03 17:05:43 +02:00
Rename endpoints to be the same as job IDs
This commit is contained in:
parent
95b13240c7
commit
9e426ed55e
@ -27,7 +27,6 @@ const commonMiddleware = (handler) => {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.log(error);
|
|
||||||
callback(null, {
|
callback(null, {
|
||||||
statusCode: 500,
|
statusCode: 500,
|
||||||
body: JSON.stringify({ error: error.message }),
|
body: JSON.stringify({ error: error.message }),
|
||||||
|
@ -1,45 +0,0 @@
|
|||||||
const axios = require('axios');
|
|
||||||
|
|
||||||
exports.handler = async function(event, context) {
|
|
||||||
const siteURL = (event.queryStringParameters || event.query).url;
|
|
||||||
|
|
||||||
if (!siteURL) {
|
|
||||||
return {
|
|
||||||
statusCode: 400,
|
|
||||||
body: JSON.stringify({ error: 'Missing url query parameter' }),
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
let parsedURL;
|
|
||||||
try {
|
|
||||||
parsedURL = new URL(siteURL);
|
|
||||||
} catch (error) {
|
|
||||||
return {
|
|
||||||
statusCode: 400,
|
|
||||||
body: JSON.stringify({ error: 'Invalid url query parameter' }),
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
const robotsURL = `${parsedURL.protocol}//${parsedURL.hostname}/robots.txt`;
|
|
||||||
|
|
||||||
try {
|
|
||||||
const response = await axios.get(robotsURL);
|
|
||||||
|
|
||||||
if (response.status === 200) {
|
|
||||||
return {
|
|
||||||
statusCode: 200,
|
|
||||||
body: response.data,
|
|
||||||
};
|
|
||||||
} else {
|
|
||||||
return {
|
|
||||||
statusCode: response.status,
|
|
||||||
body: JSON.stringify({ error: 'Failed to fetch robots.txt', statusCode: response.status }),
|
|
||||||
};
|
|
||||||
}
|
|
||||||
} catch (error) {
|
|
||||||
return {
|
|
||||||
statusCode: 500,
|
|
||||||
body: JSON.stringify({ error: `Error fetching robots.txt: ${error.message}` }),
|
|
||||||
};
|
|
||||||
}
|
|
||||||
};
|
|
66
api/robots-txt.js
Normal file
66
api/robots-txt.js
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
const axios = require('axios');
|
||||||
|
const middleware = require('./_common/middleware');
|
||||||
|
|
||||||
|
const parseRobotsTxt = (content) => {
|
||||||
|
const lines = content.split('\n');
|
||||||
|
const rules = [];
|
||||||
|
|
||||||
|
lines.forEach(line => {
|
||||||
|
line = line.trim(); // This removes trailing and leading whitespaces
|
||||||
|
|
||||||
|
let match = line.match(/^(Allow|Disallow):\s*(\S*)$/i);
|
||||||
|
if (match) {
|
||||||
|
const rule = {
|
||||||
|
lbl: match[1],
|
||||||
|
val: match[2],
|
||||||
|
};
|
||||||
|
|
||||||
|
rules.push(rule);
|
||||||
|
} else {
|
||||||
|
match = line.match(/^(User-agent):\s*(\S*)$/i);
|
||||||
|
if (match) {
|
||||||
|
const rule = {
|
||||||
|
lbl: match[1],
|
||||||
|
val: match[2],
|
||||||
|
};
|
||||||
|
|
||||||
|
rules.push(rule);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return { robots: rules };
|
||||||
|
}
|
||||||
|
|
||||||
|
const handler = async function(url) {
|
||||||
|
let parsedURL;
|
||||||
|
try {
|
||||||
|
parsedURL = new URL(url);
|
||||||
|
} catch (error) {
|
||||||
|
return {
|
||||||
|
statusCode: 400,
|
||||||
|
body: JSON.stringify({ error: 'Invalid url query parameter' }),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
const robotsURL = `${parsedURL.protocol}//${parsedURL.hostname}/robots.txt`;
|
||||||
|
|
||||||
|
try {
|
||||||
|
const response = await axios.get(robotsURL);
|
||||||
|
|
||||||
|
if (response.status === 200) {
|
||||||
|
return parseRobotsTxt(response.data);
|
||||||
|
} else {
|
||||||
|
return {
|
||||||
|
statusCode: response.status,
|
||||||
|
body: JSON.stringify({ error: 'Failed to fetch robots.txt', statusCode: response.status }),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
return {
|
||||||
|
statusCode: 500,
|
||||||
|
body: JSON.stringify({ error: `Error fetching robots.txt: ${error.message}` }),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
exports.handler = middleware(handler);
|
@ -165,7 +165,7 @@ const Results = (): JSX.Element => {
|
|||||||
jobId: 'get-ip',
|
jobId: 'get-ip',
|
||||||
updateLoadingJobs,
|
updateLoadingJobs,
|
||||||
addressInfo: { address, addressType, expectedAddressTypes: urlTypeOnly },
|
addressInfo: { address, addressType, expectedAddressTypes: urlTypeOnly },
|
||||||
fetchRequest: () => fetch(`${api}/find-url-ip?url=${address}`)
|
fetchRequest: () => fetch(`${api}/get-ip?url=${address}`)
|
||||||
.then(res => parseJson(res))
|
.then(res => parseJson(res))
|
||||||
.then(res => res.ip),
|
.then(res => res.ip),
|
||||||
});
|
});
|
||||||
@ -175,7 +175,7 @@ const Results = (): JSX.Element => {
|
|||||||
jobId: 'ssl',
|
jobId: 'ssl',
|
||||||
updateLoadingJobs,
|
updateLoadingJobs,
|
||||||
addressInfo: { address, addressType, expectedAddressTypes: urlTypeOnly },
|
addressInfo: { address, addressType, expectedAddressTypes: urlTypeOnly },
|
||||||
fetchRequest: () => fetch(`${api}/ssl-check?url=${address}`).then((res) => parseJson(res)),
|
fetchRequest: () => fetch(`${api}/ssl?url=${address}`).then((res) => parseJson(res)),
|
||||||
});
|
});
|
||||||
|
|
||||||
// Fetch and parse cookies info
|
// Fetch and parse cookies info
|
||||||
@ -183,7 +183,7 @@ const Results = (): JSX.Element => {
|
|||||||
jobId: 'cookies',
|
jobId: 'cookies',
|
||||||
updateLoadingJobs,
|
updateLoadingJobs,
|
||||||
addressInfo: { address, addressType, expectedAddressTypes: urlTypeOnly },
|
addressInfo: { address, addressType, expectedAddressTypes: urlTypeOnly },
|
||||||
fetchRequest: () => fetch(`${api}/get-cookies?url=${address}`)
|
fetchRequest: () => fetch(`${api}/cookies?url=${address}`)
|
||||||
.then(res => parseJson(res))
|
.then(res => parseJson(res))
|
||||||
.then(res => parseCookies(res.cookies)),
|
.then(res => parseCookies(res.cookies)),
|
||||||
});
|
});
|
||||||
@ -193,9 +193,8 @@ const Results = (): JSX.Element => {
|
|||||||
jobId: 'robots-txt',
|
jobId: 'robots-txt',
|
||||||
updateLoadingJobs,
|
updateLoadingJobs,
|
||||||
addressInfo: { address, addressType, expectedAddressTypes: urlTypeOnly },
|
addressInfo: { address, addressType, expectedAddressTypes: urlTypeOnly },
|
||||||
fetchRequest: () => fetch(`${api}/read-robots-txt?url=${address}`)
|
fetchRequest: () => fetch(`${api}/robots-txt?url=${address}`)
|
||||||
.then(res => res.text())
|
.then(res => parseJson(res)),
|
||||||
.then(res => parseRobotsTxt(res)),
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// Fetch and parse headers
|
// Fetch and parse headers
|
||||||
@ -203,7 +202,7 @@ const Results = (): JSX.Element => {
|
|||||||
jobId: 'headers',
|
jobId: 'headers',
|
||||||
updateLoadingJobs,
|
updateLoadingJobs,
|
||||||
addressInfo: { address, addressType, expectedAddressTypes: urlTypeOnly },
|
addressInfo: { address, addressType, expectedAddressTypes: urlTypeOnly },
|
||||||
fetchRequest: () => fetch(`${api}/get-headers?url=${address}`).then(res => parseJson(res)),
|
fetchRequest: () => fetch(`${api}/headers?url=${address}`).then(res => parseJson(res)),
|
||||||
});
|
});
|
||||||
|
|
||||||
// Fetch and parse DNS records
|
// Fetch and parse DNS records
|
||||||
@ -211,7 +210,7 @@ const Results = (): JSX.Element => {
|
|||||||
jobId: 'dns',
|
jobId: 'dns',
|
||||||
updateLoadingJobs,
|
updateLoadingJobs,
|
||||||
addressInfo: { address, addressType, expectedAddressTypes: urlTypeOnly },
|
addressInfo: { address, addressType, expectedAddressTypes: urlTypeOnly },
|
||||||
fetchRequest: () => fetch(`${api}/get-dns?url=${address}`).then(res => parseJson(res)),
|
fetchRequest: () => fetch(`${api}/dns?url=${address}`).then(res => parseJson(res)),
|
||||||
});
|
});
|
||||||
|
|
||||||
// Fetch and parse Lighthouse performance data
|
// Fetch and parse Lighthouse performance data
|
||||||
@ -219,7 +218,7 @@ const Results = (): JSX.Element => {
|
|||||||
jobId: 'quality',
|
jobId: 'quality',
|
||||||
updateLoadingJobs,
|
updateLoadingJobs,
|
||||||
addressInfo: { address, addressType, expectedAddressTypes: urlTypeOnly },
|
addressInfo: { address, addressType, expectedAddressTypes: urlTypeOnly },
|
||||||
fetchRequest: () => fetch(`${api}/lighthouse-report?url=${address}`)
|
fetchRequest: () => fetch(`${api}/quality?url=${address}`)
|
||||||
.then(res => parseJson(res))
|
.then(res => parseJson(res))
|
||||||
.then(res => res?.lighthouseResult || { error: 'No Data'}),
|
.then(res => res?.lighthouseResult || { error: 'No Data'}),
|
||||||
});
|
});
|
||||||
@ -249,7 +248,7 @@ const Results = (): JSX.Element => {
|
|||||||
jobId: 'ports',
|
jobId: 'ports',
|
||||||
updateLoadingJobs,
|
updateLoadingJobs,
|
||||||
addressInfo: { address: ipAddress, addressType: 'ipV4', expectedAddressTypes: ['ipV4', 'ipV6'] },
|
addressInfo: { address: ipAddress, addressType: 'ipV4', expectedAddressTypes: ['ipV4', 'ipV6'] },
|
||||||
fetchRequest: () => fetch(`${api}/check-ports?url=${ipAddress}`)
|
fetchRequest: () => fetch(`${api}/ports?url=${ipAddress}`)
|
||||||
.then(res => parseJson(res)),
|
.then(res => parseJson(res)),
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -268,7 +267,7 @@ const Results = (): JSX.Element => {
|
|||||||
jobId: 'txt-records',
|
jobId: 'txt-records',
|
||||||
updateLoadingJobs,
|
updateLoadingJobs,
|
||||||
addressInfo: { address, addressType, expectedAddressTypes: urlTypeOnly },
|
addressInfo: { address, addressType, expectedAddressTypes: urlTypeOnly },
|
||||||
fetchRequest: () => fetch(`${api}/get-txt?url=${address}`).then(res => parseJson(res)),
|
fetchRequest: () => fetch(`${api}/txt-records?url=${address}`).then(res => parseJson(res)),
|
||||||
});
|
});
|
||||||
|
|
||||||
// Fetches URL redirects
|
// Fetches URL redirects
|
||||||
@ -276,7 +275,7 @@ const Results = (): JSX.Element => {
|
|||||||
jobId: 'redirects',
|
jobId: 'redirects',
|
||||||
updateLoadingJobs,
|
updateLoadingJobs,
|
||||||
addressInfo: { address, addressType, expectedAddressTypes: urlTypeOnly },
|
addressInfo: { address, addressType, expectedAddressTypes: urlTypeOnly },
|
||||||
fetchRequest: () => fetch(`${api}/follow-redirects?url=${address}`).then(res => parseJson(res)),
|
fetchRequest: () => fetch(`${api}/redirects?url=${address}`).then(res => parseJson(res)),
|
||||||
});
|
});
|
||||||
|
|
||||||
// Get current status and response time of server
|
// Get current status and response time of server
|
||||||
@ -284,7 +283,7 @@ const Results = (): JSX.Element => {
|
|||||||
jobId: 'status',
|
jobId: 'status',
|
||||||
updateLoadingJobs,
|
updateLoadingJobs,
|
||||||
addressInfo: { address, addressType, expectedAddressTypes: urlTypeOnly },
|
addressInfo: { address, addressType, expectedAddressTypes: urlTypeOnly },
|
||||||
fetchRequest: () => fetch(`${api}/server-status?url=${address}`).then(res => parseJson(res)),
|
fetchRequest: () => fetch(`${api}/status?url=${address}`).then(res => parseJson(res)),
|
||||||
});
|
});
|
||||||
|
|
||||||
// Get current status and response time of server
|
// Get current status and response time of server
|
||||||
@ -308,7 +307,7 @@ const Results = (): JSX.Element => {
|
|||||||
jobId: 'carbon',
|
jobId: 'carbon',
|
||||||
updateLoadingJobs,
|
updateLoadingJobs,
|
||||||
addressInfo: { address, addressType, expectedAddressTypes: urlTypeOnly },
|
addressInfo: { address, addressType, expectedAddressTypes: urlTypeOnly },
|
||||||
fetchRequest: () => fetch(`${api}/get-carbon?url=${address}`).then(res => parseJson(res)),
|
fetchRequest: () => fetch(`${api}/carbon?url=${address}`).then(res => parseJson(res)),
|
||||||
});
|
});
|
||||||
|
|
||||||
// Check if a site is on the HSTS preload list
|
// Check if a site is on the HSTS preload list
|
||||||
@ -316,7 +315,7 @@ const Results = (): JSX.Element => {
|
|||||||
jobId: 'hsts',
|
jobId: 'hsts',
|
||||||
updateLoadingJobs,
|
updateLoadingJobs,
|
||||||
addressInfo: { address, addressType, expectedAddressTypes: urlTypeOnly },
|
addressInfo: { address, addressType, expectedAddressTypes: urlTypeOnly },
|
||||||
fetchRequest: () => fetch(`${api}/check-hsts?url=${address}`).then(res => parseJson(res)),
|
fetchRequest: () => fetch(`${api}/hsts?url=${address}`).then(res => parseJson(res)),
|
||||||
});
|
});
|
||||||
|
|
||||||
// Get a websites listed pages, from sitemap
|
// Get a websites listed pages, from sitemap
|
||||||
@ -356,7 +355,7 @@ const Results = (): JSX.Element => {
|
|||||||
jobId: 'features',
|
jobId: 'features',
|
||||||
updateLoadingJobs,
|
updateLoadingJobs,
|
||||||
addressInfo: { address, addressType, expectedAddressTypes: urlTypeOnly },
|
addressInfo: { address, addressType, expectedAddressTypes: urlTypeOnly },
|
||||||
fetchRequest: () => fetch(`${api}/site-features?url=${address}`)
|
fetchRequest: () => fetch(`${api}/features?url=${address}`)
|
||||||
.then(res => parseJson(res))
|
.then(res => parseJson(res))
|
||||||
.then(res => {
|
.then(res => {
|
||||||
if (res.Errors && res.Errors.length > 0) {
|
if (res.Errors && res.Errors.length > 0) {
|
||||||
@ -371,7 +370,7 @@ const Results = (): JSX.Element => {
|
|||||||
jobId: 'dnssec',
|
jobId: 'dnssec',
|
||||||
updateLoadingJobs,
|
updateLoadingJobs,
|
||||||
addressInfo: { address, addressType, expectedAddressTypes: urlTypeOnly },
|
addressInfo: { address, addressType, expectedAddressTypes: urlTypeOnly },
|
||||||
fetchRequest: () => fetch(`${api}/dns-sec?url=${address}`).then(res => parseJson(res)),
|
fetchRequest: () => fetch(`${api}/dnssec?url=${address}`).then(res => parseJson(res)),
|
||||||
});
|
});
|
||||||
|
|
||||||
// Run a manual whois lookup on the domain
|
// Run a manual whois lookup on the domain
|
||||||
@ -379,7 +378,7 @@ const Results = (): JSX.Element => {
|
|||||||
jobId: 'domain',
|
jobId: 'domain',
|
||||||
updateLoadingJobs,
|
updateLoadingJobs,
|
||||||
addressInfo: { address, addressType, expectedAddressTypes: urlTypeOnly },
|
addressInfo: { address, addressType, expectedAddressTypes: urlTypeOnly },
|
||||||
fetchRequest: () => fetch(`${api}/whois-lookup?url=${address}`).then(res => parseJson(res)),
|
fetchRequest: () => fetch(`${api}/whois?url=${address}`).then(res => parseJson(res)),
|
||||||
});
|
});
|
||||||
|
|
||||||
// Get the DNS server(s) for a domain, and test DoH/DoT support
|
// Get the DNS server(s) for a domain, and test DoH/DoT support
|
||||||
@ -395,7 +394,7 @@ const Results = (): JSX.Element => {
|
|||||||
jobId: 'linked-pages',
|
jobId: 'linked-pages',
|
||||||
updateLoadingJobs,
|
updateLoadingJobs,
|
||||||
addressInfo: { address, addressType, expectedAddressTypes: urlTypeOnly },
|
addressInfo: { address, addressType, expectedAddressTypes: urlTypeOnly },
|
||||||
fetchRequest: () => fetch(`${api}/content-links?url=${address}`).then(res => parseJson(res)),
|
fetchRequest: () => fetch(`${api}/linked-pages?url=${address}`).then(res => parseJson(res)),
|
||||||
});
|
});
|
||||||
|
|
||||||
// Get mail config for server, based on DNS records
|
// Get mail config for server, based on DNS records
|
||||||
|
Loading…
x
Reference in New Issue
Block a user