/// <summary> /// Analyses proxy status, asynchronously. /// </summary> private void LoadDiagnostic() { var diagnostic = SystemProxyAnalyzer.Diagnose(); RequiresProxy = diagnostic.DefaultProxy != null; DoesNotRequireProxy = !RequiresProxy; DefaultProxy = diagnostic.DefaultProxy; ProxyAllowsSensitiveSites = diagnostic.SensitiveHttpGetRoute.HasFlag(RouteStatus.ProxyAcceptsName) && diagnostic.SensitiveHttpsConnectRoute.HasFlag(RouteStatus.ProxyAcceptsName) && diagnostic.SensitiveHttpConnectRoute.HasFlag(RouteStatus.ProxyAcceptsName); DnsResolvesLocal = diagnostic.SafeLocalDns; DnsResolvesSensitiveSites = diagnostic.SensitiveLocalDns; ProxyConnectsToSensitiveIP = diagnostic.SensitiveHttpsConnectRoute.HasFlag(RouteStatus.ProxyAcceptsAddress) && diagnostic.SensitiveHttpConnectRoute.HasFlag(RouteStatus.ProxyAcceptsAddress); if (DnsResolvesSensitiveSites && ProxyConnectsToSensitiveIP) { WorkWithLocalProxy = true; } else if (!ProxyConnectsToSensitiveIP) { WorkWithTwoProxy = true; } else { WorkWithSomethingElse = true; } }
private void FirstLoad() { var diagnostic = SystemProxyAnalyzer.Diagnose(); // if there is a local proxy, use it LocalProxy = diagnostic.DefaultProxy; // find a remote proxy if (!diagnostic.SensitiveHttpConnectRoute.HasFlag(RouteStatus.ProxyAcceptsAddress)) { var firstProxy = ProxyPageScanner.ScanPage(ProxyPage.Default.First(), ProxyClient.CreateRoute(LocalProxy), TestTargetUri).FirstOrDefault(); if (firstProxy != null) { RemoteProxy = new Uri(string.Format("http://{0}:{1}", firstProxy.Host, firstProxy.Port)); } } else { RemoteProxy = null; } }