diff --git a/PlexRequests.Api/ApiRequest.cs b/PlexRequests.Api/ApiRequest.cs index f1a2c11d0..f79c2e3dc 100644 --- a/PlexRequests.Api/ApiRequest.cs +++ b/PlexRequests.Api/ApiRequest.cs @@ -26,6 +26,7 @@ #endregion using System; using System.IO; +using System.Net; using System.Text; using System.Xml; using System.Xml.Serialization; diff --git a/PlexRequests.Core/SettingModels/PlexSettings.cs b/PlexRequests.Core/SettingModels/PlexSettings.cs index 166dd581b..89bc01931 100644 --- a/PlexRequests.Core/SettingModels/PlexSettings.cs +++ b/PlexRequests.Core/SettingModels/PlexSettings.cs @@ -35,13 +35,14 @@ namespace PlexRequests.Core.SettingModels { public string Ip { get; set; } public int Port { get; set; } + public bool Ssl { get; set; } [JsonIgnore] public Uri FullUri { get { - var formatted = Ip.ReturnUri(Port); + var formatted = Ip.ReturnUri(Port, Ssl); return formatted; } } diff --git a/PlexRequests.Helpers.Tests/UriHelperTests.cs b/PlexRequests.Helpers.Tests/UriHelperTests.cs index 1442f964f..7c767dfd0 100644 --- a/PlexRequests.Helpers.Tests/UriHelperTests.cs +++ b/PlexRequests.Helpers.Tests/UriHelperTests.cs @@ -34,15 +34,24 @@ namespace PlexRequests.Helpers.Tests public class UriHelperTests { [TestCaseSource(nameof(UriData))] - public void CreateUri(string uri, Uri expected) + public void CreateUri1(string uri, Uri expected) { var result = uri.ReturnUri(); Assert.That(result, Is.EqualTo(expected)); } + [Test] + public void CreateUriWithSsl() + { + var uri = "192.168.1.69"; + var result = uri.ReturnUri(8080, true); + + Assert.That(result, Is.EqualTo(new Uri("https://192.168.1.69:8080"))); + } + [TestCaseSource(nameof(UriDataWithPort))] - public void CreateUri(string uri, int port, Uri expected) + public void CreateUri2(string uri, int port, Uri expected) { var result = uri.ReturnUri(port); diff --git a/PlexRequests.Helpers/UriHelper.cs b/PlexRequests.Helpers/UriHelper.cs index 61b93d9c8..c33d5ddf4 100644 --- a/PlexRequests.Helpers/UriHelper.cs +++ b/PlexRequests.Helpers/UriHelper.cs @@ -48,8 +48,6 @@ namespace PlexRequests.Helpers } } - - /// /// Returns the URI. /// @@ -57,7 +55,7 @@ namespace PlexRequests.Helpers /// The port. /// /// - public static Uri ReturnUri(this string val, int port) + public static Uri ReturnUri(this string val, int port, bool ssl = default(bool)) { if (val == null) { @@ -75,7 +73,13 @@ namespace PlexRequests.Helpers else if (val.StartsWith("https://", StringComparison.Ordinal)) { var split = val.Split('/'); - uri = split.Length >= 4 ? new UriBuilder(Uri.UriSchemeHttps, split[2], port, "/" + split[3]) : new UriBuilder(Uri.UriSchemeHttps, split[2], port); + uri = split.Length >= 4 + ? new UriBuilder(Uri.UriSchemeHttps, split[2], port, "/" + split[3]) + : new UriBuilder(Uri.UriSchemeHttps, split[2], port); + } + else if(ssl) + { + uri = new UriBuilder(Uri.UriSchemeHttps, val, port); } else { diff --git a/PlexRequests.UI/Bootstrapper.cs b/PlexRequests.UI/Bootstrapper.cs index f5353f4f8..2082f585d 100644 --- a/PlexRequests.UI/Bootstrapper.cs +++ b/PlexRequests.UI/Bootstrapper.cs @@ -25,6 +25,7 @@ // ************************************************************************/ #endregion +using System.Net; using FluentScheduler; using Mono.Data.Sqlite; @@ -114,6 +115,9 @@ namespace PlexRequests.UI FormsAuthentication.Enable(pipelines, formsAuthConfiguration); + ServicePointManager.ServerCertificateValidationCallback += + (sender, certificate, chain, sslPolicyErrors) => true; + } diff --git a/PlexRequests.UI/Views/Admin/Plex.cshtml b/PlexRequests.UI/Views/Admin/Plex.cshtml index 2a1d59054..fca742fdf 100644 --- a/PlexRequests.UI/Views/Admin/Plex.cshtml +++ b/PlexRequests.UI/Views/Admin/Plex.cshtml @@ -29,6 +29,20 @@ +
+
+ +
+
@@ -46,7 +60,7 @@