diff --git a/src/PepperDash.Core/Logging/DebugWebsocketSink.cs b/src/PepperDash.Core/Logging/DebugWebsocketSink.cs index cfbf5785..011abd3f 100644 --- a/src/PepperDash.Core/Logging/DebugWebsocketSink.cs +++ b/src/PepperDash.Core/Logging/DebugWebsocketSink.cs @@ -155,21 +155,39 @@ namespace PepperDash.Core certGenerator.AddExtension(X509Extensions.ExtendedKeyUsage, false, new ExtendedKeyUsage(new[] { KeyPurposeID.id_kp_serverAuth, KeyPurposeID.id_kp_clientAuth })); - // Subject Alternative Names: DNS + IP + + + + // Subject Alternative Names: DNS + IP(s), including the CS LAN IP if the processor has one + var generalNames = new System.Collections.Generic.List { new GeneralName(GeneralName.DnsName, fqdn) }; + System.Net.IPAddress parsedIp; if (System.Net.IPAddress.TryParse(ipAddress, out parsedIp)) { - certGenerator.AddExtension(X509Extensions.SubjectAlternativeName, false, - new GeneralNames(new GeneralName[] { - new GeneralName(GeneralName.DnsName, fqdn), - new GeneralName(GeneralName.IPAddress, ipAddress) - })); + generalNames.Add(new GeneralName(GeneralName.IPAddress, ipAddress)); } - else + + try { - certGenerator.AddExtension(X509Extensions.SubjectAlternativeName, false, - new GeneralNames(new GeneralName(GeneralName.DnsName, fqdn))); + var csAdapterId = CrestronEthernetHelper.GetAdapterdIdForSpecifiedAdapterType(EthernetAdapterType.EthernetCSAdapter); + if (!csAdapterId.Equals(EthernetAdapterType.EthernetUnknownAdapter)) + { + var csIpAddress = CrestronEthernetHelper.GetEthernetParameter(CrestronEthernetHelper.ETHERNET_PARAMETER_TO_GET.GET_CURRENT_IP_ADDRESS, csAdapterId); + + System.Net.IPAddress parsedCsIp; + if (csIpAddress != ipAddress && System.Net.IPAddress.TryParse(csIpAddress, out parsedCsIp)) + { + generalNames.Add(new GeneralName(GeneralName.IPAddress, csIpAddress)); + } + } } + catch (Exception ex) + { + CrestronConsole.PrintLine(string.Format("CreateCert: No CS LAN adapter available: {0}", ex.Message)); + } + + certGenerator.AddExtension(X509Extensions.SubjectAlternativeName, false, + new GeneralNames(generalNames.ToArray())); // Sign with SHA256withRSA var signatureFactory = new Asn1SignatureFactory("SHA256WITHRSA", keyPair.Private, random); diff --git a/src/PepperDash.Essentials.MobileControl/Touchpanel/MobileControlTouchpanelController.cs b/src/PepperDash.Essentials.MobileControl/Touchpanel/MobileControlTouchpanelController.cs index 262cb34e..5fe4cd45 100644 --- a/src/PepperDash.Essentials.MobileControl/Touchpanel/MobileControlTouchpanelController.cs +++ b/src/PepperDash.Essentials.MobileControl/Touchpanel/MobileControlTouchpanelController.cs @@ -498,11 +498,11 @@ namespace PepperDash.Essentials.Touchpanel { var appUrl = GetUrlWithCorrectIp(_appUrl); - this.LogInformation("Sending {appUrl} on join 1", AppUrlFeedback.StringValue); + this.LogInformation("Sending {appUrl} on join 1", appUrl); if (Panel.StringInput[1].StringValue == appUrl) { - this.LogInformation("App URL already set to {appUrl}, no update needed", AppUrlFeedback.StringValue); + this.LogInformation("App URL already set to {appUrl}, no update needed", appUrl); return; } @@ -611,7 +611,7 @@ namespace PepperDash.Essentials.Touchpanel /// public void SetAppUrl(string url) { - _appUrl = GetUrlWithCorrectIp(url); + _appUrl = url; AppUrlFeedback.FireUpdate(); }