Exemple #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);
        }
Exemple #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();
            }
        }
Exemple #3
0
    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);
    }
Exemple #4
0
    /// <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);
    }