import { addBlacklist, addWhitelist, deleteBlacklist, deleteWhitelist, } from "@/actions/admin-ip"; import { prisma } from "@/lib/prisma"; export const dynamic = "force-dynamic"; type IpRow = { id: bigint; ipAddress: string; asn: string | null; createdAt: Date | null; }; function formatDate(d: Date | null): string { return d ? d.toISOString().slice(0, 16).replace("T", " ") : ""; } export default async function AdminIp() { let whitelist: IpRow[] = []; let blacklist: IpRow[] = []; try { whitelist = await prisma.websiteIpWhitelist.findMany({ orderBy: { id: "desc" }, take: 200, }); } catch { whitelist = []; } try { blacklist = await prisma.websiteIpBlacklist.findMany({ orderBy: { id: "desc" }, take: 200, }); } catch { blacklist = []; } return (

IP Management

{/* ── Whitelist ─────────────────────────────── */}

Whitelist

{whitelist.map((w) => ( ))}
IP ASN Added
{w.ipAddress} {w.asn ?? "—"} {formatDate(w.createdAt)}
{whitelist.length === 0 ?

No whitelisted IPs.

: null}
{/* ── Blacklist ─────────────────────────────── */}

Blacklist

{blacklist.map((b) => ( ))}
IP ASN Added
{b.ipAddress} {b.asn ?? "—"} {formatDate(b.createdAt)}
{blacklist.length === 0 ?

No blacklisted IPs.

: null}
); }