Logs eingerichtet

This commit is contained in:
2025-06-25 19:51:55 +02:00
parent 4f8197c500
commit 96bc96496a
4 changed files with 59 additions and 5 deletions

View File

@@ -14,9 +14,12 @@ namespace Watcher.Controllers
[Authorize]
public class DatabaseController : Controller
{
// Backup Infos
private readonly string _dbPath = Path.Combine(Directory.GetCurrentDirectory(), "persistence", "watcher.db");
private readonly string _backupFolder = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "downloads", "sqlite");
// Services
private readonly ILogger<DatabaseController> _logger;
public class DumpFileInfo
{
@@ -26,13 +29,23 @@ namespace Watcher.Controllers
}
public DatabaseController(IWebHostEnvironment env)
public DatabaseController(IWebHostEnvironment env, ILogger<DatabaseController> logger)
{
_logger = logger;
_backupFolder = Path.Combine(env.WebRootPath, "downloads", "sqlite");
if (!Directory.Exists(_backupFolder))
{
_logger.LogInformation("Backup-Directory neu erstellt");
Directory.CreateDirectory(_backupFolder);
}
else
{
_logger.LogInformation("Backup-Directory existiert bereits");
}
}
[HttpPost("/maintenance/sqlite-dump")]
public IActionResult CreateSqlDump()

View File

@@ -11,10 +11,21 @@ namespace Watcher.Controllers;
[Authorize]
public class DownloadController : Controller
{
// Logging einbinden
private readonly ILogger<AuthController> _logger;
public DownloadController(ILogger<AuthController> logger)
{
_logger = logger;
}
// Allgemeiner Download von Dateien
[Authorize]
[HttpGet("Download/File/{type}/{filename}")]
public IActionResult FileDownload(string type, string filename)
{
// Nur erlaubte Endungen zulassen (Sicherheit!)
// TODO: aktuelles "" für Binaries ist das absolute Gegenteil von sicher, ich hab aber keine bessere Idee
var allowedExtensions = new[] { ".exe", "", ".sql" };
var extension = Path.GetExtension(filename).ToLowerInvariant();
@@ -24,13 +35,17 @@ public class DownloadController : Controller
var path = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "downloads", type, filename);
if (!System.IO.File.Exists(path))
{
_logger.LogError("Download fehlgeschlagen: Datei nicht gefunden ({path})", path);
return NotFound("Datei nicht gefunden");
}
// .exe MIME-Typ: application/octet-stream
var mimeType = "application/octet-stream";
var fileBytes = System.IO.File.ReadAllBytes(path);
_logger.LogTrace("Download ausgeführt: {filename}", filename);
return File(fileBytes, mimeType, filename);
//return File(fileBytes, filename);
}

View File

@@ -51,17 +51,23 @@ public class MetricDto
// Disks?
}
[ApiController]
[Route("[controller]")]
public class MonitoringController : Controller
{
private readonly AppDbContext _context;
public MonitoringController(AppDbContext context)
private readonly ILogger<MonitoringController> _logger;
public MonitoringController(AppDbContext context, ILogger<MonitoringController> logger)
{
_context = context;
_logger = logger;
}
// Endpoint, an dem sich neue Agents registrieren
[HttpPost("register")]
public async Task<IActionResult> Register([FromBody] RegistrationDto dto)
{
@@ -73,6 +79,7 @@ public class MonitoringController : Controller
.Select(e => e.ErrorMessage)
.ToList();
_logger.LogError("Fehlerhafter Registrierungs-Payload.");
return BadRequest(new { error = "Ungültiger Payload", details = errors });
}
@@ -92,13 +99,17 @@ public class MonitoringController : Controller
await _context.SaveChangesAsync();
// Success
_logger.LogInformation("Agent für '{server}' erfolgreich registriert.", server.Name);
return Ok();
}
_logger.LogError("Kein Server für Registrierung gefunden");
return NotFound("No Matching Server found.");
}
// Enpoint, an den Agents Ihre gesammelten Daten senden
[HttpPost("metric")]
public async Task<IActionResult> Receive([FromBody] MetricDto dto)
{
@@ -110,6 +121,7 @@ public class MonitoringController : Controller
.Select(e => e.ErrorMessage)
.ToList();
_logger.LogError("Ungültiger Monitoring-Payload.");
return BadRequest(new { error = "Ungültiger Payload", details = errors });
}
@@ -119,12 +131,14 @@ public class MonitoringController : Controller
if (server != null)
{
// Serverdaten in Datenbank eintragen
// TODO: Serverdaten in Datenbank eintragen
// Success
_logger.LogInformation("Monitoring-Daten für '{server}' empfangen", server.Name);
return Ok();
}
_logger.LogError("Kein Server für eingegangenen Monitoring-Payload gefunden");
return NotFound("No Matching Server found.");
}

View File

@@ -11,9 +11,12 @@ public class ServerController : Controller
{
private readonly AppDbContext _context;
public ServerController(AppDbContext context)
private readonly ILogger<ServerController> _logger;
public ServerController(AppDbContext context, ILogger<ServerController> logger)
{
_context = context;
_logger = logger;
}
public async Task<IActionResult> Overview()
@@ -49,6 +52,8 @@ public class ServerController : Controller
_context.Servers.Add(server);
await _context.SaveChangesAsync();
_logger.LogInformation("Neuer Server erstellt: {server}", server.Name);
return RedirectToAction(nameof(Overview));
}
@@ -59,11 +64,15 @@ public class ServerController : Controller
var server = await _context.Servers.FindAsync(id);
if (server == null)
{
_logger.LogError("Server nicht gefunden");
return NotFound();
}
_context.Servers.Remove(server);
await _context.SaveChangesAsync();
_logger.LogInformation("Server '{server}' erfolgreich gelöscht", server.Name);
return RedirectToAction(nameof(Overview));
}
@@ -98,6 +107,9 @@ public class ServerController : Controller
server.Type = vm.Type;
await _context.SaveChangesAsync();
_logger.LogInformation("Server '{server}' erfolgreich aktualisiert", server.Name);
return RedirectToAction(nameof(Overview));
}