Ejemplo n.º 1
0
 protected void onStatusChanged(Natsuhime.Events.MessageEventArgs e)
 {
     if (StatusChanged != null)
     {
         StatusChanged(e);
     }
 }
Ejemplo n.º 2
0
        // 这个方法提供实际的计算流程.它在worker线程上被执行.
        private void CalculateWorker(
            ref List <ProxyInfo> proxyList,
            AsyncOperation asyncOp)
        {
            _ProxyList   = proxyList;
            _ProxyListOK = new List <ProxyInfo>();
            Exception e = null;

            // 检查taskId是否被取消.因为操作可能已经在之前被预先取消了.
            if (!TaskCanceled(asyncOp.UserSuppliedState))
            {
                try
                {
                    string currentIP = ProxyUtility.GetCurrentIP_RegexPage(ConnectValidatePage(asyncOp, null), _ProxyValidateUrlInfo.RegexString);
                    Natsuhime.Events.MessageEventArgs me = new Natsuhime.Events.MessageEventArgs("", string.Format("[校验]{0}[当前IP]", currentIP), "", asyncOp.UserSuppliedState);
                    asyncOp.Post(this.onStatusChangeDelegate, me);
                    Validate(currentIP, asyncOp);
                }
                catch (Exception ex)
                {
                    e = ex;
                }
            }

            this.CompletionMethod(
                _ProxyListOK,
                e,
                TaskCanceled(asyncOp.UserSuppliedState),
                asyncOp);
        }
Ejemplo n.º 3
0
        private void SendStatusChange(object state)
        {
            Natsuhime.Events.MessageEventArgs e =
                state as Natsuhime.Events.MessageEventArgs;

            onStatusChanged(e);
        }
Ejemplo n.º 4
0
        private void Validate(string currentIP, AsyncOperation asyncOp)
        {
            if (currentIP == null || currentIP.Trim() == string.Empty)
            {
                throw new ArgumentNullException("currentIP");
            }

            Natsuhime.Events.MessageEventArgs e = null;
            while (true)
            {
                ProxyInfo info = GetProxy();
                if (info == null)
                {
                    break;
                }
                e = new Natsuhime.Events.MessageEventArgs("", string.Format("[校验]{0}:{1}", info.Address, info.Port), "", asyncOp.UserSuppliedState);
                asyncOp.Post(this.onStatusChangeDelegate, e);

                string returnData;
                try
                {
                    returnData = ConnectValidatePage(asyncOp, info);
                }
                catch (Exception ex)
                {
                    returnData = string.Empty;
                }
                if (returnData == string.Empty)
                {
                    System.Diagnostics.Debug.WriteLine(string.Format("{0}:{1} - Failed", info.Address, info.Port));

                    e = new Natsuhime.Events.MessageEventArgs("", string.Format("[失败]{0}:{1}", info.Address, info.Port), "", asyncOp.UserSuppliedState);
                    asyncOp.Post(this.onStatusChangeDelegate, e);
                    continue;
                }
                if (currentIP == ProxyUtility.GetCurrentIP_RegexPage(returnData, _ProxyValidateUrlInfo.RegexString))
                {
                    System.Diagnostics.Debug.WriteLine(string.Format("{0}:{1} - Bad", info.Address, info.Port));

                    e = new Natsuhime.Events.MessageEventArgs("", string.Format("[透明]{0}:{1}", info.Address, info.Port), "", asyncOp.UserSuppliedState);
                    asyncOp.Post(this.onStatusChangeDelegate, e);
                    continue;
                }

                Monitor.Enter(_ProxyListOK);
                _ProxyListOK.Add(info);
                Monitor.Exit(_ProxyListOK);
                System.Diagnostics.Debug.WriteLine(string.Format("{0}:{1} - OK", info.Address, info.Port));

                e = new Natsuhime.Events.MessageEventArgs("", string.Format("[成功]{0}:{1}", info.Address, info.Port), "", asyncOp.UserSuppliedState);
                asyncOp.Post(this.onStatusChangeDelegate, e);
            }
        }
Ejemplo n.º 5
0
        private string ConnectValidatePage(AsyncOperation asyncOp, ProxyInfo info)
        {
            Natsuhime.Events.MessageEventArgs e = null;
            if (info != null)
            {
                try
                {
                    httper.Proxy = new System.Net.WebProxy(info.Address, info.Port);
                    System.Diagnostics.Debug.WriteLine(string.Format("{0}:{1}", info.Address, info.Port));
                }
                catch (Exception ex)
                {
                    System.Diagnostics.Debug.Write("error uri" + info.Address + "-" + info.Port);
                    e = new Natsuhime.Events.MessageEventArgs("", string.Format("[代理错误:{2}]{0}:{1}", info.Address, info.Port, ex.Message), "", asyncOp.UserSuppliedState);
                    asyncOp.Post(this.onStatusChangeDelegate, e);
                }
            }

            httper.Url     = _ProxyValidateUrlInfo.Url;
            httper.Charset = _ProxyValidateUrlInfo.Charset;
            return(httper.HttpGet());
        }
