diff --git a/src/components/DevAreaTools/IPLookup.jsx b/src/components/DevAreaTools/IPLookup.jsx new file mode 100644 index 0000000..86efa84 --- /dev/null +++ b/src/components/DevAreaTools/IPLookup.jsx @@ -0,0 +1,80 @@ +import { useState } from 'react'; + +export default function IPLookup() { + const [ipAddress, setIpAddress] = useState(''); + const [result, setResult] = useState(null); + const [loading, setLoading] = useState(false); + + const lookupIP = async (ip) => { + setLoading(true); + try { + // Using ipapi.co - free, no API key + const url = ip + ? `https://ipapi.co/${ip}/json/` + : 'https://ipapi.co/json/'; + + const response = await fetch(url); + const data = await response.json(); + + setResult(data); + } catch (error) { + console.error('Error:', error); + setResult({ error: 'Failed to lookup IP' }); + } + setLoading(false); + }; + + const getMyIP = () => { + setIpAddress(''); + lookupIP(''); + }; + + return ( +
+

IP Address Lookup

+ +
+ setIpAddress(e.target.value)} + className="flex-1 px-4 py-2 border rounded" + /> + + +
+ + {loading &&

Loading...

} + + {result && !result.error && ( +
+

IP: {result.ip}

+

City: {result.city}

+

Region: {result.region}

+

Country: {result.country_name}

+

Timezone: {result.timezone}

+

ISP: {result.org}

+

Latitude: {result.latitude}

+

Longitude: {result.longitude}

+
+ )} + + {result?.error && ( +

{result.error}

+ )} +
+ ); +} \ No newline at end of file diff --git a/src/pages/DevArea/DevTools.jsx b/src/pages/DevArea/DevTools.jsx index c4c5c55..fb2c106 100644 --- a/src/pages/DevArea/DevTools.jsx +++ b/src/pages/DevArea/DevTools.jsx @@ -8,6 +8,7 @@ import XmlFormatter from "../../components/DevAreaTools/XmlFormatter"; import Base64Tool from "../../components/DevAreaTools/Base64Tool"; import YAMLFormatter from "../../components/DevAreaTools/YAMLFormatter"; import PasswordGenerator from "../../components/DevAreaTools/PasswordGenerator"; +import IPLookup from "../../components/DevAreaTools/IPLookup"; const DevTools = () => { const { tool } = useParams(); @@ -21,6 +22,7 @@ const DevTools = () => { "yaml-formatter": , "base64": , "password-generator": , + "ip-lookup": , } diff --git a/src/pages/DevArea/index.jsx b/src/pages/DevArea/index.jsx index 024aca2..dae4a00 100644 --- a/src/pages/DevArea/index.jsx +++ b/src/pages/DevArea/index.jsx @@ -165,7 +165,7 @@ const DevArea = () => { { name: "IP Address Lookup", link: "/devarea/ip-lookup", - isAvailable: false + isAvailable: true }, // Security {