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;
+}