From 8c15a67166e545169216eee8be7c44acf03a27cb Mon Sep 17 00:00:00 2001 From: Rory& Date: Sat, 20 Jan 2024 11:34:00 +0100 Subject: Add actions and unit data --- SystemdCtl/Controllers/UnitController.cs | 26 ++++++++++++++++++++++++-- SystemdCtl/Program.cs | 3 ++- 2 files changed, 26 insertions(+), 3 deletions(-) (limited to 'SystemdCtl') diff --git a/SystemdCtl/Controllers/UnitController.cs b/SystemdCtl/Controllers/UnitController.cs index 00916bf..a128584 100644 --- a/SystemdCtl/Controllers/UnitController.cs +++ b/SystemdCtl/Controllers/UnitController.cs @@ -18,12 +18,34 @@ public class UnitController : ControllerBase } [HttpGet("unit/{serviceName}/logs")] - public async IAsyncEnumerable GetUnitLogs(string serviceName) + public async IAsyncEnumerable GetUnitLogs(string serviceName, [FromQuery] int contextLines = 100) { - await foreach (var log in SystemdExecutor.GetUnitLogs(serviceName)) + await foreach (var log in SystemdExecutor.GetUnitLogs(serviceName, contextLines: contextLines)) { + Console.WriteLine(log.Message); yield return log; await Response.Body.FlushAsync(); } } + + [HttpGet("unit/{serviceName}/data")] + public Task GetUnitData(string serviceName) => SystemdExecutor.GetUnitData(serviceName); + + [HttpGet("unit/{serviceName}/start")] + public Task StartUnit(string serviceName) => CommandExecutor.ExecuteCommand("systemctl", $"start {serviceName}"); + + [HttpGet("unit/{serviceName}/stop")] + public Task StopUnit(string serviceName) => CommandExecutor.ExecuteCommand("systemctl", $"stop {serviceName}"); + + [HttpGet("unit/{serviceName}/restart")] + public Task RestartUnit(string serviceName) => CommandExecutor.ExecuteCommand("systemctl", $"restart {serviceName}"); + + [HttpGet("unit/{serviceName}/reload")] + public Task ReloadUnit(string serviceName) => CommandExecutor.ExecuteCommand("systemctl", $"reload {serviceName}"); + + [HttpGet("unit/{serviceName}/enable")] + public Task EnableUnit(string serviceName) => CommandExecutor.ExecuteCommand("systemctl", $"enable {serviceName}"); + + [HttpGet("unit/{serviceName}/disable")] + public Task DisableUnit(string serviceName) => CommandExecutor.ExecuteCommand("systemctl", $"disable {serviceName}"); } \ No newline at end of file diff --git a/SystemdCtl/Program.cs b/SystemdCtl/Program.cs index c399d31..f0f01c3 100644 --- a/SystemdCtl/Program.cs +++ b/SystemdCtl/Program.cs @@ -10,7 +10,8 @@ builder.Services.AddRazorComponents() builder.Services.AddControllers().AddJsonOptions(options => { options.JsonSerializerOptions.WriteIndented = true; - options.JsonSerializerOptions.DefaultBufferSize = 128; + options.JsonSerializerOptions.DefaultBufferSize = 1; + options.JsonSerializerOptions.AllowTrailingCommas = true; }); var app = builder.Build(); -- cgit 1.4.1