From a92e84a510adf7d9e4e7e2dde1c4ac6bad1b2e68 Mon Sep 17 00:00:00 2001 From: Trevor Payne Date: Wed, 5 Jul 2023 20:37:50 -0500 Subject: [PATCH] feature: improve hostname and ip address resolution --- PanasonicCameraEpi/PanasonicCamera.cs | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/PanasonicCameraEpi/PanasonicCamera.cs b/PanasonicCameraEpi/PanasonicCamera.cs index 8f02c83..4c9746b 100644 --- a/PanasonicCameraEpi/PanasonicCamera.cs +++ b/PanasonicCameraEpi/PanasonicCamera.cs @@ -38,10 +38,6 @@ public class PanasonicCamera : ReconfigurableDevice, IBridgeAdvanced, IHasCamera public StringFeedback MakeFeedback { get; private set; } private string NetworkAddress { get; set; } - private static readonly Regex ValidIpAddressRegex = new Regex(@"^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$"); - private static readonly Regex ValidHostnameRegex = new Regex(@"^(([a-z]|[a-z][a-z0-9-]*[a-z0-9]).)*([a-z]|[a-z][a-z0-9-]*[a-z0-9])$", RegexOptions.IgnoreCase); - - public const string Make = "Panasonic"; public string Model {get; private set;} @@ -161,11 +157,19 @@ public override bool CustomActivate() private void CheckNetworkInfo() { if (DeviceInfo == null) return; - var validIpMatch = ValidIpAddressRegex.Match(NetworkAddress); - var validHostnameMatch = ValidHostnameRegex.Match(NetworkAddress); - DeviceInfo.IpAddress = validIpMatch == null ? "" : NetworkAddress; - DeviceInfo.HostName = validHostnameMatch == null ? "" : NetworkAddress; - OnDeviceInfoChanged(); + try + { + var hostEntry = Dns.GetHostEntry(NetworkAddress); + if (hostEntry == null) return; + DeviceInfo.IpAddress = hostEntry.AddressList.First().ToString(); + DeviceInfo.HostName = hostEntry.HostName; + OnDeviceInfoChanged(); + } + catch (Exception ex) + { + Debug.Console(0, "Exception Resololving Host Data : {0}", ex.Message); + + } } private void HandleMonitorStatusChange(object sender, MonitorStatusChangeEventArgs e)