Merge changes

This commit is contained in:
KZ 2015-07-20 22:09:07 +01:00
commit fad2a10bef
35 changed files with 335 additions and 194 deletions

View File

@ -43,6 +43,7 @@ Download in the [Releases page](https://github.com/zone117x/Jackett/releases)
* [BeyondHD](https://beyondhd.me/) * [BeyondHD](https://beyondhd.me/)
* [T411](http://www.t411.io/) * [T411](http://www.t411.io/)
* [FrenchTorrentDb](http://www.frenchtorrentdb.com/) * [FrenchTorrentDb](http://www.frenchtorrentdb.com/)
* [bB](http://reddit.com/r/baconbits)
### Additional Trackers ### Additional Trackers

View File

@ -13,6 +13,7 @@ using System.Web.Http;
namespace Jackett.Controllers namespace Jackett.Controllers
{ {
[AllowAnonymous]
public class DownloadController : ApiController public class DownloadController : ApiController
{ {
private Logger logger; private Logger logger;

View File

@ -18,6 +18,11 @@ namespace Jackett
static Engine() static Engine()
{ {
#if DEBUG
TracingEnabled = true;
#endif
var builder = new ContainerBuilder(); var builder = new ContainerBuilder();
builder.RegisterModule<JackettModule>(); builder.RegisterModule<JackettModule>();
container = builder.Build(); container = builder.Build();
@ -48,8 +53,10 @@ namespace Jackett
return container; return container;
} }
public static bool IsWindows { public static bool IsWindows
get { {
get
{
return Environment.OSVersion.Platform == PlatformID.Win32NT; return Environment.OSVersion.Platform == PlatformID.Win32NT;
} }
} }

View File

@ -29,11 +29,11 @@ namespace Jackett.Indexers
string cookieHeader; string cookieHeader;
public AlphaRatio(IIndexerManagerService i, Logger l): public AlphaRatio(IIndexerManagerService i, Logger l)
base(name: "AlphaRatio", : base(name: "AlphaRatio",
description: "Legendary", description: "Legendary",
link: new Uri("https://alpharatio.cc"), link: new Uri("https://alpharatio.cc"),
rageid: true, caps: TorznabCapsUtil.CreateDefaultTorznabTVCaps(),
manager: i, manager: i,
logger: l) logger: l)
{ {

View File

@ -48,15 +48,16 @@ namespace Jackett.Indexers
HttpClientHandler handler; HttpClientHandler handler;
HttpClient client; HttpClient client;
public AnimeBytes(IIndexerManagerService i, Logger l) : public AnimeBytes(IIndexerManagerService i, Logger l)
base(name: "AnimeBytes", : base(name: "AnimeBytes",
description: "The web's best Chinese cartoons", description: "The web's best Chinese cartoons",
link: new Uri("https://animebytes.tv"), link: new Uri("https://animebytes.tv"),
rageid: true, caps: TorznabCapsUtil.CreateDefaultTorznabTVCaps(),
manager: i, manager: i,
logger: l) logger: l)
{ {
TorznabCaps.Categories.Clear();
TorznabCaps.Categories.Add(new TorznabCategory { ID = "5070", Name = "TV/Anime" });
LoginUrl = SiteLink + "/user/login"; LoginUrl = SiteLink + "/user/login";
SearchUrl = SiteLink + "/torrents.php?filter_cat[1]=1"; SearchUrl = SiteLink + "/torrents.php?filter_cat[1]=1";

View File

@ -27,11 +27,11 @@ namespace Jackett.Indexers
HttpClientHandler handler; HttpClientHandler handler;
HttpClient client; HttpClient client;
public BB(IIndexerManagerService i, Logger l) : public BB(IIndexerManagerService i, Logger l)
base(name: "bB", : base(name: "bB",
description: "bB", description: "bB",
link: new Uri("http://www.reddit.com/r/baconbits"), link: new Uri("http://www.reddit.com/r/baconbits"),
rageid: true, caps: TorznabCapsUtil.CreateDefaultTorznabTVCaps(),
manager: i, manager: i,
logger: l) logger: l)
{ {
@ -68,7 +68,6 @@ namespace Jackett.Indexers
}; };
var content = new FormUrlEncodedContent(pairs); var content = new FormUrlEncodedContent(pairs);
var response = await client.PostAsync(LoginUrl, content); var response = await client.PostAsync(LoginUrl, content);
var responseContent = await response.Content.ReadAsStringAsync(); var responseContent = await response.Content.ReadAsStringAsync();
@ -87,8 +86,9 @@ namespace Jackett.Indexers
} }
else else
{ {
var configSaveData = new JObject(); var configSaveData = new JObject();
cookies.DumpToJson(SiteLink, configSaveData); cookies.DumpToJson(BaseUrl, configSaveData);
SaveConfig(configSaveData); SaveConfig(configSaveData);
IsConfigured = true; IsConfigured = true;
} }
@ -97,7 +97,7 @@ namespace Jackett.Indexers
public void LoadFromSavedConfiguration(JToken jsonConfig) public void LoadFromSavedConfiguration(JToken jsonConfig)
{ {
cookies.FillFromJson(SiteLink, jsonConfig, logger); cookies.FillFromJson(new Uri(BaseUrl), jsonConfig, logger);
IsConfigured = true; IsConfigured = true;
} }

View File

@ -16,9 +16,11 @@ namespace Jackett.Indexers
public string DisplayDescription { get; private set; } public string DisplayDescription { get; private set; }
public string DisplayName { get; private set; } public string DisplayName { get; private set; }
public string ID { get { return GetIndexerID(GetType()); } } public string ID { get { return GetIndexerID(GetType()); } }
public bool IsConfigured { get; protected set; } public bool IsConfigured { get; protected set; }
public Uri SiteLink { get; private set; } public Uri SiteLink { get; private set; }
public bool RequiresRageIDLookupDisabled { get; private set; }
public TorznabCapabilities TorznabCaps { get; private set; }
protected Logger logger; protected Logger logger;
protected IIndexerManagerService indexerService; protected IIndexerManagerService indexerService;
@ -31,14 +33,14 @@ namespace Jackett.Indexers
return StringUtil.StripNonAlphaNumeric(type.Name.ToLowerInvariant()); return StringUtil.StripNonAlphaNumeric(type.Name.ToLowerInvariant());
} }
public BaseIndexer(string name, string description, bool rageid, Uri link, IIndexerManagerService manager, Logger logger) public BaseIndexer(string name, string description, Uri link, TorznabCapabilities caps, IIndexerManagerService manager, Logger logger)
{ {
DisplayName = name; DisplayName = name;
DisplayDescription = description; DisplayDescription = description;
SiteLink = link; SiteLink = link;
TorznabCaps = caps;
this.logger = logger; this.logger = logger;
indexerService = manager; indexerService = manager;
RequiresRageIDLookupDisabled = rageid;
} }
protected void SaveConfig(JToken config) protected void SaveConfig(JToken config)

View File

@ -24,11 +24,11 @@ namespace Jackett.Indexers
HttpClientHandler handler; HttpClientHandler handler;
HttpClient client; HttpClient client;
public BeyondHD(IIndexerManagerService i, Logger l) : public BeyondHD(IIndexerManagerService i, Logger l)
base(name: "BeyondHD", : base(name: "BeyondHD",
description: "Without BeyondHD, your HDTV is just a TV", description: "Without BeyondHD, your HDTV is just a TV",
link: new Uri("https://beyondhd.me"), link: new Uri("https://beyondhd.me"),
rageid: true, caps: TorznabCapsUtil.CreateDefaultTorznabTVCaps(),
manager: i, manager: i,
logger: l) logger: l)
{ {

View File

@ -26,11 +26,11 @@ namespace Jackett.Indexers
HttpClientHandler handler; HttpClientHandler handler;
HttpClient client; HttpClient client;
public BitHdtv(IIndexerManagerService i, Logger l) : public BitHdtv(IIndexerManagerService i, Logger l)
base(name: "BIT-HDTV", : base(name: "BIT-HDTV",
description: "Home of high definition invites", description: "Home of high definition invites",
link: new Uri("https://www.bit-hdtv.com"), link: new Uri("https://www.bit-hdtv.com"),
rageid: true, caps: TorznabCapsUtil.CreateDefaultTorznabTVCaps(),
manager: i, manager: i,
logger: l) logger: l)
{ {

View File

@ -52,11 +52,11 @@ namespace Jackett.Indexers
HttpClientHandler handler; HttpClientHandler handler;
HttpClient client; HttpClient client;
public BitMeTV(IIndexerManagerService i, Logger l) : public BitMeTV(IIndexerManagerService i, Logger l)
base(name: "BitMeTV", : base(name: "BitMeTV",
description: "TV Episode specialty tracker", description: "TV Episode specialty tracker",
link: new Uri("http://www.bitmetv.org"), link: new Uri("http://www.bitmetv.org"),
rageid: true, caps: TorznabCapsUtil.CreateDefaultTorznabTVCaps(),
manager: i, manager: i,
logger: l) logger: l)
{ {

View File

@ -45,11 +45,11 @@ namespace Jackett.Indexers
HttpClientHandler handler; HttpClientHandler handler;
HttpClient client; HttpClient client;
public FrenchTorrentDb(IIndexerManagerService i, Logger l) : public FrenchTorrentDb(IIndexerManagerService i, Logger l)
base(name: "FrenchTorrentDb", : base(name: "FrenchTorrentDb",
description: "One the biggest French Torrent Tracker", description: "One the biggest French Torrent Tracker",
link: new Uri("http://www.frenchtorrentdb.com/"), link: new Uri("http://www.frenchtorrentdb.com/"),
rageid: true, caps: TorznabCapsUtil.CreateDefaultTorznabTVCaps(),
manager: i, manager: i,
logger: l) logger: l)
{ {

View File

@ -29,11 +29,11 @@ namespace Jackett.Indexers
HttpClientHandler handler; HttpClientHandler handler;
HttpClient client; HttpClient client;
public Freshon(IIndexerManagerService i, Logger l) : public Freshon(IIndexerManagerService i, Logger l)
base(name: "FreshOnTV", : base(name: "FreshOnTV",
description: "Our goal is to provide the latest stuff in the TV show domain", description: "Our goal is to provide the latest stuff in the TV show domain",
link: new Uri("https://www.bit-hdtv.com"), link: new Uri("https://www.bit-hdtv.com"),
rageid: true, caps: TorznabCapsUtil.CreateDefaultTorznabTVCaps(),
manager: i, manager: i,
logger: l) logger: l)
{ {

View File

@ -26,11 +26,11 @@ namespace Jackett.Indexers
HttpClientHandler handler; HttpClientHandler handler;
HttpClient client; HttpClient client;
public HDTorrents(IIndexerManagerService i, Logger l) : public HDTorrents(IIndexerManagerService i, Logger l)
base(name: "HD-Torrents", : base(name: "HD-Torrents",
description: "HD-Torrents is a private torrent website with HD torrents and strict rules on their content.", description: "HD-Torrents is a private torrent website with HD torrents and strict rules on their content.",
link: new Uri("http://hdts.ru"),// Of the accessible domains the .ru seems the most reliable. https://hdts.ru | https://hd-torrents.org | https://hd-torrents.net | https://hd-torrents.me link: new Uri("http://hdts.ru"),// Of the accessible domains the .ru seems the most reliable. https://hdts.ru | https://hd-torrents.org | https://hd-torrents.net | https://hd-torrents.me
rageid: true, caps: TorznabCapsUtil.CreateDefaultTorznabTVCaps(),
manager: i, manager: i,
logger: l) logger: l)
{ {

View File

@ -17,7 +17,7 @@ namespace Jackett.Indexers
Uri SiteLink { get; } Uri SiteLink { get; }
bool RequiresRageIDLookupDisabled { get; } TorznabCapabilities TorznabCaps { get; }
// Whether this indexer has been configured, verified and saved in the past and has the settings required for functioning // Whether this indexer has been configured, verified and saved in the past and has the settings required for functioning
bool IsConfigured { get; } bool IsConfigured { get; }

View File

@ -23,11 +23,11 @@ namespace Jackett.Indexers
HttpClientHandler handler; HttpClientHandler handler;
HttpClient client; HttpClient client;
public IPTorrents(IIndexerManagerService i, Logger l) : public IPTorrents(IIndexerManagerService i, Logger l)
base(name: "IPTorrents", : base(name: "IPTorrents",
description: "Always a step ahead.", description: "Always a step ahead.",
link: new Uri("https://iptorrents.com"), link: new Uri("https://iptorrents.com"),
rageid: true, caps: TorznabCapsUtil.CreateDefaultTorznabTVCaps(),
manager: i, manager: i,
logger: l) logger: l)
{ {

View File

@ -30,11 +30,11 @@ namespace Jackett.Indexers
string cookieHeader; string cookieHeader;
int retries = 3; int retries = 3;
public MoreThanTV(IIndexerManagerService i, Logger l) : public MoreThanTV(IIndexerManagerService i, Logger l)
base(name: "MoreThanTV", : base(name: "MoreThanTV",
description: "ROMANIAN Private Torrent Tracker for TV / MOVIES, and the internal tracker for the release group DRACULA.", description: "ROMANIAN Private Torrent Tracker for TV / MOVIES, and the internal tracker for the release group DRACULA.",
link: new Uri("https://www.morethan.tv"), link: new Uri("https://www.morethan.tv"),
rageid: true, caps: TorznabCapsUtil.CreateDefaultTorznabTVCaps(),
manager: i, manager: i,
logger: l) logger: l)
{ {

View File

@ -27,11 +27,11 @@ namespace Jackett.Indexers
HttpClient client; HttpClient client;
public Rarbg(IIndexerManagerService i, Logger l) : public Rarbg(IIndexerManagerService i, Logger l)
base(name: "RARBG", : base(name: "RARBG",
description: "RARBG", description: "RARBG",
link: new Uri("https://rarbg.com"), link: new Uri("https://rarbg.com"),
rageid: false, caps: TorznabCapsUtil.CreateDefaultTorznabTVCaps(),
manager: i, manager: i,
logger: l) logger: l)
{ {

View File

@ -24,11 +24,11 @@ namespace Jackett.Indexers
HttpClient client; HttpClient client;
string cookieHeader; string cookieHeader;
public SceneAccess(IIndexerManagerService i, Logger l) : public SceneAccess(IIndexerManagerService i, Logger l)
base(name: "SceneAccess", : base(name: "SceneAccess",
description: "Your gateway to the scene", description: "Your gateway to the scene",
link: new Uri("https://sceneaccess.eu"), link: new Uri("https://sceneaccess.eu"),
rageid: true, caps: TorznabCapsUtil.CreateDefaultTorznabTVCaps(),
manager: i, manager: i,
logger: l) logger: l)
{ {

View File

@ -26,11 +26,11 @@ namespace Jackett.Indexers
HttpClientHandler handler; HttpClientHandler handler;
HttpClient client; HttpClient client;
public SceneTime(IIndexerManagerService i, Logger l) : public SceneTime(IIndexerManagerService i, Logger l)
base(name: "SceneTime", : base(name: "SceneTime",
description: "Always on time", description: "Always on time",
link: new Uri("https://www.scenetime.com"), link: new Uri("https://www.scenetime.com"),
rageid: true, caps: TorznabCapsUtil.CreateDefaultTorznabTVCaps(),
manager: i, manager: i,
logger: l) logger: l)
{ {

View File

@ -25,11 +25,11 @@ namespace Jackett.Indexers
HttpClientHandler handler; HttpClientHandler handler;
HttpClient client; HttpClient client;
public ShowRSS(IIndexerManagerService i, Logger l) : public ShowRSS(IIndexerManagerService i, Logger l)
base(name: "ShowRSS", : base(name: "ShowRSS",
description: "showRSS is a service that allows you to keep track of your favorite TV shows", description: "showRSS is a service that allows you to keep track of your favorite TV shows",
link: new Uri("http://showrss.info"), link: new Uri("http://showrss.info"),
rageid: true, caps: TorznabCapsUtil.CreateDefaultTorznabTVCaps(),
manager: i, manager: i,
logger: l) logger: l)
{ {

View File

@ -29,11 +29,11 @@ namespace Jackett.Indexers
HttpClientHandler handler; HttpClientHandler handler;
HttpClient client; HttpClient client;
public SpeedCD(IIndexerManagerService i, Logger l) : public SpeedCD(IIndexerManagerService i, Logger l)
base(name: "Speed.cd", : base(name: "Speed.cd",
description: "Your home now!", description: "Your home now!",
link: new Uri("http://speed.cd"), link: new Uri("http://speed.cd"),
rageid: true, caps: TorznabCapsUtil.CreateDefaultTorznabTVCaps(),
manager: i, manager: i,
logger: l) logger: l)
{ {

View File

@ -25,11 +25,11 @@ namespace Jackett.Indexers
private HttpClientHandler handler; private HttpClientHandler handler;
private HttpClient client; private HttpClient client;
public Strike(IIndexerManagerService i, Logger l) : public Strike(IIndexerManagerService i, Logger l)
base(name: "Strike", : base(name: "Strike",
description: "Torrent search engine", description: "Torrent search engine",
link: new Uri("https://getstrike.net"), link: new Uri("https://getstrike.net"),
rageid: true, caps: TorznabCapsUtil.CreateDefaultTorznabTVCaps(),
manager: i, manager: i,
logger: l) logger: l)
{ {

View File

@ -32,11 +32,11 @@ namespace Jackett.Indexers
string token = string.Empty; string token = string.Empty;
DateTime lastTokenFetch = DateTime.MinValue; DateTime lastTokenFetch = DateTime.MinValue;
public T411(IIndexerManagerService i, Logger l) : public T411(IIndexerManagerService i, Logger l)
base(name: "T411", : base(name: "T411",
description: "French Torrent Tracker", description: "French Torrent Tracker",
link: new Uri("http://www.t411.io"), link: new Uri("http://www.t411.io"),
rageid: true, caps: TorznabCapsUtil.CreateDefaultTorznabTVCaps(),
manager: i, manager: i,
logger: l) logger: l)
{ {

View File

@ -26,11 +26,11 @@ namespace Jackett.Indexers
HttpClientHandler handler; HttpClientHandler handler;
HttpClient client; HttpClient client;
public ThePirateBay(IIndexerManagerService i, Logger l) : public ThePirateBay(IIndexerManagerService i, Logger l)
base(name: "The Pirate Bay", : base(name: "The Pirate Bay",
description: "The worlds largest bittorrent indexer", description: "The worlds largest bittorrent indexer",
link: new Uri("https://thepiratebay.mn"), link: new Uri("https://thepiratebay.mn"),
rageid: true, caps: TorznabCapsUtil.CreateDefaultTorznabTVCaps(),
manager: i, manager: i,
logger: l) logger: l)
{ {

View File

@ -26,11 +26,11 @@ namespace Jackett.Indexers
HttpClientHandler handler; HttpClientHandler handler;
HttpClient client; HttpClient client;
public TorrentDay(IIndexerManagerService i, Logger l) : public TorrentDay(IIndexerManagerService i, Logger l)
base(name: "TorrentDay", : base(name: "TorrentDay",
description: "TorrentDay", description: "TorrentDay",
link: new Uri("https://torrentday.eu"), link: new Uri("https://torrentday.eu"),
rageid: true, caps: TorznabCapsUtil.CreateDefaultTorznabTVCaps(),
manager: i, manager: i,
logger: l) logger: l)
{ {

View File

@ -25,11 +25,11 @@ namespace Jackett.Indexers
HttpClientHandler handler; HttpClientHandler handler;
HttpClient client; HttpClient client;
public TorrentLeech(IIndexerManagerService i, Logger l) : public TorrentLeech(IIndexerManagerService i, Logger l)
base(name: "TorrentLeech", : base(name: "TorrentLeech",
description: "This is what happens when you seed", description: "This is what happens when you seed",
link: new Uri("http://www.torrentleech.org"), link: new Uri("http://www.torrentleech.org"),
rageid: true, caps: TorznabCapsUtil.CreateDefaultTorznabTVCaps(),
manager: i, manager: i,
logger: l) logger: l)
{ {

View File

@ -25,11 +25,11 @@ namespace Jackett.Indexers
HttpClientHandler handler; HttpClientHandler handler;
HttpClient client; HttpClient client;
public TorrentShack(IIndexerManagerService i, Logger l) : public TorrentShack(IIndexerManagerService i, Logger l)
base(name: "TorrentShack", : base(name: "TorrentShack",
description: "TorrentShack", description: "TorrentShack",
link: new Uri("http://torrentshack.me"), link: new Uri("http://torrentshack.me"),
rageid: true, caps: TorznabCapsUtil.CreateDefaultTorznabTVCaps(),
manager: i, manager: i,
logger: l) logger: l)
{ {

View File

@ -24,11 +24,11 @@ namespace Jackett.Indexers
HttpClientHandler handler; HttpClientHandler handler;
HttpClient client; HttpClient client;
public Torrentz(IIndexerManagerService i, Logger l) : public Torrentz(IIndexerManagerService i, Logger l)
base(name: "Torrentz", : base(name: "Torrentz",
description: "Torrentz is a meta-search engine and a Multisearch. This means we just search other search engines.", description: "Torrentz is a meta-search engine and a Multisearch. This means we just search other search engines.",
link: new Uri("https://torrentz.eu"), link: new Uri("https://torrentz.eu"),
rageid: true, caps: TorznabCapsUtil.CreateDefaultTorznabTVCaps(),
manager: i, manager: i,
logger: l) logger: l)
{ {

View File

@ -156,7 +156,9 @@
<Compile Include="Indexers\BaseIndexer.cs" /> <Compile Include="Indexers\BaseIndexer.cs" />
<Compile Include="Indexers\BB.cs" /> <Compile Include="Indexers\BB.cs" />
<Compile Include="Indexers\SpeedCD.cs" /> <Compile Include="Indexers\SpeedCD.cs" />
<Compile Include="Models\TorznabCapabilities.cs" />
<Compile Include="Models\Config\ServerConfig.cs" /> <Compile Include="Models\Config\ServerConfig.cs" />
<Compile Include="Models\TorznabCategory.cs" />
<Compile Include="Services\ProcessService.cs" /> <Compile Include="Services\ProcessService.cs" />
<Compile Include="Services\SecuityService.cs" /> <Compile Include="Services\SecuityService.cs" />
<Compile Include="Services\SerializeService.cs" /> <Compile Include="Services\SerializeService.cs" />
@ -216,6 +218,7 @@
<Compile Include="CurlHelper.cs" /> <Compile Include="CurlHelper.cs" />
<Compile Include="Indexers\AlphaRatio.cs" /> <Compile Include="Indexers\AlphaRatio.cs" />
<Compile Include="Utils\StringUtil.cs" /> <Compile Include="Utils\StringUtil.cs" />
<Compile Include="Utils\TorznabCapsUtil.cs" />
<Compile Include="Utils\WebApiRootRedirectMiddleware.cs" /> <Compile Include="Utils\WebApiRootRedirectMiddleware.cs" />
<Compile Include="Utils\WebAPIRequestLogger.cs" /> <Compile Include="Utils\WebAPIRequestLogger.cs" />
<Compile Include="Utils\WebAPIToNLogTracer.cs" /> <Compile Include="Utils\WebAPIToNLogTracer.cs" />

View File

@ -19,14 +19,23 @@ namespace Jackett.Models.Config
public string APIKey { get; set; } public string APIKey { get; set; }
public string AdminPassword { get; set; } public string AdminPassword { get; set; }
public string GetListenAddress(bool? external = null) public string[] GetListenAddresses(bool? external = null)
{ {
if (external == null) if (external == null)
{ {
external = AllowExternal; external = AllowExternal;
} }
return "http://" + (external.Value ? "*" : "localhost") + ":" + Port + "/"; if (external.Value)
{
return new string[] { "http://*:" + Port + "/" };
}
else
{
return new string[] {
"http://127.0.0.1:" + Port + "/",
"http://localhost:" + Port + "/",
};
}
} }
public string GenerateApi() public string GenerateApi()

View File

@ -0,0 +1,70 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;
namespace Jackett.Models
{
public class TorznabCapabilities
{
public bool SearchAvailable { get; set; }
public bool TVSearchAvailable { get; set; }
public bool SupportsTVRageSearch { get; set; }
public List<TorznabCategory> Categories { get; private set; }
public TorznabCapabilities()
{
Categories = new List<TorznabCategory>();
}
string SupportedTVSearchParams
{
get
{
var parameters = new List<string>() { "q", "season", "ep" };
if (SupportsTVRageSearch)
parameters.Add("rid");
return string.Join(",", parameters);
}
}
public string ToXml()
{
var xdoc = new XDocument(
new XDeclaration("1.0", "UTF-8", null),
new XElement("caps",
new XElement("searching",
new XElement("search",
new XAttribute("available", SearchAvailable ? "yes" : "no"),
new XAttribute("supportedParams", "q")
),
new XElement("tv-search",
new XAttribute("available", TVSearchAvailable ? "yes" : "no"),
new XAttribute("supportedParams", SupportedTVSearchParams)
)
),
new XElement("categories",
from c in Categories
select new XElement("category",
new XAttribute("id", c.ID),
new XAttribute("name", c.Name),
from sc in c.SubCategories
select new XElement("subcat",
new XAttribute("id", sc.ID),
new XAttribute("name", sc.Name)
)
)
)
)
);
return xdoc.Declaration.ToString() + Environment.NewLine + xdoc.ToString();
}
}
}

View File

@ -0,0 +1,21 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Jackett.Models
{
public class TorznabCategory
{
public string ID { get; set; }
public string Name { get; set; }
public List<TorznabCategory> SubCategories { get; private set; }
public TorznabCategory()
{
SubCategories = new List<TorznabCategory>();
}
}
}

View File

@ -18,7 +18,6 @@ namespace Jackett.Models
public int Limit { get; private set; } public int Limit { get; private set; }
public int Offset { get; private set; } public int Offset { get; private set; }
public int RageID { get; private set; } public int RageID { get; private set; }
public bool RageIDLookupEnabled { get; private set; }
public int Season { get; private set; } public int Season { get; private set; }
public string Episode { get; private set; } public string Episode { get; private set; }
@ -73,8 +72,6 @@ namespace Jackett.Models
q.SanitizedSearchTerm = SanitizeSearchTerm(q.SearchTerm); q.SanitizedSearchTerm = SanitizeSearchTerm(q.SearchTerm);
} }
q.RageIDLookupEnabled = query["rid_enabled"] != "0";
if (query["cat"] != null) if (query["cat"] != null)
{ {
q.Categories = query["cat"].Split(','); q.Categories = query["cat"].Split(',');

View File

@ -111,20 +111,22 @@ namespace Jackett.Services
indexerService.InitIndexers(); indexerService.InitIndexers();
// Start the server // Start the server
logger.Debug("Starting web server at " + config.GetListenAddress()); logger.Debug("Starting web server at " + config.GetListenAddresses()[0]);
_server = WebApp.Start<Startup>(url: config.GetListenAddress()); var startOptions = new StartOptions();
config.GetListenAddresses().ToList().ForEach(u => startOptions.Urls.Add(u));
_server = WebApp.Start<Startup>(startOptions);
logger.Debug("Web server started"); logger.Debug("Web server started");
} }
public void ReserveUrls(bool doInstall = true) public void ReserveUrls(bool doInstall = true)
{ {
logger.Debug("Unreserving Urls"); logger.Debug("Unreserving Urls");
RunNetSh(string.Format("http delete urlacl {0}", config.GetListenAddress(false))); config.GetListenAddresses(false).ToList().ForEach(u => RunNetSh(string.Format("http delete urlacl {0}", u)));
RunNetSh(string.Format("http delete urlacl {0}", config.GetListenAddress(true))); config.GetListenAddresses(true).ToList().ForEach(u => RunNetSh(string.Format("http delete urlacl {0}", u)));
if (doInstall) if (doInstall)
{ {
logger.Debug("Reserving Urls"); logger.Debug("Reserving Urls");
RunNetSh(string.Format("http add urlacl {0} sddl=D:(A;;GX;;;S-1-1-0)", config.GetListenAddress())); config.GetListenAddresses(true).ToList().ForEach(u => RunNetSh(string.Format("http add urlacl {0} sddl=D:(A;;GX;;;S-1-1-0)", u)));
logger.Debug("Urls reserved"); logger.Debug("Urls reserved");
} }
} }

View File

@ -0,0 +1,27 @@
using Jackett.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Jackett.Utils
{
public static class TorznabCapsUtil
{
public static TorznabCapabilities CreateDefaultTorznabTVCaps()
{
var caps = new TorznabCapabilities();
caps.SearchAvailable = true;
caps.TVSearchAvailable = true;
caps.SupportsTVRageSearch = false;
caps.Categories.AddRange(new[] {
new TorznabCategory { ID = "5000", Name = "TV" },
new TorznabCategory { ID = "5030", Name = "TV/SD" },
new TorznabCategory { ID = "5040", Name = "TV/HD" }
});
return caps;
}
}
}