39 lines
1.3 KiB
C#
39 lines
1.3 KiB
C#
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; }
|
|
public string? Headers { get; set; }
|
|
}
|
|
|
|
[HttpGet]
|
|
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,
|
|
Headers = string.Join('\n', Request.Headers.Select(h => $"{h.Key}: {h.Value}")),
|
|
});
|
|
}
|
|
} |