示例#1
0
        private void CheckIp(object o)
        {
            IPChecked iPChecked = o as IPChecked;

            if (iPChecked != null)
            {
                if (iPChecked.CountReqvest > 20)
                {
                    ManagerDAO.AddNewIp(iPChecked.Ip);
                    Loger.WriteLog("Info", "CheckIp", DateTime.Now.ToLongDateString(), iPChecked.Ip, "Ban", "Blocked for many requests");
                }
                iPCheckeds.Remove(iPChecked);
            }
        }
示例#2
0
        private void Process(object o)
        {
            string             responseSt   = "";
            List <IpOrWebSite> ipOrWebSites = ManagerDAO.GetIpOrWebSites();
            var context = o as HttpListenerContext;
            HttpListenerResponse response = context.Response;
            HttpListenerRequest  request  = context.Request;
            string      ipReqvesr         = request.RemoteEndPoint.Address.ToString();
            IpOrWebSite ipOrWebSite       = ipOrWebSites.FirstOrDefault(ip => ip.IpSourse == ipReqvesr);

            if (ipOrWebSite != null)
            {
                if (ipOrWebSite.Status)
                {
                    responseSt = "Ok";
                }
                else
                {
                    responseSt = "Ban";
                }
            }
            else
            {
                responseSt = "Ok";
                IPChecked iPChecked = iPCheckeds.FirstOrDefault(ip => ip.Ip == ipReqvesr);
                if (iPChecked != null)
                {
                    iPChecked.CountReqvest++;
                }
                else
                {
                    TimerCallback tm = new TimerCallback(CheckIp);
                    iPChecked = new IPChecked();
                    iPChecked.CountReqvest = 1;
                    iPChecked.Ip           = ipReqvesr;
                    iPChecked.timer        = new Timer(tm, iPChecked, 1000, Timeout.Infinite);
                    iPCheckeds.Add(iPChecked);
                }
            }
            Loger.WriteLog("Info", "Process", DateTime.Now.ToLongDateString(), ipReqvesr, responseSt, "Reqvest");
            byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseSt);
            response.ContentLength64 = buffer.Length;
            Stream output = response.OutputStream;

            output.Write(buffer, 0, buffer.Length);
            output.Close();
        }