/// <summary> /// Remove the HTTP and/or HTTPS proxy setting from current machine /// </summary> internal void RemoveProxy(ProxyProtocolType protocolType, bool saveOriginalConfig = true) { var reg = Registry.CurrentUser.OpenSubKey(regKeyInternetSettings, true); if (reg != null) { if (saveOriginalConfig) { SaveOriginalProxyConfiguration(reg); } if (reg.GetValue(regProxyServer) != null) { string exisitingContent = reg.GetValue(regProxyServer) as string; var existingSystemProxyValues = ProxyInfo.GetSystemProxyValues(exisitingContent); existingSystemProxyValues.RemoveAll(x => (protocolType & x.ProtocolType) != 0); if (existingSystemProxyValues.Count != 0) { reg.SetValue(regProxyEnable, 1); reg.SetValue(regProxyServer, string.Join(";", existingSystemProxyValues.Select(x => x.ToString()).ToArray())); } else { reg.SetValue(regProxyEnable, 0); reg.SetValue(regProxyServer, string.Empty); } } Refresh(); } }
/// <summary> /// Set the HTTP and/or HTTPS proxy server for current machine /// </summary> /// <param name="hostname"></param> /// <param name="port"></param> /// <param name="protocolType"></param> internal void SetProxy(string hostname, int port, ProxyProtocolType protocolType) { using (var reg = openInternetSettingsKey()) { if (reg == null) { return; } saveOriginalProxyConfiguration(reg); prepareRegistry(reg); string?existingContent = reg.GetValue(regProxyServer) as string; var existingSystemProxyValues = ProxyInfo.GetSystemProxyValues(existingContent); existingSystemProxyValues.RemoveAll(x => (protocolType & x.ProtocolType) != 0); if ((protocolType & ProxyProtocolType.Http) != 0) { existingSystemProxyValues.Add(new HttpSystemProxyValue(hostname, port, ProxyProtocolType.Http)); } if ((protocolType & ProxyProtocolType.Https) != 0) { existingSystemProxyValues.Add(new HttpSystemProxyValue(hostname, port, ProxyProtocolType.Https)); } reg.DeleteValue(regAutoConfigUrl, false); reg.SetValue(regProxyEnable, 1); reg.SetValue(regProxyServer, string.Join(";", existingSystemProxyValues.Select(x => x.ToString()).ToArray())); refresh(); } }
/// <summary> /// Remove the HTTP and/or HTTPS proxy setting from current machine /// </summary> internal void RemoveProxy(ProxyProtocolType protocolType) { var reg = Registry.CurrentUser.OpenSubKey( "Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", true); if (reg?.GetValue("ProxyServer") != null) { var exisitingContent = reg.GetValue("ProxyServer") as string; var existingSystemProxyValues = GetSystemProxyValues(exisitingContent); existingSystemProxyValues.RemoveAll(x => (protocolType & x.ProtocolType) != 0); if (existingSystemProxyValues.Count != 0) { reg.SetValue("ProxyEnable", 1); reg.SetValue("ProxyServer", string.Join(";", existingSystemProxyValues.Select(x => x.ToString()).ToArray())); } else { reg.SetValue("ProxyEnable", 0); reg.SetValue("ProxyServer", string.Empty); } } Refresh(); }
private void SetProxy(string hostname, int port, ProxyProtocolType protocolType) { var reg = Registry.CurrentUser.OpenSubKey( "Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", true); if (reg != null) { PrepareRegistry(reg); var exisitingContent = reg.GetValue("ProxyServer") as string; var existingSystemProxyValues = GetSystemProxyValues(exisitingContent); existingSystemProxyValues.RemoveAll(x => protocolType == ProxyProtocolType.Https ? x.IsHttps : !x.IsHttps); existingSystemProxyValues.Add(new HttpSystemProxyValue { HostName = hostname, IsHttps = protocolType == ProxyProtocolType.Https, Port = port }); reg.SetValue("ProxyEnable", 1); reg.SetValue("ProxyServer", string.Join(";", existingSystemProxyValues.Select(x => x.ToString()).ToArray())); } Refresh(); }
/// <summary> /// Remove the specified proxy settings for current machine /// </summary> public void DisableSystemProxy(ProxyProtocolType protocolType) { if (RunTime.IsRunningOnMono) { throw new Exception("Mono Runtime do not support system proxy settings."); } systemProxySettingsManager.RemoveProxy(protocolType); }
/// <summary> /// Set the HTTP and/or HTTPS proxy server for current machine /// </summary> /// <param name="hostname"></param> /// <param name="port"></param> /// <param name="protocolType"></param> public void SetProxy(string hostname, int port, ProxyProtocolType protocolType) { var reg = Registry.CurrentUser.OpenSubKey(regKeyInternetSettings, true); if (reg != null) { saveOriginalProxyConfiguration(reg); prepareRegistry(reg); string exisitingContent = reg.GetValue(regProxyServer) as string; var existingSystemProxyValues = ProxyInfo.GetSystemProxyValues(exisitingContent); existingSystemProxyValues.RemoveAll(x => (protocolType & x.ProtocolType) != 0); if ((protocolType & ProxyProtocolType.Http) != 0) { existingSystemProxyValues.Add(new HttpSystemProxyValue { HostName = hostname, ProtocolType = ProxyProtocolType.Http, Port = port }); } if ((protocolType & ProxyProtocolType.Https) != 0) { existingSystemProxyValues.Add(new HttpSystemProxyValue { HostName = hostname, ProtocolType = ProxyProtocolType.Https, Port = port }); } reg.DeleteValue(regAutoConfigUrl, false); reg.SetValue(regProxyEnable, 1); reg.SetValue(regProxyServer, string.Join(";", existingSystemProxyValues.Select(x => x.ToString()).ToArray())); refresh(); } }
public HttpSystemProxyValue(string hostName, int port, ProxyProtocolType protocolType) { HostName = hostName; Port = port; ProtocolType = protocolType; }
/// <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); } }