diff --git a/HISTORY.TXT b/HISTORY.TXT index 230cc1b..a0b4d94 100644 --- a/HISTORY.TXT +++ b/HISTORY.TXT @@ -1,3 +1,8 @@ +---=== 0.44 (04-07-2025) ===--- +- Global: The program is now open source and the source is available in https://github.com/NikolayIT/RatioMaster.NET +- Global: Program built for .NET Framework version 4.0 +- Global: Program information, links and about form updated +- RM: Added new client emulation: "uTorrent 3.6.0" ---=== 0.43 (08-01-2016) ===--- - Global: The program is now open source and the source is available in https://github.com/NikolayIT/RatioMaster.NET - Global: Program built for .NET Framework version 4.0 diff --git a/Source/RatioMaster/RM.cs b/Source/RatioMaster/RM.cs index 947d940..b218ee9 100644 --- a/Source/RatioMaster/RM.cs +++ b/Source/RatioMaster/RM.cs @@ -27,7 +27,7 @@ internal partial class RM : UserControl private int remWork = 0; internal string DefaultDirectory = ""; private const string DefaultClient = "uTorrent"; - private const string DefaultClientVersion = "3.3.2"; + private const string DefaultClientVersion = "3.6.0"; // internal delegate SocketEx createSocketCallback(); internal delegate void SetTextCallback(string logLine); @@ -410,10 +410,26 @@ internal void cmbClient_SelectedIndexChanged(object sender, EventArgs e) case "uTorrent": { + cmbVersion.Items.Add("3.6.0"); + cmbVersion.Items.Add("3.5.5"); + cmbVersion.Items.Add("3.5.3"); + cmbVersion.Items.Add("3.5.1"); + cmbVersion.Items.Add("3.5.0"); + cmbVersion.Items.Add("3.4.9"); + cmbVersion.Items.Add("3.4.2"); + cmbVersion.Items.Add("3.4.0"); cmbVersion.Items.Add("3.3.2"); cmbVersion.Items.Add("3.3.0"); cmbVersion.Items.Add("3.2.0"); + cmbVersion.Items.Add("3.1.3"); + cmbVersion.Items.Add("3.1.0"); + cmbVersion.Items.Add("3.0.0"); + cmbVersion.Items.Add("2.2.1"); + cmbVersion.Items.Add("2.2.0"); + cmbVersion.Items.Add("2.0.4"); + cmbVersion.Items.Add("2.0.2"); cmbVersion.Items.Add("2.0.1 (build 19078)"); + cmbVersion.Items.Add("2.0.0"); cmbVersion.Items.Add("1.8.5 (build 17414)"); cmbVersion.Items.Add("1.8.1-beta(11903)"); cmbVersion.Items.Add("1.8.0"); @@ -422,7 +438,7 @@ internal void cmbClient_SelectedIndexChanged(object sender, EventArgs e) cmbVersion.Items.Add("1.7.5"); cmbVersion.Items.Add("1.6.1"); cmbVersion.Items.Add("1.6"); - cmbVersion.SelectedItem = "3.3.2"; + cmbVersion.SelectedItem = "3.6.0"; if (customPeersNum.Text == "0" || customPeersNum.Text == "") customPeersNum.Text = "200"; break; } diff --git a/Source/RatioMaster/TorrentClientFactory.cs b/Source/RatioMaster/TorrentClientFactory.cs index 9c9e6bd..bee1d59 100644 --- a/Source/RatioMaster/TorrentClientFactory.cs +++ b/Source/RatioMaster/TorrentClientFactory.cs @@ -247,6 +247,150 @@ public static TorrentClient GetClient(string name) } #endregion #region uTorrent + case "uTorrent 3.6.0": + { + client.Name = "uTorrent 3.6.0"; + client.HttpProtocol = "HTTP/1.1"; + client.HashUpperCase = false; + client.Key = GenerateIdString("hex", 8, false, true); + client.Headers = "Host: {host}\r\nUser-Agent: uTorrent/3600\r\nAccept-Encoding: gzip\r\n"; + client.PeerID = "-UT3600-" + GenerateIdString("random", 12, true, false); + client.Query = "info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0&key={key}{event}&numwant={numwant}&compact=1&no_peer_id=1"; + client.DefNumWant = 200; + client.Parse = true; + client.SearchString = "&peer_id=-UT3600-"; + client.ProcessName = "uTorrent"; + client.StartOffset = 0; + client.MaxOffset = 200000000; + break; + } + + case "uTorrent 3.5.5": + { + client.Name = "uTorrent 3.5.5"; + client.HttpProtocol = "HTTP/1.1"; + client.HashUpperCase = false; + client.Key = GenerateIdString("hex", 8, false, true); + client.Headers = "Host: {host}\r\nUser-Agent: uTorrent/3550\r\nAccept-Encoding: gzip\r\n"; + client.PeerID = "-UT3550-" + GenerateIdString("random", 12, true, false); + client.Query = "info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0&key={key}{event}&numwant={numwant}&compact=1&no_peer_id=1"; + client.DefNumWant = 200; + client.Parse = true; + client.SearchString = "&peer_id=-UT3550-"; + client.ProcessName = "uTorrent"; + client.StartOffset = 0; + client.MaxOffset = 200000000; + break; + } + + case "uTorrent 3.5.3": + { + client.Name = "uTorrent 3.5.3"; + client.HttpProtocol = "HTTP/1.1"; + client.HashUpperCase = false; + client.Key = GenerateIdString("hex", 8, false, true); + client.Headers = "Host: {host}\r\nUser-Agent: uTorrent/3530\r\nAccept-Encoding: gzip\r\n"; + client.PeerID = "-UT3530-" + GenerateIdString("random", 12, true, false); + client.Query = "info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0&key={key}{event}&numwant={numwant}&compact=1&no_peer_id=1"; + client.DefNumWant = 200; + client.Parse = true; + client.SearchString = "&peer_id=-UT3530-"; + client.ProcessName = "uTorrent"; + client.StartOffset = 0; + client.MaxOffset = 200000000; + break; + } + + case "uTorrent 3.5.1": + { + client.Name = "uTorrent 3.5.1"; + client.HttpProtocol = "HTTP/1.1"; + client.HashUpperCase = false; + client.Key = GenerateIdString("hex", 8, false, true); + client.Headers = "Host: {host}\r\nUser-Agent: uTorrent/3510\r\nAccept-Encoding: gzip\r\n"; + client.PeerID = "-UT3510-" + GenerateIdString("random", 12, true, false); + client.Query = "info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0&key={key}{event}&numwant={numwant}&compact=1&no_peer_id=1"; + client.DefNumWant = 200; + client.Parse = true; + client.SearchString = "&peer_id=-UT3510-"; + client.ProcessName = "uTorrent"; + client.StartOffset = 0; + client.MaxOffset = 200000000; + break; + } + + case "uTorrent 3.5.0": + { + client.Name = "uTorrent 3.5.0"; + client.HttpProtocol = "HTTP/1.1"; + client.HashUpperCase = false; + client.Key = GenerateIdString("hex", 8, false, true); + client.Headers = "Host: {host}\r\nUser-Agent: uTorrent/3500\r\nAccept-Encoding: gzip\r\n"; + client.PeerID = "-UT3500-" + GenerateIdString("random", 12, true, false); + client.Query = "info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0&key={key}{event}&numwant={numwant}&compact=1&no_peer_id=1"; + client.DefNumWant = 200; + client.Parse = true; + client.SearchString = "&peer_id=-UT3500-"; + client.ProcessName = "uTorrent"; + client.StartOffset = 0; + client.MaxOffset = 200000000; + break; + } + + case "uTorrent 3.4.9": + { + client.Name = "uTorrent 3.4.9"; + client.HttpProtocol = "HTTP/1.1"; + client.HashUpperCase = false; + client.Key = GenerateIdString("hex", 8, false, true); + client.Headers = "Host: {host}\r\nUser-Agent: uTorrent/3490\r\nAccept-Encoding: gzip\r\n"; + client.PeerID = "-UT3490-" + GenerateIdString("random", 12, true, false); + client.Query = "info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0&key={key}{event}&numwant={numwant}&compact=1&no_peer_id=1"; + client.DefNumWant = 200; + client.Parse = true; + client.SearchString = "&peer_id=-UT3490-"; + client.ProcessName = "uTorrent"; + client.StartOffset = 0; + client.MaxOffset = 200000000; + break; + } + + case "uTorrent 3.4.2": + { + client.Name = "uTorrent 3.4.2"; + client.HttpProtocol = "HTTP/1.1"; + client.HashUpperCase = false; + client.Key = GenerateIdString("hex", 8, false, true); + client.Headers = "Host: {host}\r\nUser-Agent: uTorrent/3420\r\nAccept-Encoding: gzip\r\n"; + client.PeerID = "-UT3420-" + GenerateIdString("random", 12, true, false); + client.Query = "info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0&key={key}{event}&numwant={numwant}&compact=1&no_peer_id=1"; + client.DefNumWant = 200; + client.Parse = true; + client.SearchString = "&peer_id=-UT3420-"; + client.ProcessName = "uTorrent"; + client.StartOffset = 0; + client.MaxOffset = 200000000; + break; + } + + case "uTorrent 3.4.0": + { + client.Name = "uTorrent 3.4.0"; + client.HttpProtocol = "HTTP/1.1"; + client.HashUpperCase = false; + client.Key = GenerateIdString("hex", 8, false, true); + client.Headers = "Host: {host}\r\nUser-Agent: uTorrent/3400\r\nAccept-Encoding: gzip\r\n"; + client.PeerID = "-UT3400-" + GenerateIdString("random", 12, true, false); + client.Query = "info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0&key={key}{event}&numwant={numwant}&compact=1&no_peer_id=1"; + client.DefNumWant = 200; + client.Parse = true; + client.SearchString = "&peer_id=-UT3400-"; + client.ProcessName = "uTorrent"; + client.StartOffset = 0; + client.MaxOffset = 200000000; + break; + } + case "uTorrent 3.3.2": { client.Name = "uTorrent 3.3.2"; @@ -301,6 +445,150 @@ public static TorrentClient GetClient(string name) break; } + case "uTorrent 3.1.3": + { + client.Name = "uTorrent 3.1.3"; + client.HttpProtocol = "HTTP/1.1"; + client.HashUpperCase = false; + client.Key = GenerateIdString("hex", 8, false, true); + client.Headers = "Host: {host}\r\nUser-Agent: uTorrent/3130\r\nAccept-Encoding: gzip\r\n"; + client.PeerID = "-UT3130-" + GenerateIdString("random", 12, true, false); + client.Query = "info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0&key={key}{event}&numwant={numwant}&compact=1&no_peer_id=1"; + client.DefNumWant = 200; + client.Parse = true; + client.SearchString = "&peer_id=-UT3130-"; + client.ProcessName = "uTorrent"; + client.StartOffset = 0; + client.MaxOffset = 60000000; + break; + } + + case "uTorrent 3.1.0": + { + client.Name = "uTorrent 3.1.0"; + client.HttpProtocol = "HTTP/1.1"; + client.HashUpperCase = false; + client.Key = GenerateIdString("hex", 8, false, true); + client.Headers = "Host: {host}\r\nUser-Agent: uTorrent/3100\r\nAccept-Encoding: gzip\r\n"; + client.PeerID = "-UT3100-" + GenerateIdString("random", 12, true, false); + client.Query = "info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0&key={key}{event}&numwant={numwant}&compact=1&no_peer_id=1"; + client.DefNumWant = 200; + client.Parse = true; + client.SearchString = "&peer_id=-UT3100-"; + client.ProcessName = "uTorrent"; + client.StartOffset = 0; + client.MaxOffset = 60000000; + break; + } + + case "uTorrent 3.0.0": + { + client.Name = "uTorrent 3.0.0"; + client.HttpProtocol = "HTTP/1.1"; + client.HashUpperCase = false; + client.Key = GenerateIdString("hex", 8, false, true); + client.Headers = "Host: {host}\r\nUser-Agent: uTorrent/3000\r\nAccept-Encoding: gzip\r\n"; + client.PeerID = "-UT3000-" + GenerateIdString("random", 12, true, false); + client.Query = "info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0&key={key}{event}&numwant={numwant}&compact=1&no_peer_id=1"; + client.DefNumWant = 200; + client.Parse = true; + client.SearchString = "&peer_id=-UT3000-"; + client.ProcessName = "uTorrent"; + client.StartOffset = 0; + client.MaxOffset = 60000000; + break; + } + + case "uTorrent 2.2.1": + { + client.Name = "uTorrent 2.2.1"; + client.HttpProtocol = "HTTP/1.1"; + client.HashUpperCase = false; + client.Key = GenerateIdString("hex", 8, false, true); + client.Headers = "Host: {host}\r\nUser-Agent: uTorrent/2210\r\nAccept-Encoding: gzip\r\n"; + client.PeerID = "-UT2210-" + GenerateIdString("random", 12, true, false); + client.Query = "info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0&key={key}{event}&numwant={numwant}&compact=1&no_peer_id=1"; + client.DefNumWant = 200; + client.Parse = true; + client.SearchString = "&peer_id=-UT2210-"; + client.ProcessName = "uTorrent"; + client.StartOffset = 0; + client.MaxOffset = 60000000; + break; + } + + case "uTorrent 2.2.0": + { + client.Name = "uTorrent 2.2.0"; + client.HttpProtocol = "HTTP/1.1"; + client.HashUpperCase = false; + client.Key = GenerateIdString("hex", 8, false, true); + client.Headers = "Host: {host}\r\nUser-Agent: uTorrent/2200\r\nAccept-Encoding: gzip\r\n"; + client.PeerID = "-UT2200-" + GenerateIdString("random", 12, true, false); + client.Query = "info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0&key={key}{event}&numwant={numwant}&compact=1&no_peer_id=1"; + client.DefNumWant = 200; + client.Parse = true; + client.SearchString = "&peer_id=-UT2200-"; + client.ProcessName = "uTorrent"; + client.StartOffset = 0; + client.MaxOffset = 60000000; + break; + } + + case "uTorrent 2.0.4": + { + client.Name = "uTorrent 2.0.4"; + client.HttpProtocol = "HTTP/1.1"; + client.HashUpperCase = false; + client.Key = GenerateIdString("hex", 8, false, true); + client.Headers = "Host: {host}\r\nUser-Agent: uTorrent/2040\r\nAccept-Encoding: gzip\r\n"; + client.PeerID = "-UT2040-" + GenerateIdString("random", 12, true, false); + client.Query = "info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0&key={key}{event}&numwant={numwant}&compact=1&no_peer_id=1"; + client.DefNumWant = 200; + client.Parse = true; + client.SearchString = "&peer_id=-UT2040-"; + client.ProcessName = "uTorrent"; + client.StartOffset = 0; + client.MaxOffset = 60000000; + break; + } + + case "uTorrent 2.0.2": + { + client.Name = "uTorrent 2.0.2"; + client.HttpProtocol = "HTTP/1.1"; + client.HashUpperCase = false; + client.Key = GenerateIdString("hex", 8, false, true); + client.Headers = "Host: {host}\r\nUser-Agent: uTorrent/2020\r\nAccept-Encoding: gzip\r\n"; + client.PeerID = "-UT2020-" + GenerateIdString("random", 12, true, false); + client.Query = "info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0&key={key}{event}&numwant={numwant}&compact=1&no_peer_id=1"; + client.DefNumWant = 200; + client.Parse = true; + client.SearchString = "&peer_id=-UT2020-"; + client.ProcessName = "uTorrent"; + client.StartOffset = 0; + client.MaxOffset = 60000000; + break; + } + + case "uTorrent 2.0.0": + { + client.Name = "uTorrent 2.0.0"; + client.HttpProtocol = "HTTP/1.1"; + client.HashUpperCase = false; + client.Key = GenerateIdString("hex", 8, false, true); + client.Headers = "Host: {host}\r\nUser-Agent: uTorrent/2000\r\nAccept-Encoding: gzip\r\n"; + client.PeerID = "-UT2000-" + GenerateIdString("random", 12, true, false); + client.Query = "info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0&key={key}{event}&numwant={numwant}&compact=1&no_peer_id=1"; + client.DefNumWant = 200; + client.Parse = true; + client.SearchString = "&peer_id=-UT2000-"; + client.ProcessName = "uTorrent"; + client.StartOffset = 0; + client.MaxOffset = 60000000; + break; + } + case "uTorrent 2.0.1 (build 19078)": { client.Name = "uTorrent 2.0.1 (build 19078)"; @@ -721,16 +1009,16 @@ public static TorrentClient GetClient(string name) #endregion default: { - client.Name = "uTorrent 3.3.2"; + client.Name = "uTorrent 3.6.0"; client.HttpProtocol = "HTTP/1.1"; client.HashUpperCase = false; client.Key = GenerateIdString("hex", 8, false, true); - client.Headers = "Host: {host}\r\nUser-Agent: uTorrent/3320\r\nAccept-Encoding: gzip\r\n"; - client.PeerID = "-UT3320-%18w" + GenerateIdString("random", 10, true, false); + client.Headers = "Host: {host}\r\nUser-Agent: uTorrent/3600\r\nAccept-Encoding: gzip\r\n"; + client.PeerID = "-UT3600-" + GenerateIdString("random", 12, true, false); client.Query = "info_hash={infohash}&peer_id={peerid}&port={port}&uploaded={uploaded}&downloaded={downloaded}&left={left}&corrupt=0&key={key}{event}&numwant={numwant}&compact=1&no_peer_id=1"; client.DefNumWant = 200; client.Parse = true; - client.SearchString = "&peer_id=-UT3320-"; + client.SearchString = "&peer_id=-UT3600-"; client.ProcessName = "uTorrent"; client.StartOffset = 0; client.MaxOffset = 200000000; diff --git a/Source/RatioMaster/VersionChecker.cs b/Source/RatioMaster/VersionChecker.cs index ea11c50..c6123df 100644 --- a/Source/RatioMaster/VersionChecker.cs +++ b/Source/RatioMaster/VersionChecker.cs @@ -6,9 +6,9 @@ namespace RatioMaster_source public class VersionChecker { - public const string LocalVersion = "0430"; - public const string PublicVersion = "0.43"; - public const string ReleaseDate = "08-01-2016"; + public const string LocalVersion = "0440"; + public const string PublicVersion = "0.44"; + public const string ReleaseDate = "04-07-2025"; private const string ProgramPageVersion = "http://ratiomaster.net/vc.php?v="; private readonly string userAgent; diff --git a/Website/history.php b/Website/history.php index d7700d4..05d01e1 100644 --- a/Website/history.php +++ b/Website/history.php @@ -3,6 +3,12 @@ require_once("news.php"); ?>
---=== 0.44 (04-07-2025) ===---
+- Global: The program is now open source and the source is available in https://github.com/NikolayIT/RatioMaster.NET
+- Global: Program built for .NET Framework version 4.0
+- Global: Program information, links and about form updated
+- RM: Added new client emulation: "uTorrent 3.6.0"
+- RM: Default client is now "uTorrent 3.6.0"
---=== 0.43 (08-01-2016) ===---
- Global: The program is now open source and the source is available in https://github.com/NikolayIT/RatioMaster.NET
- Global: Program built for .NET Framework version 4.0