IP Check endpoints

This commit is contained in:
2025-09-06 14:06:41 +08:00
parent 79a31ae060
commit df732616d5
2 changed files with 66 additions and 0 deletions

View File

@@ -13,6 +13,35 @@ public class WellKnownController(
IEtcdClient etcdClient) IEtcdClient etcdClient)
: ControllerBase : ControllerBase
{ {
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; }
}
[HttpGet("ip-check")]
public ActionResult<IpCheckResponse> GetIpCheck()
{
var ip = HttpContext.Connection.RemoteIpAddress?.ToString();
var xForwardedFor = Request.Headers["X-Forwarded-For"].FirstOrDefault();
var xForwardedProto = Request.Headers["X-Forwarded-Proto"].FirstOrDefault();
var xForwardedHost = Request.Headers["X-Forwarded-Host"].FirstOrDefault();
var realIp = Request.Headers["X-Real-IP"].FirstOrDefault();
return Ok(new IpCheckResponse
{
RemoteIp = ip,
XForwardedFor = xForwardedFor,
XForwardedProto = xForwardedProto,
XForwardedHost = xForwardedHost,
XRealIp = realIp
});
}
[HttpGet("domains")] [HttpGet("domains")]
public IActionResult GetDomainMappings() public IActionResult GetDomainMappings()
{ {

View File

@@ -0,0 +1,37 @@
using Microsoft.AspNetCore.Mvc;
namespace DysonNetwork.Pass;
[ApiController]
[Route("/api/ip-check")]
public class IpCheckController : ControllerBase
{
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; }
}
[HttpGet("ip-check")]
public ActionResult<IpCheckResponse> GetIpCheck()
{
var ip = HttpContext.Connection.RemoteIpAddress?.ToString();
var xForwardedFor = Request.Headers["X-Forwarded-For"].FirstOrDefault();
var xForwardedProto = Request.Headers["X-Forwarded-Proto"].FirstOrDefault();
var xForwardedHost = Request.Headers["X-Forwarded-Host"].FirstOrDefault();
var realIp = Request.Headers["X-Real-IP"].FirstOrDefault();
return Ok(new IpCheckResponse
{
RemoteIp = ip,
XForwardedFor = xForwardedFor,
XForwardedProto = xForwardedProto,
XForwardedHost = xForwardedHost,
XRealIp = realIp
});
}
}