From 69a38347976f40d87eceb587a76f379768428a7c Mon Sep 17 00:00:00 2001 From: Marcel Baumgartner Date: Sat, 18 Mar 2023 23:59:36 +0100 Subject: [PATCH] Implemented moonlight report endpoints --- .../Controllers/Api/Remote/DdosController.cs | 41 +++++++++++++++++++ .../App/Http/Requests/Daemon/DdosStatus.cs | 8 ++++ 2 files changed, 49 insertions(+) create mode 100644 Moonlight/App/Http/Controllers/Api/Remote/DdosController.cs create mode 100644 Moonlight/App/Http/Requests/Daemon/DdosStatus.cs diff --git a/Moonlight/App/Http/Controllers/Api/Remote/DdosController.cs b/Moonlight/App/Http/Controllers/Api/Remote/DdosController.cs new file mode 100644 index 00000000..d50d926a --- /dev/null +++ b/Moonlight/App/Http/Controllers/Api/Remote/DdosController.cs @@ -0,0 +1,41 @@ +using Logging.Net; +using Microsoft.AspNetCore.Mvc; +using Moonlight.App.Http.Requests.Daemon; +using Moonlight.App.Repositories; +using Moonlight.App.Services; + +namespace Moonlight.App.Http.Controllers.Api.Remote; + +[ApiController] +[Route("api/remote/ddos")] +public class DdosController : Controller +{ + private readonly NodeRepository NodeRepository; + private readonly MessageService MessageService; + + public DdosController(NodeRepository nodeRepository, MessageService messageService) + { + NodeRepository = nodeRepository; + MessageService = messageService; + } + + [HttpPost("update")] + public async Task Update([FromBody] DdosStatus ddosStatus) + { + var tokenData = Request.Headers.Authorization.ToString().Replace("Bearer ", ""); + var id = tokenData.Split(".")[0]; + var token = tokenData.Split(".")[1]; + + var node = NodeRepository.Get().FirstOrDefault(x => x.TokenId == id); + + if (node == null) + return NotFound(); + + if (token != node.Token) + return Unauthorized(); + + await MessageService.Emit("node.ddos", ddosStatus); + + return Ok(); + } +} \ No newline at end of file diff --git a/Moonlight/App/Http/Requests/Daemon/DdosStatus.cs b/Moonlight/App/Http/Requests/Daemon/DdosStatus.cs new file mode 100644 index 00000000..b08a5762 --- /dev/null +++ b/Moonlight/App/Http/Requests/Daemon/DdosStatus.cs @@ -0,0 +1,8 @@ +namespace Moonlight.App.Http.Requests.Daemon; + +public class DdosStatus +{ + public bool Ongoing { get; set; } + public long Data { get; set; } + public string Ip { get; set; } = ""; +} \ No newline at end of file