using System.IO; using System.Net; namespace MQTTnet.Server.Configuration { /// /// Listen Entry Settings Model /// public class TcpEndPointModel { /// /// Certificate settings. /// public CertificateSettingsModel Certificate { get; set; } /// /// Enabled / Disable /// public bool Enabled { get; set; } = true; /// /// Listen Address /// public string IPv4 { get; set; } /// /// Listen Address /// public string IPv6 { get; set; } /// /// Listen Port /// public int Port { get; set; } = 1883; /// /// Read IPv4 /// /// 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}"); } /// /// Read IPv6 /// /// 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}"); } } }