Skip to content

Commit 4fecce6

Browse files
committed
feat: expose public server status history without sensitive data
1 parent 6099ccd commit 4fecce6

File tree

2 files changed

+26
-6
lines changed

2 files changed

+26
-6
lines changed

src/server/model/serverStatus.ts

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ async function getServerHistoryFromCache(
6565
const cachedValue = await cacheManager.get(key);
6666
if (cachedValue) {
6767
try {
68-
return JSON.parse(String(cachedValue));
68+
return JSON.parse(String(cachedValue));
6969
} catch (err) {
7070
logger.error('[ServerStatus] Error parsing cached history:', err);
7171
return [];
@@ -191,9 +191,19 @@ export async function getServerCount(workspaceId: string): Promise<number> {
191191
return Object.keys(serverMap).length;
192192
}
193193

194-
export async function getServerStatusHistory(
194+
export async function getPublicServerStatusHistory(
195195
workspaceId: string,
196196
name: string
197197
): Promise<ServerStatusInfo[]> {
198-
return await getServerHistoryFromCache(workspaceId, name);
198+
const serverStatus = await getServerHistoryFromCache(workspaceId, name);
199+
return serverStatus.map((item: ServerStatusInfo) => {
200+
// we remove sensitive datas
201+
const { secret, ...rest } = item;
202+
const { top_cpu_processes, top_memory_processes, docker, ...restPayload } =
203+
rest.payload;
204+
return {
205+
...rest,
206+
payload: restPayload,
207+
};
208+
});
199209
}

src/server/trpc/routers/serverStatus.ts

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import {
77
} from '../trpc.js';
88
import {
99
clearOfflineServerStatus,
10-
getServerStatusHistory,
10+
getPublicServerStatusHistory,
1111
getServerMapFromCache,
1212
} from '../../model/serverStatus.js';
1313
import { OPENAPI_TAG } from '../../utils/const.js';
@@ -57,7 +57,17 @@ export const serverStatusRouter = router({
5757
const filteredServerMap: Record<string, any> = {};
5858
serverNames.forEach((name) => {
5959
if (serverMap[name]) {
60-
filteredServerMap[name] = serverMap[name];
60+
const { secret, ...rest } = serverMap[name];
61+
const {
62+
top_cpu_processes,
63+
top_memory_processes,
64+
docker,
65+
...restPayload
66+
} = rest.payload;
67+
filteredServerMap[name] = {
68+
...rest,
69+
payload: restPayload,
70+
};
6171
}
6272
});
6373

@@ -84,6 +94,6 @@ export const serverStatusRouter = router({
8494
)
8595
.query(async ({ input }) => {
8696
const { workspaceId, name } = input;
87-
return getServerStatusHistory(workspaceId, name);
97+
return getPublicServerStatusHistory(workspaceId, name);
8898
}),
8999
});

0 commit comments

Comments
 (0)