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); } }
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(); }