コード例 #1
0
        // Token: 0x06001A01 RID: 6657 RVA: 0x0005DFA0 File Offset: 0x0005C1A0
        protected virtual IEnumerable <RmsTemplate> AcquireRmsTemplates(OrganizationId organizationId)
        {
            this.HandleSimultaneousExpensiveRmsTemplateCalls(organizationId);
            IEnumerable <RmsTemplate> result;

            try
            {
                IEnumerable <RmsTemplate> enumerable;
                if (RmsClientManager.IRMConfig.IsClientAccessServerEnabledForTenant(organizationId))
                {
                    enumerable = RmsClientManager.AcquireRmsTemplates(organizationId, false);
                }
                else
                {
                    enumerable = DrmEmailConstants.EmptyTemplateArray;
                }
                result = enumerable;
            }
            finally
            {
                if (GetComplianceConfiguration.organizationsDoingExpensiveRetrivals.Contains(organizationId))
                {
                    lock (GetComplianceConfiguration.organizationsDoingExpensiveRetrivals)
                    {
                        GetComplianceConfiguration.organizationsDoingExpensiveRetrivals.Remove(organizationId);
                    }
                }
            }
            return(result);
        }
コード例 #2
0
        public static IEnumerable <RmsTemplate> GetRmsTemplates(OrganizationId organizationId)
        {
            bool flag = false;
            IEnumerable <RmsTemplate> result;

            try
            {
                if (!RmsClientManager.IRMConfig.IsInternalLicensingEnabledForTenant(organizationId))
                {
                    RmsTemplateReaderCache.negativeCacheTimeoutForFirstOrg = ExDateTime.MinValue;
                    throw new AirSyncPermanentException(StatusCode.IRM_FeatureDisabled, false)
                          {
                              ErrorStringForProtocolLogger = "rtrcGrtInternalLicensingDisabled"
                          };
                }
                if (organizationId == OrganizationId.ForestWideOrgId && RmsTemplateReaderCache.negativeCacheTimeoutForFirstOrg > ExDateTime.UtcNow)
                {
                    AirSyncDiagnostics.TraceDebug(ExTraceGlobals.RequestsTracer, null, "Found RMSTemplateReader for first org in negative cache");
                    throw new AirSyncPermanentException(StatusCode.IRM_TransientError, false)
                          {
                              ErrorStringForProtocolLogger = "rtrcGrtNegativeCacheHit"
                          };
                }
                result = RmsClientManager.AcquireRmsTemplates(organizationId, false);
            }
            catch (ExchangeConfigurationException ex)
            {
                AirSyncDiagnostics.TraceError <ExchangeConfigurationException>(ExTraceGlobals.RequestsTracer, null, "ExchangeConfigurationException encountered while acquiring RMS templates: {0}", ex);
                flag = true;
                throw new AirSyncPermanentException(StatusCode.IRM_TransientError, ex, false)
                      {
                          ErrorStringForProtocolLogger = "rtrcGrtExchangeConfigurationException"
                      };
            }
            catch (RightsManagementException ex2)
            {
                AirSyncDiagnostics.TraceError <RightsManagementException>(ExTraceGlobals.RequestsTracer, null, "RightsManagementException encountered while acquiring RMS templates: {0}", ex2);
                if (ex2.FailureCode != RightsManagementFailureCode.InternalLicensingDisabled)
                {
                    flag = true;
                }
                throw new AirSyncPermanentException(ex2.IsPermanent ? StatusCode.IRM_PermanentError : StatusCode.IRM_TransientError, ex2, false)
                      {
                          ErrorStringForProtocolLogger = "rtrcGrtRightsManagementException" + ex2.FailureCode.ToString()
                      };
            }
            finally
            {
                if (organizationId == OrganizationId.ForestWideOrgId && flag)
                {
                    RmsTemplateReaderCache.negativeCacheTimeoutForFirstOrg = ExDateTime.UtcNow.Add(GlobalSettings.NegativeRmsTemplateCacheExpirationInterval);
                }
            }
            return(result);
        }
