Пример #1
0
 public static DiskSpace GetMemberDiskSpace( string UserID )
 {
     long limit = 0;
                 long UsedSpaceOnServer = 0;
                 Store store = Store.GetStore();
          Domain domain = store.GetDomainForUser(UserID);
        Simias.Policy.Rule rule = null;
        if(domain == null)
     throw new Exception("Unable to access domain");
        Simias.Storage.Member simMem = domain.GetMemberByID(UserID);
        if(simMem == null)
     throw new Exception("Invalid UserID");
     Property DiskLimitProp = simMem.Properties.GetSingleProperty(Simias.Policy.DiskSpaceQuota.DiskSpaceQuotaPolicyID);
     Property DiskSpaceUsedProp = simMem.Properties.GetSingleProperty(Simias.Policy.DiskSpaceQuota.UsedDiskSpaceOnServer);
     if(DiskLimitProp != null)
     {
       if(DiskLimitProp.Type == Syntax.String)
          rule = new Simias.Policy.Rule(DiskLimitProp.Value as string);
       else
          rule = new Simias.Policy.Rule(DiskLimitProp.Value);
         limit = (long)rule.Operand;
     }
     if(DiskSpaceUsedProp != null)
     {
         UsedSpaceOnServer = (long)DiskSpaceUsedProp.Value;
     }
     return new DiskSpace(UsedSpaceOnServer, limit);
 }
Пример #2
0
        /// <summary>
        /// WebMethod that gets the DiskSpaceQuota for a given member
        /// </summary>
        /// <param name = "UserID">
        /// The ID of the member to get the DiskSpaceQuota
        /// </param>
        /// <returns>
        /// DiskSpaceQuota for the specified member
        /// </returns>
        public static DiskSpace GetMemberDiskSpace(string UserID)
        {
            long   limit             = 0;
            long   UsedSpaceOnServer = 0;
            Store  store             = Store.GetStore();
            Domain domain            = store.GetDomainForUser(UserID);

            Simias.Policy.Rule rule = null;
            if (domain == null)
            {
                throw new Exception("Unable to access domain");
            }

            Simias.Storage.Member simMem = domain.GetMemberByID(UserID);
            if (simMem == null)
            {
                throw new Exception("Invalid UserID");
            }
            Property DiskLimitProp     = simMem.Properties.GetSingleProperty(Simias.Policy.DiskSpaceQuota.DiskSpaceQuotaPolicyID);
            Property DiskSpaceUsedProp = simMem.Properties.GetSingleProperty(Simias.Policy.DiskSpaceQuota.UsedDiskSpaceOnServer);

            if (DiskLimitProp != null)
            {
                if (DiskLimitProp.Type == Syntax.String)
                {
                    rule = new Simias.Policy.Rule(DiskLimitProp.Value as string);
                }
                else
                {
                    rule = new Simias.Policy.Rule(DiskLimitProp.Value);
                }
                limit = (long)rule.Operand;
            }

            if (DiskSpaceUsedProp != null)
            {
                UsedSpaceOnServer = (long)DiskSpaceUsedProp.Value;
            }
            return(new DiskSpace(UsedSpaceOnServer, limit));

            /*Simias.DomainServices.DomainAgent da = new Simias.DomainServices.DomainAgent();
             * long spaceUsed = da.GetDomainDiskSpaceForMember( UserID, out limit );
             * return new DiskSpace( spaceUsed, limit );*/
        }
Пример #3
0
        /// <summary>
        /// Extracts all the member policies from POBox and stores them as part of member object on master . No aggregation is done.
        /// </summary>
        public void ExtractMemberPolicies(string domainID, Member member, ShallowNode sn, bool OnMaster)
        {
            Store  store    = Store.GetStore();
            Domain domain   = store.GetDomain(domainID);
            string RuleList = "RuleList";

            Simias.Policy.Rule rule = null;
            int      Value          = -1;
            bool     committed      = false;
            Property FileTypeProperty;
            Property EncProperty;
            Property SyncIntervalProperty;
            ICSList  list;

            POBox.POBox poBox = POBox.POBox.FindPOBox(store, domainID, member.UserID);
            if (poBox == null)
            {
                return;
            }

            // First extract rule based policies

            // Extracting FileType policy
            list = poBox.Search(PropertyTags.PolicyID, Simias.Policy.FileTypeFilter.FileTypeFilterPolicyID, SearchOp.Equal);
            Simias.Policy.Policy tempPolicy = null;
            foreach (ShallowNode snl in list)
            {
                tempPolicy = new Simias.Policy.Policy(poBox, snl);
                if (tempPolicy.IsSystemPolicy)
                {
                    MultiValuedList mvl = tempPolicy.Properties.GetProperties(RuleList);
                    if (mvl.Count > 0)
                    {
                        log.Debug("mvl count for filetype filter is" + mvl.Count);
                        foreach (Property p in mvl)
                        {
                            if (p != null)
                            {
                                rule             = new Simias.Policy.Rule(p.Value);
                                FileTypeProperty = new Property(Simias.Policy.FileTypeFilter.FileTypeFilterPolicyID, rule.ToString());
                                FileTypeProperty.ServerOnlyProperty = true;
                                member.Properties.AddNodeProperty(FileTypeProperty);
                            }
                        }
                    }
                }
            }
            GetRuleForPolicyID(poBox, Simias.Policy.DiskSpaceQuota.DiskSpaceQuotaPolicyID, ref member);
            GetRuleForPolicyID(poBox, Simias.Policy.FileSizeFilter.FileSizeFilterPolicyID, ref member);
            Value = GetValueForPolicyID(poBox, Simias.Policy.SecurityState.EncryptionStatePolicyID, Simias.Policy.SecurityState.StatusTag);
            if (Value != -1)
            {
                EncProperty = new Property(Simias.Policy.SecurityState.EncryptionStatePolicyID, Value);
                EncProperty.ServerOnlyProperty = true;
                member.Properties.ModifyProperty(EncProperty);
            }
            Value = GetValueForPolicyID(poBox, Simias.Policy.SyncInterval.SyncIntervalPolicyID, Simias.Policy.SyncInterval.IntervalTag);
            if (Value != -1)
            {
                SyncIntervalProperty = new Property(Simias.Policy.SyncInterval.SyncIntervalPolicyID, Value);
                SyncIntervalProperty.ServerOnlyProperty = true;
                member.Properties.ModifyProperty(SyncIntervalProperty);
            }

            if (OnMaster)
            {
                // User is provisioned on master so no need to call web-service
                domain.Commit(member);
                poBox.Commit(poBox.Delete());
                log.Debug("Committed member's property(policy) on master successfully so deleting his POBox.. " + member.FN);
            }
            else
            {
                committed = CommitOnMaster(domainID, member, sn);
                if (committed == true)
                {
                    log.Debug("Committed member's property(policy) on master successfully so deleting his POBox.. " + member.FN);
                    poBox.Commit(poBox.Delete());
                }
                else
                {
                    log.Debug("Could not commit member's property(policy) on master so not deleting his POBox.. Next time it can be tried");
                }
            }
        }