From fc4170d9dc57786897ee5ef08758251a72d5d066 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 #2520 (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 eaa5cf968..46fe945a5 100644 --- a/src/NzbDrone.Core/Notifications/Plex/Server/PlexServerProxy.cs +++ b/src/NzbDrone.Core/Notifications/Plex/Server/PlexServerProxy.cs @@ -195,7 +195,12 @@ namespace NzbDrone.Core.Notifications.Plex.Server } 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 0a530d15f..989c60e9b 100644 --- a/src/NzbDrone.Core/Notifications/Plex/Server/PlexServerService.cs +++ b/src/NzbDrone.Core/Notifications/Plex/Server/PlexServerService.cs @@ -8,6 +8,7 @@ using NLog; using NzbDrone.Common.Cache; using NzbDrone.Common.Extensions; using NzbDrone.Core.Music; +using NzbDrone.Core.Validation; namespace NzbDrone.Core.Notifications.Plex.Server { @@ -192,13 +193,21 @@ namespace NzbDrone.Core.Notifications.Plex.Server } 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;