diff --git a/hyperglass/ui/components/ResolvedTarget.js b/hyperglass/ui/components/ResolvedTarget.js
index 7e1ce7e..5bd1601 100644
--- a/hyperglass/ui/components/ResolvedTarget.js
+++ b/hyperglass/ui/components/ResolvedTarget.js
@@ -1,5 +1,6 @@
import React, { useEffect } from "react";
import { Button, Icon, Spinner, Stack, Tag, Text, Tooltip, useColorMode } from "@chakra-ui/core";
+import axios from "axios";
import useAxios from "axios-hooks";
import format from "string-format";
import useConfig from "~/components/HyperglassProvider";
@@ -9,134 +10,150 @@ format.extend(String.prototype, {});
const labelBg = { dark: "secondary", light: "secondary" };
const labelBgSuccess = { dark: "success", light: "success" };
-const ResolvedTarget = React.forwardRef(({ fqdnTarget, setTarget, queryTarget, families }, ref) => {
- const { colorMode } = useColorMode();
- const config = useConfig();
- const labelBgStatus = { true: labelBgSuccess[colorMode], false: labelBg[colorMode] };
- const dnsUrl = config.web.dns_provider.url;
- const query4 = families.includes(4);
- const query6 = families.includes(6);
- const params = {
- 4: {
- url: dnsUrl,
- params: { name: fqdnTarget, type: "A" },
- headers: { accept: "application/dns-json" },
- crossdomain: true,
- timeout: 1000
- },
- 6: {
- url: dnsUrl,
- params: { name: fqdnTarget, type: "AAAA" },
- headers: { accept: "application/dns-json" },
- crossdomain: true,
- timeout: 1000
- }
- };
+async function containingPrefix(ipAddress) {
+ try {
+ const prefixData = await axios.get("https://stat.ripe.net/data/network-info/data.json", {
+ params: { resource: ipAddress }
+ });
+ return prefixData.data?.data?.prefix;
+ } catch (err) {
+ console.dir(err);
+ return null;
+ }
+}
- const [{ data: data4, loading: loading4, error: error4 }] = useAxios(params[4]);
-
- const [{ data: data6, loading: loading6, error: error6 }] = useAxios(params[6]);
-
- const handleOverride = overridden => {
- setTarget({ field: "query_target", value: overridden });
- };
-
- const isSelected = value => {
- return labelBgStatus[value === queryTarget];
- };
-
- const findAnswer = data => {
- return data?.Answer?.filter(answerData => answerData.type === data.Question[0].type)[0]
- .data;
- };
-
- useEffect(() => {
- if (query6 && data6?.Answer) {
- handleOverride(findAnswer(data6));
- } else if (query4 && data4?.Answer && !query6 && !data6?.Answer) {
- handleOverride(findAnswer(data4));
- } else if (query4 && data4?.Answer) {
- handleOverride(findAnswer(data4));
- }
- }, [data4, data6]);
-
- return (
- {
+ const { colorMode } = useColorMode();
+ const config = useConfig();
+ const labelBgStatus = { true: labelBgSuccess[colorMode], false: labelBg[colorMode] };
+ const dnsUrl = config.web.dns_provider.url;
+ const query4 = families.includes(4);
+ const query6 = families.includes(6);
+ const params = {
+ 4: {
+ url: dnsUrl,
+ params: { name: fqdnTarget, type: "A" },
+ headers: { accept: "application/dns-json" },
+ crossdomain: true,
+ timeout: 1000
+ },
+ 6: {
+ url: dnsUrl,
+ params: { name: fqdnTarget, type: "AAAA" },
+ headers: { accept: "application/dns-json" },
+ crossdomain: true,
+ timeout: 1000
}
- flexWrap="wrap"
- >
- {loading4 ||
- error4 ||
- (query4 && findAnswer(data4) && (
-
-
-
-
- {loading4 && }
- {error4 && }
- {findAnswer(data4) && (
-
- {findAnswer(data4)}
-
- )}
-
- ))}
- {loading6 ||
- error6 ||
- (query6 && findAnswer(data6) && (
-
-
-
+ {loading4 && }
+ {error4 && }
+ {findAnswer(data4) && (
+
+ {findAnswer(data4)}
+
+ )}
+
+ ))}
+ {loading6 ||
+ error6 ||
+ (query6 && findAnswer(data6) && (
+
+
- IPv6
-
-
- {loading6 && }
- {error6 && }
- {findAnswer(data6) && (
-
- {findAnswer(data6)}
-
- )}
-
- ))}
-
- );
-});
+ handleOverride(findAnswer(data6))}
+ >
+ IPv6
+
+
+ {loading6 && }
+ {error6 && }
+ {findAnswer(data6) && (
+
+ {findAnswer(data6)}
+
+ )}
+
+ ))}
+
+ );
+ }
+);
ResolvedTarget.displayName = "ResolvedTarget";
export default ResolvedTarget;