diff --git a/README.md b/README.md index bab20a0d9..e462b8227 100644 --- a/README.md +++ b/README.md @@ -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. diff --git a/src/Jackett.Common/Content/custom.js b/src/Jackett.Common/Content/custom.js index cfb1238ce..f3ef19e67 100644 --- a/src/Jackett.Common/Content/custom.js +++ b/src/Jackett.Common/Content/custom.js @@ -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, diff --git a/src/Jackett.Common/Content/index.html b/src/Jackett.Common/Content/index.html index 4a9c67d44..e0229f03c 100644 --- a/src/Jackett.Common/Content/index.html +++ b/src/Jackett.Common/Content/index.html @@ -191,16 +191,20 @@
Cache TTL (seconds): - +
Cache max results per indexer: - +
FlareSolverr API URL:
+
+ FlareSolverr Max Timeout (ms): + +
OMDB API key: @@ -732,6 +736,6 @@ - + diff --git a/src/Jackett.Common/Models/Config/ServerConfig.cs b/src/Jackett.Common/Models/Config/ServerConfig.cs index df137f1eb..a2b6ec591 100644 --- a/src/Jackett.Common/Models/Config/ServerConfig.cs +++ b/src/Jackett.Common/Models/Config/ServerConfig.cs @@ -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; } diff --git a/src/Jackett.Common/Models/DTO/ServerConfig.cs b/src/Jackett.Common/Models/DTO/ServerConfig.cs index 67fc57e66..e803b831f 100644 --- a/src/Jackett.Common/Models/DTO/ServerConfig.cs +++ b/src/Jackett.Common/Models/DTO/ServerConfig.cs @@ -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; diff --git a/src/Jackett.Common/Utils/Clients/HttpWebClient.cs b/src/Jackett.Common/Utils/Clients/HttpWebClient.cs index 706bcfb5c..e86d0939d 100644 --- a/src/Jackett.Common/Utils/Clients/HttpWebClient.cs +++ b/src/Jackett.Common/Utils/Clients/HttpWebClient.cs @@ -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 { diff --git a/src/Jackett.Common/Utils/Clients/HttpWebClient2.cs b/src/Jackett.Common/Utils/Clients/HttpWebClient2.cs index 9d78edace..be58336bc 100644 --- a/src/Jackett.Common/Utils/Clients/HttpWebClient2.cs +++ b/src/Jackett.Common/Utils/Clients/HttpWebClient2.cs @@ -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 diff --git a/src/Jackett.Server/Controllers/ServerConfigurationController.cs b/src/Jackett.Server/Controllers/ServerConfigurationController.cs index f7cba06ae..5cbcd6566 100644 --- a/src/Jackett.Server/Controllers/ServerConfigurationController.cs +++ b/src/Jackett.Server/Controllers/ServerConfigurationController.cs @@ -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; }