Пример #1
0
        public static bool IsOkWithRules(SecurityRuleType Rule, string Expression)
        {
            switch (Rule)
            {
            case SecurityRuleType.Country:
                var list = TableHelper.SelectRows <SecurityRule>(TableHelper.MakeDictionary("Type", SecurityRuleType.Country.ToString()));
                foreach (var rule in list)
                {
                    if (rule.Value == Expression)
                    {
                        return(false);
                    }
                }
                return(true);

            case SecurityRuleType.IP:
                list = TableHelper.SelectRows <SecurityRule>(TableHelper.MakeDictionary("Type", SecurityRuleType.IP.ToString()));
                foreach (var rule in list)
                {
                    if (rule.Value == Expression)
                    {
                        return(false);
                    }
                }
                return(true);

            case SecurityRuleType.Username:
                list = TableHelper.SelectRows <SecurityRule>(TableHelper.MakeDictionary("Type", SecurityRuleType.Username.ToString()));
                foreach (var rule in list)
                {
                    if (rule.Value == Expression)
                    {
                        return(false);
                    }
                }
                return(true);

            case SecurityRuleType.IPRange:
                list = TableHelper.SelectRows <SecurityRule>(TableHelper.MakeDictionary("Type", SecurityRuleType.IPRange.ToString()));
                foreach (var rule in list)
                {
                    if (IPExtensions.IsInRange(Expression, rule.Value))
                    {
                        return(false);
                    }
                }
                return(true);
            }
            return(false);
        }
Пример #2
0
        /// <summary>
        /// Bans all users which match the security role
        /// </summary>
        /// <param name="Role"></param>
        /// <param name="Expression">Country name, IP address or username</param>
        public static void ActivateSecurityRole(SecurityRuleType Rule, string Expression)
        {
            List <Member> ToBeBanned = new List <Member>();

            var where = TableHelper.MakeDictionary("AccountStatusInt", (int)MemberStatus.Active);

            switch (Rule)
            {
            case SecurityRuleType.Country:
                where.Add(Member.Columns.Country, Expression);
                ToBeBanned = TableHelper.SelectRows <Member>(where);
                break;

            case SecurityRuleType.IP:
                where.Add(Member.Columns.LastUsedIP, Expression);
                ToBeBanned = TableHelper.SelectRows <Member>(where);

                where.Remove(Member.Columns.LastUsedIP);
                where.Add(Member.Columns.RegisteredWithIP, Expression);
                ToBeBanned.AddRange(TableHelper.SelectRows <Member>(where));
                break;

            case SecurityRuleType.Username:
                where.Add(Member.Columns.Username, Expression);
                ToBeBanned = TableHelper.SelectRows <Member>(where);
                break;

            case SecurityRuleType.IPRange:
                var list = TableHelper.SelectRows <Member>(where);
                foreach (var elem in list)
                {
                    if (IPExtensions.IsInRange(elem.LastUsedIP, Expression) ||
                        IPExtensions.IsInRange(elem.RegisteredWithIP, Expression))
                    {
                        ToBeBanned.Add(elem);
                    }
                }
                break;
            }

            foreach (var user in ToBeBanned)
            {
                user.BanBlacklist(Rule.ToString());
                user.SaveStatus();
            }
        }