From 3490c5c8d8d7cf5afee1777ef5d45cde786e0ab7 Mon Sep 17 00:00:00 2001 From: rootdarkarchon Date: Fri, 10 Feb 2023 15:18:34 +0100 Subject: [PATCH] adjust extensions, again and again --- .../MareSynchronosShared/Extensions.cs | 40 +++++++++++-------- 1 file changed, 24 insertions(+), 16 deletions(-) diff --git a/MareSynchronosServer/MareSynchronosShared/Extensions.cs b/MareSynchronosServer/MareSynchronosShared/Extensions.cs index 5d39bcd..abcac4f 100644 --- a/MareSynchronosServer/MareSynchronosShared/Extensions.cs +++ b/MareSynchronosServer/MareSynchronosShared/Extensions.cs @@ -4,28 +4,36 @@ namespace MareSynchronosShared; public static class Extensions { + private static long _noIpCntr = 0; public static string GetIpAddress(this IHttpContextAccessor accessor) { - if (!string.IsNullOrEmpty(accessor.HttpContext.Request.Headers["CF-CONNECTING-IP"])) - return accessor.HttpContext.Request.Headers["CF-CONNECTING-IP"]; - - if (!string.IsNullOrEmpty(accessor.HttpContext.Request.Headers["X-Forwarded-For"])) + try { - return accessor.HttpContext.Request.Headers["X-Forwarded-For"]; - } + if (!string.IsNullOrEmpty(accessor.HttpContext.Request.Headers["CF-CONNECTING-IP"])) + return accessor.HttpContext.Request.Headers["CF-CONNECTING-IP"]; - var ipAddress = accessor.HttpContext.GetServerVariable("HTTP_X_FORWARDED_FOR"); - - if (!string.IsNullOrWhiteSpace(ipAddress)) - { - var addresses = ipAddress.Split(',', StringSplitOptions.RemoveEmptyEntries); - var lastEntry = addresses.LastOrDefault(); - if (lastEntry != null) + if (!string.IsNullOrEmpty(accessor.HttpContext.Request.Headers["X-Forwarded-For"])) { - return lastEntry; + return accessor.HttpContext.Request.Headers["X-Forwarded-For"]; } - } - return accessor.HttpContext.Connection.RemoteIpAddress.ToString(); + var ipAddress = accessor.HttpContext.GetServerVariable("HTTP_X_FORWARDED_FOR"); + + if (!string.IsNullOrWhiteSpace(ipAddress)) + { + var addresses = ipAddress.Split(',', StringSplitOptions.RemoveEmptyEntries); + var lastEntry = addresses.LastOrDefault(); + if (lastEntry != null) + { + return lastEntry; + } + } + + return accessor.HttpContext.Connection.RemoteIpAddress?.ToString() ?? "NoIp"; + } + catch + { + return "NoIp" + _noIpCntr++; + } } } \ No newline at end of file