Ejemplo n.º 6
0
        private string ConnectValidatePage(AsyncOperation asyncOp, ProxyInfo info)
        {
            Natsuhime.Events.MessageEventArgs e = null;
            if (info != null)
            {
                try
                {
                    httper.Proxy = new System.Net.WebProxy(info.Address, info.Port);
                    System.Diagnostics.Debug.WriteLine(string.Format("{0}:{1}", info.Address, info.Port));
                }
                catch (Exception ex)
                {
                    System.Diagnostics.Debug.Write("error uri" + info.Address + "-" + info.Port);
                    e = new Natsuhime.Events.MessageEventArgs("", string.Format("[代理错误:{2}]{0}:{1}", info.Address, info.Port, ex.Message), "", asyncOp.UserSuppliedState);
                    asyncOp.Post(this.onStatusChangeDelegate, e);
                }
            }

            httper.Url = _ProxyValidateUrlInfo.Url;
            httper.Charset = _ProxyValidateUrlInfo.Charset;
            return httper.HttpGet();
        }
Ejemplo n.º 7
0
        private void Validate(string currentIP, AsyncOperation asyncOp)
        {
            if (currentIP == null || currentIP.Trim() == string.Empty)
            {
                throw new ArgumentNullException("currentIP");
            }

            Natsuhime.Events.MessageEventArgs e = null;
            while (true)
            {
                ProxyInfo info = GetProxy();
                if (info == null)
                {
                    break;
                }
                e = new Natsuhime.Events.MessageEventArgs("", string.Format("[校验]{0}:{1}", info.Address, info.Port), "", asyncOp.UserSuppliedState);
                asyncOp.Post(this.onStatusChangeDelegate, e);

                string returnData;
                try
                {
                    returnData = ConnectValidatePage(asyncOp, info);
                }
                catch (Exception ex)
                {
                    returnData = string.Empty;
                }
                if (returnData == string.Empty)
                {
                    System.Diagnostics.Debug.WriteLine(string.Format("{0}:{1} - Failed", info.Address, info.Port));

                    e = new Natsuhime.Events.MessageEventArgs("", string.Format("[失败]{0}:{1}", info.Address, info.Port), "", asyncOp.UserSuppliedState);
                    asyncOp.Post(this.onStatusChangeDelegate, e);
                    continue;
                }
                if (currentIP == ProxyUtility.GetCurrentIP_RegexPage(returnData, _ProxyValidateUrlInfo.RegexString))
                {
                    System.Diagnostics.Debug.WriteLine(string.Format("{0}:{1} - Bad", info.Address, info.Port));

                    e = new Natsuhime.Events.MessageEventArgs("", string.Format("[透明]{0}:{1}", info.Address, info.Port), "", asyncOp.UserSuppliedState);
                    asyncOp.Post(this.onStatusChangeDelegate, e);
                    continue;
                }

                Monitor.Enter(_ProxyListOK);
                _ProxyListOK.Add(info);
                Monitor.Exit(_ProxyListOK);
                System.Diagnostics.Debug.WriteLine(string.Format("{0}:{1} - OK", info.Address, info.Port));

                e = new Natsuhime.Events.MessageEventArgs("", string.Format("[成功]{0}:{1}", info.Address, info.Port), "", asyncOp.UserSuppliedState);
                asyncOp.Post(this.onStatusChangeDelegate, e);
            }
        }
Ejemplo n.º 8
0
        // 这个方法提供实际的计算流程.它在worker线程上被执行.
        private void CalculateWorker(
            ref List<ProxyInfo> proxyList,
            AsyncOperation asyncOp)
        {
            _ProxyList = proxyList;
            _ProxyListOK = new List<ProxyInfo>();
            Exception e = null;

            // 检查taskId是否被取消.因为操作可能已经在之前被预先取消了.
            if (!TaskCanceled(asyncOp.UserSuppliedState))
            {
                try
                {
                    string currentIP = ProxyUtility.GetCurrentIP_RegexPage(ConnectValidatePage(asyncOp, null), _ProxyValidateUrlInfo.RegexString);
                    Natsuhime.Events.MessageEventArgs me = new Natsuhime.Events.MessageEventArgs("", string.Format("[校验]{0}[当前IP]", currentIP), "", asyncOp.UserSuppliedState);
                    asyncOp.Post(this.onStatusChangeDelegate, me);
                    Validate(currentIP, asyncOp);
                }
                catch (Exception ex)
                {
                    e = ex;
                }
            }

            this.CompletionMethod(
                _ProxyListOK,
                e,
                TaskCanceled(asyncOp.UserSuppliedState),
                asyncOp);
        }
Ejemplo n.º 9
0
 void ps_StatusChanged(object sender, Natsuhime.Events.MessageEventArgs e)
 {
     ShowMessage(e.Title, e.Message, e.ExtMessage);
 }
Ejemplo n.º 10
0
 void pv2_StatusChanged(Natsuhime.Events.MessageEventArgs e)
 {
     ShowMessage(e.UserState.ToString(), e.Message, e.ExtMessage);
 }