From 4208f16199ef2b4e0de55ab2698000c60007d2d5 Mon Sep 17 00:00:00 2001 From: hamster1963 <1410514192@qq.com> Date: Tue, 24 Sep 2024 14:14:52 +0800 Subject: [PATCH] feat: add cloudflare support --- app/(main)/page.tsx | 19 ++++--------- app/api/server/route.ts | 60 ++++++++++++++++++++++++++++++++++++++- lib/serverFetch.tsx | 62 ----------------------------------------- 3 files changed, 64 insertions(+), 77 deletions(-) delete mode 100644 lib/serverFetch.tsx diff --git a/app/(main)/page.tsx b/app/(main)/page.tsx index 24a1a48..9fbed8b 100644 --- a/app/(main)/page.tsx +++ b/app/(main)/page.tsx @@ -1,22 +1,13 @@ import ServerList from "@/components/ServerList"; import ServerOverview from "@/components/ServerOverview"; -import { GetNezhaData } from "@/lib/serverFetch"; -import { SWRConfig } from "swr"; +export const runtime = 'edge'; export default function Home() { return ( - -
- - -
-
+
+ + +
); } diff --git a/app/api/server/route.ts b/app/api/server/route.ts index f47afb7..e8ff70d 100644 --- a/app/api/server/route.ts +++ b/app/api/server/route.ts @@ -1,8 +1,12 @@ -import { GetNezhaData } from "@/lib/serverFetch"; +import { NezhaAPI, ServerApi } from "@/app/types/nezha-api"; +import { MakeOptional } from "@/app/types/utils"; +import getEnv from "@/lib/env-entry"; import { NextResponse } from "next/server"; export const dynamic = "force-dynamic"; +export const runtime = 'edge'; + export async function GET(_: Request) { try { const response = await GetNezhaData(); @@ -15,3 +19,57 @@ export async function GET(_: Request) { ); } } + +async function GetNezhaData() { + + var nezhaBaseUrl = getEnv("NezhaBaseUrl"); + if (!nezhaBaseUrl) { + console.log("NezhaBaseUrl is not set"); + return; + } + + // Remove trailing slash + if (nezhaBaseUrl[nezhaBaseUrl.length - 1] === "/") { + nezhaBaseUrl = nezhaBaseUrl.slice(0, -1); + } + try { + const response = await fetch(nezhaBaseUrl + "/api/v1/server/details", { + headers: { + Authorization: getEnv("NezhaAuth") as string, + }, + next: { + revalidate: 0, + }, + }); + const nezhaData = (await response.json()).result as NezhaAPI[]; + const data: ServerApi = { + live_servers: 0, + offline_servers: 0, + total_bandwidth: 0, + result: [], + }; + const timestamp = Date.now() / 1000; + data.result = nezhaData.map( + (element: MakeOptional) => { + if (timestamp - element.last_active > 300) { + data.offline_servers += 1; + element.online_status = false; + } else { + data.live_servers += 1; + element.online_status = true; + } + data.total_bandwidth += element.status.NetOutTransfer; + + delete element.ipv4; + delete element.ipv6; + delete element.valid_ip; + + return element; + }, + ); + + return data; + } catch (error) { + return error; + } +} \ No newline at end of file diff --git a/lib/serverFetch.tsx b/lib/serverFetch.tsx deleted file mode 100644 index 020f162..0000000 --- a/lib/serverFetch.tsx +++ /dev/null @@ -1,62 +0,0 @@ -"use server"; - -import { NezhaAPI, ServerApi } from "@/app/types/nezha-api"; -import { MakeOptional } from "@/app/types/utils"; -import { error } from "console"; -import { unstable_noStore as noStore } from "next/cache"; -import getEnv from "./env-entry"; - -export async function GetNezhaData() { - noStore(); - - var nezhaBaseUrl = getEnv("NezhaBaseUrl"); - if (!nezhaBaseUrl) { - error("NezhaBaseUrl is not set"); - return; - } - - // Remove trailing slash - if (nezhaBaseUrl[nezhaBaseUrl.length - 1] === "/") { - nezhaBaseUrl = nezhaBaseUrl.slice(0, -1); - } - try { - const response = await fetch(nezhaBaseUrl + "/api/v1/server/details", { - headers: { - Authorization: getEnv("NezhaAuth") as string, - }, - next: { - revalidate: 0, - }, - }); - const nezhaData = (await response.json()).result as NezhaAPI[]; - const data: ServerApi = { - live_servers: 0, - offline_servers: 0, - total_bandwidth: 0, - result: [], - }; - const timestamp = Date.now() / 1000; - data.result = nezhaData.map( - (element: MakeOptional) => { - if (timestamp - element.last_active > 300) { - data.offline_servers += 1; - element.online_status = false; - } else { - data.live_servers += 1; - element.online_status = true; - } - data.total_bandwidth += element.status.NetOutTransfer; - - delete element.ipv4; - delete element.ipv6; - delete element.valid_ip; - - return element; - }, - ); - - return data; - } catch (error) { - return error; - } -}