mirror of
https://github.com/Lissy93/web-check.git
synced 2025-03-14 23:19:20 +01:00
Working on traceroute component
This commit is contained in:
parent
a8981b8ca7
commit
a6ecbd3406
@ -76,6 +76,11 @@
|
||||
to = "/.netlify/functions/check-ports"
|
||||
status = 301
|
||||
force = true
|
||||
[[redirects]]
|
||||
from = "/trace-route"
|
||||
to = "/.netlify/functions/trace-route"
|
||||
status = 301
|
||||
force = true
|
||||
|
||||
# For router history mode, ensure pages land on index
|
||||
[[redirects]]
|
||||
|
35
server/lambda/trace-route.js
Normal file
35
server/lambda/trace-route.js
Normal file
@ -0,0 +1,35 @@
|
||||
const traceroute = require('traceroute');
|
||||
const util = require('util');
|
||||
const url = require('url');
|
||||
|
||||
// Convert traceroute.trace method to return a Promise
|
||||
const traceroutePromise = util.promisify(traceroute.trace);
|
||||
|
||||
exports.handler = async function(event, context) {
|
||||
const urlString = event.queryStringParameters.url;
|
||||
|
||||
try {
|
||||
if (!urlString) {
|
||||
throw new Error('URL parameter is missing!');
|
||||
}
|
||||
|
||||
// Parse the URL and get the hostname
|
||||
const urlObject = url.parse(urlString);
|
||||
const host = urlObject.hostname;
|
||||
|
||||
if (!host) {
|
||||
throw new Error('Invalid URL provided');
|
||||
}
|
||||
|
||||
const result = await traceroutePromise(host);
|
||||
return {
|
||||
statusCode: 200,
|
||||
body: JSON.stringify({ message: "Traceroute completed!", result }),
|
||||
};
|
||||
} catch (err) {
|
||||
return {
|
||||
statusCode: 500,
|
||||
body: JSON.stringify({ message: `Error: ${err.message}` }),
|
||||
};
|
||||
}
|
||||
};
|
28
src/components/Results/TraceRoute.tsx
Normal file
28
src/components/Results/TraceRoute.tsx
Normal file
@ -0,0 +1,28 @@
|
||||
|
||||
import styled from 'styled-components';
|
||||
import colors from 'styles/colors';
|
||||
import Card from 'components/Form/Card';
|
||||
import Heading from 'components/Form/Heading';
|
||||
import Row from 'components/Form/Row';
|
||||
|
||||
const Outer = styled(Card)``;
|
||||
|
||||
const TraceRouteCard = (traceRouteResponse: any): JSX.Element => {
|
||||
console.log(traceRouteResponse.result);
|
||||
const routes = traceRouteResponse.result;
|
||||
console.log(Object.keys(routes));
|
||||
return (
|
||||
<Outer>
|
||||
<Heading as="h3" align="left" color={colors.primary}>Trace Route</Heading>
|
||||
{routes.map((route: any) => (
|
||||
<Row lbl="" val="">
|
||||
{/* <span>{route}</span> */}
|
||||
<span>{Object.keys(route)[0]}</span>
|
||||
</Row>
|
||||
)
|
||||
)}
|
||||
</Outer>
|
||||
);
|
||||
}
|
||||
|
||||
export default TraceRouteCard;
|
@ -145,6 +145,7 @@ const jobNames = [
|
||||
'txt-records',
|
||||
'status',
|
||||
'ports',
|
||||
'trace-route',
|
||||
// 'server-info',
|
||||
'whois',
|
||||
] as const;
|
||||
|
@ -26,6 +26,8 @@ import RedirectsCard from 'components/Results/Redirects';
|
||||
import TxtRecordCard from 'components/Results/TxtRecords';
|
||||
import ServerStatusCard from 'components/Results/ServerStatus';
|
||||
import OpenPortsCard from 'components/Results/OpenPorts';
|
||||
import TraceRouteCard from 'components/Results/TraceRoute';
|
||||
|
||||
import ProgressBar, { LoadingJob, LoadingState, initialJobs } from 'components/misc/ProgressBar';
|
||||
import keys from 'utils/get-keys';
|
||||
import { determineAddressType, AddressType } from 'utils/address-type-checker';
|
||||
@ -253,6 +255,14 @@ const Results = (): JSX.Element => {
|
||||
fetchRequest: () => fetch(`/server-status?url=${address}`).then(res => res.json()),
|
||||
});
|
||||
|
||||
// Get trace route for a given hostname
|
||||
const [traceRouteResults] = useMotherHook({
|
||||
jobId: 'trace-route',
|
||||
updateLoadingJobs,
|
||||
addressInfo: { address, addressType, expectedAddressTypes: urlTypeOnly },
|
||||
fetchRequest: () => fetch(`/trace-route?url=${address}`).then(res => res.json()),
|
||||
});
|
||||
|
||||
/* Cancel remaining jobs after 10 second timeout */
|
||||
useEffect(() => {
|
||||
const checkJobs = () => {
|
||||
@ -286,6 +296,7 @@ const Results = (): JSX.Element => {
|
||||
{ title: 'DNS Records', result: dnsResults, Component: DnsRecordsCard },
|
||||
{ title: 'Performance', result: lighthouseResults, Component: LighthouseCard },
|
||||
{ title: 'Cookies', result: cookieResults, Component: CookiesCard },
|
||||
{ title: 'Trace Route', result: traceRouteResults, Component: TraceRouteCard },
|
||||
{ title: 'Screenshot', result: lighthouseResults?.fullPageScreenshot?.screenshot, Component: ScreenshotCard },
|
||||
{ title: 'Technologies', result: technologyResults, Component: BuiltWithCard },
|
||||
{ title: 'Crawl Rules', result: robotsTxtResults, Component: RobotsTxtCard },
|
||||
|
Loading…
Reference in New Issue
Block a user