예제 #1
0
        public override void Initialize(TransactionalRequestJob syncRequest)
        {
            base.Initialize(syncRequest);
            base.RequestJobIdentity      = syncRequest.Identity.ToString();
            base.IncrementalSyncInterval = syncRequest.IncrementalSyncInterval;
            Guid targetExchangeGuid = syncRequest.TargetExchangeGuid;
            MailboxCopierFlags mailboxCopierFlags = MailboxCopierFlags.None;
            LocalizedString    sourceTracingID    = LocalizedString.Empty;

            switch (syncRequest.SyncProtocol)
            {
            case SyncProtocol.Imap:
                mailboxCopierFlags |= MailboxCopierFlags.Imap;
                sourceTracingID     = MrsStrings.ImapTracingId(syncRequest.EmailAddress.ToString());
                break;

            case SyncProtocol.Eas:
                mailboxCopierFlags |= MailboxCopierFlags.Eas;
                sourceTracingID     = MrsStrings.EasTracingId(syncRequest.EmailAddress.ToString());
                break;

            case SyncProtocol.Pop:
                mailboxCopierFlags |= MailboxCopierFlags.Pop;
                sourceTracingID     = MrsStrings.PopTracingId(syncRequest.EmailAddress.ToString());
                break;
            }
            string orgID = (syncRequest.OrganizationId != null && syncRequest.OrganizationId.OrganizationalUnit != null) ? (syncRequest.OrganizationId.OrganizationalUnit.Name + "\\") : string.Empty;

            base.MailboxMerger = new MailboxMerger(Guid.Empty, targetExchangeGuid, syncRequest, this, mailboxCopierFlags, sourceTracingID, MrsStrings.PrimaryMailboxTracingId(orgID, targetExchangeGuid));
        }
예제 #2
0
        public override void Initialize(TransactionalRequestJob mergeRequest)
        {
            base.Initialize(mergeRequest);
            if (mergeRequest.RequestType == MRSRequestType.MailboxImport || mergeRequest.RequestType == MRSRequestType.MailboxExport || mergeRequest.RequestType == MRSRequestType.MailboxRestore || mergeRequest.RequestType == MRSRequestType.Sync)
            {
                return;
            }
            base.RequestJobIdentity = mergeRequest.Identity.ToString();
            bool            flag            = mergeRequest.RequestStyle == RequestStyle.CrossOrg && mergeRequest.Direction == RequestDirection.Pull;
            bool            flag2           = mergeRequest.RequestStyle == RequestStyle.CrossOrg && mergeRequest.Direction == RequestDirection.Push;
            LocalizedString sourceTracingID = LocalizedString.Empty;
            LocalizedString targetTracingID = LocalizedString.Empty;
            string          orgID           = (mergeRequest.OrganizationId != null && mergeRequest.OrganizationId.OrganizationalUnit != null) ? (mergeRequest.OrganizationId.OrganizationalUnit.Name + "\\") : string.Empty;
            Guid            guid;

            if (flag)
            {
                guid            = Guid.Empty;
                sourceTracingID = MrsStrings.RPCHTTPMailboxId(mergeRequest.RemoteMailboxLegacyDN);
            }
            else
            {
                guid            = mergeRequest.SourceExchangeGuid;
                sourceTracingID = (mergeRequest.SourceIsArchive ? MrsStrings.ArchiveMailboxTracingId(orgID, guid) : MrsStrings.PrimaryMailboxTracingId(orgID, guid));
            }
            Guid guid2;

            if (flag2)
            {
                guid2           = Guid.Empty;
                targetTracingID = MrsStrings.RPCHTTPMailboxId(mergeRequest.RemoteMailboxLegacyDN);
            }
            else
            {
                guid2           = mergeRequest.TargetExchangeGuid;
                targetTracingID = (mergeRequest.TargetIsArchive ? MrsStrings.ArchiveMailboxTracingId(orgID, guid2) : MrsStrings.PrimaryMailboxTracingId(orgID, guid2));
            }
            MailboxCopierFlags mailboxCopierFlags = MailboxCopierFlags.Merge;

            if (mergeRequest.RequestStyle == RequestStyle.CrossOrg)
            {
                mailboxCopierFlags |= MailboxCopierFlags.CrossOrg;
            }
            if (mergeRequest.SourceIsArchive)
            {
                mailboxCopierFlags |= MailboxCopierFlags.SourceIsArchive;
            }
            if (mergeRequest.TargetIsArchive)
            {
                mailboxCopierFlags |= MailboxCopierFlags.TargetIsArchive;
            }
            this.MailboxMerger = new MailboxMerger(guid, guid2, mergeRequest, this, mailboxCopierFlags, sourceTracingID, targetTracingID);
        }
