Skip to content

Commit

Permalink
Fixed: (FlareSolverr) Send non-auth global proxy when set
Browse files Browse the repository at this point in the history
Fixes #1142
  • Loading branch information
Qstick committed Oct 9, 2022
1 parent dd05a9d commit 4a75f92
Showing 1 changed file with 48 additions and 12 deletions.
60 changes: 48 additions & 12 deletions src/NzbDrone.Core/IndexerProxies/FlareSolverr/FlareSolverr.cs
Expand Up @@ -10,6 +10,7 @@
using NzbDrone.Common.Cloud;
using NzbDrone.Common.Extensions;
using NzbDrone.Common.Http;
using NzbDrone.Common.Http.Proxy;
using NzbDrone.Common.Serializer;
using NzbDrone.Core.Http.CloudFlare;
using NzbDrone.Core.Localization;
Expand All @@ -20,10 +21,12 @@ namespace NzbDrone.Core.IndexerProxies.FlareSolverr
public class FlareSolverr : HttpIndexerProxyBase<FlareSolverrSettings>
{
private readonly ICached<string> _cache;
private readonly IHttpProxySettingsProvider _proxySettingsProvider;

public FlareSolverr(IProwlarrCloudRequestBuilder cloudRequestBuilder, IHttpClient httpClient, Logger logger, ILocalizationService localizationService, ICacheManager cacheManager)
public FlareSolverr(IHttpProxySettingsProvider proxySettingsProvider, IProwlarrCloudRequestBuilder cloudRequestBuilder, IHttpClient httpClient, Logger logger, ILocalizationService localizationService, ICacheManager cacheManager)
: base(cloudRequestBuilder, httpClient, logger, localizationService)
{
_proxySettingsProvider = proxySettingsProvider;
_cache = cacheManager.GetCache<string>(typeof(string), "UserAgent");
}

Expand Down Expand Up @@ -100,14 +103,22 @@ private HttpRequest GenerateFlareSolverrRequest(HttpRequest request)
var userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36";
var maxTimeout = Settings.RequestTimeout * 1000;

// Use Proxy if no credentials are set (creds not supported as of FS 2.2.9)
var proxySettings = _proxySettingsProvider.GetProxySettings();
var proxyUrl = proxySettings.Username.IsNullOrWhiteSpace() && proxySettings.Password.IsNullOrWhiteSpace() ? GetProxyUri(proxySettings) : null;

if (request.Method == HttpMethod.Get)
{
req = new FlareSolverrRequestGet
{
Cmd = "request.get",
Url = url,
MaxTimeout = maxTimeout,
UserAgent = userAgent
UserAgent = userAgent,
Proxy = new FlareSolverrProxy
{
Url = proxyUrl.AbsoluteUri
}
};
}
else if (request.Method == HttpMethod.Post)
Expand All @@ -130,7 +141,11 @@ private HttpRequest GenerateFlareSolverrRequest(HttpRequest request)
ContentLength = null
},
MaxTimeout = maxTimeout,
UserAgent = userAgent
UserAgent = userAgent,
Proxy = new FlareSolverrProxy
{
Url = proxyUrl.AbsoluteUri
}
};
}
else if (contentTypeType.Contains("multipart/form-data")
Expand Down Expand Up @@ -191,38 +206,59 @@ public override ValidationResult Test()
return new ValidationResult(failures);
}

public class FlareSolverrRequest
private Uri GetProxyUri(HttpProxySettings proxySettings)
{
switch (proxySettings.Type)
{
case ProxyType.Http:
return new Uri("http://" + proxySettings.Host + ":" + proxySettings.Port);
case ProxyType.Socks4:
return new Uri("socks4://" + proxySettings.Host + ":" + proxySettings.Port);
case ProxyType.Socks5:
return new Uri("socks5://" + proxySettings.Host + ":" + proxySettings.Port);
default:
return null;
}
}

private class FlareSolverrRequest
{
public string Cmd { get; set; }
public string Url { get; set; }
public string UserAgent { get; set; }
public Cookie[] Cookies { get; set; }
public FlareSolverrProxy Proxy { get; set; }
}

public class FlareSolverrRequestGet : FlareSolverrRequest
private class FlareSolverrRequestGet : FlareSolverrRequest
{
public string Headers { get; set; }
public int MaxTimeout { get; set; }
}

public class FlareSolverrRequestPost : FlareSolverrRequest
private class FlareSolverrRequestPost : FlareSolverrRequest
{
public string PostData { get; set; }
public int MaxTimeout { get; set; }
}

public class FlareSolverrRequestPostUrlEncoded : FlareSolverrRequestPost
private class FlareSolverrRequestPostUrlEncoded : FlareSolverrRequestPost
{
public HeadersPost Headers { get; set; }
}

public class HeadersPost
private class FlareSolverrProxy
{
public string Url { get; set; }
}

private class HeadersPost
{
public string ContentType { get; set; }
public string ContentLength { get; set; }
}

public class FlareSolverrResponse
private class FlareSolverrResponse
{
public string Status { get; set; }
public string Message { get; set; }
Expand All @@ -232,7 +268,7 @@ public class FlareSolverrResponse
public Solution Solution { get; set; }
}

public class Solution
private class Solution
{
public string Url { get; set; }
public string Status { get; set; }
Expand All @@ -242,7 +278,7 @@ public class Solution
public string UserAgent { get; set; }
}

public class Cookie
private class Cookie
{
public string Name { get; set; }
public string Value { get; set; }
Expand All @@ -259,7 +295,7 @@ public class Cookie
public System.Net.Cookie ToCookieObj() => new System.Net.Cookie(Name, Value);
}

public class Headers
private class Headers
{
public string Status { get; set; }
public string Date { get; set; }
Expand Down

0 comments on commit 4a75f92

Please sign in to comment.