diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props
index c13f25a59..25e168546 100644
--- a/src/Directory.Packages.props
+++ b/src/Directory.Packages.props
@@ -3,7 +3,6 @@
-
diff --git a/src/NzbDrone.Common/Http/Proxy/ManagedWebProxyFactory.cs b/src/NzbDrone.Common/Http/Proxy/ManagedWebProxyFactory.cs
index ef3c5950c..7a972d84f 100644
--- a/src/NzbDrone.Common/Http/Proxy/ManagedWebProxyFactory.cs
+++ b/src/NzbDrone.Common/Http/Proxy/ManagedWebProxyFactory.cs
@@ -1,9 +1,5 @@
-using System;
-using System.Linq;
+using System;
using System.Net;
-using System.Net.Sockets;
-using com.LandonKey.SocksWebProxy;
-using com.LandonKey.SocksWebProxy.Proxy;
using NzbDrone.Common.Cache;
using NzbDrone.Common.Extensions;
@@ -34,53 +30,36 @@ namespace NzbDrone.Common.Http.Proxy
private IWebProxy CreateWebProxy(HttpProxySettings proxySettings)
{
- switch (proxySettings.Type)
- {
- case ProxyType.Http:
- if (proxySettings.Username.IsNotNullOrWhiteSpace() && proxySettings.Password.IsNotNullOrWhiteSpace())
- {
- return new WebProxy(proxySettings.Host + ":" + proxySettings.Port, proxySettings.BypassLocalAddress, proxySettings.BypassListAsArray, new BasicNetworkCredential(proxySettings.Username, proxySettings.Password));
- }
- else
- {
- return new WebProxy(proxySettings.Host + ":" + proxySettings.Port, proxySettings.BypassLocalAddress, proxySettings.BypassListAsArray);
- }
+ var uri = GetProxyUri(proxySettings);
- case ProxyType.Socks4:
- return new SocksWebProxy(new ProxyConfig(IPAddress.Loopback, GetNextFreePort(), GetProxyIpAddress(proxySettings.Host), proxySettings.Port, ProxyConfig.SocksVersion.Four, proxySettings.Username, proxySettings.Password), false);
- case ProxyType.Socks5:
- return new SocksWebProxy(new ProxyConfig(IPAddress.Loopback, GetNextFreePort(), GetProxyIpAddress(proxySettings.Host), proxySettings.Port, ProxyConfig.SocksVersion.Five, proxySettings.Username, proxySettings.Password), false);
+ if (uri == null)
+ {
+ return null;
}
- return null;
- }
-
- private static IPAddress GetProxyIpAddress(string host)
- {
- IPAddress ipAddress;
- if (!IPAddress.TryParse(host, out ipAddress))
+ if (proxySettings.Username.IsNotNullOrWhiteSpace() && proxySettings.Password.IsNotNullOrWhiteSpace())
{
- try
- {
- ipAddress = Dns.GetHostEntry(host).AddressList.OrderByDescending(a => a.AddressFamily == AddressFamily.InterNetwork).First();
- }
- catch (Exception e)
- {
- throw new InvalidOperationException(string.Format("Unable to resolve proxy hostname '{0}' to a valid IP address.", host), e);
- }
+ return new WebProxy(uri, proxySettings.BypassLocalAddress, proxySettings.BypassListAsArray, new NetworkCredential(proxySettings.Username, proxySettings.Password));
+ }
+ else
+ {
+ return new WebProxy(uri, proxySettings.BypassLocalAddress, proxySettings.BypassListAsArray);
}
-
- return ipAddress;
}
- private static int GetNextFreePort()
+ private Uri GetProxyUri(HttpProxySettings proxySettings)
{
- var listener = new TcpListener(IPAddress.Loopback, 0);
- listener.Start();
- var port = ((IPEndPoint)listener.LocalEndpoint).Port;
- listener.Stop();
-
- return port;
+ switch (proxySettings.Type)
+ {
+ case ProxyType.Http:
+ return new Uri("http://" + proxySettings.Host + ":" + proxySettings.Port);
+ case ProxyType.Socks4:
+ return new Uri("socks4://" + proxySettings.Host + ":" + proxySettings.Port);
+ case ProxyType.Socks5:
+ return new Uri("socks5://" + proxySettings.Host + ":" + proxySettings.Port);
+ default:
+ return null;
+ }
}
}
}
diff --git a/src/NzbDrone.Common/Readarr.Common.csproj b/src/NzbDrone.Common/Readarr.Common.csproj
index 7f02acb7d..8e5ad4f93 100644
--- a/src/NzbDrone.Common/Readarr.Common.csproj
+++ b/src/NzbDrone.Common/Readarr.Common.csproj
@@ -5,7 +5,6 @@
ISMUSL
-