예제 #1
0
        /// <summary>
        /// Returns rule type for cuttent tenent
        /// </summary>
        /// <returns></returns>
        private PermissionRule.AccessRule GetRuleType()
        {
            var list = (List <AzRecord>)CoreContext.AuthorizationManager.GetAces(Guid.Empty, TcpIpFilterActions.TcpIpFilterAction.ID);

            if (list.Count == 0)
            {
                return(PermissionRule.AccessRule.Deny);
            }

            if (list.FindAll(x => TcpIpFilterSecurityObject.ParseObjectId(x.ObjectId).ToString() != "0.0.0.0").Count > 0)
            {
                return(PermissionRule.AccessRule.Restrictions);
            }

            var internalRules =
                list.FindAll(x => TcpIpFilterSecurityObject.ParseObjectId(x.ObjectId).ToString() == "0.0.0.0");

            foreach (var azRecord in internalRules)
            {
                if (azRecord.Reaction == AceType.Deny)
                {
                    return(PermissionRule.AccessRule.Deny);
                }
            }

            return(PermissionRule.AccessRule.Access);
        }
예제 #2
0
        /// <summary>
        /// Group users with their ip addresses
        /// </summary>
        /// <param name="list">AzRecord collection</param>
        /// <returns>UserData collectionn</returns>
        private List <UserData> SplitUsers(IEnumerable <AzRecord> list)
        {
            var nList = new List <UserData>();

            foreach (var azRecord in list)
            {
                var ip   = TcpIpFilterSecurityObject.ParseObjectId(azRecord.ObjectId);
                var user = GetUser(nList, azRecord.SubjectId);

                if (user == null)
                {
                    var userInfo = CoreContext.UserManager.GetUsers(azRecord.SubjectId);

                    if (userInfo.ID != ASC.Core.Users.Constants.LostUser.ID)
                    {
                        if (ip.ToString() != "0.0.0.0")
                        {
                            nList.Add(new UserData(userInfo)
                            {
                                IPs = new List <string> {
                                    ip.ToString()
                                },
                                Internal = (ip.ToString() == "0.0.0.0")
                            });
                        }
                    }
                    else
                    {
                        var group = CoreContext.GroupManager.GetGroupInfo(azRecord.SubjectId);
                        nList.Add(new UserData(group.Name, group.ID, ip.ToString() == "0.0.0.0")
                        {
                            IPs = new List <string> {
                                ip.ToString()
                            }
                        });
                    }
                }
                else
                {
                    if (user.Internal)
                    {
                        user.Internal = (ip.ToString() == "0.0.0.0");
                    }
                    if (ip.ToString() != "0.0.0.0")
                    {
                        user.IPs.Add(ip.ToString());
                    }
                }
            }
            return(nList);
        }