From 676d03eb885fdbc8f1daa47cd960afbb7414acec Mon Sep 17 00:00:00 2001 From: kaso17 Date: Thu, 14 Jun 2018 17:28:57 +0200 Subject: [PATCH] mono: redirect workaround --- src/Jackett.Common/Utils/Clients/HttpWebClient.cs | 6 +++++- src/Jackett.Common/Utils/Clients/HttpWebClient2.cs | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/Jackett.Common/Utils/Clients/HttpWebClient.cs b/src/Jackett.Common/Utils/Clients/HttpWebClient.cs index ca878a901..c2c77dff0 100644 --- a/src/Jackett.Common/Utils/Clients/HttpWebClient.cs +++ b/src/Jackett.Common/Utils/Clients/HttpWebClient.cs @@ -13,6 +13,7 @@ using CloudFlareUtilities; using Jackett.Common.Models.Config; using Jackett.Common.Services.Interfaces; using NLog; +using Jackett.Common.Helpers; namespace Jackett.Common.Utils.Clients { @@ -257,7 +258,10 @@ namespace Jackett.Common.Utils.Clients // See issue #1200 if (result.RedirectingTo != null && result.RedirectingTo.StartsWith("file://")) { - var newRedirectingTo = result.RedirectingTo.Replace("file://", request.RequestUri.Scheme + "://" + request.RequestUri.Host); + // URL decoding apparently is needed to, without it e.g. Demonoid download is broken + // TODO: is it always needed (not just for relative redirects)? + var newRedirectingTo = WebUtilityHelpers.UrlDecode(result.RedirectingTo, webRequest.Encoding); + newRedirectingTo = newRedirectingTo.Replace("file://", request.RequestUri.Scheme + "://" + request.RequestUri.Host); logger.Debug("[MONO relative redirect bug] Rewriting relative redirect URL from " + result.RedirectingTo + " to " + newRedirectingTo); result.RedirectingTo = newRedirectingTo; } diff --git a/src/Jackett.Common/Utils/Clients/HttpWebClient2.cs b/src/Jackett.Common/Utils/Clients/HttpWebClient2.cs index b0217b179..d2dc42afd 100644 --- a/src/Jackett.Common/Utils/Clients/HttpWebClient2.cs +++ b/src/Jackett.Common/Utils/Clients/HttpWebClient2.cs @@ -13,6 +13,7 @@ using CloudFlareUtilities; using Jackett.Common.Models.Config; using Jackett.Common.Services.Interfaces; using NLog; +using Jackett.Common.Helpers; namespace Jackett.Common.Utils.Clients { @@ -277,7 +278,10 @@ namespace Jackett.Common.Utils.Clients // See issue #1200 if (result.RedirectingTo != null && result.RedirectingTo.StartsWith("file://")) { - var newRedirectingTo = result.RedirectingTo.Replace("file://", request.RequestUri.Scheme + "://" + request.RequestUri.Host); + // URL decoding apparently is needed to, without it e.g. Demonoid download is broken + // TODO: is it always needed (not just for relative redirects)? + var newRedirectingTo = WebUtilityHelpers.UrlDecode(result.RedirectingTo, webRequest.Encoding); + newRedirectingTo = newRedirectingTo.Replace("file://", request.RequestUri.Scheme + "://" + request.RequestUri.Host); logger.Debug("[MONO relative redirect bug] Rewriting relative redirect URL from " + result.RedirectingTo + " to " + newRedirectingTo); result.RedirectingTo = newRedirectingTo; }