From a8981b8ca72a8c3d0171d468d2f414ef9d81333b Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Sat, 1 Jul 2023 23:17:21 +0100 Subject: [PATCH] Implements open port results into UI --- src/components/Results/OpenPorts.tsx | 36 ++++++++++++++++++++++++++++ src/components/misc/ProgressBar.tsx | 1 + src/pages/Results.tsx | 12 ++++++++++ 3 files changed, 49 insertions(+) create mode 100644 src/components/Results/OpenPorts.tsx diff --git a/src/components/Results/OpenPorts.tsx b/src/components/Results/OpenPorts.tsx new file mode 100644 index 0000000..9a85c59 --- /dev/null +++ b/src/components/Results/OpenPorts.tsx @@ -0,0 +1,36 @@ + +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)` + +small { + margin-top: 1rem; + opacity: 0.5; +} +`; + +const OpenPortsCard = (portData: any): JSX.Element => { + return ( + + Open Ports + + {portData.openPorts.map((port: any) => ( + + {port} + + ) + )} +
+ + Unable to establish connections to:
+ {portData.failedPorts.join(', ')} +
+
+ ); +} + +export default OpenPortsCard; diff --git a/src/components/misc/ProgressBar.tsx b/src/components/misc/ProgressBar.tsx index f3988cf..b54882d 100644 --- a/src/components/misc/ProgressBar.tsx +++ b/src/components/misc/ProgressBar.tsx @@ -144,6 +144,7 @@ const jobNames = [ 'redirects', 'txt-records', 'status', + 'ports', // 'server-info', 'whois', ] as const; diff --git a/src/pages/Results.tsx b/src/pages/Results.tsx index 707fac9..3116762 100644 --- a/src/pages/Results.tsx +++ b/src/pages/Results.tsx @@ -25,6 +25,7 @@ import DnsRecordsCard from 'components/Results/DnsRecords'; 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 ProgressBar, { LoadingJob, LoadingState, initialJobs } from 'components/misc/ProgressBar'; import keys from 'utils/get-keys'; import { determineAddressType, AddressType } from 'utils/address-type-checker'; @@ -198,6 +199,16 @@ const Results = (): JSX.Element => { .then(res => parseShodanResults(res)), }); + + // Check for open ports + const [portsResults] = useMotherHook({ + jobId: 'ports', + updateLoadingJobs, + addressInfo: { address: ipAddress, addressType: 'ipV4', expectedAddressTypes: ['ipV4', 'ipV6'] }, + fetchRequest: () => fetch(`/check-ports?url=${ipAddress}`) + .then(res => res.json()), + }); + // Fetch and parse domain whois results const [whoIsResults] = useMotherHook({ jobId: 'whois', @@ -282,6 +293,7 @@ const Results = (): JSX.Element => { { title: 'Redirects', result: redirectResults, Component: RedirectsCard }, { title: 'TXT Records', result: txtRecordResults, Component: TxtRecordCard }, { title: 'Server Status', result: serverStatusResults, Component: ServerStatusCard }, + { title: 'Open Ports', result: portsResults, Component: OpenPortsCard }, ]; return (