Added the bound IP address to the server options.

This commit is contained in:
Christian Kratky
2017-12-14 13:23:12 +01:00
parent 44c07c2034
commit e0284886b5
5 changed files with 48 additions and 17 deletions
@@ -1,16 +1,20 @@
using System;
using System.Net;
namespace MQTTnet.Server
{
public interface IMqttServerOptions
{
Action<MqttApplicationMessageInterceptorContext> ApplicationMessageInterceptor { get; }
int ConnectionBacklog { get; }
Action<MqttConnectionValidatorContext> ConnectionValidator { get; }
TimeSpan DefaultCommunicationTimeout { get; }
MqttServerDefaultEndpointOptions DefaultEndpointOptions { get; }
IMqttServerStorage Storage { get; }
Action<MqttConnectionValidatorContext> ConnectionValidator { get; }
Action<MqttSubscriptionInterceptorContext> SubscriptionInterceptor { get; }
Action<MqttApplicationMessageInterceptorContext> ApplicationMessageInterceptor { get; }
MqttServerDefaultEndpointOptions DefaultEndpointOptions { get; }
MqttServerTlsEndpointOptions TlsEndpointOptions { get; }
IMqttServerStorage Storage { get; }
}
}
@@ -1,9 +1,13 @@
namespace MQTTnet.Server
using System.Net;
namespace MQTTnet.Server
{
public sealed class MqttServerDefaultEndpointOptions
{
public bool IsEnabled { get; set; } = true;
public int? Port { get; set; }
public IPAddress BoundIPAddress { get; set; } = IPAddress.Any;
}
}
@@ -1,4 +1,5 @@
using System;
using System.Net;
namespace MQTTnet.Server
{
@@ -18,33 +19,45 @@ namespace MQTTnet.Server
return this;
}
public MqttServerOptionsBuilder WithDefaultEndpointPort(int value)
{
_options.DefaultEndpointOptions.Port = value;
return this;
}
public MqttServerOptionsBuilder WithDefaultEndpoint()
{
_options.DefaultEndpointOptions.IsEnabled = true;
return this;
}
public MqttServerOptionsBuilder WithDefaultEndpointPort(int? value)
{
_options.DefaultEndpointOptions.Port = value;
return this;
}
public MqttServerOptionsBuilder WithDefaultEndpointBoundIPAddress(IPAddress value)
{
_options.DefaultEndpointOptions.BoundIPAddress = value ?? IPAddress.Any;
return this;
}
public MqttServerOptionsBuilder WithoutDefaultEndpoint()
{
_options.DefaultEndpointOptions.IsEnabled = false;
return this;
}
public MqttServerOptionsBuilder WithEncryptedEndpoint()
{
_options.TlsEndpointOptions.IsEnabled = true;
return this;
}
public MqttServerOptionsBuilder WithoutEncryptedEndpoint()
public MqttServerOptionsBuilder WithEncryptedEndpointPort(int? value)
{
_options.TlsEndpointOptions.IsEnabled = false;
_options.TlsEndpointOptions.Port = value;
return this;
}
public MqttServerOptionsBuilder WithEncryptedEndpointBoundIPAddress(IPAddress value)
{
_options.TlsEndpointOptions.BoundIPAddress = value;
return this;
}
@@ -54,6 +67,12 @@ namespace MQTTnet.Server
return this;
}
public MqttServerOptionsBuilder WithoutEncryptedEndpoint()
{
_options.TlsEndpointOptions.IsEnabled = false;
return this;
}
public MqttServerOptionsBuilder WithStorage(IMqttServerStorage value)
{
_options.Storage = value;
@@ -1,4 +1,6 @@
namespace MQTTnet.Server
using System.Net;
namespace MQTTnet.Server
{
public sealed class MqttServerTlsEndpointOptions
{
@@ -7,5 +9,7 @@
public int? Port { get; set; }
public byte[] Certificate { get; set; }
public IPAddress BoundIPAddress { get; set; } = IPAddress.Any;
}
}