diff --git a/src/Jackett/Content/custom.css b/src/Jackett/Content/custom.css
index 56b458fde..32415c386 100644
--- a/src/Jackett/Content/custom.css
+++ b/src/Jackett/Content/custom.css
@@ -114,6 +114,10 @@
height: 20px;
}
+[data-type=hiddendata]{
+ display: none;
+}
+
.spinner {
-webkit-animation: spin 2s infinite linear;
-moz-animation: spin 2s infinite linear;
diff --git a/src/Jackett/Content/custom.js b/src/Jackett/Content/custom.js
index 3ffc91b93..ad73e89be 100644
--- a/src/Jackett/Content/custom.js
+++ b/src/Jackett/Content/custom.js
@@ -251,6 +251,9 @@ function getConfigModalJson(configForm) {
var type = $el.data("type");
var id = $el.data("id");
switch (type) {
+ case "hiddendata":
+ configJson[id] = $el.find(".setup-item-hiddendata input").val();
+ break;
case "inputstring":
configJson[id] = $el.find(".setup-item-inputstring input").val();
break;
diff --git a/src/Jackett/Content/index.html b/src/Jackett/Content/index.html
index 3ae4f9727..e7f9e1507 100644
--- a/src/Jackett/Content/index.html
+++ b/src/Jackett/Content/index.html
@@ -236,7 +236,6 @@
{{else}}
{{/if}}
-
@@ -248,6 +247,9 @@
{{{value}}}
+
+
+
diff --git a/src/Jackett/Indexers/AlphaRatio.cs b/src/Jackett/Indexers/AlphaRatio.cs
index f2a573478..dd4e7f16a 100644
--- a/src/Jackett/Indexers/AlphaRatio.cs
+++ b/src/Jackett/Indexers/AlphaRatio.cs
@@ -54,7 +54,7 @@ namespace Jackett.Indexers
// Do the login
var response = await RequestLoginAndFollowRedirect(LoginUrl, pairs, string.Empty, true, SiteLink);
- ConfigureIfOK(response.Cookies, response.Content!=null && response.Content.Contains("logout.php?"), () =>
+ await ConfigureIfOK(response.Cookies, response.Content!=null && response.Content.Contains("logout.php?"), () =>
{
CQ dom = response.Content;
dom["#loginform > table"].Remove();
diff --git a/src/Jackett/Indexers/BB.cs b/src/Jackett/Indexers/BB.cs
index ad441aa59..f24d498f3 100644
--- a/src/Jackett/Indexers/BB.cs
+++ b/src/Jackett/Indexers/BB.cs
@@ -52,7 +52,7 @@ namespace Jackett.Indexers
};
var response = await RequestLoginAndFollowRedirect(LoginUrl, pairs, null, true, null, SiteLink);
- ConfigureIfOK(response.Cookies, response.Content != null && response.Content.Contains("logout.php"), () =>
+ await ConfigureIfOK(response.Cookies, response.Content != null && response.Content.Contains("logout.php"), () =>
{
CQ dom = response.Content;
var messageEl = dom["#loginform"];
diff --git a/src/Jackett/Indexers/BakaBT.cs b/src/Jackett/Indexers/BakaBT.cs
index ffea36e56..7575501a3 100644
--- a/src/Jackett/Indexers/BakaBT.cs
+++ b/src/Jackett/Indexers/BakaBT.cs
@@ -56,7 +56,7 @@ namespace Jackett.Indexers
var response = await RequestLoginAndFollowRedirect(LoginUrl, pairs, loginForm.Cookies, true, null, SiteLink);
var responseContent = response.Content;
- ConfigureIfOK(response.Cookies, responseContent.Contains("Logout"), () =>
+ await ConfigureIfOK(response.Cookies, responseContent.Contains("Logout"), () =>
{
CQ dom = responseContent;
var messageEl = dom[".error"].First();
diff --git a/src/Jackett/Indexers/BaseIndexer.cs b/src/Jackett/Indexers/BaseIndexer.cs
index a9bf992d8..273e7eb9f 100644
--- a/src/Jackett/Indexers/BaseIndexer.cs
+++ b/src/Jackett/Indexers/BaseIndexer.cs
@@ -312,18 +312,6 @@ namespace Jackett.Indexers
return response;
}
- protected void ConfigureIfOK(string cookies, bool isLoggedin, Action onError)
- {
- if (isLoggedin)
- {
- cookieHeader = cookies;
- SaveCookieHeaderAndConfigure();
- } else
- {
- onError();
- }
- }
-
protected async Task ConfigureIfOK(string cookies, bool isLoggedin, Func onError)
{
if (isLoggedin)
diff --git a/src/Jackett/Indexers/BeyondHD.cs b/src/Jackett/Indexers/BeyondHD.cs
index 230321618..cab8600b9 100644
--- a/src/Jackett/Indexers/BeyondHD.cs
+++ b/src/Jackett/Indexers/BeyondHD.cs
@@ -49,7 +49,7 @@ namespace Jackett.Indexers
Cookies = cookieHeader
});
- ConfigureIfOK(cookieHeader, response.Content.Contains("logout.php"), () =>
+ await ConfigureIfOK(cookieHeader, response.Content.Contains("logout.php"), () =>
{
CQ dom = response.Content;
throw new ExceptionWithConfigData("Invalid cookie header", (ConfigurationData)config);
diff --git a/src/Jackett/Indexers/BitHdtv.cs b/src/Jackett/Indexers/BitHdtv.cs
index 83b51790b..1dd1e165f 100644
--- a/src/Jackett/Indexers/BitHdtv.cs
+++ b/src/Jackett/Indexers/BitHdtv.cs
@@ -50,7 +50,7 @@ namespace Jackett.Indexers
};
var response = await RequestLoginAndFollowRedirect(LoginUrl, pairs, null, true, null, SiteLink);
- ConfigureIfOK(response.Cookies, response.Content != null && response.Content.Contains("logout.php"), () =>
+ await ConfigureIfOK(response.Cookies, response.Content != null && response.Content.Contains("logout.php"), () =>
{
CQ dom = response.Content;
var messageEl = dom["table.detail td.text"].Last();
diff --git a/src/Jackett/Indexers/BitMeTV.cs b/src/Jackett/Indexers/BitMeTV.cs
index befc3f953..e8b7cc123 100644
--- a/src/Jackett/Indexers/BitMeTV.cs
+++ b/src/Jackett/Indexers/BitMeTV.cs
@@ -47,6 +47,7 @@ namespace Jackett.Indexers
var captchaImage = await RequestBytesWithCookies(CaptchaUrl);
var config = new BmtvConfig();
config.CaptchaImage.Value = captchaImage.Content;
+ config.CaptchaCookie.Value = captchaImage.Cookies;
return (ConfigurationData)config;
}
@@ -61,8 +62,8 @@ namespace Jackett.Indexers
{ "secimage", config.CaptchaText.Value }
};
- var response = await RequestLoginAndFollowRedirect(LoginPost, pairs, cookieHeader, true);
- await ConfigureIfOK(cookieHeader, response.Content.Contains("/logout.php"), async () =>
+ var response = await RequestLoginAndFollowRedirect(LoginPost, pairs, config.CaptchaCookie.Value, true);
+ await ConfigureIfOK(response.Cookies, response.Content.Contains("/logout.php"), async () =>
{
CQ dom = response.Content;
var messageEl = dom["table tr > td.embedded > h2"].Last();
@@ -70,6 +71,7 @@ namespace Jackett.Indexers
var captchaImage = await RequestBytesWithCookies(CaptchaUrl);
config.CaptchaImage.Value = captchaImage.Content;
config.CaptchaText.Value = "";
+ config.CaptchaCookie.Value = captchaImage.Cookies;
throw new ExceptionWithConfigData(errorMessage, (ConfigurationData)config);
});
}
diff --git a/src/Jackett/Indexers/FrenchTorrentDb.cs b/src/Jackett/Indexers/FrenchTorrentDb.cs
index 4de553fdd..bfd7854d2 100644
--- a/src/Jackett/Indexers/FrenchTorrentDb.cs
+++ b/src/Jackett/Indexers/FrenchTorrentDb.cs
@@ -49,7 +49,7 @@ namespace Jackett.Indexers
Cookies = cookies
});
- ConfigureIfOK(cookies, response.Content.Contains("/?section=LOGOUT"), () =>
+ await ConfigureIfOK(cookies, response.Content.Contains("/?section=LOGOUT"), () =>
{
throw new ExceptionWithConfigData("Failed to login", (ConfigurationData)config);
});
diff --git a/src/Jackett/Indexers/Freshon.cs b/src/Jackett/Indexers/Freshon.cs
index e2af7ce70..687025ddd 100644
--- a/src/Jackett/Indexers/Freshon.cs
+++ b/src/Jackett/Indexers/Freshon.cs
@@ -56,7 +56,7 @@ namespace Jackett.Indexers
var loginPage = await RequestStringWithCookies(LoginUrl, string.Empty);
var response = await RequestLoginAndFollowRedirect(LoginUrl, pairs, loginPage.Cookies, true, null, LoginUrl);
- ConfigureIfOK(response.Cookies, response.Content != null && response.Content.Contains("/logout.php"), () =>
+ await ConfigureIfOK(response.Cookies, response.Content != null && response.Content.Contains("/logout.php"), () =>
{
CQ dom = response.Content;
var messageEl = dom[".error_text"];
diff --git a/src/Jackett/Indexers/HDSpace.cs b/src/Jackett/Indexers/HDSpace.cs
index f252e4db1..d266a079b 100644
--- a/src/Jackett/Indexers/HDSpace.cs
+++ b/src/Jackett/Indexers/HDSpace.cs
@@ -52,7 +52,7 @@ namespace Jackett.Indexers
// Send Post
var response = await RequestLoginAndFollowRedirect(LoginUrl, pairs, loginPage.Cookies, true, null, LoginUrl);
- ConfigureIfOK(response.Cookies, response.Content != null && response.Content.Contains("logout.php"), () =>
+ await ConfigureIfOK(response.Cookies, response.Content != null && response.Content.Contains("logout.php"), () =>
{
var errorStr = "You have {0} remaining login attempts";
var remainingAttemptSpan = new Regex(string.Format(errorStr, "(.*?)")).Match(loginPage.Content).Groups[1].ToString();
diff --git a/src/Jackett/Indexers/HDTorrents.cs b/src/Jackett/Indexers/HDTorrents.cs
index 5088992c5..d8e3d5158 100644
--- a/src/Jackett/Indexers/HDTorrents.cs
+++ b/src/Jackett/Indexers/HDTorrents.cs
@@ -52,7 +52,7 @@ namespace Jackett.Indexers
var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, loginPage.Cookies, true, null, LoginUrl);
- ConfigureIfOK(result.Cookies, result.Content != null && result.Content.Contains("If your browser doesn't have javascript enabled"), () =>
+ await ConfigureIfOK(result.Cookies, result.Content != null && result.Content.Contains("If your browser doesn't have javascript enabled"), () =>
{
var errorMessage = "Couldn't login";
throw new ExceptionWithConfigData(errorMessage, (ConfigurationData)incomingConfig);
diff --git a/src/Jackett/Indexers/IPTorrents.cs b/src/Jackett/Indexers/IPTorrents.cs
index 7e405ae06..975c7a74e 100644
--- a/src/Jackett/Indexers/IPTorrents.cs
+++ b/src/Jackett/Indexers/IPTorrents.cs
@@ -99,7 +99,7 @@ namespace Jackett.Indexers
// Redirect to ? then to /t
await FollowIfRedirect(response, request.Url, null, firstCallCookies);
- ConfigureIfOK(firstCallCookies, response.Content.Contains("/my.php"), () =>
+ await ConfigureIfOK(firstCallCookies, response.Content.Contains("/my.php"), () =>
{
CQ dom = response.Content;
var messageEl = dom["body > div"].First();
diff --git a/src/Jackett/Indexers/ImmortalSeed.cs b/src/Jackett/Indexers/ImmortalSeed.cs
index 6f9858ec0..7bd11569e 100644
--- a/src/Jackett/Indexers/ImmortalSeed.cs
+++ b/src/Jackett/Indexers/ImmortalSeed.cs
@@ -84,7 +84,7 @@ namespace Jackett.Indexers
var resultPage = await RequestStringWithCookies(link.Attr("href"), response.Cookies);
CQ resultDom = resultPage.Content;
- ConfigureIfOK(response.Cookies, resultPage.Content.Contains("/logout.php"), () =>
+ await ConfigureIfOK(response.Cookies, resultPage.Content.Contains("/logout.php"), () =>
{
var tries = resultDom["#main tr:eq(1) td font"].First().Text();
var errorMessage = "Incorrect username or password! " + tries + " tries remaining.";
diff --git a/src/Jackett/Indexers/MoreThanTV.cs b/src/Jackett/Indexers/MoreThanTV.cs
index 3908ae1d2..8d4d74a8c 100644
--- a/src/Jackett/Indexers/MoreThanTV.cs
+++ b/src/Jackett/Indexers/MoreThanTV.cs
@@ -52,7 +52,7 @@ namespace Jackett.Indexers
};
var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, null, true, SearchUrl, SiteLink);
- ConfigureIfOK(result.Cookies, result.Content != null && result.Content.Contains("logout.php?"), () =>
+ await ConfigureIfOK(result.Cookies, result.Content != null && result.Content.Contains("logout.php?"), () =>
{
CQ dom = result.Content;
dom["#loginform > table"].Remove();
diff --git a/src/Jackett/Indexers/Pretome.cs b/src/Jackett/Indexers/Pretome.cs
index be189c12f..2b4575561 100644
--- a/src/Jackett/Indexers/Pretome.cs
+++ b/src/Jackett/Indexers/Pretome.cs
@@ -62,7 +62,7 @@ namespace Jackett.Indexers
// Get result from redirect
await FollowIfRedirect(result,LoginUrl,null, loginCookies);
- ConfigureIfOK(loginCookies, result.Content != null && result.Content.Contains("logout.php"), () =>
+ await ConfigureIfOK(loginCookies, result.Content != null && result.Content.Contains("logout.php"), () =>
{
cookieHeader = string.Empty;
throw new ExceptionWithConfigData("Failed", (ConfigurationData)config);
diff --git a/src/Jackett/Indexers/PrivateHD.cs b/src/Jackett/Indexers/PrivateHD.cs
index 0e1ffa566..23a79a399 100644
--- a/src/Jackett/Indexers/PrivateHD.cs
+++ b/src/Jackett/Indexers/PrivateHD.cs
@@ -47,7 +47,7 @@ namespace Jackett.Indexers
};
var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, loginPage.Cookies, true, null, LoginUrl);
- ConfigureIfOK(result.Cookies, result.Content != null && result.Content.Contains("auth/logout"), () =>
+ await ConfigureIfOK(result.Cookies, result.Content != null && result.Content.Contains("auth/logout"), () =>
{
CQ dom = result.Content;
var messageEl = dom[".form-error"];
diff --git a/src/Jackett/Indexers/SceneAccess.cs b/src/Jackett/Indexers/SceneAccess.cs
index 04decb32d..6add4bd21 100644
--- a/src/Jackett/Indexers/SceneAccess.cs
+++ b/src/Jackett/Indexers/SceneAccess.cs
@@ -50,7 +50,7 @@ namespace Jackett.Indexers
var loginPage = await RequestStringWithCookies(LoginUrl, string.Empty);
var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, loginPage.Cookies, true, SiteLink, LoginUrl);
- ConfigureIfOK(result.Cookies + " " + loginPage.Cookies, result.Content != null && result.Content.Contains("nav_profile"), () =>
+ await ConfigureIfOK(result.Cookies + " " + loginPage.Cookies, result.Content != null && result.Content.Contains("nav_profile"), () =>
{
CQ dom = result.Content;
var messageEl = dom["#login_box_desc"];
diff --git a/src/Jackett/Indexers/SceneTime.cs b/src/Jackett/Indexers/SceneTime.cs
index 3a3df8e61..0144dfc3a 100644
--- a/src/Jackett/Indexers/SceneTime.cs
+++ b/src/Jackett/Indexers/SceneTime.cs
@@ -49,7 +49,7 @@ namespace Jackett.Indexers
};
var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, null, true, null, LoginUrl);
- ConfigureIfOK(result.Cookies, result.Content != null && result.Content.Contains("logout.php"), () =>
+ await ConfigureIfOK(result.Cookies, result.Content != null && result.Content.Contains("logout.php"), () =>
{
CQ dom = result.Content;
var errorMessage = dom["td.text"].Text().Trim();
diff --git a/src/Jackett/Indexers/SpeedCD.cs b/src/Jackett/Indexers/SpeedCD.cs
index 7aae678c8..acaa991f1 100644
--- a/src/Jackett/Indexers/SpeedCD.cs
+++ b/src/Jackett/Indexers/SpeedCD.cs
@@ -52,7 +52,7 @@ namespace Jackett.Indexers
};
var result = await RequestLoginAndFollowRedirect(SiteLink, pairs, null, true, null, SiteLink);
- ConfigureIfOK(result.Cookies, result.Content != null && result.Content.Contains("logout.php"), () =>
+ await ConfigureIfOK(result.Cookies, result.Content != null && result.Content.Contains("logout.php"), () =>
{
CQ dom = result.Content;
var errorMessage = dom["h5"].First().Text().Trim();
diff --git a/src/Jackett/Indexers/TorrentBytes.cs b/src/Jackett/Indexers/TorrentBytes.cs
index 7b6bc03f9..033040127 100644
--- a/src/Jackett/Indexers/TorrentBytes.cs
+++ b/src/Jackett/Indexers/TorrentBytes.cs
@@ -81,7 +81,7 @@ namespace Jackett.Indexers
var loginPage = await RequestStringWithCookies(SiteLink, string.Empty);
var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, loginPage.Cookies, true, SiteLink, SiteLink);
- ConfigureIfOK(result.Cookies, result.Content != null && result.Content.Contains("logout.php"), () =>
+ await ConfigureIfOK(result.Cookies, result.Content != null && result.Content.Contains("logout.php"), () =>
{
CQ dom = result.Content;
var messageEl = dom["body > div"].First();
diff --git a/src/Jackett/Indexers/TorrentDay.cs b/src/Jackett/Indexers/TorrentDay.cs
index 50394dff1..cbb9daefa 100644
--- a/src/Jackett/Indexers/TorrentDay.cs
+++ b/src/Jackett/Indexers/TorrentDay.cs
@@ -53,7 +53,7 @@ namespace Jackett.Indexers
};
var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, null, true, SiteLink, LoginUrl);
- ConfigureIfOK(result.Cookies, result.Content != null && result.Content.Contains("logout.php"), () =>
+ await ConfigureIfOK(result.Cookies, result.Content != null && result.Content.Contains("logout.php"), () =>
{
CQ dom = result.Content;
var messageEl = dom["#login"];
diff --git a/src/Jackett/Indexers/TorrentLeech.cs b/src/Jackett/Indexers/TorrentLeech.cs
index f0f83fd79..306786100 100644
--- a/src/Jackett/Indexers/TorrentLeech.cs
+++ b/src/Jackett/Indexers/TorrentLeech.cs
@@ -50,7 +50,7 @@ namespace Jackett.Indexers
};
var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, null, true,null, LoginUrl);
- ConfigureIfOK(result.Cookies, result.Content != null && result.Content.Contains("/user/account/logout"), () =>
+ await ConfigureIfOK(result.Cookies, result.Content != null && result.Content.Contains("/user/account/logout"), () =>
{
CQ dom = result.Content;
var messageEl = dom[".ui-state-error"].Last();
diff --git a/src/Jackett/Indexers/TorrentShack.cs b/src/Jackett/Indexers/TorrentShack.cs
index 79e5c489f..3823ce379 100644
--- a/src/Jackett/Indexers/TorrentShack.cs
+++ b/src/Jackett/Indexers/TorrentShack.cs
@@ -51,7 +51,7 @@ namespace Jackett.Indexers
};
var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, null, true, null, LoginUrl);
- ConfigureIfOK(result.Cookies, result.Content != null && result.Content.Contains("logout.php"), () =>
+ await ConfigureIfOK(result.Cookies, result.Content != null && result.Content.Contains("logout.php"), () =>
{
CQ dom = result.Content;
var messageEl = dom["#loginform"];
diff --git a/src/Jackett/Models/ConfigurationData.cs b/src/Jackett/Models/ConfigurationData.cs
index 08ff9b105..be1841446 100644
--- a/src/Jackett/Models/ConfigurationData.cs
+++ b/src/Jackett/Models/ConfigurationData.cs
@@ -43,6 +43,9 @@ namespace Jackett.Models
case ItemType.InputBool:
((BoolItem)item).Value = (bool)dictionary[item.ID];
break;
+ case ItemType.HiddenData:
+ ((HiddenItem)item).Value = (string)dictionary[item.ID];
+ break;
}
}
}
@@ -84,6 +87,15 @@ namespace Jackett.Models
public string ID { get { return Name.Replace(" ", "").ToLower(); } }
}
+ public class HiddenItem : StringItem
+ {
+ public HiddenItem(string value)
+ {
+ Value = value;
+ ItemType = ItemType.HiddenData;
+ }
+ }
+
public class DisplayItem : StringItem
{
public DisplayItem(string value)
diff --git a/src/Jackett/Models/IndexerConfig/BmtvConfig.cs b/src/Jackett/Models/IndexerConfig/BmtvConfig.cs
index c3c431e24..c7f1af558 100644
--- a/src/Jackett/Models/IndexerConfig/BmtvConfig.cs
+++ b/src/Jackett/Models/IndexerConfig/BmtvConfig.cs
@@ -16,17 +16,20 @@ namespace Jackett.Models.IndexerConfig
public StringItem CaptchaText { get; private set; }
+ public HiddenItem CaptchaCookie { get; private set; }
+
public BmtvConfig()
{
Username = new StringItem { Name = "Username" };
Password = new StringItem { Name = "Password" };
CaptchaImage = new ImageItem { Name = "Captcha Image" };
CaptchaText = new StringItem { Name = "Captcha Text" };
+ CaptchaCookie = new HiddenItem("") { Name = "Captcha Cookie" };
}
public override Item[] GetItems()
{
- return new Item[] { Username, Password, CaptchaImage, CaptchaText };
+ return new Item[] { Username, Password, CaptchaImage, CaptchaText, CaptchaCookie };
}
}
}