示例#1
0
 private static void FixTenantInfo(RequestJobXML requestJobXML)
 {
     if (!CommonUtils.IsMultiTenantEnabled())
     {
         requestJobXML.OrganizationId = OrganizationId.ForestWideOrgId;
         return;
     }
     if (requestJobXML.OrganizationId == OrganizationId.ForestWideOrgId && requestJobXML.ExternalDirectoryOrganizationId == Guid.Empty && requestJobXML.PartitionHint == null)
     {
         return;
     }
     if (requestJobXML.OrganizationId != OrganizationId.ForestWideOrgId && requestJobXML.PartitionHint == null)
     {
         if (requestJobXML.ExternalDirectoryOrganizationId != Guid.Empty)
         {
             requestJobXML.OrganizationId = OrganizationId.FromExternalDirectoryOrganizationId(requestJobXML.ExternalDirectoryOrganizationId);
         }
         requestJobXML.PartitionHint = TenantPartitionHint.FromOrganizationId(requestJobXML.OrganizationId);
         requestJobXML.ExternalDirectoryOrganizationId = requestJobXML.PartitionHint.GetExternalDirectoryOrganizationId();
         return;
     }
     if (requestJobXML.PartitionHint != null)
     {
         if (requestJobXML.ExternalDirectoryOrganizationId == Guid.Empty)
         {
             requestJobXML.ExternalDirectoryOrganizationId = requestJobXML.PartitionHint.GetExternalDirectoryOrganizationId();
         }
         requestJobXML.OrganizationId = OrganizationId.FromExternalDirectoryOrganizationId(requestJobXML.ExternalDirectoryOrganizationId);
     }
 }
 internal static void ApplyOrganization(TransactionalRequestJob dataObject, OrganizationId organizationId)
 {
     dataObject.OrganizationId = organizationId;
     if (organizationId != OrganizationId.ForestWideOrgId)
     {
         dataObject.PartitionHint = TenantPartitionHint.FromOrganizationId(organizationId);
         dataObject.ExternalDirectoryOrganizationId = dataObject.PartitionHint.GetExternalDirectoryOrganizationId();
     }
 }
        protected override IConfigDataProvider CreateSession()
        {
            base.CurrentOrganizationId = this.ResolveCurrentOrganization();
            this.partitionMailbox      = MigrationObjectTaskBase <MigrationConfigIdParameter> .ResolvePartitionMailbox(this.Partition, base.TenantGlobalCatalogSession, base.ServerSettings, new DataAccessHelper.CategorizedGetDataObjectDelegate(base.GetDataObject <ADUser>), new Task.ErrorLoggerDelegate(base.WriteError), base.CurrentOrganizationId == OrganizationId.ForestWideOrgId && MapiTaskHelper.IsDatacenter);

            TenantPartitionHint partitionHint = TenantPartitionHint.FromOrganizationId(base.CurrentOrganizationId);

            MigrationLogger.Initialize();
            MigrationLogContext.Current.Source       = "Set-MigrationConfig";
            MigrationLogContext.Current.Organization = base.CurrentOrganizationId.OrganizationalUnit;
            return(MigrationSessionDataProvider.CreateDataProvider("SetMigrationConfig", MigrationHelperBase.CreateRecipientSession(partitionHint), this.partitionMailbox));
        }
        public static byte[] ConvertTenantHint(byte[] originalSignature, MailboxSignatureFlags originalSignatureFlags, TenantPartitionHint tenantHint)
        {
            MailboxSignatureSectionsContainer mailboxSignatureSectionsContainer;

            if (originalSignatureFlags == MailboxSignatureFlags.GetLegacy)
            {
                mailboxSignatureSectionsContainer = MailboxSignatureSectionsContainer.Create(MailboxSignatureSectionType.BasicInformation, new MailboxSignatureConverter.MailboxBasicInformationSectionCreator(originalSignature));
            }
            else
            {
                mailboxSignatureSectionsContainer = MailboxSignatureSectionsContainer.Parse(originalSignature, NullMailboxSignatureSectionProcessor.Instance);
            }
            if (tenantHint == null)
            {
                tenantHint = TenantPartitionHint.FromOrganizationId(OrganizationId.ForestWideOrgId);
            }
            byte[] persistablePartitionHint = tenantHint.GetPersistablePartitionHint();
            int    num = TenantHintHelper.SerializeTenantHint(persistablePartitionHint, null, 0);

            byte[] array = new byte[num];
            TenantHintHelper.SerializeTenantHint(persistablePartitionHint, array, 0);
            mailboxSignatureSectionsContainer.UpdateSection(new MailboxSignatureSectionMetadata(MailboxSignatureSectionType.TenantHint, 1, 1, persistablePartitionHint.Length), array);
            return(mailboxSignatureSectionsContainer.Serialize());
        }
        // Token: 0x06001246 RID: 4678 RVA: 0x000687E8 File Offset: 0x000669E8
        public override MailboxData CreateOnDemandMailboxData(Guid itemGuid, string parameters)
        {
            OABGeneratorAssistantRunNowParameters oabgeneratorAssistantRunNowParameters;

            if (!OABGeneratorAssistantRunNowParameters.TryParse(parameters, out oabgeneratorAssistantRunNowParameters))
            {
                OABGeneratorAssistant.Tracer.TraceError <string>((long)this.GetHashCode(), "OABGeneratorAssistant.CreateOnDemandMailboxData: ignoring on-demand request due malformed string parameter: {0}.", parameters);
                return(null);
            }
            ADSessionSettings sessionSettings             = OABVariantConfigurationSettings.IsMultitenancyEnabled ? ADSessionSettings.FromAllTenantsPartitionId(oabgeneratorAssistantRunNowParameters.PartitionId) : ADSessionSettings.FromRootOrgScopeSet();
            ADUser            organizationalMailboxFromAD = this.GetOrganizationalMailboxFromAD(sessionSettings, itemGuid);

            if (organizationalMailboxFromAD == null)
            {
                OABGeneratorAssistant.Tracer.TraceError <Guid>((long)this.GetHashCode(), "OABGeneratorAssistant.CreateOnDemandMailboxData: ignoring on-demand request due to unknown organization mailbox: {0}", itemGuid);
                return(null);
            }
            return(new OABGeneratorMailboxData(organizationalMailboxFromAD.OrganizationId, base.DatabaseInfo.Guid, organizationalMailboxFromAD.ExchangeGuid, organizationalMailboxFromAD.DisplayName, organizationalMailboxFromAD.Sid, organizationalMailboxFromAD.PrimarySmtpAddress.Domain, oabgeneratorAssistantRunNowParameters.ObjectGuid, TenantPartitionHint.FromOrganizationId(organizationalMailboxFromAD.OrganizationId), oabgeneratorAssistantRunNowParameters.Description));
        }