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