internal static string GenerateUniqueAliasForSiteMailbox(IRecipientSession recipientSession, OrganizationId organizationId, string preferredAlias, string prefix, bool isMicrosoftHostedOnlyDatacenter, Task.TaskVerboseLoggingDelegate logHandler, Task.ErrorLoggerDelegate writeError) { string text = WindowsLiveIDLocalPartConstraint.RemoveInvalidPartOfWindowsLiveID(preferredAlias); if (!string.IsNullOrEmpty(text) && text.Length > 3) { logHandler(Strings.VerboseGenerateAliasBySiteDisplayName(preferredAlias)); text = RecipientTaskHelper.GenerateUniqueAlias(recipientSession, organizationId, (!string.IsNullOrEmpty(prefix)) ? (prefix + text) : text, logHandler, 63); } else { int num = 1000; if (string.IsNullOrEmpty(prefix)) { prefix = (isMicrosoftHostedOnlyDatacenter ? "SMO-" : "SM-"); } do { text = TeamMailboxHelper.GenerateRandomString(); text = prefix + text; logHandler(Strings.VerboseGenerateAliasByRandomString(preferredAlias, text)); if (RecipientTaskHelper.IsAliasUnique(recipientSession, organizationId, null, text, logHandler, writeError, ExchangeErrorCategory.Client)) { break; } text = string.Empty; }while (num-- > 0); } if (string.IsNullOrEmpty(text)) { writeError(new ErrorCannotGenerateSiteMailboxAliasException(), ExchangeErrorCategory.Client, null); } return(text); }
protected override IConfigurable ResolveDataObject() { ADRecipient adrecipient = (ADRecipient)base.ResolveDataObject(); if (MailboxTaskHelper.ExcludeArbitrationMailbox(adrecipient, base.Arbitration) || MailboxTaskHelper.ExcludePublicFolderMailbox(adrecipient, base.PublicFolder) || MailboxTaskHelper.ExcludeGroupMailbox(adrecipient, false) || MailboxTaskHelper.ExcludeMailboxPlan(adrecipient, false) || MailboxTaskHelper.ExcludeAuditLogMailbox(adrecipient, base.AuditLog)) { base.WriteError(new ManagementObjectNotFoundException(base.GetErrorMessageObjectNotFound(this.Identity.ToString(), typeof(ADUser).ToString(), (base.DataSession != null) ? base.DataSession.Source : null)), ExchangeErrorCategory.Client, this.Identity); } if (adrecipient != null && adrecipient.RecipientTypeDetails == RecipientTypeDetails.TeamMailbox) { TeamMailbox teamMailbox = TeamMailbox.FromDataObject((ADUser)adrecipient); teamMailbox.ClosedTime = new DateTime?(DateTime.UtcNow); this.removeTeamMailboxFromResolverCache = true; if (teamMailbox.SharePointUrl != null && base.ExchangeRunspaceConfig != null) { TeamMailboxHelper teamMailboxHelper = new TeamMailboxHelper(teamMailbox, base.ExchangeRunspaceConfig.ExecutingUser, base.ExchangeRunspaceConfig.ExecutingUserOrganizationId, (IRecipientSession)base.DataSession, new TeamMailboxGetDataObject <ADUser>(base.GetDataObject <ADUser>)); try { teamMailboxHelper.LinkSharePointSite(null, false, false); } catch (RecipientTaskException ex) { this.WriteWarning(Strings.ErrorTeamMailFailedUnlinkSharePointSite(this.Identity.ToString(), teamMailbox.SharePointUrl.ToString(), ex.Message)); } } } return(adrecipient); }
protected override void InternalStateReset() { if (string.IsNullOrEmpty(this.Name) && string.IsNullOrEmpty(this.DisplayName)) { base.WriteError(new RecipientTaskException(Strings.ErrorNewTeamMailboxParameter), ExchangeErrorCategory.Client, null); } IList <TeamMailboxProvisioningPolicy> teamMailboxPolicies = this.GetTeamMailboxPolicies(); if (teamMailboxPolicies == null || teamMailboxPolicies.Count == 0) { base.WriteError(new RecipientTaskException(Strings.ErrorTeamMailboxCanNotLoadPolicy), ExchangeErrorCategory.Client, null); } this.provisioningPolicy = teamMailboxPolicies[0]; if (string.IsNullOrEmpty(this.Name)) { string prefix = null; if (!string.IsNullOrEmpty(this.provisioningPolicy.AliasPrefix)) { prefix = this.provisioningPolicy.AliasPrefix; } else if (this.provisioningPolicy.DefaultAliasPrefixEnabled) { prefix = (Datacenter.IsMicrosoftHostedOnly(true) ? "SMO-" : "SM-"); } this.Name = TeamMailboxHelper.GenerateUniqueAliasForSiteMailbox(base.TenantGlobalCatalogSession, base.CurrentOrganizationId, this.DisplayName, prefix, Datacenter.IsMicrosoftHostedOnly(true), new Task.TaskVerboseLoggingDelegate(base.WriteVerbose), new Task.ErrorLoggerDelegate(base.WriteError)); } if (Datacenter.IsMicrosoftHostedOnly(true)) { SiteMailboxAddressesTemplate siteMailboxAddressesTemplate = null; try { siteMailboxAddressesTemplate = SiteMailboxAddressesTemplate.GetSiteMailboxAddressesTemplate(this.ConfigurationSession, base.ProvisioningCache); } catch (ErrorSiteMailboxCannotLoadAddressTemplateException exception) { base.WriteError(exception, ExchangeErrorCategory.Client, null); } base.UserPrincipalName = RecipientTaskHelper.GenerateUniqueUserPrincipalName(base.TenantGlobalCatalogSession, this.Name, siteMailboxAddressesTemplate.UserPrincipalNameDomain, new Task.TaskVerboseLoggingDelegate(base.WriteVerbose)); base.UserSpecifiedParameters["SpecificAddressTemplates"] = siteMailboxAddressesTemplate.AddressTemplates; } base.InternalStateReset(); }
private LinkSharePointSiteResult InternalLinkSharePointSite(Uri sharePointUrl, out string sharePointTeamMailboxKey, bool siteChecked, bool forceToUnlink) { LinkSharePointSiteResult linkSharePointSiteResult = LinkSharePointSiteResult.Success; sharePointTeamMailboxKey = "N/A"; bool flag = sharePointUrl == null; Uri uri = sharePointUrl ?? this.teamMailbox.SharePointUrl; Exception ex = null; if (flag) { if (this.teamMailbox.SharePointUrl == null) { return(LinkSharePointSiteResult.CurrentlyNotLinked); } sharePointUrl = this.teamMailbox.SharePointUrl; } try { using (ClientContext clientContext = new ClientContext(sharePointUrl.AbsoluteUri)) { clientContext.RequestTimeout = 60000; bool flag2; TeamMailboxHelper.GetCredentialAndConfigureClientContext(this.actAsUser, this.actAsUserOrgId, clientContext, true, out flag2); Web web = clientContext.Web; clientContext.Load <Web>(web, new Expression <Func <Web, object> >[] { (Web x) => x.AllProperties, (Web x) => (object)x.Id }); Site site = clientContext.Site; clientContext.Load <Site>(site, new Expression <Func <Site, object> >[] { (Site x) => x.Url }); clientContext.ExecuteQuery(); if (!siteChecked && clientContext.ServerVersion.Major < 15) { return(LinkSharePointSiteResult.SPServerVersionNotCompatible); } string text = this.teamMailbox.PrimarySmtpAddress.ToString(); if (web.AllProperties.FieldValues.ContainsKey("ExchangeTeamMailboxEmailAddress")) { sharePointTeamMailboxKey = (string)web.AllProperties["ExchangeTeamMailboxEmailAddress"]; if (!string.Equals(text, sharePointTeamMailboxKey, StringComparison.OrdinalIgnoreCase)) { linkSharePointSiteResult = LinkSharePointSiteResult.LinkedByOthers; } else if (flag) { web.AllProperties["ExchangeTeamMailboxEmailAddress"] = null; web.Update(); clientContext.ExecuteQuery(); this.teamMailbox.SharePointUrl = null; this.teamMailbox.SetSharePointSiteInfo(null, Guid.Empty); this.teamMailbox.SharePointLinkedBy = null; } else { if (this.actAsUser.Id.Equals(this.teamMailbox.SharePointLinkedBy)) { linkSharePointSiteResult = LinkSharePointSiteResult.AlreadyLinkedBySelf; } else { this.teamMailbox.SharePointLinkedBy = this.actAsUser.Id; } this.teamMailbox.SharePointUrl = sharePointUrl; } } else if (flag) { this.teamMailbox.SharePointUrl = null; this.teamMailbox.SetSharePointSiteInfo(null, Guid.Empty); this.teamMailbox.SharePointLinkedBy = null; } else { Uri url = TeamMailbox.GetUrl(site.Url); if (url == null) { throw new RecipientTaskException(Strings.ErrorSharePointSiteHasNoValidWebCollectionUrl(site.Url)); } web.AllProperties["ExchangeTeamMailboxEmailAddress"] = text; web.AllProperties["ExchangeTeamMailboxSharePointUrl"] = sharePointUrl.AbsoluteUri; web.AllProperties["ExchangeTeamMailboxSiteID"] = web.Id.ToString(); web.AllProperties["ExchangeTeamMailboxSiteCollectionUrl"] = site.Url; web.Update(); clientContext.ExecuteQuery(); this.teamMailbox.SharePointUrl = sharePointUrl; this.teamMailbox.SetSharePointSiteInfo(url, web.Id); this.teamMailbox.SharePointLinkedBy = this.actAsUser.Id; } } } catch (ClientRequestException ex2) { ex = new RecipientTaskException(Strings.ErrorTeamMailboxContactSharePointSite(uri.AbsoluteUri, ex2.Message)); } catch (ServerException ex3) { ex = new RecipientTaskException(Strings.ErrorTeamMailboxContactSharePointSiteWithCorrelationId(uri.AbsoluteUri, ex3.Message, ex3.ServerErrorTraceCorrelationId)); } catch (TimeoutException ex4) { ex = new RecipientTaskException(Strings.ErrorTeamMailboxContactSharePointSite(uri.AbsoluteUri, ex4.Message)); } catch (IOException ex5) { ex = new RecipientTaskException(Strings.ErrorTeamMailboxContactSharePointSite(uri.AbsoluteUri, ex5.Message)); } catch (WebException e) { SharePointException ex6 = new SharePointException(uri.AbsoluteUri, e, false); ex = new RecipientTaskException(Strings.ErrorTeamMailboxContactSharePointSite(uri.AbsoluteUri, ex6.DiagnosticInfo)); } catch (FormatException ex7) { ex = new RecipientTaskException(Strings.ErrorTeamMailboxContactSharePointSite(uri.AbsoluteUri, ex7.Message)); } if (flag && forceToUnlink) { if (ex != null || linkSharePointSiteResult == LinkSharePointSiteResult.LinkedByOthers) { this.teamMailbox.SharePointUrl = null; this.teamMailbox.SetSharePointSiteInfo(null, Guid.Empty); this.teamMailbox.SharePointLinkedBy = null; linkSharePointSiteResult = LinkSharePointSiteResult.Success; } } else if (ex != null) { throw ex; } return(linkSharePointSiteResult); }
internal static MultiValuedProperty <CultureInfo> CheckSharePointSite(SmtpAddress teamMailboxEmailAddress, ref Uri sharePointUrl, ADRawEntry actAsUser, OrganizationId actAsUserOrgId, ADUser executingUser, out SharePointMemberShip executingUserMembership, out Uri webCollectionUrl, out Guid webId) { MultiValuedProperty <CultureInfo> multiValuedProperty = new MultiValuedProperty <CultureInfo>(); executingUserMembership = SharePointMemberShip.Others; try { using (ClientContext clientContext = new ClientContext(sharePointUrl.AbsoluteUri)) { clientContext.RequestTimeout = 60000; bool flag; TeamMailboxHelper.GetCredentialAndConfigureClientContext(actAsUser, actAsUserOrgId, clientContext, true, out flag); Web web = clientContext.Web; clientContext.Load <Web>(web, new Expression <Func <Web, object> >[] { (Web x) => x.AllProperties, (Web x) => x.Url, (Web x) => (object)x.Language, (Web x) => x.Features, (Web x) => (object)x.Id }); Feature byId = web.Features.GetById(new Guid("{502A2D54-6102-4757-AAA0-A90586106368}")); clientContext.Load <Feature>(byId, new Expression <Func <Feature, object> > [0]); Group associatedOwnerGroup = clientContext.Web.AssociatedOwnerGroup; Group associatedMemberGroup = clientContext.Web.AssociatedMemberGroup; clientContext.Load <UserCollection>(associatedOwnerGroup.Users, new Expression <Func <UserCollection, object> > [0]); clientContext.Load <UserCollection>(associatedMemberGroup.Users, new Expression <Func <UserCollection, object> > [0]); Site site = clientContext.Site; clientContext.Load <Site>(site, new Expression <Func <Site, object> >[] { (Site x) => x.Url }); bool flag2 = false; try { clientContext.ExecuteQuery(); if (byId.ServerObjectIsNull != null) { flag2 = !byId.ServerObjectIsNull.Value; } } catch (UnauthorizedAccessException) { } if (!flag2) { throw new RecipientTaskException(Strings.ErrorTeamMailboxFeatureNotInstalled(web.Url)); } if (clientContext.ServerVersion.Major < 15) { throw new RecipientTaskException(Strings.ErrorTeamMailboxSharePointServerVersionInCompatible); } if (web.AllProperties.FieldValues.ContainsKey("ExchangeTeamMailboxEmailAddress") && (teamMailboxEmailAddress == SmtpAddress.Empty || !string.Equals(teamMailboxEmailAddress.ToString(), (string)web.AllProperties["ExchangeTeamMailboxEmailAddress"], StringComparison.OrdinalIgnoreCase))) { throw new RecipientTaskException(Strings.ErrorTeamMailboxSharePointSiteAlreadyLinkedWithOtherTM(sharePointUrl.ToString(), (string)web.AllProperties["ExchangeTeamMailboxEmailAddress"])); } webCollectionUrl = TeamMailbox.GetUrl(site.Url); webId = web.Id; if (webCollectionUrl == null) { throw new RecipientTaskException(Strings.ErrorSharePointSiteHasNoValidWebCollectionUrl(site.Url)); } multiValuedProperty.Add(new CultureInfo((int)web.Language)); try { foreach (User spUser in associatedOwnerGroup.Users) { if (TeamMailboxHelper.ExchangeSharePointUserMatch(executingUser, spUser)) { executingUserMembership = SharePointMemberShip.Owner; break; } } if (executingUserMembership == SharePointMemberShip.Others) { foreach (User spUser2 in associatedMemberGroup.Users) { if (TeamMailboxHelper.ExchangeSharePointUserMatch(executingUser, spUser2)) { executingUserMembership = SharePointMemberShip.Member; break; } } } } catch (CollectionNotInitializedException) { executingUserMembership = SharePointMemberShip.Others; } string uriString = null; if (!MaintenanceSynchronizer.TryEscapeAndGetWellFormedUrl(web.Url, out uriString)) { throw new RecipientTaskException(Strings.ErrorSharePointSiteHasNoValidUrl(web.Url)); } Uri uri = new Uri(uriString); if (uri != sharePointUrl) { sharePointUrl = uri; } } } catch (ClientRequestException ex) { throw new RecipientTaskException(Strings.ErrorTeamMailboxContactSharePointSite(sharePointUrl.AbsoluteUri, ex.Message)); } catch (ServerException ex2) { throw new RecipientTaskException(Strings.ErrorTeamMailboxContactSharePointSiteWithCorrelationId(sharePointUrl.AbsoluteUri, ex2.Message, ex2.ServerErrorTraceCorrelationId)); } catch (TimeoutException ex3) { throw new RecipientTaskException(Strings.ErrorTeamMailboxContactSharePointSite(sharePointUrl.AbsoluteUri, ex3.Message)); } catch (IOException ex4) { throw new RecipientTaskException(Strings.ErrorTeamMailboxContactSharePointSite(sharePointUrl.AbsoluteUri, ex4.Message)); } catch (WebException e) { SharePointException ex5 = new SharePointException(sharePointUrl.AbsoluteUri, e, false); throw new RecipientTaskException(Strings.ErrorTeamMailboxContactSharePointSite(sharePointUrl.AbsoluteUri, ex5.DiagnosticInfo)); } catch (FormatException ex6) { throw new RecipientTaskException(Strings.ErrorTeamMailboxContactSharePointSite(sharePointUrl.AbsoluteUri, ex6.Message)); } return(multiValuedProperty); }
protected override void InternalProcessRecord() { IList <ADObjectId> list = null; IList <ADObjectId> list2 = null; IList <ADObjectId> list3 = null; IList <ADObjectId> usersToRemove = null; bool flag = false; if (!this.executingUserIsMember) { if (this.DisplayName != null && this.DisplayName != this.DataObject.DisplayName) { this.DataObject.DisplayName = this.DisplayName; this.changeTracking = true; } if (base.Fields.IsModified("Active")) { if (this.Active) { if (!this.tm.Active) { this.tm.ClosedTime = null; flag = true; this.changeTracking = true; } } else if (this.tm.Active) { this.tm.ClosedTime = new DateTime?(DateTime.UtcNow); flag = true; this.changeTracking = true; } } if (base.Fields.IsModified("RemoveDuplicateMessages") && this.tm.RemoveDuplicateMessages != this.RemoveDuplicateMessages) { this.tm.RemoveDuplicateMessages = this.RemoveDuplicateMessages; this.changeTracking = true; } if (base.Fields.IsModified("Owners") || base.Fields.IsModified("Members")) { IList <ADObjectId> list4 = this.tm.Owners; if (base.Fields.IsModified("Owners")) { IList <RecipientIdParameter> list5; IList <ADUser> list6; list4 = this.teamMailboxHelper.RecipientIds2ADObjectIds(this.Owners, out list5, out list6); if (list5 != null && list5.Count > 0) { base.WriteError(new RecipientTaskException(Strings.ErrorTeamMailboxUserNotResolved(TeamMailboxHelper.GetAggreatedIds(list5))), ExchangeErrorCategory.Client, null); } if (list6 != null && list6.Count > 0) { base.WriteError(new RecipientTaskException(Strings.ErrorTeamMailboxUserNotResolved(TeamMailboxHelper.GetAggreatedUsers(list6))), ExchangeErrorCategory.Client, null); } } IList <ADObjectId> userList = this.tm.Members; if (base.Fields.IsModified("Members")) { IList <RecipientIdParameter> list5; IList <ADUser> list6; userList = this.teamMailboxHelper.RecipientIds2ADObjectIds(this.Members, out list5, out list6); if (list5 != null && list5.Count > 0) { base.WriteError(new RecipientTaskException(Strings.ErrorTeamMailboxUserNotResolved(TeamMailboxHelper.GetAggreatedIds(list5))), ExchangeErrorCategory.Client, null); } if (list6 != null && list6.Count > 0) { base.WriteError(new RecipientTaskException(Strings.ErrorTeamMailboxUserNotResolved(TeamMailboxHelper.GetAggreatedUsers(list6))), ExchangeErrorCategory.Client, null); } } IList <ADObjectId> newUserList = TeamMailbox.MergeUsers(list4, userList); if (base.Fields.IsModified("Owners") && this.membershipHelper.UpdateTeamMailboxUserList(this.tm.Owners, list4, out list, out list2)) { this.changeTracking = true; } if (this.membershipHelper.UpdateTeamMailboxUserList(this.tm.OwnersAndMembers, newUserList, out list3, out usersToRemove)) { if (list != null && list.Count != 0) { TeamMailbox.DiffUsers(list3, list); } Exception ex = null; try { this.membershipHelper.SetTeamMailboxUserPermissions(list3, usersToRemove, null, true); } catch (OverflowException ex2) { ex = ex2; } catch (COMException ex3) { ex = ex3; } catch (UnauthorizedAccessException ex4) { ex = ex4; } catch (TransientException ex5) { ex = ex5; } catch (DataSourceOperationException ex6) { ex = ex6; } if (ex != null) { base.WriteError(new RecipientTaskException(Strings.ErrorSetTeamMailboxUserPermissions(this.tm.DisplayName, ex.Message)), ExchangeErrorCategory.Client, null); } try { new TeamMailboxSecurityRefresher().Refresh(this.DataObject, (IRecipientSession)base.DataSession); } catch (DatabaseNotFoundException ex7) { ex = ex7; } catch (ObjectNotFoundException ex8) { ex = ex8; } catch (FormatException ex9) { ex = ex9; } if (ex != null) { base.WriteError(new RecipientTaskException(Strings.ErrorSetTeamMailboxUserPermissions(this.tm.DisplayName, ex.Message)), ExchangeErrorCategory.Client, null); } this.changeTracking = true; } } if (base.Fields.IsModified("SharePointUrl")) { try { this.changeTracking = this.teamMailboxHelper.LinkSharePointSite(this.SharePointUrl, false, this.Force); } catch (RecipientTaskException exception) { base.WriteError(exception, ExchangeErrorCategory.Client, this.Identity); } } } if (base.Fields.IsModified("ShowInMyClient")) { if (!this.tm.Active) { base.WriteError(new RecipientTaskException(Strings.ErrorTeamMailboxSetShowInMyClientForClosedMailbox(this.DataObject.DisplayName)), ExchangeErrorCategory.Client, this.Identity); } bool flag2; Exception ex10; if (this.membershipHelper.SetShowInMyClient(this.executingUserId, this.ShowInMyClient, out flag2, out ex10)) { this.changeTracking = true; } else if (ex10 != null) { base.WriteError(new RecipientTaskException(Strings.ErrorTeamMailboxSetShowInMyClient(this.DataObject.DisplayName, ex10.ToString())), ExchangeErrorCategory.Client, this.Identity); } else if (flag2) { base.WriteError(new RecipientTaskException(Strings.ErrorTeamMailboxMaxShowInMyClientReached(this.DataObject.DisplayName, 10)), ExchangeErrorCategory.Client, this.Identity); } } base.InternalProcessRecord(); if (flag) { TeamMailboxADUserResolver.RemoveIdIfExists(this.tm.Id); } IList <Exception> list7; this.membershipHelper.SetShowInMyClient(list3, usersToRemove, out list7); foreach (Exception ex11 in list7) { this.WriteWarning(Strings.ErrorTeamMailboxResolveUser(ex11.Message)); } }
protected override void InternalProcessRecord() { ValidationResultCollector validationResultCollector = new ValidationResultCollector(); LocalConfiguration localConfiguration = LocalConfiguration.Load(validationResultCollector); foreach (ValidationResultNode sendToPipeline in validationResultCollector.Results) { base.WriteObject(sendToPipeline); } SharePointException ex = null; Uri uri = this.SharePointUrl ?? this.tmADObject.SharePointUrl; OAuthCredentials oauthCredentials = null; try { using (ClientContext clientContext = new ClientContext(uri)) { bool flag = false; ICredentials credentialAndConfigureClientContext = TeamMailboxHelper.GetCredentialAndConfigureClientContext(this.requestor, (this.requestor != null) ? this.requestor.OrganizationId : base.CurrentOrganizationId, clientContext, this.UseAppTokenOnly, out flag); if (!flag) { base.WriteError(new InvalidOperationException(Strings.OauthIsTurnedOff), ErrorCategory.InvalidOperation, null); } oauthCredentials = (credentialAndConfigureClientContext as OAuthCredentials); oauthCredentials.Tracer = new TestSiteMailbox.TaskOauthOutboundTracer(); oauthCredentials.LocalConfiguration = localConfiguration; Web web = clientContext.Web; clientContext.Load <Web>(web, new Expression <Func <Web, object> > [0]); clientContext.ExecuteQuery(); } } catch (ClientRequestException e) { ex = new SharePointException(uri.AbsoluteUri, e); } catch (ServerException e2) { ex = new SharePointException(uri.AbsoluteUri, e2); } catch (IOException ex2) { ex = new SharePointException(uri.AbsoluteUri, new LocalizedString(ex2.Message)); } catch (WebException e3) { ex = new SharePointException(uri.AbsoluteUri, e3, true); } if (ex != null) { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.AppendLine(Strings.TestTeamMailboxOutboundOauthLog); stringBuilder.AppendLine(oauthCredentials.Tracer.ToString()); stringBuilder.AppendLine(Strings.TestTeamMailboxSharePointResponseDetails); stringBuilder.AppendLine(ex.DiagnosticInfo); ValidationResultNode sendToPipeline2 = new ValidationResultNode(Strings.TestTeamMailboxSharepointCallUnderOauthTask, new LocalizedString(stringBuilder.ToString()), ResultType.Error); base.WriteObject(sendToPipeline2); return; } StringBuilder stringBuilder2 = new StringBuilder(); stringBuilder2.AppendLine(Strings.TestTeamMailboxSharepointCallUnderOauthSuccess(uri.AbsoluteUri)); stringBuilder2.AppendLine(Strings.TestTeamMailboxOutboundOauthLog); stringBuilder2.AppendLine(oauthCredentials.Tracer.ToString()); ValidationResultNode sendToPipeline3 = new ValidationResultNode(Strings.TestTeamMailboxSharepointCallUnderOauthTask, new LocalizedString(stringBuilder2.ToString()), ResultType.Success); base.WriteObject(sendToPipeline3); }
protected override void InternalProcessRecord() { ADUser dataObject = this.DataObject; TeamMailbox teamMailbox = TeamMailbox.FromDataObject(dataObject); this.teamMailboxHelper = new TeamMailboxHelper(teamMailbox, base.ExchangeRunspaceConfig.ExecutingUser, base.ExchangeRunspaceConfig.ExecutingUserOrganizationId, (IRecipientSession)base.DataSession, new TeamMailboxGetDataObject <ADUser>(base.GetDataObject <ADUser>)); TeamMailboxMembershipHelper teamMailboxMembershipHelper = new TeamMailboxMembershipHelper(teamMailbox, (IRecipientSession)base.DataSession); Exception ex = null; ADUser aduser = TeamMailboxADUserResolver.Resolve((IRecipientSession)base.DataSession, this.executingUserId, out ex); if (aduser == null) { base.WriteError(new RecipientTaskException(Strings.ErrorExecutingUserIsNull), ExchangeErrorCategory.Client, null); } if (base.Fields.IsModified("DisplayName")) { teamMailbox.DisplayName = this.DisplayName; } teamMailbox.SetPolicy(this.provisioningPolicy); base.WriteVerbose(Strings.SiteMailboxPolicySet(this.provisioningPolicy.ToString())); teamMailbox.SetMyRole(this.executingUserId); Uri sharePointUrl = this.SharePointUrl; SharePointMemberShip sharePointMemberShip = SharePointMemberShip.Others; Uri webCollectionUrl = null; Guid empty = Guid.Empty; if (base.Fields.IsModified("SharePointUrl") && !base.Fields.IsModified("Force")) { try { TeamMailboxHelper.CheckSharePointSite(SmtpAddress.Empty, ref sharePointUrl, base.ExchangeRunspaceConfig.ExecutingUser, base.ExchangeRunspaceConfig.ExecutingUserOrganizationId, aduser, out sharePointMemberShip, out webCollectionUrl, out empty); } catch (RecipientTaskException exception) { base.WriteError(exception, ExchangeErrorCategory.Client, null); } } teamMailbox.SharePointUrl = sharePointUrl; teamMailbox.SetSharePointSiteInfo(webCollectionUrl, empty); teamMailbox.SharePointLinkedBy = this.executingUserId; List <ADObjectId> list = new List <ADObjectId>(); List <ADObjectId> list2 = new List <ADObjectId>(); IList <ADObjectId> list3 = null; IList <ADObjectId> usersToRemove = null; if (TeamMailboxMembershipHelper.IsUserQualifiedType(aduser)) { if (sharePointMemberShip == SharePointMemberShip.Owner) { list.Add(this.executingUserId); teamMailboxMembershipHelper.UpdateTeamMailboxUserList(teamMailbox.Owners, list, out list3, out usersToRemove); teamMailboxMembershipHelper.UpdateTeamMailboxUserList(teamMailbox.OwnersAndMembers, list, out list3, out usersToRemove); } else if (sharePointMemberShip == SharePointMemberShip.Member) { list2.Add(this.executingUserId); teamMailboxMembershipHelper.UpdateTeamMailboxUserList(teamMailbox.OwnersAndMembers, list2, out list3, out usersToRemove); } } Exception ex2 = null; try { teamMailboxMembershipHelper.SetTeamMailboxUserPermissions(list3, usersToRemove, new SecurityIdentifier[] { WellKnownSids.SiteMailboxGrantedAccessMembers }, false); if (list3 != null) { base.WriteVerbose(Strings.SiteMailboxCreatorSet(list3[0].ToString())); } } catch (OverflowException ex3) { ex2 = ex3; } catch (COMException ex4) { ex2 = ex4; } catch (UnauthorizedAccessException ex5) { ex2 = ex5; } catch (TransientException ex6) { ex2 = ex6; } catch (DataSourceOperationException ex7) { ex2 = ex7; } if (ex2 != null) { base.WriteError(new RecipientTaskException(Strings.ErrorSetTeamMailboxUserPermissions(teamMailbox.DisplayName, ex2.Message)), ExchangeErrorCategory.Client, null); } base.InternalProcessRecord(); if (base.Fields.IsModified("SharePointUrl") && !base.Fields.IsModified("Force")) { try { this.teamMailboxHelper.LinkSharePointSite(sharePointUrl, true, false); base.WriteVerbose(Strings.SiteMailboxLinkedToSharePointSite(sharePointUrl.AbsoluteUri)); } catch (RecipientTaskException exception2) { base.DataSession.Delete(this.DataObject); base.WriteError(exception2, ExchangeErrorCategory.Client, null); } } IList <Exception> list4; teamMailboxMembershipHelper.SetShowInMyClient(list3, usersToRemove, out list4); foreach (Exception ex8 in list4) { this.WriteWarning(Strings.ErrorTeamMailboxResolveUser(ex8.Message)); } EnqueueResult enqueueResult = EnqueueResult.Success; if (this.databaseLocationInfo != null) { int num = 0; for (;;) { base.WriteVerbose(new LocalizedString(string.Format("Trying to send membership sync request to server {0} for MailboxGuid {1} using domain controller {2}", this.databaseLocationInfo.ServerFqdn, dataObject.ExchangeGuid, this.lastUsedDc))); enqueueResult = RpcClientWrapper.EnqueueTeamMailboxSyncRequest(this.databaseLocationInfo.ServerFqdn, dataObject.ExchangeGuid, QueueType.TeamMailboxMembershipSync, base.CurrentOrganizationId, "NewTMCMD_" + base.ExecutingUserIdentityName, this.lastUsedDc, SyncOption.Default); base.WriteVerbose(new LocalizedString(string.Format("The membership sync result is {0}", enqueueResult.Result))); if (enqueueResult.Result == EnqueueResultType.Successful) { goto IL_409; } if (num > 12) { break; } Thread.Sleep(5000); num++; } this.WriteWarning(Strings.ErrorTeamMailboxEnqueueMembershipSyncEvent(enqueueResult.ResultDetail)); goto IL_414; IL_409: base.WriteVerbose(Strings.SiteMailboxMembershipSyncEventEnqueued); IL_414: enqueueResult = RpcClientWrapper.EnqueueTeamMailboxSyncRequest(this.databaseLocationInfo.ServerFqdn, dataObject.ExchangeGuid, QueueType.TeamMailboxDocumentSync, base.CurrentOrganizationId, "NewTMCMD_" + base.ExecutingUserIdentityName, this.lastUsedDc, SyncOption.Default); base.WriteVerbose(new LocalizedString(string.Format("Document sync request to server {0} for MailboxGuid {1} using domain controller {2}. The result is: {3}", new object[] { this.databaseLocationInfo.ServerFqdn, dataObject.ExchangeGuid, this.lastUsedDc, enqueueResult.ResultDetail }))); return; } this.WriteWarning(Strings.ErrorTeamMailboxEnqueueMembershipSyncEvent("No database location information available")); }