diff --git a/src/Jackett/Indexers/IPTorrents.cs b/src/Jackett/Indexers/IPTorrents.cs
index a595907ee..4c59fd8ac 100644
--- a/src/Jackett/Indexers/IPTorrents.cs
+++ b/src/Jackett/Indexers/IPTorrents.cs
@@ -56,7 +56,7 @@ namespace Jackett.Indexers
return (ConfigurationData)config;
}
- public async Task ApplyConfiguration(Newtonsoft.Json.Linq.JToken configJson)
+ public async Task ApplyConfiguration(JToken configJson)
{
var config = new ConfigurationDataBasicLogin();
diff --git a/src/Jackett/Jackett.csproj b/src/Jackett/Jackett.csproj
index 56eae05e6..98b968a8c 100644
--- a/src/Jackett/Jackett.csproj
+++ b/src/Jackett/Jackett.csproj
@@ -79,6 +79,7 @@
+
diff --git a/src/Jackett/Server.cs b/src/Jackett/Server.cs
index f460be0f3..77fcf00e9 100644
--- a/src/Jackett/Server.cs
+++ b/src/Jackett/Server.cs
@@ -109,7 +109,8 @@ namespace Jackett
if (context.Request.Url.Segments.Length > 4 && context.Request.Url.Segments[3] == "download/")
{
- var downloadLink = Encoding.UTF8.GetString(Convert.FromBase64String((context.Request.Url.Segments[4].TrimEnd('/'))));
+ var downloadSegment = HttpServerUtility.UrlTokenDecode(context.Request.Url.Segments[4].TrimEnd('/'));
+ var downloadLink = Encoding.UTF8.GetString(downloadSegment);
var downloadBytes = await indexer.Download(new Uri(downloadLink));
await context.Response.OutputStream.WriteAsync(downloadBytes, 0, downloadBytes.Length);
return;
@@ -138,7 +139,7 @@ namespace Jackett
foreach (var release in releases)
{
var originalLink = release.Link;
- var encodedLink = Convert.ToBase64String(Encoding.UTF8.GetBytes(originalLink.ToString())) + "/download.torrent";
+ var encodedLink = HttpServerUtility.UrlTokenEncode(Encoding.UTF8.GetBytes(originalLink.ToString())) + "/download.torrent";
var proxyLink = string.Format("{0}api/{1}/download/{2}", severUrl, indexerId, encodedLink);
release.Link = new Uri(proxyLink);
}