From 6f0d5a0583593f4ffe82f6029b609b1bbf622f83 Mon Sep 17 00:00:00 2001 From: Robin Dadswell <19610103+RobinDadswell@users.noreply.github.com> Date: Sun, 30 May 2021 14:21:06 +0100 Subject: [PATCH] Fixed: Real IP Logging when IPv4 mapped as IPv6 (#6362) --- src/Radarr.Http/Extensions/RequestExtensions.cs | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/Radarr.Http/Extensions/RequestExtensions.cs b/src/Radarr.Http/Extensions/RequestExtensions.cs index df2179d9c..971bef901 100644 --- a/src/Radarr.Http/Extensions/RequestExtensions.cs +++ b/src/Radarr.Http/Extensions/RequestExtensions.cs @@ -95,10 +95,23 @@ namespace Radarr.Http.Extensions } var remoteAddress = context.Request.UserHostAddress; - IPAddress remoteIP; + + IPAddress.TryParse(remoteAddress, out IPAddress remoteIP); + + if (remoteIP == null) + { + return remoteAddress; + } + + if (remoteIP.IsIPv4MappedToIPv6) + { + remoteIP = remoteIP.MapToIPv4(); + } + + remoteAddress = remoteIP.ToString(); // Only check if forwarded by a local network reverse proxy - if (IPAddress.TryParse(remoteAddress, out remoteIP) && remoteIP.IsLocalAddress()) + if (remoteIP.IsLocalAddress()) { var realIPHeader = context.Request.Headers["X-Real-IP"]; if (realIPHeader.Any())