mono: redirect workaround

This commit is contained in:
kaso17
2018-06-14 17:28:57 +02:00
parent 6f7ecbfb7b
commit 676d03eb88
2 changed files with 10 additions and 2 deletions

View File

@@ -13,6 +13,7 @@ using CloudFlareUtilities;
using Jackett.Common.Models.Config; using Jackett.Common.Models.Config;
using Jackett.Common.Services.Interfaces; using Jackett.Common.Services.Interfaces;
using NLog; using NLog;
using Jackett.Common.Helpers;
namespace Jackett.Common.Utils.Clients namespace Jackett.Common.Utils.Clients
{ {
@@ -257,7 +258,10 @@ namespace Jackett.Common.Utils.Clients
// See issue #1200 // See issue #1200
if (result.RedirectingTo != null && result.RedirectingTo.StartsWith("file://")) 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); logger.Debug("[MONO relative redirect bug] Rewriting relative redirect URL from " + result.RedirectingTo + " to " + newRedirectingTo);
result.RedirectingTo = newRedirectingTo; result.RedirectingTo = newRedirectingTo;
} }

View File

@@ -13,6 +13,7 @@ using CloudFlareUtilities;
using Jackett.Common.Models.Config; using Jackett.Common.Models.Config;
using Jackett.Common.Services.Interfaces; using Jackett.Common.Services.Interfaces;
using NLog; using NLog;
using Jackett.Common.Helpers;
namespace Jackett.Common.Utils.Clients namespace Jackett.Common.Utils.Clients
{ {
@@ -277,7 +278,10 @@ namespace Jackett.Common.Utils.Clients
// See issue #1200 // See issue #1200
if (result.RedirectingTo != null && result.RedirectingTo.StartsWith("file://")) 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); logger.Debug("[MONO relative redirect bug] Rewriting relative redirect URL from " + result.RedirectingTo + " to " + newRedirectingTo);
result.RedirectingTo = newRedirectingTo; result.RedirectingTo = newRedirectingTo;
} }