From dc93b87bffd44938b5bafc0fb9ac83c069d76a2e Mon Sep 17 00:00:00 2001 From: daniel-hbn Date: Sat, 28 Jun 2025 23:24:58 +0200 Subject: [PATCH 1/3] =?UTF-8?q?Details-Page=20erstellt,=20allgemein=20Fron?= =?UTF-8?q?tEnd=20aufger=C3=A4umt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Watcher/Controllers/ServerController.cs | 31 ++++++++- Watcher/ViewModels/ServerDetailsViewModel.cs | 41 ++++++++++++ Watcher/Views/Home/Index.cshtml | 11 --- Watcher/Views/Server/Details.cshtml | 34 ++++++++++ Watcher/Views/Server/_ServerCard.cshtml | 11 ++- Watcher/Views/Server/_ServerDetails.cshtml | 67 +++++++++++++++++++ Watcher/persistence/watcher.db-shm | Bin 0 -> 32768 bytes Watcher/persistence/watcher.db-wal | 0 8 files changed, 175 insertions(+), 20 deletions(-) create mode 100644 Watcher/ViewModels/ServerDetailsViewModel.cs create mode 100644 Watcher/Views/Server/Details.cshtml create mode 100644 Watcher/Views/Server/_ServerDetails.cshtml create mode 100644 Watcher/persistence/watcher.db-shm create mode 100644 Watcher/persistence/watcher.db-wal diff --git a/Watcher/Controllers/ServerController.cs b/Watcher/Controllers/ServerController.cs index 8abb2c6..932d36d 100644 --- a/Watcher/Controllers/ServerController.cs +++ b/Watcher/Controllers/ServerController.cs @@ -1,4 +1,3 @@ -using System.Threading.Tasks; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; @@ -116,13 +115,41 @@ public class ServerController : Controller return View(vm); } + // GET: Server/Details/5 + [HttpGet] + public async Task Details(int id) + { + + var s = await _context.Servers.FindAsync(id); + if (s == null) return NotFound(); + + var vm = new ServerDetailsViewModel + { + Id = s.Id, + Name = s.Name, + IPAddress = s.IPAddress, + Type = s.Type, + Description = s.Description, + CpuType = s.CpuType, + CpuCores = s.CpuCores, + GpuType = s.GpuType, + RamSize = s.RamSize, + CreatedAt = s.CreatedAt, + IsOnline = s.IsOnline, + LastSeen = s.LastSeen, + IsVerified = s.IsVerified + }; + + return View(vm); + } + public async Task ServerCardsPartial() { var servers = _context.Servers.ToList(); foreach (var server in servers) { - server.IsOnline = (DateTime.UtcNow - server.LastSeen).TotalSeconds <= 120; + server.IsOnline = (DateTime.UtcNow - server.LastSeen).TotalSeconds <= 120; await _context.SaveChangesAsync(); } diff --git a/Watcher/ViewModels/ServerDetailsViewModel.cs b/Watcher/ViewModels/ServerDetailsViewModel.cs new file mode 100644 index 0000000..0d64262 --- /dev/null +++ b/Watcher/ViewModels/ServerDetailsViewModel.cs @@ -0,0 +1,41 @@ + + +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace Watcher.ViewModels; + +public class ServerDetailsViewModel +{ + // System Infos + [Required] + public int Id { get; set; } + + [Required] + public required string Name { get; set; } + + [Required] + public required string IPAddress { get; set; } + + [Required] + public required string Type { get; set; } + + public string? Description { get; set; } = String.Empty; + + + // Hardware Infos + public string? CpuType { get; set; } = string.Empty; + public int CpuCores { get; set; } = 0; + public string? GpuType { get; set; } = string.Empty; + public double RamSize { get; set; } = 0; + + + // Database + public DateTime CreatedAt { get; set; } = DateTime.UtcNow; + + public Boolean IsOnline { get; set; } = false; + + public DateTime LastSeen { get; set; } + + public Boolean IsVerified { get; set; } = false; +} \ No newline at end of file diff --git a/Watcher/Views/Home/Index.cshtml b/Watcher/Views/Home/Index.cshtml index 08b7321..6b61e39 100644 --- a/Watcher/Views/Home/Index.cshtml +++ b/Watcher/Views/Home/Index.cshtml @@ -12,17 +12,6 @@
-
-
-

- Uptime letzte 24h -

-
-
- (Diagramm folgt hier) -
-
-
diff --git a/Watcher/Views/Server/Details.cshtml b/Watcher/Views/Server/Details.cshtml new file mode 100644 index 0000000..024369d --- /dev/null +++ b/Watcher/Views/Server/Details.cshtml @@ -0,0 +1,34 @@ +@model Watcher.ViewModels.ServerDetailsViewModel +@{ + ViewData["Title"] = "Serverübersicht"; +} + +
+ @await Html.PartialAsync("_ServerDetails") +
+ + +@section Scripts { + + + + +} \ No newline at end of file diff --git a/Watcher/Views/Server/_ServerCard.cshtml b/Watcher/Views/Server/_ServerCard.cshtml index c8760ce..910e5d9 100644 --- a/Watcher/Views/Server/_ServerCard.cshtml +++ b/Watcher/Views/Server/_ServerCard.cshtml @@ -41,18 +41,15 @@
- - 🖥️ Linux Agent - - - - Metrics - Bearbeiten + + Metrics + +
+
+
+
+ + +
+
Uptime letzte 24h
+
+ +
+
+ +
+
CPU Last
+
+ +
+
+ +
+
RAM Last
+
+ +
+
+ \ No newline at end of file diff --git a/Watcher/persistence/watcher.db-shm b/Watcher/persistence/watcher.db-shm new file mode 100644 index 0000000000000000000000000000000000000000..fe9ac2845eca6fe6da8a63cd096d9cf9e24ece10 GIT binary patch literal 32768 zcmeIuAr62r3 Date: Sun, 29 Jun 2025 13:28:41 +0200 Subject: [PATCH 2/3] =?UTF-8?q?Container-=C3=9Cbersicht?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Watcher/Controllers/ContainerController.cs | 28 --------------------- Watcher/Models/Container.cs | 17 ++++++++----- Watcher/Views/Container/AddContainer.cshtml | 22 ---------------- Watcher/Views/Container/Overview.cshtml | 23 ++--------------- Watcher/Views/Server/_ServerCard.cshtml | 8 ------ Watcher/Views/Shared/_Layout.cshtml | 2 +- 6 files changed, 14 insertions(+), 86 deletions(-) delete mode 100644 Watcher/Views/Container/AddContainer.cshtml diff --git a/Watcher/Controllers/ContainerController.cs b/Watcher/Controllers/ContainerController.cs index e65c127..acba5cf 100644 --- a/Watcher/Controllers/ContainerController.cs +++ b/Watcher/Controllers/ContainerController.cs @@ -29,32 +29,4 @@ public class ContainerController : Controller return View(viewModel); } - - [HttpGet] - public IActionResult AddContainer() - { - return View(); - } - - [HttpPost] - public async Task AddContainer(AddContainerViewModel vm) - { - if (!ModelState.IsValid) - return View(vm); - - var container = new Container - { - Name = vm.Name, - Image = vm.Image, - Status = vm.Status, - Hostname = vm.Hostname, - IsRunning = vm.IsRunning, - CreatedAt = DateTime.UtcNow - }; - - _context.Containers.Add(container); - await _context.SaveChangesAsync(); - - return RedirectToAction("Index"); - } } diff --git a/Watcher/Models/Container.cs b/Watcher/Models/Container.cs index 2d5ab6a..0101b4f 100644 --- a/Watcher/Models/Container.cs +++ b/Watcher/Models/Container.cs @@ -4,17 +4,22 @@ public class Container { public int Id { get; set; } - public string Name { get; set; } = string.Empty; + // Container Details + public string? Name { get; set; } + + public int ExposedPort { get; set; } + + public int InternalPort { get; set; } public string Status { get; set; } = string.Empty; - public Image? Image { get; set; } + public string Health { get; set; } = string.Empty; + + public string? Image { get; set; } public DateTime CreatedAt { get; set; } = DateTime.UtcNow; - public string Hostname { get; set; } = string.Empty; + public Boolean IsRunning { get; set; } = true; - public string Type { get; set; } = "docker"; // z.B. "docker", "vm", "lxc", etc. - - public Boolean IsRunning { get; set; } = false; + public Server? HostServer { get; set; } } diff --git a/Watcher/Views/Container/AddContainer.cshtml b/Watcher/Views/Container/AddContainer.cshtml deleted file mode 100644 index 29ab3c2..0000000 --- a/Watcher/Views/Container/AddContainer.cshtml +++ /dev/null @@ -1,22 +0,0 @@ -@model Watcher.ViewModels.AddContainerViewModel -@{ - ViewData["Title"] = "Neuen Container hinzufügen"; -} - -

Neuen Container hinzufügen

- -
-
- - -
-
- - -
-
- - -
- -
diff --git a/Watcher/Views/Container/Overview.cshtml b/Watcher/Views/Container/Overview.cshtml index d9b9cec..9ec20d4 100644 --- a/Watcher/Views/Container/Overview.cshtml +++ b/Watcher/Views/Container/Overview.cshtml @@ -3,33 +3,14 @@ ViewData["Title"] = "Containerübersicht"; } -
-

Containerübersicht

- - + Container hinzufügen - -
-
@foreach (var container in Model.Containers) {

@container.Name

Image: @container.Image

-

Hostname: @container.Hostname

-

Status: @container.Status

-

- Läuft: - - @(container.IsRunning ? "Ja" : "Nein") - -

- + +

Status: @(container.IsRunning ? "online" : "offline")

}
diff --git a/Watcher/Views/Server/_ServerCard.cshtml b/Watcher/Views/Server/_ServerCard.cshtml index 910e5d9..bedd9fa 100644 --- a/Watcher/Views/Server/_ServerCard.cshtml +++ b/Watcher/Views/Server/_ServerCard.cshtml @@ -30,14 +30,6 @@
RAM: @(s.RamSize)
Disk Space: ...
-
-
-
Metrics letzte 24h
-
- -
-
-
diff --git a/Watcher/Views/Shared/_Layout.cshtml b/Watcher/Views/Shared/_Layout.cshtml index 944f4ef..2a2ba22 100644 --- a/Watcher/Views/Shared/_Layout.cshtml +++ b/Watcher/Views/Shared/_Layout.cshtml @@ -73,10 +73,10 @@ -