예제 #1
0
 private void onElapsed(object sender, ElapsedEventArgs e)
 {
     _timer.Stop();
     if (_proxyList != null && _proxyList.Count > 0)
     {
         while (_currentIdx < _proxyList.Count)
         {
             bool   isMachieSetting = true;
             bool   isPac           = false;
             string proxy           = "";
             if (_proxyList[_currentIdx].IsPac)
             {
                 StringBuilder sb = new StringBuilder();
                 for (int i = 0; i < _proxyList[_currentIdx].Domains.Length; i++)
                 {
                     if (i > 0)
                     {
                         sb.Append(",'" + _proxyList[_currentIdx].Domains[i] + "'");
                     }
                     else
                     {
                         sb.Append("'" + _proxyList[_currentIdx].Domains[i] + "'");
                     }
                 }
                 string txt = _pacTemplate.Replace("%URLPATTERNS%", sb.ToString())
                              .Replace("%PROXY%", _proxyList[_currentIdx].ServerName + ":"
                                       + _proxyList[_currentIdx].Port.ToString());
                 File.WriteAllText("pactest.pac", txt);
                 proxy = "file://" + Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location),
                                                  "pactest.pac").Replace("\\", "/");
                 isMachieSetting = true;
                 isPac           = true;
             }
             else
             {
                 proxy = _proxyList[_currentIdx].ServerName + ":"
                         + _proxyList[_currentIdx].Port.ToString();
                 isMachieSetting = _proxyList[_currentIdx].IsMachineSetting;
                 isPac           = false;
             }
             try
             {
                 WinINet.SetConnectionProxy(isMachieSetting, proxy, isPac);
                 if (_currentIdx == _proxyList.Count - 1)
                 {
                     if (_isRewind)
                     {
                         _currentIdx = 0;
                     }
                     else
                     {
                         return;
                     }
                 }
                 else
                 {
                     _currentIdx++;
                 }
                 break;
             }
             catch (Exception ex)
             {
                 continue;
             }
         }
         _timer.Start();
     }
 }
예제 #2
0
 public void DisableProxy()
 {
     WinINet.DisableSystemProxy();
 }
예제 #3
0
 public void SetHttpProxy(string proxyServer, bool isMachineSetting)
 {
     WinINet.SetConnectionProxy(isMachineSetting, proxyServer, false);
 }
예제 #4
0
 public void SetPacProxy(string pacPath)
 {
     WinINet.SetConnectionProxy(true, pacPath, true);
 }