Exemplo n.º 1
0
        public static void TeamMailboxDiagnosticsPostAction(DataRow inputRow, DataTable dataTable, DataObjectStore store)
        {
            TeamMailboxDiagnosticsInfo teamMailboxDiagnosticsInfo = store.GetDataObject("TeamMailboxDiagnosticsInfo") as TeamMailboxDiagnosticsInfo;

            if (dataTable.Rows.Count == 1 && teamMailboxDiagnosticsInfo != null)
            {
                if (teamMailboxDiagnosticsInfo.Status == TeamMailboxSyncStatus.NotAvailable)
                {
                    dataTable.Rows[0]["DocumentSyncStatus"]    = OwaOptionClientStrings.TeamMailboxSyncNotAvailable;
                    dataTable.Rows[0]["MembershipSyncStatus"]  = OwaOptionClientStrings.TeamMailboxSyncNotAvailable;
                    dataTable.Rows[0]["MaintenanceSyncStatus"] = OwaOptionClientStrings.TeamMailboxSyncNotAvailable;
                }
                else
                {
                    dataTable.Rows[0]["DocumentSyncStatus"]    = ((teamMailboxDiagnosticsInfo.HierarchySyncInfo == null) ? OwaOptionClientStrings.TeamMailboxSyncNotAvailable : OwaOptionClientStrings.TeamMailboxSyncSuccess);
                    dataTable.Rows[0]["MembershipSyncStatus"]  = ((teamMailboxDiagnosticsInfo.MembershipSyncInfo == null) ? OwaOptionClientStrings.TeamMailboxSyncNotAvailable : OwaOptionClientStrings.TeamMailboxSyncSuccess);
                    dataTable.Rows[0]["MaintenanceSyncStatus"] = ((teamMailboxDiagnosticsInfo.MaintenanceSyncInfo == null) ? OwaOptionClientStrings.TeamMailboxSyncNotAvailable : OwaOptionClientStrings.TeamMailboxSyncSuccess);
                }
                if (teamMailboxDiagnosticsInfo.Status == TeamMailboxSyncStatus.Failed || teamMailboxDiagnosticsInfo.Status == TeamMailboxSyncStatus.DocumentSyncFailureOnly || teamMailboxDiagnosticsInfo.Status == TeamMailboxSyncStatus.DocumentAndMembershipSyncFailure || teamMailboxDiagnosticsInfo.Status == TeamMailboxSyncStatus.DocumentAndMaintenanceSyncFailure)
                {
                    dataTable.Rows[0]["DocumentSyncStatus"] = OwaOptionClientStrings.TeamMailboxSyncError;
                }
                if (teamMailboxDiagnosticsInfo.Status == TeamMailboxSyncStatus.Failed || teamMailboxDiagnosticsInfo.Status == TeamMailboxSyncStatus.MembershipSyncFailureOnly || teamMailboxDiagnosticsInfo.Status == TeamMailboxSyncStatus.DocumentAndMembershipSyncFailure || teamMailboxDiagnosticsInfo.Status == TeamMailboxSyncStatus.MembershipAndMaintenanceSyncFailure)
                {
                    dataTable.Rows[0]["MembershipSyncStatus"] = OwaOptionClientStrings.TeamMailboxSyncError;
                }
                if (teamMailboxDiagnosticsInfo.Status == TeamMailboxSyncStatus.Failed || teamMailboxDiagnosticsInfo.Status == TeamMailboxSyncStatus.MaintenanceSyncFailureOnly || teamMailboxDiagnosticsInfo.Status == TeamMailboxSyncStatus.MembershipAndMaintenanceSyncFailure || teamMailboxDiagnosticsInfo.Status == TeamMailboxSyncStatus.DocumentAndMaintenanceSyncFailure)
                {
                    dataTable.Rows[0]["MaintenanceSyncStatus"] = OwaOptionClientStrings.TeamMailboxSyncError;
                }
                dataTable.Rows[0]["MembershipSyncDate"]                = ((teamMailboxDiagnosticsInfo.MembershipSyncInfo == null) ? OwaOptionClientStrings.TeamMailboxSyncNotAvailable : ((DateTime)teamMailboxDiagnosticsInfo.MembershipSyncInfo.LastAttemptedSyncTime.Value).UtcToUserDateTimeString());
                dataTable.Rows[0]["MaintenanceSyncDate"]               = ((teamMailboxDiagnosticsInfo.MaintenanceSyncInfo == null) ? OwaOptionClientStrings.TeamMailboxSyncNotAvailable : ((DateTime)teamMailboxDiagnosticsInfo.MaintenanceSyncInfo.LastAttemptedSyncTime.Value).UtcToUserDateTimeString());
                dataTable.Rows[0]["DocumentSyncDate"]                  = ((teamMailboxDiagnosticsInfo.HierarchySyncInfo == null) ? OwaOptionClientStrings.TeamMailboxSyncNotAvailable : ((DateTime)teamMailboxDiagnosticsInfo.HierarchySyncInfo.LastAttemptedSyncTime.Value).UtcToUserDateTimeString());
                dataTable.Rows[0]["SynchronizationDetails"]            = teamMailboxDiagnosticsInfo.ToString();
                dataTable.Rows[0]["MembershipSyncStatus"]              = OwaOptionClientStrings.TeamMailboxSyncStatus + dataTable.Rows[0]["MembershipSyncStatus"];
                dataTable.Rows[0]["MembershipSyncDate"]                = OwaOptionClientStrings.TeamMailboxSyncDate + dataTable.Rows[0]["MembershipSyncDate"];
                dataTable.Rows[0]["MaintenanceSyncStatus"]             = OwaOptionClientStrings.TeamMailboxSyncStatus + dataTable.Rows[0]["MaintenanceSyncStatus"];
                dataTable.Rows[0]["MaintenanceSyncDate"]               = OwaOptionClientStrings.TeamMailboxSyncDate + dataTable.Rows[0]["MaintenanceSyncDate"];
                dataTable.Rows[0]["DocumentSyncStatus"]                = OwaOptionClientStrings.TeamMailboxSyncStatus + dataTable.Rows[0]["DocumentSyncStatus"];
                dataTable.Rows[0]["DocumentSyncDate"]                  = OwaOptionClientStrings.TeamMailboxSyncDate + dataTable.Rows[0]["DocumentSyncDate"];
                dataTable.Rows[0]["TeamMailboxMembershipString1"]      = OwaOptionClientStrings.TeamMailboxMembershipString1;
                dataTable.Rows[0]["TeamMailboxMembershipString2"]      = OwaOptionClientStrings.TeamMailboxMembershipString2;
                dataTable.Rows[0]["TeamMailboxMembershipString3"]      = OwaOptionClientStrings.TeamMailboxMembershipString3;
                dataTable.Rows[0]["TeamMailboxMembershipString4"]      = OwaOptionClientStrings.TeamMailboxMembershipString4;
                dataTable.Rows[0]["TeamMailboxStartedMembershipSync"]  = OwaOptionClientStrings.TeamMailboxStartedMembershipSync;
                dataTable.Rows[0]["TeamMailboxStartedMaintenanceSync"] = OwaOptionClientStrings.TeamMailboxStartedMaintenanceSync;
                dataTable.Rows[0]["TeamMailboxStartedDocumentSync"]    = OwaOptionClientStrings.TeamMailboxStartedDocumentSync;
            }
        }
