diff --git a/src/ScadaLink.Transport/ScadaLink.Transport.csproj b/src/ScadaLink.Transport/ScadaLink.Transport.csproj index 2aa3116..a1ac6db 100644 --- a/src/ScadaLink.Transport/ScadaLink.Transport.csproj +++ b/src/ScadaLink.Transport/ScadaLink.Transport.csproj @@ -7,6 +7,10 @@ true + + + + diff --git a/src/ScadaLink.Transport/ServiceCollectionExtensions.cs b/src/ScadaLink.Transport/ServiceCollectionExtensions.cs index 8497f48..ba819c3 100644 --- a/src/ScadaLink.Transport/ServiceCollectionExtensions.cs +++ b/src/ScadaLink.Transport/ServiceCollectionExtensions.cs @@ -1,4 +1,5 @@ using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Options; namespace ScadaLink.Transport; @@ -9,7 +10,8 @@ public static class ServiceCollectionExtensions public static IServiceCollection AddTransport(this IServiceCollection services) { ArgumentNullException.ThrowIfNull(services); - // Concrete services and options binding added in later tasks. + services.AddOptions().BindConfiguration(OptionsSection); + // Concrete services added in later tasks. return services; } } diff --git a/src/ScadaLink.Transport/TransportOptions.cs b/src/ScadaLink.Transport/TransportOptions.cs new file mode 100644 index 0000000..b91ff9a --- /dev/null +++ b/src/ScadaLink.Transport/TransportOptions.cs @@ -0,0 +1,11 @@ +namespace ScadaLink.Transport; + +public sealed class TransportOptions +{ + public int BundleSessionTtlMinutes { get; set; } = 30; + public int MaxBundleSizeMb { get; set; } = 100; + public int MaxUnlockAttemptsPerSession { get; set; } = 3; + public int MaxUnlockAttemptsPerIpPerHour { get; set; } = 10; + public int Pbkdf2Iterations { get; set; } = 600_000; + public int SchemaVersionMajor { get; set; } = 1; +}