/// <summary> /// Set the given explicit end point as the default proxy server for current machine /// </summary> /// <param name="endPoint"></param> public void SetAsSystemHttpProxy(ExplicitProxyEndPoint endPoint) { if (RunTime.IsRunningOnMono) { throw new Exception("Mono Runtime do not support system proxy settings."); } ValidateEndPointAsSystemProxy(endPoint); //clear any settings previously added ProxyEndPoints.OfType <ExplicitProxyEndPoint>().ToList().ForEach(x => x.IsSystemHttpProxy = false); systemProxySettingsManager.SetHttpProxy( Equals(endPoint.IpAddress, IPAddress.Any) | Equals(endPoint.IpAddress, IPAddress.Loopback) ? "127.0.0.1" : endPoint.IpAddress.ToString(), endPoint.Port); endPoint.IsSystemHttpProxy = true; firefoxProxySettingsManager.UseSystemProxy(); Console.WriteLine("Set endpoint at Ip {0} and port: {1} as System HTTP Proxy", endPoint.IpAddress, endPoint.Port); }
/// <summary> /// Set the given explicit end point as the default proxy server for current machine /// </summary> /// <param name="endPoint"></param> /// <param name="protocolType"></param> public void SetAsSystemProxy(ExplicitProxyEndPoint endPoint, ProxyProtocolType protocolType) { if (RunTime.IsRunningOnMono) { throw new Exception("Mono Runtime do not support system proxy settings."); } ValidateEndPointAsSystemProxy(endPoint); bool isHttp = (protocolType & ProxyProtocolType.Http) > 0; bool isHttps = (protocolType & ProxyProtocolType.Https) > 0; if (isHttps) { if (!endPoint.EnableSsl) { throw new Exception("Endpoint do not support Https connections"); } EnsureRootCertificate(); //If certificate was trusted by the machine if (!CertificateManager.CertValidated) { protocolType = protocolType & ~ProxyProtocolType.Https; isHttps = false; } } //clear any settings previously added if (isHttp) { ProxyEndPoints.OfType <ExplicitProxyEndPoint>().ToList().ForEach(x => x.IsSystemHttpProxy = false); } if (isHttps) { ProxyEndPoints.OfType <ExplicitProxyEndPoint>().ToList().ForEach(x => x.IsSystemHttpsProxy = false); } systemProxySettingsManager.SetProxy( Equals(endPoint.IpAddress, IPAddress.Any) | Equals(endPoint.IpAddress, IPAddress.Loopback) ? "127.0.0.1" : endPoint.IpAddress.ToString(), endPoint.Port, protocolType); if (isHttp) { endPoint.IsSystemHttpsProxy = true; } if (isHttps) { endPoint.IsSystemHttpsProxy = true; } firefoxProxySettingsManager.UseSystemProxy(); string proxyType = null; switch (protocolType) { case ProxyProtocolType.Http: proxyType = "HTTP"; break; case ProxyProtocolType.Https: proxyType = "HTTPS"; break; case ProxyProtocolType.AllHttp: proxyType = "HTTP and HTTPS"; break; } if (protocolType != ProxyProtocolType.None) { Console.WriteLine("Set endpoint at Ip {0} and port: {1} as System {2} Proxy", endPoint.IpAddress, endPoint.Port, proxyType); } }