From 4f01ff13793df2ecb1af1f8f82e996ceb43e345f Mon Sep 17 00:00:00 2001 From: Nick Genovese Date: Tue, 5 Nov 2024 13:16:46 -0500 Subject: [PATCH] fix: some fixes to file paths for the reworked websocket --- src/Pepperdash.Core/Debug.cs | 12 +++++++----- src/Pepperdash.Core/Logging/CrestronEnricher.cs | 3 +-- .../Logging/DebugNet472WebSocket.cs | 10 ++++++---- src/Pepperdash.Core/Logging/DebugWebSocket.cs | 14 ++++++++------ 4 files changed, 22 insertions(+), 17 deletions(-) diff --git a/src/Pepperdash.Core/Debug.cs b/src/Pepperdash.Core/Debug.cs index 4b506ac..aee50a3 100644 --- a/src/Pepperdash.Core/Debug.cs +++ b/src/Pepperdash.Core/Debug.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.IO; +using System.Linq; using System.Reflection; using System.Text.RegularExpressions; using Crestron.SimplSharp; @@ -103,7 +104,7 @@ namespace PepperDash.Core ); #if NET472 - var certPath = IsRunningOnAppliance ? Path.Combine("/", "user", "selfCres.pfx") : Path.Combine("/", "User", "selfCres.pfx"); + var certPath = IsRunningOnAppliance ? Path.Combine("/", "user") : Path.Combine("/", "User"); var websocket = new DebugNet472WebSocket(certPath); WebsocketUrl = websocket.Url; DefaultLoggerConfiguration.WriteTo.Sink(new DebugWebsocketSink(websocket, new JsonFormatter(renderMessage: true)), levelSwitch: WebsocketLoggingLevelSwitch); @@ -190,16 +191,17 @@ namespace PepperDash.Core return; } - const string pattern = @"^(\d+)(?:\s+--devices\s+([\w,]+))?$"; - var match = Regex.Match(levelString, pattern); + const string pattern = @"^(\d+)(?:\s+--devices\s+([\w\s,-]+))?$"; + var match = Regex.Match(levelString, pattern); if (match.Success) { var level = int.Parse(match.Groups[1].Value); var devices = match.Groups[2].Success ? match.Groups[2].Value.Split(',') + .Select(device => device.Trim()) + .ToArray() : []; - if (LogLevels.TryGetValue(level, out var logEventLevel)) { SetConsoleDebugLevel(logEventLevel, devices); @@ -211,7 +213,7 @@ namespace PepperDash.Core } else { - CrestronConsole.ConsoleCommandResponse($"Error: Unable to parse {levelString} to valid log level"); + CrestronConsole.ConsoleCommandResponse($"Error: Unable to parse {levelString} to valid log level:does not match the pattern"); } } catch diff --git a/src/Pepperdash.Core/Logging/CrestronEnricher.cs b/src/Pepperdash.Core/Logging/CrestronEnricher.cs index 61a267a..acac8e7 100644 --- a/src/Pepperdash.Core/Logging/CrestronEnricher.cs +++ b/src/Pepperdash.Core/Logging/CrestronEnricher.cs @@ -12,7 +12,7 @@ namespace PepperDash.Core.Logging { AppName = CrestronEnvironment.DevicePlatform switch { - eDevicePlatform.Appliance => $"App {InitialParametersClass.ApplicationNumber}", + eDevicePlatform.Appliance => $"APP{InitialParametersClass.ApplicationNumber.ToString().PadLeft(2, '0')}", eDevicePlatform.Server => $"{InitialParametersClass.RoomId}", _ => string.Empty }; @@ -22,7 +22,6 @@ namespace PepperDash.Core.Logging public void Enrich(LogEvent logEvent, ILogEventPropertyFactory propertyFactory) { var property = propertyFactory.CreateProperty("App", AppName); - logEvent.AddOrUpdateProperty(property); } } diff --git a/src/Pepperdash.Core/Logging/DebugNet472WebSocket.cs b/src/Pepperdash.Core/Logging/DebugNet472WebSocket.cs index 6e7ec14..05e34cc 100644 --- a/src/Pepperdash.Core/Logging/DebugNet472WebSocket.cs +++ b/src/Pepperdash.Core/Logging/DebugNet472WebSocket.cs @@ -4,6 +4,7 @@ using System.Security.Cryptography.X509Certificates; using Crestron.SimplSharp; #if NET472 +using System.IO; using WebSocketSharp.Net; using WebSocketSharp.Server; @@ -11,10 +12,10 @@ namespace PepperDash.Core.Logging { internal class DebugNet472WebSocket : DebugWebSocket { - private const string Path = "/debug/join/"; + private const string WebsocketPath = "/debug/join/"; public string Url => - $"wss://{CrestronEthernetHelper.GetEthernetParameter(CrestronEthernetHelper.ETHERNET_PARAMETER_TO_GET.GET_CURRENT_IP_ADDRESS, 0)}:{server.Port}{server.WebSocketServices[Path].Path}"; + $"wss://{CrestronEthernetHelper.GetEthernetParameter(CrestronEthernetHelper.ETHERNET_PARAMETER_TO_GET.GET_CURRENT_IP_ADDRESS, 0)}:{server.Port}{server.WebSocketServices[WebsocketPath].Path}"; private readonly WebSocketServer server; @@ -24,7 +25,8 @@ namespace PepperDash.Core.Logging if (IsSecure) { - server.SslConfiguration = new ServerSslConfiguration(new X509Certificate2(certPath, CertificatePassword)) + var filename = Path.Combine(certPath, CertificateName + ".pfx"); + server.SslConfiguration = new ServerSslConfiguration(new X509Certificate2(filename, CertificatePassword)) { ClientCertificateRequired = false, CheckCertificateRevocation = false, @@ -38,7 +40,7 @@ namespace PepperDash.Core.Logging }; } - server.AddWebSocketService(Path); + server.AddWebSocketService(WebsocketPath); server.Start(); } diff --git a/src/Pepperdash.Core/Logging/DebugWebSocket.cs b/src/Pepperdash.Core/Logging/DebugWebSocket.cs index 2dd49e4..df5fedf 100644 --- a/src/Pepperdash.Core/Logging/DebugWebSocket.cs +++ b/src/Pepperdash.Core/Logging/DebugWebSocket.cs @@ -1,10 +1,7 @@ using System; using System.IO; using Crestron.SimplSharp; - -#if NET472 using Org.BouncyCastle.Asn1.X509; -#endif namespace PepperDash.Core.Logging { @@ -22,8 +19,15 @@ namespace PepperDash.Core.Logging return; } - if (!File.Exists(certPath)) + if (certPath == null) { + return; + } + + var filePath = Path.Combine(certPath, CertificateName + ".pfx"); + if (!File.Exists(filePath)) + { + Debug.LogInformation("Creating new cert at file path:{Path}", filePath); CreateCert(certPath); } } @@ -32,7 +36,6 @@ namespace PepperDash.Core.Logging private static void CreateCert(string filePath) { -#if NET472 try { var utility = new BouncyCertificate(); @@ -48,7 +51,6 @@ namespace PepperDash.Core.Logging { Debug.LogError(ex, "WSS failed to create cert"); } -#endif } public abstract bool IsListening { get; }