From c061d7cec87d3ed9b541dacc59a0de9745775ee1 Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Mon, 6 Dec 2021 20:15:35 -0800 Subject: [PATCH] Fixed: Report certificate validation failures when configuring Plex Media Server connection Closes #6797 (cherry picked from commit ec62884649f7af5f0a29346741754590e6de99ce) --- .../Notifications/Plex/Server/PlexServerProxy.cs | 7 ++++++- .../Plex/Server/PlexServerService.cs | 15 ++++++++++++--- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/NzbDrone.Core/Notifications/Plex/Server/PlexServerProxy.cs b/src/NzbDrone.Core/Notifications/Plex/Server/PlexServerProxy.cs index 117dfab71..86f4a5f4d 100644 --- a/src/NzbDrone.Core/Notifications/Plex/Server/PlexServerProxy.cs +++ b/src/NzbDrone.Core/Notifications/Plex/Server/PlexServerProxy.cs @@ -195,7 +195,12 @@ private string ProcessRequest(HttpRequestBuilder requestBuilder) } catch (WebException ex) { - throw new PlexException("Unable to connect to Plex Media Server", ex); + if (ex.Status == WebExceptionStatus.TrustFailure) + { + throw new PlexException("Unable to connect to Plex Media Server, certificate validation failed.", ex); + } + + throw new PlexException($"Unable to connect to Plex Media Server, {ex.Message}", ex); } return response.Content; diff --git a/src/NzbDrone.Core/Notifications/Plex/Server/PlexServerService.cs b/src/NzbDrone.Core/Notifications/Plex/Server/PlexServerService.cs index 0d3625a5c..3d6592a19 100644 --- a/src/NzbDrone.Core/Notifications/Plex/Server/PlexServerService.cs +++ b/src/NzbDrone.Core/Notifications/Plex/Server/PlexServerService.cs @@ -8,6 +8,7 @@ using NzbDrone.Common.Cache; using NzbDrone.Common.Extensions; using NzbDrone.Core.Movies; +using NzbDrone.Core.Validation; namespace NzbDrone.Core.Notifications.Plex.Server { @@ -192,13 +193,21 @@ public ValidationFailure Test(PlexServerSettings settings) } catch (PlexAuthenticationException ex) { - _logger.Error(ex, "Unable to connect to Plex Server"); + _logger.Error(ex, "Unable to connect to Plex Media Server"); return new ValidationFailure("AuthToken", "Invalid authentication token"); } + catch (PlexException ex) + { + return new NzbDroneValidationFailure("Host", ex.Message); + } catch (Exception ex) { - _logger.Error(ex, "Unable to connect to Plex Server"); - return new ValidationFailure("Host", "Unable to connect to Plex Server"); + _logger.Error(ex, "Unable to connect to Plex Media Server"); + + return new NzbDroneValidationFailure("Host", "Unable to connect to Plex Media Server") + { + DetailedDescription = ex.Message + }; } return null;