From af0c15be2c4990cc85c41fbe69aa9ea60a1caaca Mon Sep 17 00:00:00 2001 From: "garreth.jeremiah@gmail.com" <garreth.jeremiah@gmail.com> Date: Mon, 28 Dec 2015 08:42:11 -0500 Subject: [PATCH] added notice in log when proxying is used bitsoup multi category searches look for all cats instead of making multiple queries --- src/Jackett.Console/Program.cs | 445 ++++++++++++++++---------------- src/Jackett/Indexers/BitSoup.cs | 43 +-- 2 files changed, 231 insertions(+), 257 deletions(-) diff --git a/src/Jackett.Console/Program.cs b/src/Jackett.Console/Program.cs index 64abc0a3..f5a3e8d7 100644 --- a/src/Jackett.Console/Program.cs +++ b/src/Jackett.Console/Program.cs @@ -1,225 +1,226 @@ -using CommandLine; -using CommandLine.Text; -using Jackett; -using Jackett.Console; -using Jackett.Indexers; -using Jackett.Utils; -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO; -using System.Linq; -using System.Reflection; -using System.Text; -using System.Text.RegularExpressions; -using System.Threading; -using System.Threading.Tasks; - -namespace JackettConsole -{ - public class Program - { - static void Main(string[] args) - { - try - { - var options = new ConsoleOptions(); - if (!Parser.Default.ParseArguments(args, options) || options.ShowHelp == true) - { - if (options.LastParserState != null && options.LastParserState.Errors.Count > 0) - { - var help = new HelpText(); - var errors = help.RenderParsingErrorsText(options, 2); // indent with two spaces - Console.WriteLine("Jackett v" + Engine.ConfigService.GetVersion()); - Console.WriteLine("Switch error: " + errors); - Console.WriteLine("See --help for further details on switches."); - Environment.ExitCode = 1; - return; - } - else - { - - var text = HelpText.AutoBuild(options, (HelpText current) => HelpText.DefaultParsingErrorsHandler(options, current)); - text.Copyright = " "; - text.Heading = "Jackett v" + Engine.ConfigService.GetVersion() + " options:"; - Console.WriteLine(text); - Environment.ExitCode = 1; - return; - } - } - else - { - - if (options.ListenPublic && options.ListenPrivate) - { - Console.WriteLine("You can only use listen private OR listen publicly."); - Environment.ExitCode = 1; - return; - } - /* ====== Options ===== */ - - // SSL Fix - Startup.DoSSLFix = options.SSLFix; - - // Use curl - if (options.Client != null) - Startup.ClientOverride = options.Client.ToLowerInvariant(); - - // Use Proxy +using CommandLine; +using CommandLine.Text; +using Jackett; +using Jackett.Console; +using Jackett.Indexers; +using Jackett.Utils; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading; +using System.Threading.Tasks; + +namespace JackettConsole +{ + public class Program + { + static void Main(string[] args) + { + try + { + var options = new ConsoleOptions(); + if (!Parser.Default.ParseArguments(args, options) || options.ShowHelp == true) + { + if (options.LastParserState != null && options.LastParserState.Errors.Count > 0) + { + var help = new HelpText(); + var errors = help.RenderParsingErrorsText(options, 2); // indent with two spaces + Console.WriteLine("Jackett v" + Engine.ConfigService.GetVersion()); + Console.WriteLine("Switch error: " + errors); + Console.WriteLine("See --help for further details on switches."); + Environment.ExitCode = 1; + return; + } + else + { + + var text = HelpText.AutoBuild(options, (HelpText current) => HelpText.DefaultParsingErrorsHandler(options, current)); + text.Copyright = " "; + text.Heading = "Jackett v" + Engine.ConfigService.GetVersion() + " options:"; + Console.WriteLine(text); + Environment.ExitCode = 1; + return; + } + } + else + { + + if (options.ListenPublic && options.ListenPrivate) + { + Console.WriteLine("You can only use listen private OR listen publicly."); + Environment.ExitCode = 1; + return; + } + /* ====== Options ===== */ + + // SSL Fix + Startup.DoSSLFix = options.SSLFix; + + // Use curl + if (options.Client != null) + Startup.ClientOverride = options.Client.ToLowerInvariant(); + + // Use Proxy if (options.ProxyConnection != null) { Startup.ProxyConnection = options.ProxyConnection.ToLowerInvariant(); - } - // Logging - if (options.Logging) - Startup.LogRequests = true; - - // Tracing - if (options.Tracing) - Startup.TracingEnabled = true; - - // Log after the fact as using the logger will cause the options above to be used - - if (options.Logging) - Engine.Logger.Info("Logging enabled."); - - if (options.Tracing) - Engine.Logger.Info("Tracing enabled."); - - if (options.SSLFix == true) - Engine.Logger.Info("SSL ECC workaround enabled."); - else if (options.SSLFix == false) - Engine.Logger.Info("SSL ECC workaround has been disabled."); - - // Ignore SSL errors on Curl - Startup.IgnoreSslErrors = options.IgnoreSslErrors; - if (options.IgnoreSslErrors == true) - { - Engine.Logger.Info("Curl will ignore SSL certificate errors."); - } - - /* ====== Actions ===== */ - - // Install service - if (options.Install) - { - Engine.ServiceConfig.Install(); - return; - } - - // Uninstall service - if (options.Uninstall) - { - Engine.Server.ReserveUrls(doInstall: false); - Engine.ServiceConfig.Uninstall(); - return; - } - - // Reserve urls - if (options.ReserveUrls) - { - Engine.Server.ReserveUrls(doInstall: true); - return; - } - - // Start Service - if (options.StartService) - { - if (!Engine.ServiceConfig.ServiceRunning()) - { - Engine.ServiceConfig.Start(); - } - return; - } - - // Stop Service - if (options.StopService) - { - if (Engine.ServiceConfig.ServiceRunning()) - { - Engine.ServiceConfig.Stop(); - } - return; - } - - // Migrate settings - if (options.MigrateSettings) - { - Engine.ConfigService.PerformMigration(); - return; - } - - - // Show Version - if (options.ShowVersion) - { - Console.WriteLine("Jackett v" + Engine.ConfigService.GetVersion()); - return; - } - - /* ====== Overrides ===== */ - - // Override listen public - if (options.ListenPublic || options.ListenPrivate) - { - if (Engine.Server.Config.AllowExternal != options.ListenPublic) - { - Engine.Logger.Info("Overriding external access to " + options.ListenPublic); - Engine.Server.Config.AllowExternal = options.ListenPublic; - if (System.Environment.OSVersion.Platform != PlatformID.Unix) - { - if (ServerUtil.IsUserAdministrator()) - { - Engine.Server.ReserveUrls(doInstall: true); - } - else - { - Engine.Logger.Error("Unable to switch to public listening without admin rights."); - Environment.ExitCode = 1; - return; - } - } - - Engine.Server.SaveConfig(); - } - } - - // Override port - if (options.Port != 0) - { - if (Engine.Server.Config.Port != options.Port) - { - Engine.Logger.Info("Overriding port to " + options.Port); - Engine.Server.Config.Port = options.Port; - if (System.Environment.OSVersion.Platform != PlatformID.Unix) - { - if (ServerUtil.IsUserAdministrator()) - { - Engine.Server.ReserveUrls(doInstall: true); - } - else - { - Engine.Logger.Error("Unable to switch ports when not running as administrator"); - Environment.ExitCode = 1; - return; - } - } - - Engine.Server.SaveConfig(); - } - } - } - - Engine.Server.Initalize(); - Engine.Server.Start(); - Engine.RunTime.Spin(); - Engine.Logger.Info("Server thread exit"); - } - catch (Exception e) - { - Engine.Logger.Error(e, "Top level exception"); - } - } - } -} - + Engine.Logger.Info("Proxy enabled. " + Startup.ProxyConnection); + } + // Logging + if (options.Logging) + Startup.LogRequests = true; + + // Tracing + if (options.Tracing) + Startup.TracingEnabled = true; + + // Log after the fact as using the logger will cause the options above to be used + + if (options.Logging) + Engine.Logger.Info("Logging enabled."); + + if (options.Tracing) + Engine.Logger.Info("Tracing enabled."); + + if (options.SSLFix == true) + Engine.Logger.Info("SSL ECC workaround enabled."); + else if (options.SSLFix == false) + Engine.Logger.Info("SSL ECC workaround has been disabled."); + + // Ignore SSL errors on Curl + Startup.IgnoreSslErrors = options.IgnoreSslErrors; + if (options.IgnoreSslErrors == true) + { + Engine.Logger.Info("Curl will ignore SSL certificate errors."); + } + + /* ====== Actions ===== */ + + // Install service + if (options.Install) + { + Engine.ServiceConfig.Install(); + return; + } + + // Uninstall service + if (options.Uninstall) + { + Engine.Server.ReserveUrls(doInstall: false); + Engine.ServiceConfig.Uninstall(); + return; + } + + // Reserve urls + if (options.ReserveUrls) + { + Engine.Server.ReserveUrls(doInstall: true); + return; + } + + // Start Service + if (options.StartService) + { + if (!Engine.ServiceConfig.ServiceRunning()) + { + Engine.ServiceConfig.Start(); + } + return; + } + + // Stop Service + if (options.StopService) + { + if (Engine.ServiceConfig.ServiceRunning()) + { + Engine.ServiceConfig.Stop(); + } + return; + } + + // Migrate settings + if (options.MigrateSettings) + { + Engine.ConfigService.PerformMigration(); + return; + } + + + // Show Version + if (options.ShowVersion) + { + Console.WriteLine("Jackett v" + Engine.ConfigService.GetVersion()); + return; + } + + /* ====== Overrides ===== */ + + // Override listen public + if (options.ListenPublic || options.ListenPrivate) + { + if (Engine.Server.Config.AllowExternal != options.ListenPublic) + { + Engine.Logger.Info("Overriding external access to " + options.ListenPublic); + Engine.Server.Config.AllowExternal = options.ListenPublic; + if (System.Environment.OSVersion.Platform != PlatformID.Unix) + { + if (ServerUtil.IsUserAdministrator()) + { + Engine.Server.ReserveUrls(doInstall: true); + } + else + { + Engine.Logger.Error("Unable to switch to public listening without admin rights."); + Environment.ExitCode = 1; + return; + } + } + + Engine.Server.SaveConfig(); + } + } + + // Override port + if (options.Port != 0) + { + if (Engine.Server.Config.Port != options.Port) + { + Engine.Logger.Info("Overriding port to " + options.Port); + Engine.Server.Config.Port = options.Port; + if (System.Environment.OSVersion.Platform != PlatformID.Unix) + { + if (ServerUtil.IsUserAdministrator()) + { + Engine.Server.ReserveUrls(doInstall: true); + } + else + { + Engine.Logger.Error("Unable to switch ports when not running as administrator"); + Environment.ExitCode = 1; + return; + } + } + + Engine.Server.SaveConfig(); + } + } + } + + Engine.Server.Initalize(); + Engine.Server.Start(); + Engine.RunTime.Spin(); + Engine.Logger.Info("Server thread exit"); + } + catch (Exception e) + { + Engine.Logger.Error(e, "Top level exception"); + } + } + } +} + diff --git a/src/Jackett/Indexers/BitSoup.cs b/src/Jackett/Indexers/BitSoup.cs index accc6fb2..d2a12769 100644 --- a/src/Jackett/Indexers/BitSoup.cs +++ b/src/Jackett/Indexers/BitSoup.cs @@ -22,7 +22,7 @@ namespace Jackett.Indexers { public class BitSoup : BaseIndexer, IIndexer { - private string UseLink { get { return (this.configData.AlternateLink.Value != "" ? this.configData.AlternateLink.Value : SiteLink); } } + private string UseLink { get { return (this.configData.AlternateLink.Value != null && this.configData.AlternateLink.Value != "" ? this.configData.AlternateLink.Value : SiteLink); } } private string BrowseUrl { get { return UseLink + "browse.php"; } } private string LoginUrl { get { return UseLink + "takelogin.php"; } } private string LoginReferer { get { return UseLink + "login.php"; } } @@ -187,40 +187,13 @@ namespace Jackett.Indexers var trackerCats = MapTorznabCapsToTrackers(query); var queryCollection = new NameValueCollection(); - - - if (!string.IsNullOrWhiteSpace(searchString)) - { - queryCollection.Add("search", searchString); - queryCollection.Add("incldead", "0"); - queryCollection.Add("cat", "0"); - // Tracker cannot search multi categories - // so we either search "all" - // or do multiple searches - if (trackerCats.Count == 0) - { - searchUrl += "?" + queryCollection.GetQueryString(); - await ProcessPage(releases, searchUrl); - } else - { - foreach (var cat in trackerCats) - { - queryCollection.Remove("cat"); - queryCollection.Add("cat", cat); - searchUrl += "?" + queryCollection.GetQueryString(); - await ProcessPage(releases, searchUrl); - } - } - - } - else - { - queryCollection.Add("search", ""); - queryCollection.Add("cat", "0"); - searchUrl += "?" + queryCollection.GetQueryString(); - await ProcessPage(releases, searchUrl); - } - + + queryCollection.Add("search", string.IsNullOrWhiteSpace(searchString)? "" : searchString); + queryCollection.Add("incldead", "0"); + queryCollection.Add("cat", (trackerCats.Count < 2 ? "0" : trackerCats.ElementAt(0))); + searchUrl += "?" + queryCollection.GetQueryString(); + await ProcessPage(releases, searchUrl); + return releases; } -- GitLab