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(); } }
public static bool isOK(string restictedIps, string RequestIp) { if (restictedIps.Contains(RequestIp)) { return(true); } if (restictedIps.Contains("-")) { string[] allIps = restictedIps.Trim().Split(','); foreach (var ip in allIps) { if (ip.Trim().Contains("-") && IPExtensions.IsInRange(RequestIp, ip.Trim())) { return(true); } } } return(false); }
/// <summary> /// Decides wheather the specified IP is in specified range (X.X.X.X-X.X.X.X) /// </summary> /// <param name="ip"></param> /// <param name="range"></param> /// <returns></returns> public static bool IsInRange(string ip, string range) { try { IPAddress InputIP = IPAddress.Parse(ip); string RangeLeft = range.Substring(0, range.IndexOf("-")); string RangeRight = range.Substring(range.IndexOf("-") + 1); IPAddress LeftIP = IPAddress.Parse(RangeLeft); IPAddress RightIP = IPAddress.Parse(RangeRight); if (IPExtensions.Compare(InputIP, LeftIP) >= 0 && IPExtensions.Compare(InputIP, RightIP) <= 0) { return(true); } } catch (Exception ex) { } return(false); }