diff --git a/src/app/server/[ip]/page.tsx b/src/app/server/[ip]/page.tsx index 21e104c..e2238ff 100644 --- a/src/app/server/[ip]/page.tsx +++ b/src/app/server/[ip]/page.tsx @@ -19,7 +19,7 @@ export default function Server() { useEffect(() => { if (!ip) return; - auth(makeAddress(ip, 7080), wsServerRef, setServer, setMessages); + auth(ip, wsServerRef, setServer, setMessages); }, [ip]); return ( diff --git a/src/components/Sidebar.tsx b/src/components/Sidebar.tsx index 173911e..d0cc0d3 100644 --- a/src/components/Sidebar.tsx +++ b/src/components/Sidebar.tsx @@ -69,7 +69,7 @@ export default function AppSidebar({ if (!user?.node_address) return; if (setUser) setUser(user); auth( - makeAddress(user?.node_address, 7090), + user?.node_address, wsRef, () => {}, setMessages, diff --git a/src/lib/auth.ts b/src/lib/auth.ts index d333770..aa835a9 100644 --- a/src/lib/auth.ts +++ b/src/lib/auth.ts @@ -2,19 +2,30 @@ import { Message, Server } from "@/types/types"; import axios from "axios"; import { Dispatch, RefObject, SetStateAction } from "react"; -export function makeAddress(ip: string, defaultPort = 7080) { - // return ip.includes(":") ? `${ip}` : `${ip}:${defaultPort}`; +async function getIP(domain: string) { + const res = await fetch(`https://dns.google/resolve?name=${domain}&type=A`); + const data = await res.json(); + return data.Answer ? data.Answer[0].data : null; +} + +export async function makeAddress(ip: string, defaultPort = 7080) { // Apparently wss doesn't like ports (or maybe the tunnel I'm using) - return ip; + // return ip.includes(":") ? `${ip}` : `${ip}:${defaultPort}`; + if (ip.match(/^\d\.\d\.\d\.\d/)) { + return ip; + } + + return await getIP(ip); } export default async function auth( - ip: string, + address: string, wsRef: RefObject, setServer: Dispatch>, setMessages: Dispatch>, onNewMessage?: (m: Message) => void ) { + const ip = makeAddress(address); console.log("Authenticating with server at:", ip); const server_auth = ( (await axios.post("/api/auth", { server_ip: ip })).data as any