Refactor settings.

This commit is contained in:
Christian Kratky
2019-03-11 21:15:02 +01:00
parent 1311535eed
commit 3450889e84
6 changed files with 21 additions and 22 deletions
@@ -23,17 +23,17 @@
/// <summary>
/// Listen Settings
/// </summary>
public TcpEndpointModel TcpEndPoint { get; set; } = new TcpEndpointModel();
public TcpEndPointModel TcpEndPoint { get; set; } = new TcpEndPointModel();
/// <summary>
/// Encryption Listen Settings
/// </summary>
public TcpEndpointModel EncryptedTcpEndPoint { get; set; } = new TcpEndpointModel();
public TcpEndPointModel EncryptedTcpEndPoint { get; set; } = new TcpEndPointModel();
/// <summary>
/// Settings for the Web Socket endpoint.
/// </summary>
public WebSocketEndpointModel WebSocketEndpoint { get; set; } = new WebSocketEndpointModel();
public WebSocketEndPointModel WebSocketEndPoint { get; set; } = new WebSocketEndPointModel();
/// <summary>
/// Set limit for max pending messages per client
@@ -6,15 +6,8 @@ namespace MQTTnet.Server.Configuration
/// <summary>
/// Listen Entry Settings Model
/// </summary>
public class TcpEndpointModel
public class TcpEndPointModel
{
/// <summary>
/// Constructor
/// </summary>
public TcpEndpointModel()
{
}
/// <summary>
/// Path to Certificate
/// </summary>
@@ -3,7 +3,7 @@ using System.Collections.Generic;
namespace MQTTnet.Server.Configuration
{
public class WebSocketEndpointModel
public class WebSocketEndPointModel
{
public bool Enabled { get; set; } = true;
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Net.WebSockets;
using System.Security.Authentication;
using System.Text;
using System.Threading.Tasks;
using IronPython.Runtime;
@@ -146,7 +147,7 @@ namespace MQTTnet.Server.Mqtt
.WithApplicationMessageInterceptor(_mqttApplicationMessageInterceptor)
.WithSubscriptionInterceptor(_mqttSubscriptionInterceptor)
.WithStorage(_mqttServerStorage);
// Configure unencrypted connections
if (_settings.TcpEndPoint.Enabled)
{
@@ -176,7 +177,7 @@ namespace MQTTnet.Server.Mqtt
{
options
.WithEncryptedEndpoint()
.WithEncryptionSslProtocol(System.Security.Authentication.SslProtocols.Tls12)
.WithEncryptionSslProtocol(SslProtocols.Tls12)
.WithEncryptionCertificate(_settings.EncryptedTcpEndPoint.ReadCertificate());
if (_settings.EncryptedTcpEndPoint.TryReadIPv4(out var address4))
@@ -204,6 +205,11 @@ namespace MQTTnet.Server.Mqtt
options.WithConnectionBacklog(_settings.ConnectionBacklog);
}
if (_settings.EnablePersistentSessions)
{
options.WithPersistentSessions();
}
return options.Build();
}
}
+7 -7
View File
@@ -93,32 +93,32 @@ namespace MQTTnet.Server
MqttServerService mqttServerService,
SettingsModel settings)
{
if (settings?.WebSocketEndpoint?.Enabled != true)
if (settings?.WebSocketEndPoint?.Enabled != true)
{
return;
}
if (string.IsNullOrEmpty(settings.WebSocketEndpoint.Path))
if (string.IsNullOrEmpty(settings.WebSocketEndPoint.Path))
{
return;
}
var webSocketOptions = new WebSocketOptions
{
KeepAliveInterval = TimeSpan.FromSeconds(settings.WebSocketEndpoint.KeepAliveInterval),
ReceiveBufferSize = settings.WebSocketEndpoint.ReceiveBufferSize
KeepAliveInterval = TimeSpan.FromSeconds(settings.WebSocketEndPoint.KeepAliveInterval),
ReceiveBufferSize = settings.WebSocketEndPoint.ReceiveBufferSize
};
if (settings.WebSocketEndpoint.AllowedOrigins?.Any() == true)
if (settings.WebSocketEndPoint.AllowedOrigins?.Any() == true)
{
webSocketOptions.AllowedOrigins.AddRange(settings.WebSocketEndpoint.AllowedOrigins);
webSocketOptions.AllowedOrigins.AddRange(settings.WebSocketEndPoint.AllowedOrigins);
}
application.UseWebSockets(webSocketOptions);
application.Use(async (context, next) =>
{
if (context.Request.Path == settings.WebSocketEndpoint.Path)
if (context.Request.Path == settings.WebSocketEndPoint.Path)
{
if (context.WebSockets.IsWebSocketRequest)
{
+1 -1
View File
@@ -29,7 +29,7 @@
"Port": 8883,
"CertificatePath": "/absolute/path/to/pfx"
},
"WebSocketEndpoint": {
"WebSocketEndPoint": {
"Enabled": true,
"Path": "/mqtt",
"KeepAliveInterval": 120, // In seconds.