🐛 trying to fix IP issue
This commit is contained in:
		| @@ -1,4 +1,5 @@ | |||||||
| using System.Text; | using System.Text; | ||||||
|  | using System.Text.Json.Serialization; | ||||||
| using dotnet_etcd.interfaces; | using dotnet_etcd.interfaces; | ||||||
| using Microsoft.AspNetCore.Mvc; | using Microsoft.AspNetCore.Mvc; | ||||||
| using Yarp.ReverseProxy.Configuration; | using Yarp.ReverseProxy.Configuration; | ||||||
| @@ -15,11 +16,11 @@ public class WellKnownController( | |||||||
| { | { | ||||||
|     public class IpCheckResponse |     public class IpCheckResponse | ||||||
|     { |     { | ||||||
|         public string? RemoteIp { get; set; } |         [JsonPropertyName("remote_ip")] public string? RemoteIp { get; set; } | ||||||
|         public string? XForwardedFor { get; set; } |         [JsonPropertyName("x_forwarded_for")] public string? XForwardedFor { get; set; } | ||||||
|         public string? XForwardedProto { get; set; } |         [JsonPropertyName("x_forwarded_proto")] public string? XForwardedProto { get; set; } | ||||||
|         public string? XForwardedHost { get; set; } |         [JsonPropertyName("x_forwarded_host")] public string? XForwardedHost { get; set; } | ||||||
|         public string? XRealIp { get; set; } |         [JsonPropertyName("x_real_ip")] public string? XRealIp { get; set; } | ||||||
|     } |     } | ||||||
|      |      | ||||||
|     [HttpGet("ip-check")] |     [HttpGet("ip-check")] | ||||||
|   | |||||||
| @@ -171,7 +171,7 @@ public class RegistryProxyConfigProvider : IProxyConfigProvider, IDisposable | |||||||
|             } |             } | ||||||
|  |  | ||||||
|             // Host-based routing |             // Host-based routing | ||||||
|             if (domainMappings.TryGetValue(serviceName, out var domain)) |             if (domainMappings.TryGetValue(serviceName, out var domain) && domain is not null) | ||||||
|             { |             { | ||||||
|                 var hostRoute = new RouteConfig |                 var hostRoute = new RouteConfig | ||||||
|                 { |                 { | ||||||
| @@ -181,7 +181,7 @@ public class RegistryProxyConfigProvider : IProxyConfigProvider, IDisposable | |||||||
|                     { |                     { | ||||||
|                         Hosts = [domain], |                         Hosts = [domain], | ||||||
|                         Path = "/{**catch-all}" |                         Path = "/{**catch-all}" | ||||||
|                     } |                     }, | ||||||
|                 }; |                 }; | ||||||
|                 routes.Add(hostRoute); |                 routes.Add(hostRoute); | ||||||
|                 _logger.LogInformation("    Added Host-based Route: {Host}", domain); |                 _logger.LogInformation("    Added Host-based Route: {Host}", domain); | ||||||
| @@ -196,7 +196,7 @@ public class RegistryProxyConfigProvider : IProxyConfigProvider, IDisposable | |||||||
|                 Transforms = new List<Dictionary<string, string>> |                 Transforms = new List<Dictionary<string, string>> | ||||||
|                 { |                 { | ||||||
|                     new() { { "PathRemovePrefix", $"/{pathAlias}" } }, |                     new() { { "PathRemovePrefix", $"/{pathAlias}" } }, | ||||||
|                     new() { { "PathPrefix", "/api" } } |                     new() { { "PathPrefix", "/api" } }, | ||||||
|                 }, |                 }, | ||||||
|                 Timeout = TimeSpan.FromSeconds(5) |                 Timeout = TimeSpan.FromSeconds(5) | ||||||
|             }; |             }; | ||||||
| @@ -236,4 +236,4 @@ public class RegistryProxyConfigProvider : IProxyConfigProvider, IDisposable | |||||||
|         _watchCts.Cancel(); |         _watchCts.Cancel(); | ||||||
|         _watchCts.Dispose(); |         _watchCts.Dispose(); | ||||||
|     } |     } | ||||||
| } | } | ||||||
| @@ -24,7 +24,10 @@ public static class ServiceCollectionExtensions | |||||||
|             }) |             }) | ||||||
|             .AddTransforms(context => |             .AddTransforms(context => | ||||||
|             { |             { | ||||||
|                 context.AddForwarded(); |                 context.CopyRequestHeaders = true; | ||||||
|  |                 context.AddOriginalHost(); | ||||||
|  |                 context.AddForwarded(action: ForwardedTransformActions.Set); | ||||||
|  |                 context.AddXForwarded(action: ForwardedTransformActions.Set); | ||||||
|             }); |             }); | ||||||
|  |  | ||||||
|         services.AddRegistryService(configuration, addForwarder: false); |         services.AddRegistryService(configuration, addForwarder: false); | ||||||
|   | |||||||
| @@ -13,9 +13,10 @@ public class IpCheckController : ControllerBase | |||||||
|         public string? XForwardedProto { get; set; } |         public string? XForwardedProto { get; set; } | ||||||
|         public string? XForwardedHost { get; set; } |         public string? XForwardedHost { get; set; } | ||||||
|         public string? XRealIp { get; set; } |         public string? XRealIp { get; set; } | ||||||
|  |         public string? Headers { get; set; } | ||||||
|     } |     } | ||||||
|      |      | ||||||
|     [HttpGet("ip-check")] |     [HttpGet] | ||||||
|     public ActionResult<IpCheckResponse> GetIpCheck() |     public ActionResult<IpCheckResponse> GetIpCheck() | ||||||
|     { |     { | ||||||
|         var ip = HttpContext.Connection.RemoteIpAddress?.ToString(); |         var ip = HttpContext.Connection.RemoteIpAddress?.ToString(); | ||||||
| @@ -31,7 +32,8 @@ public class IpCheckController : ControllerBase | |||||||
|             XForwardedFor = xForwardedFor, |             XForwardedFor = xForwardedFor, | ||||||
|             XForwardedProto = xForwardedProto, |             XForwardedProto = xForwardedProto, | ||||||
|             XForwardedHost = xForwardedHost, |             XForwardedHost = xForwardedHost, | ||||||
|             XRealIp = realIp |             XRealIp = realIp, | ||||||
|  |             Headers = string.Join('\n', Request.Headers.Select(h => $"{h.Key}: {h.Value}")), | ||||||
|         }); |         }); | ||||||
|     }  |     }  | ||||||
| } | } | ||||||
		Reference in New Issue
	
	Block a user