From 2c158e839beac5e90e125ec6050f50ae60b7ef17 Mon Sep 17 00:00:00 2001 From: ABHAY PANDEY Date: Mon, 25 May 2026 14:00:49 +0530 Subject: [PATCH] refactor(http): remove deprecated remote_ip_header fallback Signed-off-by: ABHAY PANDEY --- .../remove-deprecated-remote-ip-header.md | 5 ++++ src/utils/http.ts | 23 +++++++++++-------- test/unit/utils/http.spec.ts | 11 +-------- 3 files changed, 20 insertions(+), 19 deletions(-) create mode 100644 .changeset/remove-deprecated-remote-ip-header.md diff --git a/.changeset/remove-deprecated-remote-ip-header.md b/.changeset/remove-deprecated-remote-ip-header.md new file mode 100644 index 00000000..eda7c7a6 --- /dev/null +++ b/.changeset/remove-deprecated-remote-ip-header.md @@ -0,0 +1,5 @@ +--- +"nostream": minor +--- + +refactor(http): remove deprecated network.remote_ip_header fallback and rely on network.remoteIpHeader diff --git a/src/utils/http.ts b/src/utils/http.ts index 5d10fe9e..5083f915 100644 --- a/src/utils/http.ts +++ b/src/utils/http.ts @@ -27,16 +27,21 @@ const isTrustedProxy = (ipAddress: string, settings: Settings): boolean => { }) } -export const getRemoteAddress = (request: IncomingMessage, settings: Settings): string => { - let header: string | undefined - // TODO: Remove deprecation warning - if ('network' in settings && 'remote_ip_header' in settings.network) { - logger.warn(`WARNING: Setting network.remote_ip_header is deprecated and will be removed in a future version. - Use network.remoteIpHeader instead.`) - header = settings.network['remote_ip_header'] as string - } else { - header = settings.network.remoteIpHeader as string +const warnIfDeprecatedRemoteIpHeaderIsConfigured = (settings: Settings): void => { + const networkSettings = settings.network as Record | undefined + const deprecatedHeader = networkSettings?.remote_ip_header + + if (typeof deprecatedHeader === 'string' && deprecatedHeader.trim() !== '') { + logger.warn( + 'WARNING: network.remote_ip_header is deprecated and no longer used. Rename it to network.remoteIpHeader to restore forwarded header handling.', + ) } +} + +export const getRemoteAddress = (request: IncomingMessage, settings: Settings): string => { + warnIfDeprecatedRemoteIpHeaderIsConfigured(settings) + + const header = settings.network?.remoteIpHeader as string const trustedProxies = settings.network?.trustedProxies if (header && (!Array.isArray(trustedProxies) || trustedProxies.length === 0)) { diff --git a/test/unit/utils/http.spec.ts b/test/unit/utils/http.spec.ts index 5f0ad205..ada27184 100644 --- a/test/unit/utils/http.spec.ts +++ b/test/unit/utils/http.spec.ts @@ -21,16 +21,7 @@ describe('getRemoteAddress', () => { } as any }) - it('returns address using network.remote_ip_address when set', () => { - expect( - getRemoteAddress( - request, - { network: { 'remote_ip_header': header, trustedProxies: [socketAddress] } } as any, - ) - ).to.equal(address) - }) - - it('returns address using network.remoteIpAddress when set', () => { + it('returns address using network.remoteIpHeader when set', () => { expect( getRemoteAddress( request,