⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 proxydetectaction.cs

📁 破解的飞信源代码
💻 CS
字号:
namespace Imps.Client.CommLayer.NetworkDetect
{
    using Imps.Client.Core;
    using Imps.Client.Resource;
    using Imps.Client.Utils;
    using Imps.Utils;
    using System;
    using System.Collections.Generic;
    using System.Net;
    using System.Threading;

    public class ProxyDetectAction : DetectAction
    {
        public ProxyDetectAction()
        {
            base.Description = "代理服务器";
            base.NextStage = NetworkDetectStage.Finished;
        }

        public override void BeginDetectAction()
        {
            ThreadPool.QueueUserWorkItem(new WaitCallback(this.StartDetect), this);
        }

        public override void CancelDetectAction()
        {
        }

        public override void Dispose()
        {
        }

        private void StartDetect(object state)
        {
            List<DetectResult> details = new List<DetectResult>();
            NetworkProxy httpProxy = base.DetectData.NetworkSetting.HttpProxy;
            if (base.DetectData.NetworkSetting.UseHttpProxy)
            {
                int? proxyPort = null;
                string proxyServer = string.Empty;
                if (base.DetectData.NetworkSetting.UseIeProxy)
                {
                    IeConfig.ReadIeHttpProxySetting(out proxyServer, out proxyPort);
                }
                else
                {
                    proxyServer = base.DetectData.NetworkSetting.HttpProxy.ServerUri;
                    proxyPort = new int?(base.DetectData.NetworkSetting.HttpProxy.ServerPort);
                }
                httpProxy.ServerPort = proxyPort.GetValueOrDefault(0x1f90);
                httpProxy.ServerUri = (proxyServer == null) ? string.Empty : proxyServer;
                if (httpProxy.ServerUri.Length > 0)
                {
                    TryConnectHttpProxy(httpProxy.ServerUri, httpProxy.ServerPort, httpProxy.UserName, httpProxy.Password, details);
                }
                else
                {
                    details.Add(new DetectResult(DetectStatus.Passed, StringTable.NetworkDetect.NoHttpProxy));
                }
            }
            else
            {
                details.Add(new DetectResult(DetectStatus.Passed, StringTable.NetworkDetect.HttpProxyNotEnabled));
            }
            bool passed = true;
            List<DetectResult>.Enumerator enumerator = details.GetEnumerator();
            try
            {
                while (enumerator.MoveNext())
                {
                    if (enumerator.get_Current().Status != DetectStatus.Passed)
                    {
                        passed = false;
                        goto Label_0141;
                    }
                }
            }
            finally
            {
                enumerator.Dispose();
            }
        Label_0141:
            base.FireDetecFinsihedEvent(this, new DetectEventArgs(passed, details));
        }

        private static void TryConnectHttpProxy(string ServerUri, int port, string UserName, string Password, List<DetectResult> details)
        {
            try
            {
                WebProxy proxy = new WebProxy(string.Format("{0}:{1}", ServerUri, port), UserName.Length > 0);
                if (UserName.IndexOf('\\') > -1)
                {
                    string domain = UserName.Substring(0, UserName.IndexOf('\\'));
                    UserName = UserName.Substring(UserName.IndexOf('\\') + 1);
                    proxy.Credentials = new NetworkCredential(UserName, Password, domain);
                }
                else
                {
                    proxy.Credentials = new NetworkCredential(UserName, Password);
                }
                HttpWebRequest request = (HttpWebRequest) WebRequest.Create(Imps.Client.Core.FixedClientSetting.Instance.TestConnectionUrl);
                request.Proxy = proxy;
                request.KeepAlive = false;
                using (HttpWebResponse response = ((HttpWebResponse) request.GetResponse()))
                {
                    details.Add(new DetectResult(DetectStatus.Passed, StringTable.NetworkDetect.HttpProxyPassed));
                }
            }
            catch (Exception exception)
            {
                details.Add(new DetectResult(DetectStatus.Failed, StringTable.NetworkDetect.HttpProxyNotPassed));
                ClientLogger.WriteGeneral(exception.ToString());
            }
        }

        public override NetworkDetectStage CurrentStage
        {
            get
            {
                return NetworkDetectStage.Proxy;
            }
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -