From f09434d66d9a4b5d6ea29ccc74de422aa10cea1c Mon Sep 17 00:00:00 2001 From: triggermeelmo Date: Wed, 7 Jan 2026 12:47:23 +0100 Subject: [PATCH 1/6] test --- .../Controllers/HomeController.cs | 8 +- .../Controllers/MonitoringController.cs | 12 +++ ...260107105629_serverhardwareadd.Designer.cs | 86 ++++++++++++++++ .../20260107105629_serverhardwareadd.cs | 70 +++++++++++++ .../20260107110229_servermetadata.Designer.cs | 98 +++++++++++++++++++ .../20260107110229_servermetadata.cs | 63 ++++++++++++ .../WatcherDbContextModelSnapshot.cs | 27 +++++ watcher-monitoring/Models/Server.cs | 16 +++ watcher-monitoring/Payloads/HardwareDto.cs | 16 +++ 9 files changed, 394 insertions(+), 2 deletions(-) create mode 100644 watcher-monitoring/Migrations/20260107105629_serverhardwareadd.Designer.cs create mode 100644 watcher-monitoring/Migrations/20260107105629_serverhardwareadd.cs create mode 100644 watcher-monitoring/Migrations/20260107110229_servermetadata.Designer.cs create mode 100644 watcher-monitoring/Migrations/20260107110229_servermetadata.cs diff --git a/watcher-monitoring/Controllers/HomeController.cs b/watcher-monitoring/Controllers/HomeController.cs index a8fa45c..4f90f2c 100644 --- a/watcher-monitoring/Controllers/HomeController.cs +++ b/watcher-monitoring/Controllers/HomeController.cs @@ -3,6 +3,8 @@ using Microsoft.AspNetCore.Mvc; using watcher_monitoring.Models; using watcher_monitoring.Data; +using System.Threading.Tasks; +using Microsoft.EntityFrameworkCore; namespace watcher_monitoring.Controllers; @@ -18,9 +20,11 @@ public class HomeController : Controller } // Dashboard - public IActionResult Index() + public async Task Index() { - var servers = new List + List servers = await _dbContext.Servers.ToListAsync(); + + var servers1 = new List { new { Name = "Web Server 01", IPAddress = "192.168.1.10", IsOnline = true }, new { Name = "Database Server", IPAddress = "192.168.1.20", IsOnline = true }, diff --git a/watcher-monitoring/Controllers/MonitoringController.cs b/watcher-monitoring/Controllers/MonitoringController.cs index a70aeb2..bed6845 100644 --- a/watcher-monitoring/Controllers/MonitoringController.cs +++ b/watcher-monitoring/Controllers/MonitoringController.cs @@ -59,7 +59,19 @@ public class MonitoringController : Controller Server server = await _context.Servers.FindAsync(dto.Id); // Add Hardware Configuration + try + { + server.CpuType = dto.CpuType; + server.CpuCores = dto.CpuCores; + server.GpuType = dto.GpuType; + server.RamSize = dto.RamSize; + // Diskspace fehlt + } + catch (Exception ex) + { + _logger.LogError(ex.Message); + } } catch (Exception ex) { diff --git a/watcher-monitoring/Migrations/20260107105629_serverhardwareadd.Designer.cs b/watcher-monitoring/Migrations/20260107105629_serverhardwareadd.Designer.cs new file mode 100644 index 0000000..be4f67d --- /dev/null +++ b/watcher-monitoring/Migrations/20260107105629_serverhardwareadd.Designer.cs @@ -0,0 +1,86 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using watcher_monitoring.Data; + +#nullable disable + +namespace watcher_monitoring.Migrations +{ + [DbContext(typeof(WatcherDbContext))] + [Migration("20260107105629_serverhardwareadd")] + partial class serverhardwareadd + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder.HasAnnotation("ProductVersion", "8.0.6"); + + modelBuilder.Entity("watcher_monitoring.Models.Server", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("CpuCores") + .HasColumnType("INTEGER"); + + b.Property("CpuType") + .HasColumnType("TEXT"); + + b.Property("DiskSpace") + .HasColumnType("TEXT"); + + b.Property("GpuType") + .HasColumnType("TEXT"); + + b.Property("IPAddress") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("RamSize") + .HasColumnType("REAL"); + + b.HasKey("Id"); + + b.ToTable("Servers"); + }); + + modelBuilder.Entity("watcher_monitoring.Models.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Email") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("LastLogin") + .HasColumnType("TEXT"); + + b.Property("Password") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Username") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("Users"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/watcher-monitoring/Migrations/20260107105629_serverhardwareadd.cs b/watcher-monitoring/Migrations/20260107105629_serverhardwareadd.cs new file mode 100644 index 0000000..3fadc35 --- /dev/null +++ b/watcher-monitoring/Migrations/20260107105629_serverhardwareadd.cs @@ -0,0 +1,70 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace watcher_monitoring.Migrations +{ + /// + public partial class serverhardwareadd : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "CpuCores", + table: "Servers", + type: "INTEGER", + nullable: false, + defaultValue: 0); + + migrationBuilder.AddColumn( + name: "CpuType", + table: "Servers", + type: "TEXT", + nullable: true); + + migrationBuilder.AddColumn( + name: "DiskSpace", + table: "Servers", + type: "TEXT", + nullable: true); + + migrationBuilder.AddColumn( + name: "GpuType", + table: "Servers", + type: "TEXT", + nullable: true); + + migrationBuilder.AddColumn( + name: "RamSize", + table: "Servers", + type: "REAL", + nullable: false, + defaultValue: 0.0); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "CpuCores", + table: "Servers"); + + migrationBuilder.DropColumn( + name: "CpuType", + table: "Servers"); + + migrationBuilder.DropColumn( + name: "DiskSpace", + table: "Servers"); + + migrationBuilder.DropColumn( + name: "GpuType", + table: "Servers"); + + migrationBuilder.DropColumn( + name: "RamSize", + table: "Servers"); + } + } +} diff --git a/watcher-monitoring/Migrations/20260107110229_servermetadata.Designer.cs b/watcher-monitoring/Migrations/20260107110229_servermetadata.Designer.cs new file mode 100644 index 0000000..855f35d --- /dev/null +++ b/watcher-monitoring/Migrations/20260107110229_servermetadata.Designer.cs @@ -0,0 +1,98 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using watcher_monitoring.Data; + +#nullable disable + +namespace watcher_monitoring.Migrations +{ + [DbContext(typeof(WatcherDbContext))] + [Migration("20260107110229_servermetadata")] + partial class servermetadata + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder.HasAnnotation("ProductVersion", "8.0.6"); + + modelBuilder.Entity("watcher_monitoring.Models.Server", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("CpuCores") + .HasColumnType("INTEGER"); + + b.Property("CpuType") + .HasColumnType("TEXT"); + + b.Property("CreatedAt") + .HasColumnType("TEXT"); + + b.Property("DiskSpace") + .HasColumnType("TEXT"); + + b.Property("GpuType") + .HasColumnType("TEXT"); + + b.Property("IPAddress") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("IsOnline") + .HasColumnType("INTEGER"); + + b.Property("IsVerified") + .HasColumnType("INTEGER"); + + b.Property("LastSeen") + .HasColumnType("TEXT"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("RamSize") + .HasColumnType("REAL"); + + b.HasKey("Id"); + + b.ToTable("Servers"); + }); + + modelBuilder.Entity("watcher_monitoring.Models.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Email") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("LastLogin") + .HasColumnType("TEXT"); + + b.Property("Password") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Username") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("Users"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/watcher-monitoring/Migrations/20260107110229_servermetadata.cs b/watcher-monitoring/Migrations/20260107110229_servermetadata.cs new file mode 100644 index 0000000..2a0aaf5 --- /dev/null +++ b/watcher-monitoring/Migrations/20260107110229_servermetadata.cs @@ -0,0 +1,63 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace watcher_monitoring.Migrations +{ + /// + public partial class servermetadata : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "CreatedAt", + table: "Servers", + type: "TEXT", + nullable: false, + defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified)); + + migrationBuilder.AddColumn( + name: "IsOnline", + table: "Servers", + type: "INTEGER", + nullable: false, + defaultValue: false); + + migrationBuilder.AddColumn( + name: "IsVerified", + table: "Servers", + type: "INTEGER", + nullable: false, + defaultValue: false); + + migrationBuilder.AddColumn( + name: "LastSeen", + table: "Servers", + type: "TEXT", + nullable: false, + defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified)); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "CreatedAt", + table: "Servers"); + + migrationBuilder.DropColumn( + name: "IsOnline", + table: "Servers"); + + migrationBuilder.DropColumn( + name: "IsVerified", + table: "Servers"); + + migrationBuilder.DropColumn( + name: "LastSeen", + table: "Servers"); + } + } +} diff --git a/watcher-monitoring/Migrations/WatcherDbContextModelSnapshot.cs b/watcher-monitoring/Migrations/WatcherDbContextModelSnapshot.cs index c88c6eb..ce0b993 100644 --- a/watcher-monitoring/Migrations/WatcherDbContextModelSnapshot.cs +++ b/watcher-monitoring/Migrations/WatcherDbContextModelSnapshot.cs @@ -23,14 +23,41 @@ namespace watcher_monitoring.Migrations .ValueGeneratedOnAdd() .HasColumnType("INTEGER"); + b.Property("CpuCores") + .HasColumnType("INTEGER"); + + b.Property("CpuType") + .HasColumnType("TEXT"); + + b.Property("CreatedAt") + .HasColumnType("TEXT"); + + b.Property("DiskSpace") + .HasColumnType("TEXT"); + + b.Property("GpuType") + .HasColumnType("TEXT"); + b.Property("IPAddress") .IsRequired() .HasColumnType("TEXT"); + b.Property("IsOnline") + .HasColumnType("INTEGER"); + + b.Property("IsVerified") + .HasColumnType("INTEGER"); + + b.Property("LastSeen") + .HasColumnType("TEXT"); + b.Property("Name") .IsRequired() .HasColumnType("TEXT"); + b.Property("RamSize") + .HasColumnType("REAL"); + b.HasKey("Id"); b.ToTable("Servers"); diff --git a/watcher-monitoring/Models/Server.cs b/watcher-monitoring/Models/Server.cs index 40fb04b..b12e869 100644 --- a/watcher-monitoring/Models/Server.cs +++ b/watcher-monitoring/Models/Server.cs @@ -16,4 +16,20 @@ public class Server [Required] // TODO: [RegularExpression("^(((?!25?[6-9])[12]\d|[1-9])?\d\.?\b){4}$")] public required string IPAddress { get; set; } + + // 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; + public string? DiskSpace { get; set; } = string.Empty; + + // Metadata + public DateTime CreatedAt { get; set; } = DateTime.UtcNow; + + public bool IsOnline { get; set; } = false; + + public DateTime LastSeen { get; set; } + + public bool IsVerified { get; set; } = false; } \ No newline at end of file diff --git a/watcher-monitoring/Payloads/HardwareDto.cs b/watcher-monitoring/Payloads/HardwareDto.cs index 9f799be..97f4387 100644 --- a/watcher-monitoring/Payloads/HardwareDto.cs +++ b/watcher-monitoring/Payloads/HardwareDto.cs @@ -7,4 +7,20 @@ public class HardwareDto { [Required] public required int Id; + + [Required] + public string? IpAddress { get; set; } + + // Hardware Info + [Required] + public string? CpuType { get; set; } + + [Required] + public int CpuCores { get; set; } + + [Required] + public string? GpuType { get; set; } + + [Required] + public double RamSize { get; set; } } \ No newline at end of file From 799d29fd1bbeff1b1477931a9cdc2a6c23f81589 Mon Sep 17 00:00:00 2001 From: triggermeelmo Date: Wed, 7 Jan 2026 12:54:28 +0100 Subject: [PATCH 2/6] sln file moved --- watcher-monitoring/watcher-monitoring.sln | 24 ----------------------- 1 file changed, 24 deletions(-) delete mode 100644 watcher-monitoring/watcher-monitoring.sln diff --git a/watcher-monitoring/watcher-monitoring.sln b/watcher-monitoring/watcher-monitoring.sln deleted file mode 100644 index a45846c..0000000 --- a/watcher-monitoring/watcher-monitoring.sln +++ /dev/null @@ -1,24 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.5.2.0 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "watcher-monitoring", "watcher-monitoring.csproj", "{54D763FB-AF94-1B76-AA8D-C59D18DEE03D}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {54D763FB-AF94-1B76-AA8D-C59D18DEE03D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {54D763FB-AF94-1B76-AA8D-C59D18DEE03D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {54D763FB-AF94-1B76-AA8D-C59D18DEE03D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {54D763FB-AF94-1B76-AA8D-C59D18DEE03D}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {6BFF4C28-39B2-4352-A044-138F83BFBD78} - EndGlobalSection -EndGlobal From a171f4df328690938126fd7b9ddde02d9c50ad07 Mon Sep 17 00:00:00 2001 From: triggermeelmo Date: Wed, 7 Jan 2026 12:56:02 +0100 Subject: [PATCH 3/6] moved sln --- watcher-monitoring.sln | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 watcher-monitoring.sln diff --git a/watcher-monitoring.sln b/watcher-monitoring.sln new file mode 100644 index 0000000..a45846c --- /dev/null +++ b/watcher-monitoring.sln @@ -0,0 +1,24 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.5.2.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "watcher-monitoring", "watcher-monitoring.csproj", "{54D763FB-AF94-1B76-AA8D-C59D18DEE03D}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {54D763FB-AF94-1B76-AA8D-C59D18DEE03D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {54D763FB-AF94-1B76-AA8D-C59D18DEE03D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {54D763FB-AF94-1B76-AA8D-C59D18DEE03D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {54D763FB-AF94-1B76-AA8D-C59D18DEE03D}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {6BFF4C28-39B2-4352-A044-138F83BFBD78} + EndGlobalSection +EndGlobal From ed7525ec0b30e43447726bc690be865827b646f8 Mon Sep 17 00:00:00 2001 From: triggermeelmo Date: Wed, 7 Jan 2026 13:00:13 +0100 Subject: [PATCH 4/6] pipeline test --- .gitea/workflows/build.yml | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml index 54ccced..1eb6d07 100644 --- a/.gitea/workflows/build.yml +++ b/.gitea/workflows/build.yml @@ -22,6 +22,15 @@ jobs: steps: - name: Checkout code uses: actions/checkout@v4 + with: + submodules: false + + - name: List files for debugging + run: | + pwd + ls -la + find . -name "*.csproj" + find . -name "*.sln" - name: Setup .NET SDK uses: actions/setup-dotnet@v3 @@ -29,17 +38,7 @@ jobs: dotnet-version: ${{ env.DOTNET_VERSION }} - name: Restore dependencies - run: dotnet restore - - - name: Build - run: dotnet build --configuration Release --no-restore - - - name: Test - run: dotnet test --no-build --verbosity normal - continue-on-error: true - - - name: Publish - run: dotnet publish -c Release -o out + run: dotnet restore watcher-monitoring.sln set-tag: name: Set Tag Name From 9e50d69ef9a324f3450af32531a722532ad724c4 Mon Sep 17 00:00:00 2001 From: triggermeelmo Date: Wed, 7 Jan 2026 13:02:04 +0100 Subject: [PATCH 5/6] p --- watcher-monitoring.sln | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/watcher-monitoring.sln b/watcher-monitoring.sln index a45846c..a144d77 100644 --- a/watcher-monitoring.sln +++ b/watcher-monitoring.sln @@ -2,7 +2,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.5.2.0 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "watcher-monitoring", "watcher-monitoring.csproj", "{54D763FB-AF94-1B76-AA8D-C59D18DEE03D}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "watcher-monitoring", "watcher-monitoring\watcher-monitoring.csproj", "{54D763FB-AF94-1B76-AA8D-C59D18DEE03D}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution From 746628fdd83b9938f37772dfee7e3f6a56d79eff Mon Sep 17 00:00:00 2001 From: triggermeelmo Date: Wed, 7 Jan 2026 13:09:08 +0100 Subject: [PATCH 6/6] Dockerfile an neue Dateistruktur angepasst --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 593615d..e01ef4b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,11 +4,11 @@ WORKDIR /app # Projektdateien kopieren und Abhängigkeiten wiederherstellen COPY *.sln . -COPY Watcher/*.csproj ./Watcher/ +COPY watcher-monitoring/*.csproj ./Watcher/ RUN dotnet restore # Restliche Dateien kopieren und Build ausführen -COPY Watcher/. ./Watcher/ +COPY watcher-monitoring/. ./Watcher/ WORKDIR /app/Watcher RUN dotnet publish -c Release -o /app/publish /p:UseAppHost=false