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