예제 #3
0
        public override void Initialize(TransactionalRequestJob importRequest)
        {
            base.Initialize(importRequest);
            base.RequestJobIdentity = importRequest.Identity.ToString();
            Guid               targetExchangeGuid = importRequest.TargetExchangeGuid;
            string             orgID           = (importRequest.OrganizationId != null && importRequest.OrganizationId.OrganizationalUnit != null) ? (importRequest.OrganizationId.OrganizationalUnit.Name + "\\") : string.Empty;
            LocalizedString    sourceTracingID = MrsStrings.PstTracingId(importRequest.FilePath);
            LocalizedString    targetTracingID = importRequest.TargetIsArchive ? MrsStrings.ArchiveMailboxTracingId(orgID, targetExchangeGuid) : MrsStrings.PrimaryMailboxTracingId(orgID, targetExchangeGuid);
            MailboxCopierFlags flags           = MailboxCopierFlags.Merge | MailboxCopierFlags.SourceIsPST;

            base.MailboxMerger = new MailboxMerger(Guid.Empty, targetExchangeGuid, importRequest, this, flags, sourceTracingID, targetTracingID);
        }
예제 #4
0
        public override void Initialize(TransactionalRequestJob restoreRequest)
        {
            base.Initialize(restoreRequest);
            base.RequestJobIdentity = restoreRequest.Identity.ToString();
            Guid               targetExchangeGuid = restoreRequest.TargetExchangeGuid;
            Guid               sourceExchangeGuid = restoreRequest.SourceExchangeGuid;
            string             orgID           = (restoreRequest.OrganizationId != null && restoreRequest.OrganizationId.OrganizationalUnit != null) ? (restoreRequest.OrganizationId.OrganizationalUnit.Name + "\\") : string.Empty;
            string             dbName          = (restoreRequest.SourceDatabase != null) ? restoreRequest.SourceDatabase.Name : ((restoreRequest.RemoteDatabaseGuid != null) ? restoreRequest.RemoteDatabaseGuid.Value.ToString() : string.Empty);
            LocalizedString    sourceTracingID = MrsStrings.RestoreMailboxTracingId(dbName, restoreRequest.SourceExchangeGuid);
            LocalizedString    targetTracingID = restoreRequest.TargetIsArchive ? MrsStrings.ArchiveMailboxTracingId(orgID, targetExchangeGuid) : MrsStrings.PrimaryMailboxTracingId(orgID, targetExchangeGuid);
            MailboxCopierFlags flags           = MailboxCopierFlags.Merge;

            base.MailboxMerger = new MailboxMerger(sourceExchangeGuid, targetExchangeGuid, restoreRequest, this, flags, sourceTracingID, targetTracingID);
        }
예제 #5
0
        public override void Initialize(TransactionalRequestJob migrationRequestJob)
        {
            MrsTracer.Service.Function("PublicFolderMailboxMigrationJob.Initialize: SourceDatabase=\"{0}\", Flags={1}", new object[]
            {
                migrationRequestJob.SourceDatabase,
                migrationRequestJob.Flags
            });
            TenantPublicFolderConfigurationCache.Instance.RemoveValue(migrationRequestJob.OrganizationId);
            this.publicFolderConfiguration = TenantPublicFolderConfigurationCache.Instance.GetValue(migrationRequestJob.OrganizationId);
            base.Initialize(migrationRequestJob);
            LocalizedString    sourceTracingID    = LocalizedString.Empty;
            MailboxCopierFlags mailboxCopierFlags = MailboxCopierFlags.PublicFolderMigration;
            bool flag = migrationRequestJob.RequestStyle == RequestStyle.CrossOrg;

            if (flag)
            {
                sourceTracingID     = MrsStrings.RPCHTTPPublicFoldersId(migrationRequestJob.RemoteMailboxServerLegacyDN);
                mailboxCopierFlags |= MailboxCopierFlags.CrossOrg;
            }
            this.publicFolderMailboxMigrator = new PublicFolderMailboxMigrator(this.publicFolderConfiguration, migrationRequestJob.FolderToMailboxMap, migrationRequestJob.TargetExchangeGuid, mailboxCopierFlags | MailboxCopierFlags.Root, migrationRequestJob, this, sourceTracingID);
        }
        public override void Initialize(TransactionalRequestJob migrationRequestJob)
        {
            MrsTracer.Service.Function("PublicFolderMigrationJob.Initialize: SourceDatabase=\"{0}\", Flags={1}", new object[]
            {
                migrationRequestJob.SourceDatabase,
                migrationRequestJob.Flags
            });
            TenantPublicFolderConfigurationCache.Instance.RemoveValue(migrationRequestJob.OrganizationId);
            this.publicFolderConfiguration = TenantPublicFolderConfigurationCache.Instance.GetValue(migrationRequestJob.OrganizationId);
            this.publicFolderMigrators     = new Dictionary <Guid, PublicFolderMigrator>();
            base.Initialize(migrationRequestJob);
            if (this.publicFolderConfiguration.GetHierarchyMailboxInformation().Type != PublicFolderInformation.HierarchyType.InTransitMailboxGuid)
            {
                return;
            }
            LocalizedString    sourceTracingID    = LocalizedString.Empty;
            MailboxCopierFlags mailboxCopierFlags = MailboxCopierFlags.PublicFolderMigration;
            bool flag = migrationRequestJob.RequestStyle == RequestStyle.CrossOrg;

            if (flag)
            {
                sourceTracingID     = MrsStrings.RPCHTTPPublicFoldersId(migrationRequestJob.RemoteMailboxServerLegacyDN);
                mailboxCopierFlags |= MailboxCopierFlags.CrossOrg;
            }
            Guid hierarchyMailboxGuid  = this.publicFolderConfiguration.GetHierarchyMailboxInformation().HierarchyMailboxGuid;
            PublicFolderMigrator value = new PublicFolderMigrator(this.publicFolderConfiguration, migrationRequestJob.FolderToMailboxMap, hierarchyMailboxGuid, mailboxCopierFlags | MailboxCopierFlags.Root, migrationRequestJob, this, sourceTracingID);

            this.publicFolderMigrators[hierarchyMailboxGuid] = value;
            foreach (FolderToMailboxMapping folderToMailboxMapping in migrationRequestJob.FolderToMailboxMap)
            {
                Guid mailboxGuid = folderToMailboxMapping.MailboxGuid;
                if (mailboxGuid != hierarchyMailboxGuid && !this.publicFolderMigrators.ContainsKey(mailboxGuid))
                {
                    PublicFolderMigrator value2 = new PublicFolderMigrator(this.publicFolderConfiguration, migrationRequestJob.FolderToMailboxMap, mailboxGuid, mailboxCopierFlags, migrationRequestJob, this, sourceTracingID);
                    this.publicFolderMigrators[mailboxGuid] = value2;
                }
            }
        }
