mirror of
https://github.com/Prowlarr/Prowlarr.git
synced 2025-09-17 17:14:18 +02:00
Fixed: Cardigann redirect handling fails for relative location headers
This commit is contained in:
@@ -62,6 +62,20 @@ namespace NzbDrone.Common.Http
|
|||||||
StatusCode == HttpStatusCode.TemporaryRedirect ||
|
StatusCode == HttpStatusCode.TemporaryRedirect ||
|
||||||
StatusCode == HttpStatusCode.Found;
|
StatusCode == HttpStatusCode.Found;
|
||||||
|
|
||||||
|
public string RedirectUrl
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
var newUrl = Headers["Location"];
|
||||||
|
if (newUrl == null || newUrl.IsNullOrWhiteSpace())
|
||||||
|
{
|
||||||
|
return string.Empty;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (Request.Url += new HttpUri(newUrl)).FullUri;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public string[] GetCookieHeaders()
|
public string[] GetCookieHeaders()
|
||||||
{
|
{
|
||||||
return Headers.GetValues("Set-Cookie") ?? Array.Empty<string>();
|
return Headers.GetValues("Set-Cookie") ?? Array.Empty<string>();
|
||||||
|
@@ -36,7 +36,7 @@ namespace NzbDrone.Core.Indexers.Cardigann
|
|||||||
if (indexerResponse.HttpResponse.StatusCode != HttpStatusCode.OK)
|
if (indexerResponse.HttpResponse.StatusCode != HttpStatusCode.OK)
|
||||||
{
|
{
|
||||||
// Remove cookie cache
|
// Remove cookie cache
|
||||||
if (indexerResponse.HttpResponse.HasHttpRedirect && indexerResponse.HttpResponse.Headers["Location"]
|
if (indexerResponse.HttpResponse.HasHttpRedirect && indexerResponse.HttpResponse.RedirectUrl
|
||||||
.ContainsIgnoreCase("login.php"))
|
.ContainsIgnoreCase("login.php"))
|
||||||
{
|
{
|
||||||
CookiesUpdater(null, null);
|
CookiesUpdater(null, null);
|
||||||
|
@@ -635,14 +635,14 @@ namespace NzbDrone.Core.Indexers.Cardigann
|
|||||||
{
|
{
|
||||||
if (requestUrl.StartsWith(SiteLink) && !redirectUrl.StartsWith(SiteLink))
|
if (requestUrl.StartsWith(SiteLink) && !redirectUrl.StartsWith(SiteLink))
|
||||||
{
|
{
|
||||||
var uri = new Uri(redirectUrl);
|
var uri = new HttpUri(redirectUrl);
|
||||||
return uri.Scheme + "://" + uri.Host + "/";
|
return uri.Scheme + "://" + uri.Host + "/";
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected string GetRedirectDomainHint(HttpResponse result) => GetRedirectDomainHint(result.Request.Url.ToString(), result.Headers.GetSingleValue("Location"));
|
protected string GetRedirectDomainHint(HttpResponse result) => GetRedirectDomainHint(result.Request.Url.ToString(), result.RedirectUrl);
|
||||||
|
|
||||||
protected async Task<HttpResponse> HandleRequest(RequestBlock request, Dictionary<string, object> variables = null, string referer = null)
|
protected async Task<HttpResponse> HandleRequest(RequestBlock request, Dictionary<string, object> variables = null, string referer = null)
|
||||||
{
|
{
|
||||||
|
@@ -29,7 +29,7 @@ namespace NzbDrone.Core.Indexers.PassThePopcorn
|
|||||||
if (indexerResponse.HttpResponse.StatusCode != HttpStatusCode.OK)
|
if (indexerResponse.HttpResponse.StatusCode != HttpStatusCode.OK)
|
||||||
{
|
{
|
||||||
// Remove cookie cache
|
// Remove cookie cache
|
||||||
if (indexerResponse.HttpResponse.HasHttpRedirect && indexerResponse.HttpResponse.Headers["Location"]
|
if (indexerResponse.HttpResponse.HasHttpRedirect && indexerResponse.HttpResponse.RedirectUrl
|
||||||
.ContainsIgnoreCase("login.php"))
|
.ContainsIgnoreCase("login.php"))
|
||||||
{
|
{
|
||||||
CookiesUpdater(null, null);
|
CookiesUpdater(null, null);
|
||||||
|
Reference in New Issue
Block a user