From b5a5633b73ed329a923dc1b1b4fb63c43fff277c Mon Sep 17 00:00:00 2001 From: undefined Date: Tue, 31 Jan 2023 15:35:52 +0800 Subject: [PATCH] core: fix ip header --- packages/hydrooj/src/service/layers/base.ts | 1 + packages/hydrooj/src/service/layers/domain.ts | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/hydrooj/src/service/layers/base.ts b/packages/hydrooj/src/service/layers/base.ts index 740ee7981..4ff10f485 100644 --- a/packages/hydrooj/src/service/layers/base.ts +++ b/packages/hydrooj/src/service/layers/base.ts @@ -34,6 +34,7 @@ export default async (ctx: KoaContext, next: Next) => { json: (ctx.request.headers.accept || '').includes('application/json'), websocket: ctx.request.headers.upgrade === 'websocket', }; + request.ip = request.ip.split(',')[0].trim(); const response: HydroResponse = { body: {}, type: '', diff --git a/packages/hydrooj/src/service/layers/domain.ts b/packages/hydrooj/src/service/layers/domain.ts index cbe8d43c1..ac646dcc9 100644 --- a/packages/hydrooj/src/service/layers/domain.ts +++ b/packages/hydrooj/src/service/layers/domain.ts @@ -8,7 +8,8 @@ export default async (ctx, next) => { ctx.originalPath = ctx.request.path; ctx.path = ctx.request.path = ctx.request.path.replace(/^\/d\/[^/]+\//, '/'); const [xff, xhost] = system.getMany(['server.xff', 'server.xhost']); - const ip = ctx.request.headers[xff?.toLowerCase() || ''] as string || ctx.request.ip; + let ip = ctx.request.headers[xff?.toLowerCase() || ''] as string || ctx.request.ip; + ip = ip.split(',')[0].trim(); const host = ctx.request.headers[xhost?.toLowerCase() || ''] as string || ctx.request.host; const header = ctx.request.headers.authorization; const sid = header