Пример #1
0
        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));
        }
Пример #2
0
        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));
        }
Пример #3
0
 /// <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);
         }
     }
 }
Пример #4
0
        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));
        }
Пример #5
0
        //#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]++;
            }
        }