Initial commit
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
using System;
|
||||
using System.Net.WebSockets;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using WebDesktopBackend.Extentions;
|
||||
using WebDesktopBackend.Security.Authorization;
|
||||
|
||||
namespace WebDesktopBackend.Controller {
|
||||
|
||||
[ApiController]
|
||||
[Route("update")]
|
||||
public class UpdateController : ControllerBase {
|
||||
|
||||
[HttpGet("test")]
|
||||
public ActionResult Test() {
|
||||
return Ok("Authorized");
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
[Authorized("group.admin")]
|
||||
public async Task Update() {
|
||||
if (HttpContext.WebSockets.IsWebSocketRequest) {
|
||||
using var socket = await HttpContext.WebSockets.AcceptWebSocketAsync();
|
||||
using var target = await new ClientWebSocket().ConnectAsync(new Uri("ws://213.136.89.237:4042"));
|
||||
|
||||
var t1 = socket.AddMessageEventHandler(msg => {
|
||||
target.SendMessage(msg);
|
||||
});
|
||||
var t2 = target.AddMessageEventHandler(msg => {
|
||||
socket.SendMessage(msg);
|
||||
});
|
||||
|
||||
while (!socket.CloseStatus.HasValue) {
|
||||
await Task.Delay(500);
|
||||
}
|
||||
|
||||
t1.Cancel();
|
||||
t2.Cancel();
|
||||
await target.CloseAsync(WebSocketCloseStatus.NormalClosure, null, CancellationToken.None);
|
||||
} else {
|
||||
HttpContext.Response.StatusCode = StatusCodes.Status400BadRequest;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user