diff --git a/src/Jackett/BrowserUtil.cs b/src/Jackett/BrowserUtil.cs new file mode 100644 index 000000000..82154b176 --- /dev/null +++ b/src/Jackett/BrowserUtil.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Jackett +{ + public static class BrowserUtil + { + public static string ChromeUserAgent + { + get { return "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36"; } + } + } +} diff --git a/src/Jackett/ChromeUnsafePorts.cs b/src/Jackett/ChromeUnsafePorts.cs deleted file mode 100644 index c40cdb51c..000000000 --- a/src/Jackett/ChromeUnsafePorts.cs +++ /dev/null @@ -1,78 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Jackett -{ - public class ChromeUnsafePorts - { - public static int[] RestrictedPorts = new int[] { - 1, // tcpmux - 7, // echo - 9, // discard - 11, // systat - 13, // daytime - 15, // netstat - 17, // qotd - 19, // chargen - 20, // ftp data - 21, // ftp access - 22, // ssh - 23, // telnet - 25, // smtp - 37, // time - 42, // name - 43, // nicname - 53, // domain - 77, // priv-rjs - 79, // finger - 87, // ttylink - 95, // supdup - 101, // hostriame - 102, // iso-tsap - 103, // gppitnp - 104, // acr-nema - 109, // pop2 - 110, // pop3 - 111, // sunrpc - 113, // auth - 115, // sftp - 117, // uucp-path - 119, // nntp - 123, // NTP - 135, // loc-srv /epmap - 139, // netbios - 143, // imap2 - 179, // BGP - 389, // ldap - 465, // smtp+ssl - 512, // print / exec - 513, // login - 514, // shell - 515, // printer - 526, // tempo - 530, // courier - 531, // chat - 532, // netnews - 540, // uucp - 556, // remotefs - 563, // nntp+ssl - 587, // stmp? - 601, // ?? - 636, // ldap+ssl - 993, // ldap+ssl - 995, // pop3+ssl - 2049, // nfs - 3659, // apple-sasl / PasswordServer - 4045, // lockd - 6000, // X11 - 6665, // Alternate IRC [Apple addition] - 6666, // Alternate IRC [Apple addition] - 6667, // Standard IRC [Apple addition] - 6668, // Alternate IRC [Apple addition] - 6669, // Alternate IRC [Apple addition]}; - }; - } -} diff --git a/src/Jackett/HttpClientExtensions.cs b/src/Jackett/HttpClientExtensions.cs index a44f285ef..8bc7c71eb 100644 --- a/src/Jackett/HttpClientExtensions.cs +++ b/src/Jackett/HttpClientExtensions.cs @@ -24,5 +24,10 @@ namespace Jackett return await client.GetStringAsync(uri, --retries); throw exception; } + + public static string ChromeUserAgent(this HttpClient client) + { + return "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36"; + } } } diff --git a/src/Jackett/Indexers/AlphaRatio.cs b/src/Jackett/Indexers/AlphaRatio.cs index 1be0bf14d..e4c3c93ec 100644 --- a/src/Jackett/Indexers/AlphaRatio.cs +++ b/src/Jackett/Indexers/AlphaRatio.cs @@ -45,7 +45,7 @@ namespace Jackett.Indexers static string GuidUrl = BaseUrl + "/torrents.php?torrentid="; - static string chromeUserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36"; + static string chromeUserAgent = BrowserUtil.ChromeUserAgent; CookieContainer cookies; HttpClientHandler handler; diff --git a/src/Jackett/Indexers/AnimeBytes.cs b/src/Jackett/Indexers/AnimeBytes.cs index f271e28db..282d2a590 100644 --- a/src/Jackett/Indexers/AnimeBytes.cs +++ b/src/Jackett/Indexers/AnimeBytes.cs @@ -22,7 +22,7 @@ namespace Jackett.Indexers public event Action OnResultParsingError; public event Action OnSaveConfigurationRequested; - static string chromeUserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36"; + static string chromeUserAgent = BrowserUtil.ChromeUserAgent; public string DisplayName { diff --git a/src/Jackett/Indexers/Freshon.cs b/src/Jackett/Indexers/Freshon.cs index 37bbde239..29fcca3f2 100644 --- a/src/Jackett/Indexers/Freshon.cs +++ b/src/Jackett/Indexers/Freshon.cs @@ -23,7 +23,7 @@ namespace Jackett static string LoginPostUrl = BaseUrl + "/login.php?action=makelogin"; static string SearchUrl = BaseUrl + "/browse.php"; - static string chromeUserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36"; + static string chromeUserAgent = BrowserUtil.ChromeUserAgent; CookieContainer cookies; HttpClientHandler handler; diff --git a/src/Jackett/Indexers/HDTorrents.cs b/src/Jackett/Indexers/HDTorrents.cs index 1495cf197..d77dcda7a 100644 --- a/src/Jackett/Indexers/HDTorrents.cs +++ b/src/Jackett/Indexers/HDTorrents.cs @@ -19,8 +19,8 @@ namespace Jackett.Indexers public event Action OnResultParsingError; const string DefaultUrl = "https://hd-torrents.org"; - string BaseUrl; - static string ChromeUserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36"; + string BaseUrl = DefaultUrl; + static string chromeUserAgent = BrowserUtil.ChromeUserAgent; private string SearchUrl = "https://hd-torrents.org/torrents.php?search={0}&active=1&options=0&category%5B%5D=59&category%5B%5D=60&category%5B%5D=30&category%5B%5D=38&page={1}"; private static string LoginUrl = DefaultUrl + "/login.php"; private static string LoginPostUrl = DefaultUrl + "/login.php?returnto=index.php"; @@ -75,7 +75,7 @@ namespace Jackett.Indexers var message = new HttpRequestMessage(); message.Method = HttpMethod.Get; message.RequestUri = new Uri(url); - message.Headers.UserAgent.ParseAdd(ChromeUserAgent); + message.Headers.UserAgent.ParseAdd(chromeUserAgent); return message; } @@ -160,7 +160,6 @@ namespace Jackett.Indexers release = new ReleaseInfo(); long imdbid; long? size; - int seeders, peers; release.Title = qRow.Find("td.mainblockcontent b a").Text(); release.Description = release.Title; @@ -173,23 +172,21 @@ namespace Jackett.Indexers release.MagnetUri = new Uri(DefaultUrl + "/" + qRow.Find("td.mainblockcontent").Get(3).FirstChild.GetAttribute("href")); - if (int.TryParse(qRow.Find("td").Get(9).FirstChild.FirstChild.InnerText, out seeders)) - release.Seeders = seeders; - if (int.TryParse(qRow.Find("td").Get(10).FirstChild.FirstChild.InnerText, out peers)) - release.Peers = peers; + release.Seeders = ParseUtil.TryCoerceInt(qRow.Find("td").Get(9).FirstChild.FirstChild.InnerText); + release.Peers = ParseUtil.TryCoerceInt(qRow.Find("td").Get(10).FirstChild.FirstChild.InnerText); string fullSize = qRow.Find("td.mainblockcontent").Get(6).InnerText; string[] sizeSplit = fullSize.Split(' '); switch (sizeSplit[1].ToLower()) { case "kb": - size = ReleaseInfo.BytesFromKB(float.Parse(sizeSplit[0], CultureInfo.InvariantCulture)); + size = ReleaseInfo.BytesFromKB(ParseUtil.CoerceFloat(sizeSplit[0])); break; case "mb": - size = ReleaseInfo.BytesFromMB(float.Parse(sizeSplit[0], CultureInfo.InvariantCulture)); + size = ReleaseInfo.BytesFromMB(ParseUtil.CoerceFloat(sizeSplit[0])); break; case "gb": - size = ReleaseInfo.BytesFromGB(float.Parse(sizeSplit[0], CultureInfo.InvariantCulture)); + size = ReleaseInfo.BytesFromGB(ParseUtil.CoerceFloat(sizeSplit[0])); break; default: size = null; diff --git a/src/Jackett/Indexers/IPTorrents.cs b/src/Jackett/Indexers/IPTorrents.cs index a5c0de73f..bcf43b311 100644 --- a/src/Jackett/Indexers/IPTorrents.cs +++ b/src/Jackett/Indexers/IPTorrents.cs @@ -26,7 +26,7 @@ namespace Jackett.Indexers public bool IsConfigured { get; private set; } - static string chromeUserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36"; + static string chromeUserAgent = BrowserUtil.ChromeUserAgent; static string BaseUrl = "https://iptorrents.com"; diff --git a/src/Jackett/Indexers/Rarbg.cs b/src/Jackett/Indexers/Rarbg.cs index 33bf39b7f..ce40972c7 100644 --- a/src/Jackett/Indexers/Rarbg.cs +++ b/src/Jackett/Indexers/Rarbg.cs @@ -39,7 +39,7 @@ namespace Jackett.Indexers const string SearchTVRageUrl = "/pubapi.php?mode=search&search_tvrage={0}&token={1}&format=json&min_seeders=1"; const string SearchQueryUrl = "/pubapi.php?mode=search&search_string={0}&token={1}&format=json&min_seeders=1"; - static string chromeUserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36"; + static string chromeUserAgent = BrowserUtil.ChromeUserAgent; string BaseUrl; diff --git a/src/Jackett/Indexers/ShowRSS.cs b/src/Jackett/Indexers/ShowRSS.cs index 4d26bfe79..3702c4e65 100644 --- a/src/Jackett/Indexers/ShowRSS.cs +++ b/src/Jackett/Indexers/ShowRSS.cs @@ -36,7 +36,7 @@ namespace Jackett.Indexers const string DefaultUrl = "http://showrss.info"; const string searchAllUrl = DefaultUrl + "/feeds/all.rss"; string BaseUrl; - static string chromeUserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36"; + static string chromeUserAgent = BrowserUtil.ChromeUserAgent; CookieContainer cookies; HttpClientHandler handler; diff --git a/src/Jackett/Indexers/TorrentDay.cs b/src/Jackett/Indexers/TorrentDay.cs index 70c2914fc..a270bc3bc 100644 --- a/src/Jackett/Indexers/TorrentDay.cs +++ b/src/Jackett/Indexers/TorrentDay.cs @@ -40,7 +40,7 @@ namespace Jackett.Indexers const string LoginUrl = BaseUrl + "/tak3login.php"; const string SearchUrl = BaseUrl + "/browse.php?search={0}&cata=yes&c2=1&c7=1&c14=1&c24=1&c26=1&c31=1&c32=1&c33=1"; - const string chromeUserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36"; + static string chromeUserAgent = BrowserUtil.ChromeUserAgent; CookieContainer cookies; HttpClientHandler handler; diff --git a/src/Jackett/Indexers/Torrentz.cs b/src/Jackett/Indexers/Torrentz.cs index 4fcb136fa..85d019ad5 100644 --- a/src/Jackett/Indexers/Torrentz.cs +++ b/src/Jackett/Indexers/Torrentz.cs @@ -35,7 +35,7 @@ namespace Jackett.Indexers const string DefaultUrl = "https://torrentz.eu"; const string SearchUrl = DefaultUrl + "/feed_verifiedP?f={0}"; string BaseUrl; - static string chromeUserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36"; + static string chromeUserAgent = BrowserUtil.ChromeUserAgent; CookieContainer cookies; HttpClientHandler handler; diff --git a/src/Jackett/ParseUtil.cs b/src/Jackett/ParseUtil.cs index 7eb7b8fcf..d7dfcdece 100644 --- a/src/Jackett/ParseUtil.cs +++ b/src/Jackett/ParseUtil.cs @@ -24,5 +24,27 @@ namespace Jackett return long.Parse(str, NumberStyles.Any, CultureInfo.InvariantCulture); } + + public static float TryCoerceFloat(string str) + { + float val; + float.TryParse(str, NumberStyles.Any, CultureInfo.InvariantCulture, out val); + return val; + } + + public static int TryCoerceInt(string str) + { + int val; + int.TryParse(str, NumberStyles.Any, CultureInfo.InvariantCulture, out val); + return val; + } + + public static long TryCoerceLong(string str) + { + long val; + long.TryParse(str, NumberStyles.Any, CultureInfo.InvariantCulture, out val); + return val; + } + } } diff --git a/src/Jackett/Security.cs b/src/Jackett/Security.cs deleted file mode 100644 index 4317d217f..000000000 --- a/src/Jackett/Security.cs +++ /dev/null @@ -1,39 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Security.Cryptography; -using System.Text; -using System.Threading.Tasks; - -namespace Jackett -{ - public class Security - { - public static string HashMD5(string value) - { - MD5 md5 = MD5.Create(); - byte[] inputBytes = Encoding.ASCII.GetBytes(value); - byte[] hash = md5.ComputeHash(inputBytes); - - StringBuilder sb = new StringBuilder(); - for (int i = 0; i < hash.Length; i++) - { - sb.Append(hash[i].ToString("X2")); - } - return sb.ToString(); - } - - public static string Base64Encode(string plainText) - { - var plainTextBytes = Encoding.UTF8.GetBytes(plainText); - return Convert.ToBase64String(plainTextBytes); - } - - public static string Base64Decode(string base64EncodedData) - { - var base64EncodedBytes = Convert.FromBase64String(base64EncodedData); - return Encoding.UTF8.GetString(base64EncodedBytes); - } - - } -}