예제 #7
0
 internal PublicFolderMigrator(TenantPublicFolderConfiguration publicFolderConfiguration, List <FolderToMailboxMapping> folderToMailboxMap, Guid targetMailboxGuid, MailboxCopierFlags copierFlags, TransactionalRequestJob migrationRequestJob, BaseJob publicFolderMigrationJob, LocalizedString sourceTracingID) : base(Guid.Empty, targetMailboxGuid, migrationRequestJob, publicFolderMigrationJob, copierFlags, sourceTracingID, new LocalizedString(targetMailboxGuid.ToString()))
 {
     MrsTracer.Service.Function("PublicFolderMigrator.Constructor", new object[0]);
     this.publicFolderConfiguration = publicFolderConfiguration;
     this.folderToMailboxMap        = folderToMailboxMap;
 }
예제 #8
0
 public MailboxMerger(Guid sourceMailboxGuid, Guid targetMailboxGuid, TransactionalRequestJob requestJob, BaseJob mrsJob, MailboxCopierFlags flags, LocalizedString sourceTracingID, LocalizedString targetTracingID) : base(sourceMailboxGuid, targetMailboxGuid, requestJob, mrsJob, flags, sourceTracingID, targetTracingID)
 {
 }
예제 #9
0
 public MailboxMover(TransactionalRequestJob requestJob, BaseJob mrsJob, MailboxCopierFlags mbxCopierFlags, LocalizedString tracingID, Guid mailboxGuid, TenantPartitionHint partitionHintToUse) : base(mailboxGuid, mailboxGuid, requestJob, mrsJob, mbxCopierFlags, tracingID, tracingID)
 {
     this.partitionHintToUse = partitionHintToUse;
 }
예제 #10
0
 public MailboxMover(TransactionalRequestJob requestJob, BaseJob mrsJob, MailboxCopierFlags mbxCopierFlags, LocalizedString tracingID, Guid mailboxGuid) : this(requestJob, mrsJob, mbxCopierFlags, tracingID, mailboxGuid, CommonUtils.GetPartitionHint(requestJob.OrganizationId))
 {
 }
예제 #11
0
 internal PublicFolderMover(TransactionalRequestJob moveRequestJob, BaseJob publicFolderMoveJob, List <byte[]> hierarchyFolderEntryIds, MailboxCopierFlags copierFlags, LocalizedString sourceTracingID, LocalizedString targetTracingID) : base(moveRequestJob.SourceExchangeGuid, moveRequestJob.TargetExchangeGuid, moveRequestJob, publicFolderMoveJob, copierFlags, sourceTracingID, targetTracingID)
 {
     MrsTracer.Service.Function("PublicFolderMover.Constructor", new object[0]);
     this.hierarchyFolderEntryIds = hierarchyFolderEntryIds;
     this.sessionSpecificEntryIds = new Dictionary <byte[], byte[]>(this.hierarchyFolderEntryIds.Count, ArrayComparer <byte> .Comparer);
 }