using System.Text.Json; namespace OCSentinelCli; internal sealed record ScannerConfiguration { public int WarningEventThreshold { get; init; } = 1; public int CriticalEventThreshold { get; init; } = 20; public int WarningUniqueIpThreshold { get; init; } = 1; public int CriticalUniqueIpThreshold { get; init; } = 10; public int CorrelationWarningCveThreshold { get; init; } = 1; public int CorrelationCriticalCveThreshold { get; init; } = 1; public List FtpRoots { get; init; } = []; public List FileZillaRoots { get; init; } = []; public List ExcludedIps { get; init; } = []; public static ScannerConfiguration Load(string path) { string fullPath = Path.GetFullPath(path); string json = File.ReadAllText(fullPath); ScannerConfiguration? config = JsonSerializer.Deserialize(json, JsonOptions.Default); return config ?? new ScannerConfiguration(); } }