FileSqlServerSync/Server/LocalServer/Controllers/LocalServerController.cs

62 lines
2.1 KiB
C#
Raw Normal View History

2024-07-31 09:14:07 +00:00
using System.Net.NetworkInformation;
using System.Net.WebSockets;
using System.Text;
using Common;
using Microsoft.AspNetCore.Mvc;
namespace LocalServer.Controllers
{
public class LocalServerController(LocalSyncServerFactory factory) : ControllerBase
{
private readonly LocalSyncServerFactory Factory = factory;
2024-09-05 01:59:57 +00:00
[Route("/websoc")]
public async Task WebsocketConnection(string Name)
{
if (HttpContext.WebSockets.IsWebSocketRequest)
{
try
{
if (Factory.GetServerByName(Name) == null)
{
var webSocket = await HttpContext.WebSockets.AcceptWebSocketAsync();
2024-09-23 05:55:17 +00:00
var pipeLine = new WebSocPipeLine<WebSocket>(webSocket, false);
Factory.CreateLocalSyncServer(
pipeLine,
Name,
new WebSocPipeLine<ClientWebSocket>(new ClientWebSocket(), false)
);
}
else
{
throw new Exception("LocalServer: 已经存在同名的发布正在进行!");
}
}
catch (Exception e)
{
HttpContext.Response.Body = new MemoryStream(Encoding.UTF8.GetBytes(e.Message));
HttpContext.Response.StatusCode = StatusCodes.Status406NotAcceptable;
}
}
else
{
HttpContext.Response.StatusCode = StatusCodes.Status400BadRequest;
}
}
2024-07-31 09:14:07 +00:00
[Route("/macaddr")]
public string GetMacAddress()
{
NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
string macaddrs = "";
foreach (NetworkInterface nic in nics)
{
PhysicalAddress physicalAddress = nic.GetPhysicalAddress();
macaddrs += physicalAddress.ToString() + ";";
}
return macaddrs;
}
//TODO 是否在本地记载同步日志?
}
}