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;
- }
-}