mirror of
https://github.com/dotnet/MQTTnet.git
synced 2026-10-15 00:15:15 +08:00
102 lines
2.4 KiB
C#
102 lines
2.4 KiB
C#
using System.IO;
|
|
using System.Net;
|
|
|
|
namespace MQTTnet.Server.Configuration
|
|
{
|
|
/// <summary>
|
|
/// Listen Entry Settings Model
|
|
/// </summary>
|
|
public class TcpEndPointModel
|
|
{
|
|
/// <summary>
|
|
/// Certificate settings.
|
|
/// </summary>
|
|
public CertificateSettingsModel Certificate { get; set; }
|
|
|
|
/// <summary>
|
|
/// Enabled / Disable
|
|
/// </summary>
|
|
public bool Enabled { get; set; } = true;
|
|
|
|
/// <summary>
|
|
/// Listen Address
|
|
/// </summary>
|
|
public string IPv4 { get; set; }
|
|
|
|
/// <summary>
|
|
/// Listen Address
|
|
/// </summary>
|
|
public string IPv6 { get; set; }
|
|
|
|
/// <summary>
|
|
/// Listen Port
|
|
/// </summary>
|
|
public int Port { get; set; } = 1883;
|
|
|
|
/// <summary>
|
|
/// Read IPv4
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public bool TryReadIPv4(out IPAddress address)
|
|
{
|
|
if (IPv4 == "*")
|
|
{
|
|
address = IPAddress.Any;
|
|
return true;
|
|
}
|
|
|
|
if (IPv4 == "localhost")
|
|
{
|
|
address = IPAddress.Loopback;
|
|
return true;
|
|
}
|
|
|
|
if (IPv4 == "disable")
|
|
{
|
|
address = IPAddress.None;
|
|
return true;
|
|
}
|
|
|
|
if (IPAddress.TryParse(IPv4, out var ip))
|
|
{
|
|
address = ip;
|
|
return true;
|
|
}
|
|
|
|
throw new System.Exception($"Could not parse IPv4 address: {IPv4}");
|
|
}
|
|
|
|
/// <summary>
|
|
/// Read IPv6
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public bool TryReadIPv6(out IPAddress address)
|
|
{
|
|
if (IPv6 == "*")
|
|
{
|
|
address = IPAddress.IPv6Any;
|
|
return true;
|
|
}
|
|
|
|
if (IPv6 == "localhost")
|
|
{
|
|
address = IPAddress.IPv6Loopback;
|
|
return true;
|
|
}
|
|
|
|
if (IPv6 == "disable")
|
|
{
|
|
address = IPAddress.None;
|
|
return true;
|
|
}
|
|
|
|
if (IPAddress.TryParse(IPv6, out var ip))
|
|
{
|
|
address = ip;
|
|
return true;
|
|
}
|
|
|
|
throw new System.Exception($"Could not parse IPv6 address: {IPv6}");
|
|
}
|
|
}
|
|
} |