From 46cc6527aa6ab980ff00d41cfde577df83a6fa1d Mon Sep 17 00:00:00 2001 From: Leendert de Borst Date: Wed, 4 Dec 2024 19:17:56 +0100 Subject: [PATCH] Update default server settings (#454) --- .../Models/ServerSettingsModel.cs | 2 +- .../Services/ServerSettingsService.cs | 58 +++++++++++++++---- 2 files changed, 47 insertions(+), 13 deletions(-) diff --git a/src/Shared/AliasVault.Shared.Server/Models/ServerSettingsModel.cs b/src/Shared/AliasVault.Shared.Server/Models/ServerSettingsModel.cs index 0b2fd8f28..7186a870c 100644 --- a/src/Shared/AliasVault.Shared.Server/Models/ServerSettingsModel.cs +++ b/src/Shared/AliasVault.Shared.Server/Models/ServerSettingsModel.cs @@ -23,7 +23,7 @@ public class ServerSettingsModel public int AuthLogRetentionDays { get; set; } = 30; /// - /// Gets or sets the email retention days. Defaults to 0 (disabled). + /// Gets or sets the email retention days. Defaults to 0 (unlimited). /// public int EmailRetentionDays { get; set; } diff --git a/src/Shared/AliasVault.Shared.Server/Services/ServerSettingsService.cs b/src/Shared/AliasVault.Shared.Server/Services/ServerSettingsService.cs index b39763360..5ac7622f1 100644 --- a/src/Shared/AliasVault.Shared.Server/Services/ServerSettingsService.cs +++ b/src/Shared/AliasVault.Shared.Server/Services/ServerSettingsService.cs @@ -99,19 +99,53 @@ public class ServerSettingsService(IDbContextFactory dbCon await using var dbContext = await dbContextFactory.CreateDbContextAsync(CancellationToken.None); var settings = await dbContext.ServerSettings.ToDictionaryAsync(x => x.Key, x => x.Value); - return new ServerSettingsModel + // Create model with defaults + var model = new ServerSettingsModel(); + + // Only override if parsing succeeds + if (int.TryParse(settings.GetValueOrDefault("GeneralLogRetentionDays"), out var generalDays)) { - GeneralLogRetentionDays = int.TryParse(settings.GetValueOrDefault("GeneralLogRetentionDays"), out var generalDays) ? generalDays : 30, - AuthLogRetentionDays = int.TryParse(settings.GetValueOrDefault("AuthLogRetentionDays"), out var authDays) ? authDays : 90, - EmailRetentionDays = int.TryParse(settings.GetValueOrDefault("EmailRetentionDays"), out var emailDays) ? emailDays : 30, - MaxEmailsPerUser = int.TryParse(settings.GetValueOrDefault("MaxEmailsPerUser"), out var maxEmails) ? maxEmails : 100, - MaintenanceTime = TimeOnly.TryParse( - settings.GetValueOrDefault("MaintenanceTime") ?? "00:00", - CultureInfo.InvariantCulture, - DateTimeStyles.None, - out var time) ? time : new TimeOnly(0, 0), - TaskRunnerDays = settings.GetValueOrDefault("TaskRunnerDays")?.Split(',').Select(int.Parse).ToList() ?? new List { 1, 2, 3, 4, 5, 6, 7 }, - }; + model.GeneralLogRetentionDays = generalDays; + } + + if (int.TryParse(settings.GetValueOrDefault("AuthLogRetentionDays"), out var authDays)) + { + model.AuthLogRetentionDays = authDays; + } + + if (int.TryParse(settings.GetValueOrDefault("EmailRetentionDays"), out var emailDays)) + { + model.EmailRetentionDays = emailDays; + } + + if (int.TryParse(settings.GetValueOrDefault("MaxEmailsPerUser"), out var maxEmails)) + { + model.MaxEmailsPerUser = maxEmails; + } + + if (TimeOnly.TryParse( + settings.GetValueOrDefault("MaintenanceTime") ?? "00:00", + CultureInfo.InvariantCulture, + DateTimeStyles.None, + out var time)) + { + model.MaintenanceTime = time; + } + + var taskRunnerDaysStr = settings.GetValueOrDefault("TaskRunnerDays"); + if (!string.IsNullOrEmpty(taskRunnerDaysStr)) + { + try + { + model.TaskRunnerDays = taskRunnerDaysStr.Split(',').Select(int.Parse).ToList(); + } + catch (FormatException) + { + // Keep default if parsing fails + } + } + + return model; } ///