From dfef7908843162d6a233fdc9e4026b27789f4534 Mon Sep 17 00:00:00 2001
From: hamster1963 <1410514192@qq.com>
Date: Thu, 12 Dec 2024 00:52:19 +0800
Subject: [PATCH] fix: use fs
---
app/(main)/server/[id]/page.tsx | 7 +++--
lib/GetIPInfo.ts | 46 ++++++++++++++++++---------------
lib/serverFetch.tsx | 10 +++----
3 files changed, 33 insertions(+), 30 deletions(-)
diff --git a/app/(main)/server/[id]/page.tsx b/app/(main)/server/[id]/page.tsx
index a6b1e07..646b918 100644
--- a/app/(main)/server/[id]/page.tsx
+++ b/app/(main)/server/[id]/page.tsx
@@ -17,10 +17,9 @@ export default function Page(props: { params: Promise<{ id: string }> }) {
const updateViews = async () => {
const ipInfo = await GetIPInfo({ server_id: params.id });
console.log(ipInfo);
- }
- updateViews()
- }, [])
-
+ };
+ updateViews();
+ }, []);
return (
diff --git a/lib/GetIPInfo.ts b/lib/GetIPInfo.ts
index ea526d4..5b335a9 100644
--- a/lib/GetIPInfo.ts
+++ b/lib/GetIPInfo.ts
@@ -1,26 +1,30 @@
"use server";
-import maxmind, { CityResponse, AsnResponse } from 'maxmind';
-import { GetServerIP } from './serverFetch';
-import path from 'path';
+import fs from "fs";
+import { AsnResponse, CityResponse, Reader } from "maxmind";
+
+import { GetServerIP } from "./serverFetch";
type IPInfo = {
- city: CityResponse;
- asn: AsnResponse;
+ city: CityResponse;
+ asn: AsnResponse;
+};
+
+export default async function GetIPInfo({
+ server_id,
+}: {
+ server_id: string;
+}): Promise
{
+ const ip = await GetServerIP({ server_id: Number(server_id) });
+
+ const cityDbBuffer = fs.readFileSync("./lib/GeoLite2-City.mmdb");
+ const asnDbBuffer = fs.readFileSync("./lib/GeoLite2-ASN.mmdb");
+
+ const cityLookup = new Reader(cityDbBuffer);
+ const asnLookup = new Reader(asnDbBuffer);
+
+ return {
+ city: cityLookup.get(ip) as CityResponse,
+ asn: asnLookup.get(ip) as AsnResponse,
+ };
}
-
-export default async function GetIPInfo({ server_id }: { server_id: string }): Promise {
- const ip = await GetServerIP({ server_id: Number(server_id) })
-
- // 使用 path.join 获取正确的文件路径
- const cityDbPath = path.join(process.cwd(), 'lib', 'GeoLite2-City.mmdb');
- const asnDbPath = path.join(process.cwd(), 'lib', 'GeoLite2-ASN.mmdb');
-
- const cityLookup = await maxmind.open(cityDbPath)
- const asnLookup = await maxmind.open(asnDbPath)
-
- return {
- city: cityLookup.get(ip) as CityResponse,
- asn: asnLookup.get(ip) as AsnResponse
- }
-}
\ No newline at end of file
diff --git a/lib/serverFetch.tsx b/lib/serverFetch.tsx
index 84ffc9f..e985b3f 100644
--- a/lib/serverFetch.tsx
+++ b/lib/serverFetch.tsx
@@ -130,8 +130,11 @@ export async function GetServerMonitor({ server_id }: { server_id: number }) {
}
}
-
-export async function GetServerIP({ server_id }: { server_id: number }): Promise {
+export async function GetServerIP({
+ server_id,
+}: {
+ server_id: number;
+}): Promise {
let nezhaBaseUrl = getEnv("NezhaBaseUrl");
if (!nezhaBaseUrl) {
console.error("NezhaBaseUrl is not set");
@@ -176,11 +179,8 @@ export async function GetServerIP({ server_id }: { server_id: number }): Promise
console.error("GetNezhaData error:", error);
throw error; // Rethrow the error to be caught by the caller
}
-
}
-
-
export async function GetServerDetail({ server_id }: { server_id: number }) {
let nezhaBaseUrl = getEnv("NezhaBaseUrl");
if (!nezhaBaseUrl) {