diff --git a/examples/reverse_proxy/Caddyfile b/examples/reverse_proxy/Caddyfile index 9d41df76..4afdeb39 100644 --- a/examples/reverse_proxy/Caddyfile +++ b/examples/reverse_proxy/Caddyfile @@ -1,7 +1,6 @@ hydro.ac { reverse_proxy http://localhost:8888 { - header_up x-real-ip {remote_host} - # caddy now add x-forwarded-host automatically. - # header_up x-forwarded-host {hostport} + header_up x-forwarded-for {remote_host} + header_up x-forwarded-host {hostport} } } diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index 9d530232..fd196e72 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "3.16.10", + "version": "3.16.11", "bin": "bin/hydrooj.js", "main": "src/loader", "module": "src/loader", diff --git a/packages/hydrooj/src/service/layers/base.ts b/packages/hydrooj/src/service/layers/base.ts index 0c1e937b..3a77ad74 100644 --- a/packages/hydrooj/src/service/layers/base.ts +++ b/packages/hydrooj/src/service/layers/base.ts @@ -18,7 +18,9 @@ export default async (ctx, next) => { const { domainId, domainInfo } = ctx; const isWebsocket = ctx.request.headers.upgrade === 'websocket'; const [xff, xhost] = system.getMany(['server.xff', 'server.xhost']); - const ip = ctx.request.headers[xff?.toLowerCase() || ''] as string || ctx.request.ip; + // ignore reverse_proxy chains + const ipHeader = ctx.request.headers[xff?.toLowerCase() || '']; + const ip = (typeof ipHeader === 'string' ? ipHeader : ipHeader[0] || ctx.request.ip).split(',')[0].trim(); const host = ctx.request.headers[xhost?.toLowerCase() || ''] as string || ctx.request.host; const request: HydroRequest = { method: ctx.request.method.toLowerCase(), diff --git a/packages/ui-default/package.json b/packages/ui-default/package.json index eaa1f0ff..168dfed6 100644 --- a/packages/ui-default/package.json +++ b/packages/ui-default/package.json @@ -1,6 +1,6 @@ { "name": "@hydrooj/ui-default", - "version": "4.39.24", + "version": "4.39.25", "author": "undefined ", "license": "AGPL-3.0", "main": "hydro.js", diff --git a/packages/ui-default/templates/layout/html5.html b/packages/ui-default/templates/layout/html5.html index 85a2c1ed..7c4764ac 100644 --- a/packages/ui-default/templates/layout/html5.html +++ b/packages/ui-default/templates/layout/html5.html @@ -17,7 +17,7 @@ - + {% if handler.ctx.request.url %}{% endif %} {% block ogp %}