From 6248fad147e8a8eca6e402b3986a928f648cd27d Mon Sep 17 00:00:00 2001 From: daniel-hbn Date: Wed, 1 Oct 2025 08:14:36 +0200 Subject: [PATCH] =?UTF-8?q?Background=20Service=20l=C3=A4uft=20im=2060=20S?= =?UTF-8?q?ekunden=20Rythmus.=20Ergebnis=20wird=20noch=20nciht=20gespeiche?= =?UTF-8?q?rt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Watcher/Controllers/HomeController.cs | 11 ++-- Watcher/Program.cs | 6 ++- Watcher/Services/NetworkCheck.cs | 59 ++++++++++++++++++++++ Watcher/Views/Home/_DashboardStats.cshtml | 2 +- Watcher/persistence/watcher.db-shm | Bin 32768 -> 0 bytes Watcher/persistence/watcher.db-wal | 0 6 files changed, 73 insertions(+), 5 deletions(-) create mode 100644 Watcher/Services/NetworkCheck.cs delete mode 100644 Watcher/persistence/watcher.db-shm delete mode 100644 Watcher/persistence/watcher.db-wal diff --git a/Watcher/Controllers/HomeController.cs b/Watcher/Controllers/HomeController.cs index 2032eb2..5579444 100644 --- a/Watcher/Controllers/HomeController.cs +++ b/Watcher/Controllers/HomeController.cs @@ -4,8 +4,8 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; // Local Namespaces using Watcher.Data; -using Watcher.Models; using Watcher.ViewModels; +using Watcher.Services; namespace Watcher.Controllers { @@ -52,9 +52,9 @@ namespace Watcher.Controllers .ToListAsync(), Containers = await _context.Containers .OrderBy(s => s.Name) - .ToListAsync() + .ToListAsync(), }; - + //ViewBag.NetworkConnection = ReturnNetworkStatus(); return View(viewModel); } @@ -88,5 +88,10 @@ namespace Watcher.Controllers return PartialView("_DashboardStats", model); } + public String ReturnNetworkStatus() + { + return "OK"; + } + } } diff --git a/Watcher/Program.cs b/Watcher/Program.cs index c20d108..fd948b8 100644 --- a/Watcher/Program.cs +++ b/Watcher/Program.cs @@ -5,6 +5,7 @@ using Serilog; using Watcher.Data; using Watcher.Models; +using Watcher.Services; //using Watcher.Services; //using Watcher.Workers; @@ -15,7 +16,7 @@ var builder = WebApplication.CreateBuilder(args); // Serilog konfigurieren – nur Logs, die nicht von Microsoft stammen Log.Logger = new LoggerConfiguration() .MinimumLevel.Information() - .MinimumLevel.Override("Microsoft", Serilog.Events.LogEventLevel.Warning) // <-- + .MinimumLevel.Override("Microsoft", Serilog.Events.LogEventLevel.Warning) .Enrich.FromLogContext() .WriteTo.File( "logs/watcher-.log", @@ -33,6 +34,9 @@ builder.Services.AddControllersWithViews(); // HttpContentAccessor builder.Services.AddHttpContextAccessor(); +// Background Services +builder.Services.AddHostedService(); + // ---------- Konfiguration ---------- DotNetEnv.Env.Load(); diff --git a/Watcher/Services/NetworkCheck.cs b/Watcher/Services/NetworkCheck.cs new file mode 100644 index 0000000..a4baf03 --- /dev/null +++ b/Watcher/Services/NetworkCheck.cs @@ -0,0 +1,59 @@ +using System.Composition; +using System.Net.NetworkInformation; + +namespace Watcher.Services; +public class NetworkCheck : BackgroundService +{ + private readonly ILogger _logger; + + public static String networkCheckResult + { + get { return networkCheckResult; } + set { networkCheckResult = value; } + + } + + public NetworkCheck(ILogger logger) + { + _logger = logger; + } + + protected override async Task ExecuteAsync(CancellationToken stoppingToken) + { + var timer = new PeriodicTimer(TimeSpan.FromSeconds(30)); + + while (await timer.WaitForNextTickAsync(stoppingToken)) + { + // Hintergrundprozess abwarten + await checkConnectionAsync(); + + // 5 Sekdunden Offset + await Task.Delay(TimeSpan.FromSeconds(5), stoppingToken); + } + } + + public Task checkConnectionAsync() + { + _logger.LogInformation("Networkcheck started."); + + string host = "8.8.8.8"; + Ping p = new Ping(); + + try + { + PingReply reply = p.Send(host, 3000); + if (reply.Status == IPStatus.Success) + { + _logger.LogInformation("Ping successfull. Watcher is online."); + } + } + catch + { + _logger.LogError("Ping failed. Watcher appears to have no network connection."); + } + + _logger.LogInformation("Networkcheck finished."); + + return Task.CompletedTask; + } +} \ No newline at end of file diff --git a/Watcher/Views/Home/_DashboardStats.cshtml b/Watcher/Views/Home/_DashboardStats.cshtml index 3e23ccb..ee6e81c 100644 --- a/Watcher/Views/Home/_DashboardStats.cshtml +++ b/Watcher/Views/Home/_DashboardStats.cshtml @@ -59,7 +59,7 @@
Netzwerk - OK + NetworkConnection
diff --git a/Watcher/persistence/watcher.db-shm b/Watcher/persistence/watcher.db-shm deleted file mode 100644 index fe9ac2845eca6fe6da8a63cd096d9cf9e24ece10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32768 zcmeIuAr62r3