コード例 #3
0
        private IEnumerable <RmsTemplate> AcquireRmsTemplates()
        {
            if (this.orgId == OrganizationId.ForestWideOrgId)
            {
                return(RmsClientManager.AcquireRmsTemplates(this.orgId, true));
            }
            if (this.irmConfiguration == null || (!this.irmConfiguration.InternalLicensingEnabled && !this.displayTemplatesIfInternalLicensingDisabled))
            {
                return(DrmEmailConstants.EmptyTemplateArray);
            }
            RMSTrustedPublishingDomain rmstrustedPublishingDomain = this.FindTPD();

            if (rmstrustedPublishingDomain == null)
            {
                return(DrmEmailConstants.EmptyTemplateArray);
            }
            List <RmsTemplate> list = null;

            if (!MultiValuedPropertyBase.IsNullOrEmpty(rmstrustedPublishingDomain.RMSTemplates))
            {
                list = new List <RmsTemplate>(rmstrustedPublishingDomain.RMSTemplates.Count + 2);
                using (MultiValuedProperty <string> .Enumerator enumerator = rmstrustedPublishingDomain.RMSTemplates.GetEnumerator())
                {
                    while (enumerator.MoveNext())
                    {
                        string          encodedTemplate = enumerator.Current;
                        RmsTemplateType type            = RmsTemplateType.Archived;
                        string          templateXrml    = RMUtil.DecompressTemplate(encodedTemplate, out type);
                        if (this.ShouldFetch(type))
                        {
                            list.Add(RmsTemplate.CreateServerTemplateFromTemplateDefinition(templateXrml, type));
                        }
                    }
                    goto IL_CE;
                }
            }
            list = new List <RmsTemplate>(2);
IL_CE:
            if (this.typeToFetch != RmsTemplateType.Archived && rmstrustedPublishingDomain.Default)
            {
                list.Add(RmsTemplate.DoNotForward);
                if (this.irmConfiguration.InternetConfidentialEnabled)
                {
                    list.Add(RmsTemplate.InternetConfidential);
                }
            }
            return(list);
        }
コード例 #4
0
        private static RmsTemplate LookupRmsTemplate(Guid templateId, MailboxSession session)
        {
            OrganizationId organizationId = session.MailboxOwner.MailboxInfo.OrganizationId;

            IrmUtils.ThrowIfInternalLicensingDisabled(organizationId);
            IEnumerable <RmsTemplate> source = RmsClientManager.AcquireRmsTemplates(organizationId, false);
            RmsTemplate result;

            try
            {
                result = source.SingleOrDefault((RmsTemplate template) => template.Id.Equals(templateId));
            }
            catch (InvalidOperationException)
            {
                throw new RightsManagementPermanentException(Strings.ErrorRightsManagementDuplicateTemplateId(templateId.ToString()), null);
            }
            return(result);
        }
コード例 #5
0
 public IEnumerable <RmsTemplate> GetRmsTemplates()
 {
     this.errorAcquiringTemplates = false;
     if (this.IsInternalLicensingEnabled)
     {
         try
         {
             return(RmsClientManager.AcquireRmsTemplates(this.organizationId, false));
         }
         catch (ExchangeConfigurationException arg)
         {
             ExTraceGlobals.CoreTracer.TraceError <ExchangeConfigurationException>(0L, "ExchangeConfigurationException while loading RMS templates: {0}", arg);
             this.errorAcquiringTemplates = true;
         }
         catch (RightsManagementException arg2)
         {
             ExTraceGlobals.CoreTracer.TraceError <RightsManagementException>(0L, "RightsManagementException while Loading RMS templates: {0}", arg2);
             this.errorAcquiringTemplates = true;
         }
     }
     return(RmsTemplateReader.EmptyRmsTemplateList);
 }