diff --git a/Moonlight/App/Services/ServerService.cs b/Moonlight/App/Services/ServerService.cs index 7969bd7..8ec47c9 100644 --- a/Moonlight/App/Services/ServerService.cs +++ b/Moonlight/App/Services/ServerService.cs @@ -1,11 +1,9 @@ -using Logging.Net; -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using Moonlight.App.Database; using Moonlight.App.Database.Entities; using Moonlight.App.Exceptions; using Moonlight.App.Helpers; -using Moonlight.App.Models.Files; -using Moonlight.App.Models.Files.Accesses; +using Moonlight.App.Helpers.Files; using Moonlight.App.Models.Misc; using Moonlight.App.Models.Wings; using Moonlight.App.Models.Wings.Requests; @@ -13,6 +11,7 @@ using Moonlight.App.Models.Wings.Resources; using Moonlight.App.Repositories; using Moonlight.App.Repositories.Servers; using Moonlight.App.Services.LogServices; +using FileAccess = Moonlight.App.Helpers.Files.FileAccess; namespace Moonlight.App.Services; @@ -30,7 +29,6 @@ public class ServerService private readonly SecurityLogService SecurityLogService; private readonly AuditLogService AuditLogService; private readonly ErrorLogService ErrorLogService; - private readonly string AppUrl; public ServerService( ServerRepository serverRepository, @@ -58,8 +56,6 @@ public class ServerService SecurityLogService = securityLogService; AuditLogService = auditLogService; ErrorLogService = errorLogService; - - AppUrl = ConfigService.GetSection("Moonlight").GetValue("AppUrl"); } private Server EnsureNodeData(Server s) @@ -225,17 +221,17 @@ public class ServerService return $"https://{server.Node.Fqdn}:{server.Node.HttpPort}/download/backup?token={token}"; } - public Task CreateFileAccess(Server s, User user) // We need the user to create the launch url + public Task CreateFileAccess(Server s, User user) // We need the user to create the launch url { Server server = EnsureNodeData(s); return Task.FromResult( - (IFileAccess)new WingsFileAccess( + (FileAccess)new WingsFileAccess( WingsApiHelper, - server, - user, WingsJwtHelper, - AppUrl + server, + ConfigService, + user ) ); } @@ -383,4 +379,20 @@ public class ServerService throw new Exception("User and owner id do not match"); } } + + public async Task Sync(Server s) + { + var server = EnsureNodeData(s); + + await WingsApiHelper.Post(server.Node, $"api/servers/{server.Uuid}/sync", null); + } + + public async Task Delete(Server s) + { + var server = EnsureNodeData(s); + + await WingsApiHelper.Delete(server.Node, $"api/servers/{server.Uuid}", null); + + ServerRepository.Delete(s); + } } \ No newline at end of file diff --git a/Moonlight/Shared/Components/ServerControl/ServerSettings.razor b/Moonlight/Shared/Components/ServerControl/ServerSettings.razor index ed01706..cd17cee 100644 --- a/Moonlight/Shared/Components/ServerControl/ServerSettings.razor +++ b/Moonlight/Shared/Components/ServerControl/ServerSettings.razor @@ -1,5 +1,4 @@ -@using PteroConsole.NET -@using Moonlight.App.Database.Entities +@using Moonlight.App.Database.Entities @using Moonlight.Shared.Components.ServerControl.Settings @using Microsoft.AspNetCore.Components.Rendering @@ -53,9 +52,11 @@ if(Tags.Contains("pythonfile")) Settings.Add("Python file", typeof(PythonFileSetting)); - Settings.Add("Server rename", typeof(ServerRenameSetting)); + Settings.Add("Rename", typeof(ServerRenameSetting)); - Settings.Add("Server reset", typeof(ServerResetSetting)); + Settings.Add("Reset", typeof(ServerResetSetting)); + + Settings.Add("Delete", typeof(ServerDeleteSetting)); return Task.CompletedTask; } diff --git a/Moonlight/Shared/Components/ServerControl/Settings/ServerDeleteSetting.razor b/Moonlight/Shared/Components/ServerControl/Settings/ServerDeleteSetting.razor new file mode 100644 index 0000000..aeb8bd6 --- /dev/null +++ b/Moonlight/Shared/Components/ServerControl/Settings/ServerDeleteSetting.razor @@ -0,0 +1,29 @@ +@using Moonlight.App.Database.Entities +@using Moonlight.App.Services +@using Moonlight.App.Services.Interop + +@inject SmartTranslateService SmartTranslateService +@inject AlertService AlertService +@inject NavigationManager NavigationManager +@inject ServerService ServerService + + + + +@code +{ + [CascadingParameter] + public Server CurrentServer { get; set; } + + private async Task OnClick() + { + if (await AlertService.ConfirmMath()) + { + await ServerService.Delete(CurrentServer); + NavigationManager.NavigateTo("/servers", true); + } + } +} \ No newline at end of file diff --git a/Moonlight/Shared/Views/Admin/Servers/Edit.razor b/Moonlight/Shared/Views/Admin/Servers/Edit.razor index b3fc0b9..95020ed 100644 --- a/Moonlight/Shared/Views/Admin/Servers/Edit.razor +++ b/Moonlight/Shared/Views/Admin/Servers/Edit.razor @@ -8,6 +8,7 @@ @inject SmartTranslateService SmartTranslateService @inject ServerRepository ServerRepository +@inject ServerService ServerService @inject ImageRepository ImageRepository @@ -197,7 +198,8 @@ private async Task Save() { - ServerRepository.Update(Server); + ServerRepository.Update(Server!); + //await ServerService.Sync(Server!); I dont know if we need this, because wings should resync the data while restarting anyway await LazyLoader.Reload(); }