示例#1
0
 public static AddressIP UnblockIP(AddressIP ip)
 {
     ip.Correct     = 0;
     ip.Incorrect   = 0;
     ip.IpBlockDate = DateTime.Now.AddMinutes(-1);
     return(ip);
 }
示例#2
0
        private void loadIpAddresses()
        {
            string      HostName    = Dns.GetHostName();
            IPHostEntry AddressesIP = Dns.GetHostEntry(HostName);
            string      firstEntry  = "127.0.0.1";
            IPAddress   firstIp     = null;

            firstIp = IPAddress.Parse(firstEntry);
            foreach (IPAddress AddressIP in AddressesIP.AddressList)
            {
                if (AddressIP.IsIPv6LinkLocal || AddressIP.IsIPv6Multicast || AddressIP.IsIPv6SiteLocal || AddressIP.IsIPv6Teredo)
                {
                    continue;
                }
                cbAddressList.Items.Add(firstIp);
                cbAddressList.Items.Add(AddressIP.ToString());
            }
        }
示例#3
0
        public IActionResult UnblockIP()
        {
            var       ip      = HttpContext.Connection.RemoteIpAddress.ToString();
            AddressIP address = _db.AddressIPs.Where(a => a.Address == ip).FirstOrDefault();

            if (address == null)
            {
                address = new AddressIP()
                {
                    Address   = ip,
                    Correct   = 0,
                    Incorrect = 0
                };
                _db.AddressIPs.Add(address);
            }
            address = Functions.UnblockIP(address);
            _db.SaveChanges();

            return(RedirectToAction("Login", "Account"));
        }
示例#4
0
        static void Main(string[] args)
        {
            string HostName = Dns.GetHostName();

            IPHostEntry IPAdresses = Dns.GetHostEntry(HostName);

            int counter = 0;

            Console.WriteLine("Your Host Name is: " + HostName);

            foreach (IPAddress AddressIP in IPAdresses.AddressList)
            {
                if (AddressIP.ToString() == "127.0.0.1")
                {
                    Console.WriteLine("You are not connected to network: " + AddressIP.ToString());
                }
                else
                {
                    Console.WriteLine("Your IP Address " + ++counter + ":" + AddressIP.ToString());
                }
            }

            Console.ReadKey();
        }
示例#5
0
        public IActionResult Signin()
        {
            var       ip      = HttpContext.Connection.RemoteIpAddress.ToString();
            AddressIP address = _db.AddressIPs.Where(a => a.Address == ip).FirstOrDefault();

            if (address == null)
            {
                address = new AddressIP()
                {
                    Address   = ip,
                    Correct   = 0,
                    Incorrect = 1
                };
                _db.AddressIPs.Add(address);
            }

            if (Functions.IsIpBlocked(address))
            {
                if (_db.Users.Where(a => a.Nickname == App.User.Nickname).FirstOrDefault <User>() is User user)
                {
                    var lastAttempt = _db.LoginAttempts.Where(a => a.AddressIp == ip && a.UserId == user.Id)
                                      .OrderByDescending(a => a.Date).FirstOrDefault();
                    if (lastAttempt == null)
                    {
                        lastAttempt = new LoginAttempt()
                        {
                            Attempt = 0
                        };
                    }

                    if (Functions.IsUserBlocked(user))
                    {
                        user = Functions.UnblockUser(user);
                    }

                    if (Functions.Login(user, App.User.Password))
                    {
                        LoginAttempt loginAttempt = new LoginAttempt()
                        {
                            UserId     = user.Id,
                            AddressIp  = ip,
                            Attempt    = 0,
                            Date       = DateTime.Now,
                            Successful = true
                        };

                        address.Correct   = 1;
                        address.Incorrect = 0;

                        _db.LoginAttempts.Add(loginAttempt);

                        ActionType actionType = new ActionType()
                        {
                            Action = "Log in",
                            UserId = user.Id,
                            Time   = DateTime.Now
                        };
                        Functions.AddActionToDatabase(_db, actionType);

                        _db.SaveChanges();

                        _cache.Set(CacheNames.readMode, "0");  // set cache variables
                        _cache.Set(CacheNames.user, user);
                        _cache.Set(CacheNames.logged, "1");
                        _cache.Set(CacheNames.masterPassword, user.Password);
                        _cache.Set(CacheNames.getMasterPassword, "0");
                        return(RedirectToAction("Index", "Home"));
                    }
                    else if (Functions.IsUserBlocked(user))
                    {
                        error = "\n\nKonto jest zablokowane do " + user.AccountBlockDate;
                    }
                    else
                    {
                        LoginAttempt failedLoginAttempt = new LoginAttempt()
                        {
                            UserId     = user.Id,
                            AddressIp  = ip,
                            Attempt    = lastAttempt.Attempt + 1,
                            Date       = DateTime.Now,
                            Successful = false
                        };
                        switch (failedLoginAttempt.Attempt)
                        {
                        case 1: break;

                        case 2: user.AccountBlockDate = DateTime.Now.AddSeconds(15); user.IsAccountBlocked = true; break;

                        case 3: user.AccountBlockDate = DateTime.Now.AddSeconds(30); user.IsAccountBlocked = true; break;

                        case 4: user.AccountBlockDate = DateTime.Now.AddMinutes(2); user.IsAccountBlocked = true; break;

                        default: user.AccountBlockDate = DateTime.Now.AddYears(30); user.IsAccountBlocked = true; break;
                        }

                        address.Incorrect++;
                        switch (address.Incorrect)
                        {
                        case 1: break;

                        case 2: break;

                        case 3: break;

                        case 4: break;

                        case 5: address.IpBlockDate = DateTime.Now.AddSeconds(15); break;

                        case 6: address.IpBlockDate = DateTime.Now.AddSeconds(30); break;

                        default: address.IpBlockDate = DateTime.Now.AddMinutes(1); break;
                        }

                        _db.LoginAttempts.Add(failedLoginAttempt);
                        _db.SaveChanges();

                        if (Functions.IsUserBlocked(user))
                        {
                            error = "Konto jest zablokowane do " + user.AccountBlockDate;
                        }
                    }
                }
            }
            if (address.IpBlockDate > DateTime.Now)
            {
                error2 = "Twoje IP jest zablokowane do " + address.IpBlockDate;
            }


            AppViewModel appViewModel = new AppViewModel
            {
                User   = App.User,
                Logged = Functions.getLogged(_cache),
                Error  = error,
                Error2 = error2
            };

            return(View("Login", appViewModel));
        }
示例#6
0
 public static bool IsIpBlocked(AddressIP ip)
 {
     return(ip.IpBlockDate < DateTime.Now);
 }