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