private void CheckProxyServers()
 {
     try
     {
         Loading = true;
         ProxyServers.Clear();
         var testTargetUri = TestTargetUri;
         if (testTargetUri != null)
         {
             var route = ProxyClient.CreateRoute(LocalProxy);
             foreach (var hostEndPoint in ProxyPageScanner.ScanPage(ProxyPage.PageUri, ProxyPage.ParseAsText, ProxyPage.HostPortEx, route, testTargetUri))
             {
                 var ipEndPoint = hostEndPoint.IPEndPoint;
                 if (ipEndPoint == null)
                 {
                     continue;
                 }
                 var location = Geolocation.Locate(ipEndPoint.Address, route);
                 var p        = ProxyAnalyzer.MeasurePerformance(route, testTargetUri);
                 if (p == null)
                 {
                     continue;
                 }
                 var proxy = new Proxy(hostEndPoint, location, (int)p.Ping.TotalMilliseconds, (int)(p.DownloadSpeed / 1024));
                 ProxyServers.Add(proxy);
             }
         }
     }
     finally
     {
         Loading = false;
     }
 }
Esempio n. 2
0
        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;
            }
        }