From 32307cdd1de6f87a9fff99141529ef6cf73c876f Mon Sep 17 00:00:00 2001 From: kuusei Date: Sat, 27 Jul 2024 12:01:27 +0800 Subject: [PATCH 1/2] fix: ip address leak --- app/api/server/route.ts | 25 +++++++++++++++++-- app/types/nezha-api.ts | 55 +++++++++++++++++++++++++++++++++++++++++ app/types/utils.ts | 1 + 3 files changed, 79 insertions(+), 2 deletions(-) create mode 100644 app/types/nezha-api.ts create mode 100644 app/types/utils.ts diff --git a/app/api/server/route.ts b/app/api/server/route.ts index b4c58bd..a3d9935 100644 --- a/app/api/server/route.ts +++ b/app/api/server/route.ts @@ -1,4 +1,6 @@ +import { NezhaAPI, NezhaAPISafe } from "@/app/types/nezha-api"; +import { MakeOptional } from "@/app/types/utils"; import { NextResponse } from "next/server"; export async function GET(_: Request) { @@ -22,19 +24,38 @@ export async function GET(_: Request) { revalidate:1 } }); - const data = await response.json(); + const nezhaData = (await response.json()).result as NezhaAPI[]; + const data: { + live_servers: number; + offline_servers: number; + total_bandwidth: number; + result: NezhaAPISafe[] + } = { + live_servers: 0, + offline_servers: 0, + total_bandwidth: 0, + result: [] + } + data.live_servers = 0; data.offline_servers = 0; data.total_bandwidth = 0; - data.result.forEach((element: { status: { Uptime: number; NetOutTransfer: any; }; }) => { + data.result = nezhaData.map((element: MakeOptional) => { if (element.status.Uptime !== 0) { data.live_servers += 1; } else { data.offline_servers += 1; } data.total_bandwidth += element.status.NetOutTransfer; + + delete element.ipv4; + delete element.ipv6; + delete element.valid_ip; + + return element; }); + return NextResponse.json(data, { status: 200 }) } catch (error) { return NextResponse.json({ error: error }, { status: 200 }) diff --git a/app/types/nezha-api.ts b/app/types/nezha-api.ts new file mode 100644 index 0000000..a3ea59b --- /dev/null +++ b/app/types/nezha-api.ts @@ -0,0 +1,55 @@ +export type serverApi = { + live_servers: number; + offline_servers: number; + total_bandwidth: number; + result: NezhaAPISafe[]; +}; + +export type NezhaAPISafe = Omit; + +export interface NezhaAPI { + id: number; + name: string; + tag: string; + last_active: number; + ipv4: string; + ipv6: string; + valid_ip: string; + host: NezhaAPIHost; + status: NezhaAPIStatus; +} + +export interface NezhaAPIHost { + Platform: string; + PlatformVersion: string; + CPU: string[]; + MemTotal: number; + DiskTotal: number; + SwapTotal: number; + Arch: string; + Virtualization: string; + BootTime: number; + CountryCode: string; + Version: string; + GPU: null; +} + +export interface NezhaAPIStatus { + CPU: number; + MemUsed: number; + SwapUsed: number; + DiskUsed: number; + NetInTransfer: number; + NetOutTransfer: number; + NetInSpeed: number; + NetOutSpeed: number; + Uptime: number; + Load1: number; + Load5: number; + Load15: number; + TcpConnCount: number; + UdpConnCount: number; + ProcessCount: number; + Temperatures: number; + GPU: number; +} diff --git a/app/types/utils.ts b/app/types/utils.ts new file mode 100644 index 0000000..488df36 --- /dev/null +++ b/app/types/utils.ts @@ -0,0 +1 @@ +export type MakeOptional = Omit & Partial>; From 38b794fc4fcb2bca3bfb9b55b23d43333aec7110 Mon Sep 17 00:00:00 2001 From: kuusei Date: Sat, 27 Jul 2024 12:14:59 +0800 Subject: [PATCH 2/2] chore: type name --- app/api/server/route.ts | 13 ++----------- app/types/nezha-api.ts | 2 +- 2 files changed, 3 insertions(+), 12 deletions(-) diff --git a/app/api/server/route.ts b/app/api/server/route.ts index a3d9935..c3bb544 100644 --- a/app/api/server/route.ts +++ b/app/api/server/route.ts @@ -1,5 +1,5 @@ -import { NezhaAPI, NezhaAPISafe } from "@/app/types/nezha-api"; +import { NezhaAPI, ServerApi } from "@/app/types/nezha-api"; import { MakeOptional } from "@/app/types/utils"; import { NextResponse } from "next/server"; @@ -25,22 +25,13 @@ export async function GET(_: Request) { } }); const nezhaData = (await response.json()).result as NezhaAPI[]; - const data: { - live_servers: number; - offline_servers: number; - total_bandwidth: number; - result: NezhaAPISafe[] - } = { + const data: ServerApi = { live_servers: 0, offline_servers: 0, total_bandwidth: 0, result: [] } - data.live_servers = 0; - data.offline_servers = 0; - data.total_bandwidth = 0; - data.result = nezhaData.map((element: MakeOptional) => { if (element.status.Uptime !== 0) { data.live_servers += 1; diff --git a/app/types/nezha-api.ts b/app/types/nezha-api.ts index a3ea59b..dd1f356 100644 --- a/app/types/nezha-api.ts +++ b/app/types/nezha-api.ts @@ -1,4 +1,4 @@ -export type serverApi = { +export type ServerApi = { live_servers: number; offline_servers: number; total_bandwidth: number;