Exemplo n.º 2
0
 protected override void InternalProcessRecord()
 {
     foreach (KeyValuePair <ADUser, ExchangePrincipal> entry in base.TMPrincipals)
     {
         TeamMailboxDiagnosticsInfo teamMailboxDiagnosticsInfo = null;
         try
         {
             teamMailboxDiagnosticsInfo = this.GetOneTeamMailboxDiagnosticsInfo(entry);
         }
         catch (StorageTransientException ex)
         {
             base.WriteError(new RecipientTaskException(Strings.ErrorGetSiteMailboxDiagnostics(entry.Value.MailboxInfo.DisplayName, ex.Message), ex), ExchangeErrorCategory.ServerTransient, null);
         }
         catch (StoragePermanentException ex2)
         {
             base.WriteError(new RecipientTaskException(Strings.ErrorGetSiteMailboxDiagnostics(entry.Value.MailboxInfo.DisplayName, ex2.Message), ex2), ExchangeErrorCategory.ServerOperation, null);
         }
         base.WriteObject(teamMailboxDiagnosticsInfo);
         if (base.Fields.IsModified("SendMeEmail"))
         {
             ADObjectId item;
             if (!base.TryGetExecutingUserId(out item))
             {
                 base.WriteError(new RecipientTaskException(Strings.ErrorTeamMailboxCannotIdentifyTheUser), ExchangeErrorCategory.Client, null);
             }
             TeamMailbox teamMailbox = TeamMailbox.FromDataObject(entry.Key);
             TeamMailboxNotificationHelper teamMailboxNotificationHelper = new TeamMailboxNotificationHelper(teamMailbox, (IRecipientSession)base.DataSession);
             try
             {
                 teamMailboxNotificationHelper.SendNotification(new List <ADObjectId>
                 {
                     item
                 }, Strings.SiteMailboxDiagnosticsEmailSubject(teamMailbox.DisplayName), teamMailboxDiagnosticsInfo.ToString(), RemotingOptions.AllowCrossSite);
             }
             catch (StorageTransientException ex3)
             {
                 base.WriteError(new RecipientTaskException(Strings.ErrorSendNotificationForSiteMailbox(teamMailbox.DisplayName, ex3.Message), ex3), ExchangeErrorCategory.ServerTransient, null);
             }
             catch (StoragePermanentException ex4)
             {
                 base.WriteError(new RecipientTaskException(Strings.ErrorSendNotificationForSiteMailbox(teamMailbox.DisplayName, ex4.Message), ex4), ExchangeErrorCategory.ServerOperation, null);
             }
         }
     }
 }
