diff --git a/app/api/proxy/route.ts b/app/api/proxy/route.ts index 51c4e2a..42ea64b 100644 --- a/app/api/proxy/route.ts +++ b/app/api/proxy/route.ts @@ -1,10 +1,18 @@ +// chatgpt +function rewriteCookieDomain(rawCookie: string): string { + return rawCookie + .replace(/;?\s*Domain=[^;]+/i, '') + .concat(`; Domain=localhost:3000`); +} + +// chatgpt async function proxyRequest(request: Request, method: string) { const { searchParams } = new URL(request.url); const target = searchParams.get("url"); if (!target) { return new Response( - JSON.stringify({ error: "Missing `url` query parameter." }), + JSON.stringify({ error: "missing url param, dumbass" }), { status: 400, headers: { "Content-Type": "application/json" } @@ -16,7 +24,7 @@ async function proxyRequest(request: Request, method: string) { const headers = new Headers(request.headers); headers.delete("host"); - headers.delete("accept-encoding"); // ! important + headers.delete("accept-encoding"); const init: RequestInit = { method, @@ -30,8 +38,20 @@ async function proxyRequest(request: Request, method: string) { const response = await fetch(targetUrl, init); + // Copy all response headers const responseHeaders = new Headers(response.headers); - responseHeaders.delete("content-encoding"); // ! important + responseHeaders.delete("content-encoding"); + + const rawSetCookies = response.headers.getSetCookie?.() ?? []; + + if (rawSetCookies.length > 0) { + responseHeaders.delete("set-cookie"); + + for (const rawCookie of rawSetCookies) { + const rewritten = rewriteCookieDomain(rawCookie); + responseHeaders.append("set-cookie", rewritten); + } + } return new Response(response.body, { status: response.status, diff --git a/bun.lock b/bun.lock index 8b898b2..e89df99 100644 --- a/bun.lock +++ b/bun.lock @@ -6,6 +6,7 @@ "dependencies": { "@catppuccin/tailwindcss": "^0.1.6", "@hookform/resolvers": "^5.1.1", + "@ocbwoy3/libocbwoy3": "^0.0.5", "@radix-ui/react-accordion": "^1.2.11", "@radix-ui/react-alert-dialog": "^1.1.14", "@radix-ui/react-aspect-ratio": "^1.1.7", @@ -34,6 +35,7 @@ "@radix-ui/react-toggle-group": "^1.1.10", "@radix-ui/react-tooltip": "^1.2.7", "@tailwindcss/line-clamp": "^0.4.4", + "@types/bun": "^1.2.19", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "cmdk": "^1.1.1", @@ -161,6 +163,8 @@ "@nodelib/fs.walk": ["@nodelib/fs.walk@1.2.8", "", { "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="], + "@ocbwoy3/libocbwoy3": ["@ocbwoy3/libocbwoy3@0.0.5", "", {}, "sha512-zDm11Z5xzmOgsDg/E8Z9UFlMYjKdkUg28YE/Fwb0+NoVx5gKyj3D9eSbvBAOfTISTKkI3X2FTWHg3ehvyLz1Fg=="], + "@pkgjs/parseargs": ["@pkgjs/parseargs@0.11.0", "", {}, "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg=="], "@radix-ui/number": ["@radix-ui/number@1.1.1", "", {}, "sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g=="], @@ -281,6 +285,8 @@ "@tailwindcss/line-clamp": ["@tailwindcss/line-clamp@0.4.4", "", { "peerDependencies": { "tailwindcss": ">=2.0.0 || >=3.0.0 || >=3.0.0-alpha.1" } }, "sha512-5U6SY5z8N42VtrCrKlsTAA35gy2VSyYtHWCsg1H87NU1SXnEfekTVlrga9fzUDrrHcGi2Lb5KenUWb4lRQT5/g=="], + "@types/bun": ["@types/bun@1.2.19", "", { "dependencies": { "bun-types": "1.2.19" } }, "sha512-d9ZCmrH3CJ2uYKXQIUuZ/pUnTqIvLDS0SK7pFmbx8ma+ziH/FRMoAq5bYpRG7y+w1gl+HgyNZbtqgMq4W4e2Lg=="], + "@types/d3-array": ["@types/d3-array@3.2.1", "", {}, "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg=="], "@types/d3-color": ["@types/d3-color@3.1.3", "", {}, "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A=="], @@ -345,6 +351,8 @@ "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], + "bun-types": ["bun-types@1.2.19", "", { "dependencies": { "@types/node": "*" }, "peerDependencies": { "@types/react": "^19" } }, "sha512-uAOTaZSPuYsWIXRpj7o56Let0g/wjihKCkeRqUBhlLVM/Bt+Fj9xTo+LhC1OV1XDaGkz4hNC80et5xgy+9KTHQ=="], + "busboy": ["busboy@1.6.0", "", { "dependencies": { "streamsearch": "^1.1.0" } }, "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA=="], "camelcase-css": ["camelcase-css@2.0.1", "", {}, "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA=="], diff --git a/components/site/HomeUserHeader.tsx b/components/site/HomeUserHeader.tsx index e5b2d3b..aa5392d 100644 --- a/components/site/HomeUserHeader.tsx +++ b/components/site/HomeUserHeader.tsx @@ -12,6 +12,18 @@ import { useCurrentAccount } from "@/hooks/roblox/useCurrentAccount"; import { Skeleton } from "../ui/skeleton"; import { useFriendsPresence } from "@/hooks/roblox/usePresence"; import { useAccountSettings } from "@/hooks/roblox/useAccountSettings"; +import { loadThumbnails } from "@/lib/thumbnailLoader"; +import { toast } from "sonner"; + +// chatgpt + human +function randomGreeting(name: string): string { + const greetings = [ + `Howdy, ${name}` + ]; + + const index = Math.floor(Math.random() * greetings.length); + return greetings[index]; +} export function HomeLoggedInHeader() { const profile = useCurrentAccount(); @@ -52,7 +64,23 @@ export function HomeLoggedInHeader() { return ( <> {/* */} -
{robux || "???"}
++ {robux ? robux.toLocaleString() : "???"} +
) : ( <>> )} @@ -93,7 +141,9 @@ export const QuickTopUILogoPart = React.memo(function () { return ({"not roblox lol"}
+{"ocbwoy3-chan's roblox"}
+{process.env.NODE_ENV} {process.env.NEXT_PUBLIC_CWD} {process.env.NEXT_PUBLIC_ARGV0}
+