Archived
Private
Public Access
1
0
This repository has been archived on 2026-02-04. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
ProjectBackup/Projekte/WebDesktop/WebDesktopBackend/Controller/UpdateController.cs
2022-09-04 12:45:01 +02:00

49 lines
1.5 KiB
C#

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;
}
}
}
}