Exemplo n.º 3
0
        private TeamMailboxDiagnosticsInfo GetOneTeamMailboxDiagnosticsInfo(KeyValuePair <ADUser, ExchangePrincipal> entry)
        {
            TeamMailboxDiagnosticsInfo     teamMailboxDiagnosticsInfo = new TeamMailboxDiagnosticsInfo(entry.Value.MailboxInfo.DisplayName);
            MultiValuedProperty <SyncInfo> multiValuedProperty        = new MultiValuedProperty <SyncInfo>();
            bool flag  = false;
            bool flag2 = false;
            bool flag3 = false;
            TeamMailboxDiagnosticsInfo result;

            using (MailboxSession mailboxSession = MailboxSession.OpenAsAdmin(entry.Value, CultureInfo.InvariantCulture, "Client=TeamMailbox;Action=GetDiagnostics;Interactive=False"))
            {
                using (UserConfiguration mailboxConfiguration = UserConfigurationHelper.GetMailboxConfiguration(mailboxSession, "SiteSynchronizerConfigurations", UserConfigurationTypes.Dictionary, false))
                {
                    if (mailboxConfiguration != null)
                    {
                        teamMailboxDiagnosticsInfo.HierarchySyncInfo = GetSiteMailboxDiagnostics.GetSyncInfoFromMetadata(entry.Value.MailboxInfo.DisplayName, (entry.Key.SharePointUrl != null) ? entry.Key.SharePointUrl.AbsoluteUri : string.Empty, mailboxConfiguration);
                        if (!string.IsNullOrEmpty(teamMailboxDiagnosticsInfo.HierarchySyncInfo.LastSyncFailure))
                        {
                            flag = true;
                        }
                    }
                }
                using (Folder folder = Folder.Bind(mailboxSession, DefaultFolderType.Root))
                {
                    using (QueryResult queryResult = folder.FolderQuery(FolderQueryFlags.None, new ExistsFilter(FolderSchema.LinkedId), null, new PropertyDefinition[]
                    {
                        FolderSchema.Id,
                        FolderSchema.DisplayName,
                        FolderSchema.LinkedUrl
                    }))
                    {
                        object[][] array = null;
                        do
                        {
                            array = queryResult.GetRows(10000);
                            for (int i = 0; i < array.Length; i++)
                            {
                                StoreObjectId objectId    = ((VersionedId)array[i][0]).ObjectId;
                                string        displayName = array[i][1] as string;
                                string        url         = array[i][2] as string;
                                using (UserConfiguration folderConfiguration = UserConfigurationHelper.GetFolderConfiguration(mailboxSession, objectId, "DocumentLibSynchronizerConfigurations", UserConfigurationTypes.Dictionary, false, false))
                                {
                                    if (folderConfiguration != null)
                                    {
                                        SyncInfo syncInfoFromMetadata = GetSiteMailboxDiagnostics.GetSyncInfoFromMetadata(displayName, url, folderConfiguration);
                                        multiValuedProperty.Add(syncInfoFromMetadata);
                                        if (!string.IsNullOrEmpty(syncInfoFromMetadata.LastSyncFailure))
                                        {
                                            flag = true;
                                        }
                                    }
                                }
                            }
                        }while (array.Length != 0);
                    }
                }
                teamMailboxDiagnosticsInfo.DocLibSyncInfos = multiValuedProperty;
                using (UserConfiguration mailboxConfiguration2 = UserConfigurationHelper.GetMailboxConfiguration(mailboxSession, "TeamMailboxDocumentLastSyncCycleLog", UserConfigurationTypes.Stream, false))
                {
                    if (mailboxConfiguration2 != null)
                    {
                        using (Stream stream = mailboxConfiguration2.GetStream())
                        {
                            byte[] array2 = new byte[stream.Length];
                            stream.Read(array2, 0, array2.Length);
                            teamMailboxDiagnosticsInfo.LastDocumentSyncCycleLog = Encoding.ASCII.GetString(array2);
                        }
                    }
                }
                using (UserConfiguration mailboxConfiguration3 = UserConfigurationHelper.GetMailboxConfiguration(mailboxSession, "MembershipSynchronizerConfigurations", UserConfigurationTypes.Dictionary, false))
                {
                    if (mailboxConfiguration3 != null)
                    {
                        teamMailboxDiagnosticsInfo.MembershipSyncInfo = GetSiteMailboxDiagnostics.GetSyncInfoFromMetadata(entry.Value.MailboxInfo.DisplayName, (entry.Key.SharePointUrl != null) ? entry.Key.SharePointUrl.AbsoluteUri : string.Empty, mailboxConfiguration3);
                        if (!string.IsNullOrEmpty(teamMailboxDiagnosticsInfo.MembershipSyncInfo.LastSyncFailure))
                        {
                            flag2 = true;
                        }
                    }
                }
                using (UserConfiguration mailboxConfiguration4 = UserConfigurationHelper.GetMailboxConfiguration(mailboxSession, "TeamMailboxMembershipLastSyncCycleLog", UserConfigurationTypes.Stream, false))
                {
                    if (mailboxConfiguration4 != null)
                    {
                        using (Stream stream2 = mailboxConfiguration4.GetStream())
                        {
                            byte[] array3 = new byte[stream2.Length];
                            stream2.Read(array3, 0, array3.Length);
                            teamMailboxDiagnosticsInfo.LastMembershipSyncCycleLog = Encoding.ASCII.GetString(array3);
                        }
                    }
                }
                using (UserConfiguration mailboxConfiguration5 = UserConfigurationHelper.GetMailboxConfiguration(mailboxSession, "MaintenanceSynchronizerConfigurations", UserConfigurationTypes.Dictionary, false))
                {
                    if (mailboxConfiguration5 != null)
                    {
                        teamMailboxDiagnosticsInfo.MaintenanceSyncInfo = GetSiteMailboxDiagnostics.GetSyncInfoFromMetadata(entry.Value.MailboxInfo.DisplayName, (entry.Key.SharePointUrl != null) ? entry.Key.SharePointUrl.AbsoluteUri : string.Empty, mailboxConfiguration5);
                        if (!string.IsNullOrEmpty(teamMailboxDiagnosticsInfo.MaintenanceSyncInfo.LastSyncFailure))
                        {
                            flag3 = true;
                        }
                    }
                }
                using (UserConfiguration mailboxConfiguration6 = UserConfigurationHelper.GetMailboxConfiguration(mailboxSession, "TeamMailboxMaintenanceLastSyncCycleLog", UserConfigurationTypes.Stream, false))
                {
                    if (mailboxConfiguration6 != null)
                    {
                        using (Stream stream3 = mailboxConfiguration6.GetStream())
                        {
                            byte[] array4 = new byte[stream3.Length];
                            stream3.Read(array4, 0, array4.Length);
                            teamMailboxDiagnosticsInfo.LastMaintenanceSyncCycleLog = Encoding.ASCII.GetString(array4);
                        }
                    }
                }
                if (!flag && !flag2 && !flag3)
                {
                    teamMailboxDiagnosticsInfo.Status = TeamMailboxSyncStatus.Succeeded;
                }
                else if (flag && !flag2 && !flag3)
                {
                    teamMailboxDiagnosticsInfo.Status = TeamMailboxSyncStatus.DocumentSyncFailureOnly;
                }
                else if (!flag && flag2 && !flag3)
                {
                    teamMailboxDiagnosticsInfo.Status = TeamMailboxSyncStatus.MembershipSyncFailureOnly;
                }
                else if (!flag && !flag2 && flag3)
                {
                    teamMailboxDiagnosticsInfo.Status = TeamMailboxSyncStatus.MaintenanceSyncFailureOnly;
                }
                else if (flag && flag2 && !flag3)
                {
                    teamMailboxDiagnosticsInfo.Status = TeamMailboxSyncStatus.DocumentAndMembershipSyncFailure;
                }
                else if (!flag && flag2 && flag3)
                {
                    teamMailboxDiagnosticsInfo.Status = TeamMailboxSyncStatus.MembershipAndMaintenanceSyncFailure;
                }
                else if (flag && !flag2 && flag3)
                {
                    teamMailboxDiagnosticsInfo.Status = TeamMailboxSyncStatus.DocumentAndMaintenanceSyncFailure;
                }
                else
                {
                    teamMailboxDiagnosticsInfo.Status = TeamMailboxSyncStatus.Failed;
                }
                result = teamMailboxDiagnosticsInfo;
            }
            return(result);
        }