internal static MailboxFolderIdParameter GetMailboxFolderIdParameterForPublicFolder(IConfigurationSession configurationSession, PublicFolderIdParameter publicFolderIdParameter, Guid publicFolderMailboxGuid, ADUser publicFolderMailboxUser, OrganizationId organizationId, Task.ErrorLoggerDelegate errorHandler) { if (publicFolderMailboxUser == null) { publicFolderMailboxUser = PublicFolderPermissionTaskHelper.GetPublicFolderHierarchyMailboxUser(configurationSession); if (publicFolderMailboxUser == null) { errorHandler(new LocalizedException(PublicFolderSession.GetNoPublicFoldersProvisionedError(configurationSession.SessionSettings.CurrentOrganizationId)), ExchangeErrorCategory.Client, publicFolderIdParameter); } } if (publicFolderIdParameter.PublicFolderId.StoreObjectId == null) { using (PublicFolderDataProvider publicFolderDataProvider = new PublicFolderDataProvider(configurationSession, "*-PublicFolderClientPermission", publicFolderMailboxGuid)) { StoreObjectId storeObjectId = publicFolderDataProvider.ResolveStoreObjectIdFromFolderPath(publicFolderIdParameter.PublicFolderId.MapiFolderPath); if (storeObjectId == null) { errorHandler(new LocalizedException(Strings.ErrorPublicFolderNotFound(publicFolderIdParameter.ToString())), ExchangeErrorCategory.Client, publicFolderIdParameter); } publicFolderIdParameter.PublicFolderId.StoreObjectId = storeObjectId; } } if (publicFolderIdParameter.Organization != null) { publicFolderIdParameter.PublicFolderId.OrganizationId = organizationId; } return(new MailboxFolderIdParameter(publicFolderIdParameter, publicFolderMailboxUser)); }
private ISourceMailbox GetSourceMailbox() { ISourceMailbox result; using (DisposeGuard disposeGuard = default(DisposeGuard)) { ExchangePrincipal exchangePrincipal; if (!PublicFolderSession.TryGetPublicFolderMailboxPrincipal(this.OrganizationId, PublicFolderSession.HierarchyMailboxGuidAlias, true, out exchangePrincipal)) { throw new StoragePermanentException(PublicFolderSession.GetNoPublicFoldersProvisionedError(this.OrganizationId)); } ISourceMailbox sourceMailbox = new RemoteSourceMailbox(exchangePrincipal.MailboxInfo.Location.ServerFqdn, null, null, this.isSingleFolderSync ? ProxyControlFlags.SkipWLMThrottling : ProxyControlFlags.None, PublicFolderSynchronizerContext.RequiredCapabilities, false, LocalMailboxFlags.None); disposeGuard.Add <ISourceMailbox>(sourceMailbox); TenantPartitionHint partitionHint = CommonUtils.GetPartitionHint(this.OrganizationId); if (this.Logger != null) { this.Logger.LogEvent(LogEventType.Verbose, string.Format("Connecting to Primary Hierarchy. [Mailbox:{0}; Server:{1}; Database:{2}; PartitionHint:{3}]", new object[] { exchangePrincipal.MailboxInfo.MailboxGuid, exchangePrincipal.MailboxInfo.Location.ServerFqdn, exchangePrincipal.MailboxInfo.GetDatabaseGuid(), partitionHint })); } sourceMailbox.Config(null, exchangePrincipal.MailboxInfo.MailboxGuid, exchangePrincipal.MailboxInfo.MailboxGuid, partitionHint, exchangePrincipal.MailboxInfo.GetDatabaseGuid(), MailboxType.SourceMailbox, null); sourceMailbox.Connect(MailboxConnectFlags.PublicFolderHierarchyReplication); disposeGuard.Success(); result = sourceMailbox; } return(result); }
private Guid GetHierarchyMailboxGuidForUser() { Guid result; using (this.CheckDisposed("GetHierarchyMailboxGuidForUser")) { ExTraceGlobals.SessionTracer.TraceDebug((long)this.GetHashCode(), "PublicFolderSessionCache.GetHierarchyMailboxGuidForUser called"); Guid empty = Guid.Empty; bool flag; if (this.openSessionAsAdmin) { flag = PublicFolderSession.TryGetPrimaryHierarchyMailboxGuid(this.organizationId, out empty); } else { flag = PublicFolderSession.TryGetHierarchyMailboxGuidForUser(this.organizationId, this.connectAsPrincipal.MailboxInfo.MailboxGuid, this.connectAsPrincipal.DefaultPublicFolderMailbox, out empty); } if (!flag) { throw new ObjectNotFoundException(PublicFolderSession.GetNoPublicFoldersProvisionedError(this.organizationId)); } result = empty; } return(result); }
// Token: 0x06000F18 RID: 3864 RVA: 0x0005A21C File Offset: 0x0005841C public static bool IsPrimaryHierarchy(Guid mailboxGuid, OrganizationId organizationId) { Guid g; if (PublicFolderSession.TryGetPrimaryHierarchyMailboxGuid(organizationId, out g)) { return(mailboxGuid.Equals(g)); } throw new ObjectNotFoundException(PublicFolderSession.GetNoPublicFoldersProvisionedError(organizationId)); }