core: make FlareSolverr Max Timeout configurable. resolves #12750 (#12795)

This commit is contained in:
Diego Heras
2022-01-09 19:38:14 +01:00
committed by GitHub
parent c6b575b79c
commit 1f0751f634
8 changed files with 24 additions and 6 deletions

View File

@@ -777,6 +777,7 @@ For these cases, [FlareSolverr](https://github.com/FlareSolverr/FlareSolverr) ha
Setting up this service is optional, most indexers don't need it.
* Install FlareSolverr service (following their instructions)
* Configure **FlareSolverr API URL** in Jackett. For example: http://172.17.0.2:8191
* It is recommended to keep the default value in **FlareSolverr Max Timeout (ms)**
## Configuring OMDb
This feature is used as a fallback (when using the aggregate Indexer) to get the movie/series title if only the IMDB ID is provided in the request.

View File

@@ -130,6 +130,7 @@ function loadJackettSettings() {
}
$("#jackett-flaresolverrurl").val(data.flaresolverrurl);
$("#jackett-flaresolverr-maxtimeout").val(data.flaresolverr_maxtimeout);
$("#jackett-omdbkey").val(data.omdbkey);
$("#jackett-omdburl").val(data.omdburl);
var password = data.password;
@@ -1500,6 +1501,7 @@ function bindUIButtons() {
var jackett_cache_ttl = $("#jackett-cache-ttl").val();
var jackett_cache_max_results_per_indexer = $("#jackett-cache-max-results-per-indexer").val();
var jackett_flaresolverr_url = $("#jackett-flaresolverrurl").val();
var jackett_flaresolverr_maxtimeout = $("#jackett-flaresolverr-maxtimeout").val();
var jackett_omdb_key = $("#jackett-omdbkey").val();
var jackett_omdb_url = $("#jackett-omdburl").val();
@@ -1522,6 +1524,7 @@ function bindUIButtons() {
cache_ttl: jackett_cache_ttl,
cache_max_results_per_indexer: jackett_cache_max_results_per_indexer,
flaresolverrurl: jackett_flaresolverr_url,
flaresolverr_maxtimeout: jackett_flaresolverr_maxtimeout,
omdbkey: jackett_omdb_key,
omdburl: jackett_omdb_url,
proxy_type: jackett_proxy_type,

View File

@@ -191,16 +191,20 @@
</div>
<div class="input-area">
<span class="input-header">Cache TTL (seconds): </span>
<input id="jackett-cache-ttl" class="form-control input-right" type="text" value="" placeholder="">
<input id="jackett-cache-ttl" class="form-control input-right" type="text" value="" placeholder="2100">
</div>
<div class="input-area">
<span class="input-header">Cache max results per indexer: </span>
<input id="jackett-cache-max-results-per-indexer" class="form-control input-right" type="text" value="" placeholder="">
<input id="jackett-cache-max-results-per-indexer" class="form-control input-right" type="text" value="" placeholder="1000">
</div>
<div class="input-area">
<span class="input-header">FlareSolverr API URL: </span>
<input id="jackett-flaresolverrurl" class="form-control input-right" type="text" value="" placeholder="Blank for default">
</div>
<div class="input-area">
<span class="input-header">FlareSolverr Max Timeout (ms): </span>
<input id="jackett-flaresolverr-maxtimeout" class="form-control input-right" type="text" value="" placeholder="55000">
</div>
<div class="input-area">
<span class="input-header">OMDB API key: </span>
<input id="jackett-omdbkey" class="form-control input-right" type="text" value="" placeholder="">
@@ -732,6 +736,6 @@
</script>
<script type="text/javascript" src="../libs/api.js?changed=2017083001"></script>
<script type="text/javascript" src="../custom.js?changed=2021103101"></script>
<script type="text/javascript" src="../custom.js?changed=2022010901"></script>
</body>
</html>

View File

@@ -20,6 +20,7 @@ namespace Jackett.Common.Models.Config
// Sonarr 15min, Radarr 60min, LazyLibrarian 20min, Readarr 15min, Lidarr = 15min
CacheTtl = 2100; // 35 minutes is a reasonable value for all of them and to avoid race conditions
CacheMaxResultsPerIndexer = 1000;
FlareSolverrMaxTimeout = 55000;
RuntimeSettings = runtimeSettings;
}
@@ -43,6 +44,7 @@ namespace Jackett.Common.Models.Config
public long CacheTtl { get; set; }
public long CacheMaxResultsPerIndexer { get; set; }
public string FlareSolverrUrl { get; set; }
public int FlareSolverrMaxTimeout { get; set; }
public string OmdbApiKey { get; set; }
public string OmdbApiUrl { get; set; }

View File

@@ -36,6 +36,8 @@ namespace Jackett.Common.Models.DTO
[DataMember]
public string flaresolverrurl { get; set; }
[DataMember]
public int flaresolverr_maxtimeout { get; set; }
[DataMember]
public string omdbkey { get; set; }
[DataMember]
public string omdburl { get; set; }
@@ -73,6 +75,7 @@ namespace Jackett.Common.Models.DTO
cache_ttl = config.CacheTtl;
cache_max_results_per_indexer = config.CacheMaxResultsPerIndexer;
flaresolverrurl = config.FlareSolverrUrl;
flaresolverr_maxtimeout = config.FlareSolverrMaxTimeout;
omdbkey = config.OmdbApiKey;
omdburl = config.OmdbApiUrl;
app_version = version;

View File

@@ -77,7 +77,7 @@ namespace Jackett.Common.Utils.Clients
using (var clearanceHandlr = new ClearanceHandler(serverConfig.FlareSolverrUrl))
{
clearanceHandlr.MaxTimeout = 55000;
clearanceHandlr.MaxTimeout = serverConfig.FlareSolverrMaxTimeout;
clearanceHandlr.ProxyUrl = serverConfig.GetProxyUrl(false);
using (var clientHandlr = new HttpClientHandler
{

View File

@@ -56,7 +56,7 @@ namespace Jackett.Common.Utils.Clients
{
clearanceHandlr = new ClearanceHandler(serverConfig.FlareSolverrUrl)
{
MaxTimeout = 55000,
MaxTimeout = serverConfig.FlareSolverrMaxTimeout,
ProxyUrl = serverConfig.GetProxyUrl(false)
};
clientHandlr = new HttpClientHandler

View File

@@ -113,7 +113,8 @@ namespace Jackett.Server.Controllers
serverConfig.RuntimeSettings.BasePath = serverService.BasePath();
configService.SaveConfig(serverConfig);
if (config.flaresolverrurl != serverConfig.FlareSolverrUrl)
if (config.flaresolverrurl != serverConfig.FlareSolverrUrl ||
config.flaresolverr_maxtimeout != serverConfig.FlareSolverrMaxTimeout)
{
if (string.IsNullOrWhiteSpace(config.flaresolverrurl))
config.flaresolverrurl = "";
@@ -121,7 +122,11 @@ namespace Jackett.Server.Controllers
|| !(uri.Scheme == Uri.UriSchemeHttp || uri.Scheme == Uri.UriSchemeHttps))
throw new Exception("FlareSolverr API URL is invalid. Example: http://127.0.0.1:8191");
if (config.flaresolverr_maxtimeout < 5000)
throw new Exception("FlareSolverr Max Timeout must be greater than 5000 ms.");
serverConfig.FlareSolverrUrl = config.flaresolverrurl;
serverConfig.FlareSolverrMaxTimeout = config.flaresolverr_maxtimeout;
configService.SaveConfig(serverConfig);
webHostRestartNeeded = true;
}