public async Task <IActionResult> Index() { var useragent = Request.Headers; var remoteIpAddres = Request.HttpContext.Connection.RemoteIpAddress.ToString(); var ipaddres = _context.IpAdresses.Where(x => x.IpAddres == remoteIpAddres).Select(x => x.IpAddres).FirstOrDefault(); if (ipaddres == null || ipaddres == "") { IpAdresses ipAdresses = new IpAdresses { IpAddres = remoteIpAddres, Date = DateTime.Now }; _context.IpAdresses.Add(ipAdresses); await _context.SaveChangesAsync(); } else { IpAdresses ipaddreslocal = _context.IpAdresses.Where(x => x.IpAddres == remoteIpAddres).FirstOrDefault(); ipaddreslocal.Date = DateTime.Now; _context.IpAdresses.Update(ipaddreslocal); await _context.SaveChangesAsync(); } List <NewsInfo> newsInfo = await _context.NewsInfos.OrderByDescending(x => x.DateTime).ToListAsync(); Users user = _context.User.Where(x => x.IpAddress.Contains(remoteIpAddres)).FirstOrDefault(); if (user != null && user.Status == "true") { ViewBag.user = user; } return(View(newsInfo)); }
public async Task <IActionResult> Edit(int id, [Bind("id,IpAddres")] IpAdresses ipAdresses) { if (id != ipAdresses.id) { return(NotFound()); } if (ModelState.IsValid) { try { _context.Update(ipAdresses); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!IpAdressesExists(ipAdresses.id)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } return(View(ipAdresses)); }
/// <summary> /// کم کردن تعداد درخواست هر آی پی در هر ثانیه /// </summary> private static void TimerElapsed(object sender, ElapsedEventArgs e) { foreach (var key in IpAdresses.Keys) { IpAdresses[key]--; if (IpAdresses[key] == 0) { IpAdresses.Remove(key); } } }
public async Task <IActionResult> Create([Bind("id,IpAddres")] IpAdresses ipAdresses) { if (ModelState.IsValid) { _context.Add(ipAdresses); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } return(View(ipAdresses)); }
//#endregion //#region CheckIpAddress /// <summary> /// چک میکنیم که آیا آی پی مورد نظر در لیست /// آی پی های است یا خیر ، اگر از حد تعیین شده زیاد بود درخواست هایش لذا بلاک شود /// </summary> /// <param name="ip">آی پی شخص</param> private static void CheckIpAddress(string ip) { if (!IpAdresses.ContainsKey(ip)) { IpAdresses[ip] = 1; } else if (IpAdresses[ip] == BannedRequests) { Banned.Push(ip); IpAdresses.Remove(ip); } else { IpAdresses[ip]++; } }