diff --git a/src/components/Results/Redirects.tsx b/src/components/Results/Redirects.tsx
new file mode 100644
index 0000000..38e27a6
--- /dev/null
+++ b/src/components/Results/Redirects.tsx
@@ -0,0 +1,37 @@
+
+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)`
+ div {
+ justify-content: flex-start;
+ align-items: baseline;
+ }
+ .arrow-thing {
+ color: ${colors.primary};
+ font-size: 1.8rem;
+ font-weight: bold;
+ margin-right: 0.5rem;
+ }
+`;
+
+const RedirectsCard = (redirects: any): JSX.Element => {
+ return (
+
+ Redirects
+ { !redirects?.redirects.length &&
}
+ {redirects.redirects.map((redirect: any, index: number) => {
+ return (
+
+ ↳ {redirect}
+
+ );
+ })}
+
+ );
+}
+
+export default RedirectsCard;
diff --git a/src/components/Results/TxtRecords.tsx b/src/components/Results/TxtRecords.tsx
new file mode 100644
index 0000000..a5e8686
--- /dev/null
+++ b/src/components/Results/TxtRecords.tsx
@@ -0,0 +1,25 @@
+
+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 TxtRecordCard = (records: any): JSX.Element => {
+ console.log(records);
+ return (
+
+ TXT Config
+ { !records &&
}
+ {Object.keys(records).map((recordName: any, index: number) => {
+ return (
+
+ );
+ })}
+
+ );
+}
+
+export default TxtRecordCard;
diff --git a/src/pages/Results.tsx b/src/pages/Results.tsx
index a5aea4d..69af0df 100644
--- a/src/pages/Results.tsx
+++ b/src/pages/Results.tsx
@@ -22,6 +22,8 @@ import HeadersCard from 'components/Results/Headers';
import CookiesCard from 'components/Results/Cookies';
import RobotsTxtCard from 'components/Results/RobotsTxt';
import DnsRecordsCard from 'components/Results/DnsRecords';
+import RedirectsCard from 'components/Results/Redirects';
+import TxtRecordResults from 'components/Results/TxtRecords';
import ProgressBar, { LoadingJob, LoadingState, initialJobs } from 'components/misc/ProgressBar';
import keys from 'utils/get-keys';
import { determineAddressType, AddressType } from 'utils/address-type-checker';
@@ -80,10 +82,18 @@ const Results = (): JSX.Element => {
}
return loadingJob;
});
+
+ if (newState === 'success') {
+ console.log(
+ `%cFetch Success - ${job}%c\n\nThe ${job} job succeeded in ${timeTaken}ms`,
+ `background: ${colors.success}; color: ${colors.background}; padding: 4px 8px; font-size: 16px;`,
+ `color: ${colors.success};`,
+ );
+ }
if (newState === 'error') {
console.log(
- `%cWeb-Check Fetch Error - ${job}%c\n\nThe ${job} job failed with the following error:%c\n${error}`,
+ `%cFetch Error - ${job}%c\n\nThe ${job} job failed with the following error:%c\n${error}`,
`background: ${colors.danger}; padding: 4px 8px; font-size: 16px;`,
`color: ${colors.danger};`,
`color: ${colors.warning};`,
@@ -207,6 +217,22 @@ const Results = (): JSX.Element => {
.then(res => makeTechnologies(res)),
});
+ // Fetches DNS TXT records
+ const [txtRecordResults] = useMotherHook({
+ jobId: 'txt-records',
+ updateLoadingJobs,
+ addressInfo: { address, addressType, expectedAddressTypes: urlTypeOnly },
+ fetchRequest: () => fetch(`/get-txt?url=${address}`).then(res => res.json()),
+ });
+
+ // Fetches URL redirects
+ const [redirectResults] = useMotherHook({
+ jobId: 'redirects',
+ updateLoadingJobs,
+ addressInfo: { address, addressType, expectedAddressTypes: urlTypeOnly },
+ fetchRequest: () => fetch(`/follow-redirects?url=${address}`).then(res => res.json()),
+ });
+
/* Cancel remaining jobs after 10 second timeout */
useEffect(() => {
const checkJobs = () => {
@@ -244,6 +270,8 @@ const Results = (): JSX.Element => {
{ title: 'Technologies', result: technologyResults, Component: BuiltWithCard },
{ title: 'Crawl Rules', result: robotsTxtResults, Component: RobotsTxtCard },
{ title: 'Server Info', result: shoadnResults?.serverInfo, Component: ServerInfoCard },
+ { title: 'Redirects', result: redirectResults, Component: RedirectsCard },
+ { title: 'TXT Records', result: txtRecordResults, Component: TxtRecordResults },
];
return (