26 lines
817 B
C#
26 lines
817 B
C#
using System.Net.Sockets;
|
|||
|
|
|
||
|
|
using MeWeb.Shared;
|
||
|
|
|
||
|
|
namespace MeWeb.Server;
|
||
|
|
|
||
|
|
public static class ServerApi
|
||
|
|
{
|
||
|
|
public static WebApplication MapMeWebApi(this WebApplication app)
|
||
|
|
{
|
||
|
|
app.MapGet(Endpoints.Server.GET_Info, Info);
|
||
|
|
app.MapGet(Endpoints.Server.GET_Ip, Ip);
|
||
|
|
return app;
|
||
|
|
}
|
||
|
|
|
||
|
|
static ViewInfo Info() => new() { Version = BuildInfo.Version, Commit = BuildInfo.Commit, BuiltAt = BuildInfo.BuiltAt };
|
||
|
|
|
||
|
|
static IResult Ip(HttpContext context)
|
||
|
|
{
|
||
|
|
var address = context.Connection.RemoteIpAddress;
|
||
|
|
if (address is null) return Results.BadRequest();
|
||
|
|
if (address.IsIPv4MappedToIPv6) address = address.MapToIPv4();
|
||
|
|
var family = address.AddressFamily == AddressFamily.InterNetworkV6 ? "ipv6" : "ipv4";
|
||
|
|
return Results.Ok(new ViewIp { Address = address.ToString(), Family = family });
|
||
|
|
}
|
||
|
|
}
|