Ejemplo n.º 1
0
 private static IEnumerable <T> GetRecipients <T>(IRecipientSession session, QueryFilter filter, Func <string, LocalizedException> recipientNotFoundExceptionCallback, Func <string, LocalizedException> invalidRecipientTypeExceptionCallback, string debugContext) where T : class
 {
     Util.ThrowOnNullArgument(session, "session");
     Util.ThrowOnNullArgument(filter, "filter");
     ADRecipient[] recipients = null;
     MigrationHelperBase.DoAdCallAndTranslateExceptions(delegate
     {
         recipients = session.Find(null, QueryScope.SubTree, filter, null, 0);
     }, true, debugContext);
     if (recipients == null || recipients.Length < 1)
     {
         string arg = string.Format("Could not find {0} using filter {1} with scoped session for {2}", typeof(T), filter, debugContext);
         throw recipientNotFoundExceptionCallback(arg);
     }
     foreach (ADRecipient recip in recipients)
     {
         T recipient = recip as T;
         if (recipient == null)
         {
             string arg2 = string.Format("Found an AD recipient that's not a {0} using filter {1} with scoped session for {2}", typeof(T), filter, debugContext);
             throw invalidRecipientTypeExceptionCallback(arg2);
         }
         yield return(recipient);
     }
     yield break;
 }
Ejemplo n.º 2
0
        public static bool GetFlagValue(string flagName, bool defaultValue, bool overrideTestIntegrationEnabled)
        {
            if (!overrideTestIntegrationEnabled && !MigrationHelperBase.TestIntegrationEnabled)
            {
                return(defaultValue);
            }
            bool result;

            using (RegistryKey registryKey = MigrationHelperBase.OpenTestKey(false))
            {
                if (registryKey == null)
                {
                    result = defaultValue;
                }
                else
                {
                    object value = registryKey.GetValue(flagName);
                    if (value == null || !(value is int))
                    {
                        result = defaultValue;
                    }
                    else
                    {
                        int num = (int)value;
                        result = (num != 0);
                    }
                }
            }
            return(result);
        }
Ejemplo n.º 3
0
        public static IEnumerable <string> GetMigrationMailboxLegacyDN(TenantPartitionHint tenantPartitionHint, string localServer, QueryFilter optionalFilter = null)
        {
            IRecipientSession  recipientSession      = MigrationHelperBase.CreateRecipientSession(tenantPartitionHint);
            string             connectionInformation = string.Format("Accessing migration mailboxes for organization: {0}", tenantPartitionHint);
            List <QueryFilter> filters = new List <QueryFilter>(3);

            filters.Add(OrganizationMailbox.OrganizationMailboxFilterBase);
            filters.Add(new ComparisonFilter(ComparisonOperator.Equal, ADRecipientSchema.RawCapabilities, OrganizationCapability.Migration));
            if (optionalFilter != null)
            {
                filters.Add(optionalFilter);
            }
            IEnumerable <ADUser> users = MigrationHelperBase.GetRecipients <ADUser>(recipientSession, QueryFilter.AndTogether(filters.ToArray()), (string msg) => MigrationHelperBase.CreatePermanentExceptionWithInternalData <MigrationMailboxNotFoundException>(connectionInformation), (string msg) => MigrationHelperBase.CreatePermanentExceptionWithInternalData <MigrationMailboxNotFoundException>(connectionInformation), connectionInformation);

            foreach (ADUser user in users)
            {
                string serverName = null;
                if (user.Database != null)
                {
                    serverName = MigrationHelperBase.GetServerFqdn(user.Database.ObjectGuid);
                }
                if (string.Equals(serverName, localServer, StringComparison.OrdinalIgnoreCase))
                {
                    yield return(user.LegacyExchangeDN);
                }
            }
            yield break;
        }
Ejemplo n.º 4
0
        public static ExDateTime?GetExDateTimeProperty(IPropertyBag item, PropertyDefinition propertyDefinition)
        {
            object     obj           = item[propertyDefinition];
            ExDateTime?dateTimeValue = obj as ExDateTime?;

            if (dateTimeValue == null)
            {
                throw new InvalidDataException("Property error : " + propertyDefinition, null);
            }
            return(MigrationHelperBase.GetValidExDateTime(dateTimeValue));
        }
Ejemplo n.º 5
0
        public static void GetManagementMailboxData(TenantPartitionHint tenantPartitionHint, out string mailboxLegacyDN, out string serverName)
        {
            IRecipientSession session = MigrationHelperBase.CreateRecipientSession(tenantPartitionHint);
            string            connectionInformation = string.Format("Accessing management mailbox for organization: {0}", tenantPartitionHint);
            ADUser            recipient             = MigrationHelperBase.GetRecipient <ADUser>(session, MigrationHelperBase.ManagementMailboxFilter, (string msg) => MigrationHelperBase.CreatePermanentExceptionWithInternalData <MigrationMailboxNotFoundException>(connectionInformation), (string msg) => MigrationHelperBase.CreatePermanentExceptionWithInternalData <MultipleMigrationMailboxesFoundException>(connectionInformation), (string msg) => MigrationHelperBase.CreatePermanentExceptionWithInternalData <MigrationMailboxNotFoundException>(connectionInformation), connectionInformation);

            serverName = null;
            if (recipient.Database != null)
            {
                serverName = MigrationHelperBase.GetServerFqdn(recipient.Database.ObjectGuid);
            }
            mailboxLegacyDN = recipient.LegacyExchangeDN;
            if (serverName == null)
            {
                throw MigrationHelperBase.CreatePermanentExceptionWithInternalData <MigrationMailboxNotFoundException>(connectionInformation);
            }
        }
Ejemplo n.º 6
0
        public static T GetRecipient <T>(IRecipientSession session, QueryFilter filter, Func <string, LocalizedException> recipientNotFoundExceptionCallback, Func <string, LocalizedException> ambiguousRecipientExceptionCallback, Func <string, LocalizedException> invalidRecipientTypeExceptionCallback, string debugContext) where T : class
        {
            IEnumerable <T> recipients = MigrationHelperBase.GetRecipients <T>(session, filter, recipientNotFoundExceptionCallback, invalidRecipientTypeExceptionCallback, debugContext);

            T[] array = null;
            if (recipients != null)
            {
                array = recipients.ToArray <T>();
            }
            if (array.Length > 1)
            {
                string arg = string.Format("found multiple ({0}) {1} using filter {2} with scoped session for {3}", new object[]
                {
                    array.Length,
                    typeof(T),
                    filter,
                    debugContext
                });
                throw ambiguousRecipientExceptionCallback(arg);
            }
            return(array[0]);
        }
Ejemplo n.º 7
0
        public static string GetParamValueStr(string valueName, string defaultValue)
        {
            if (!MigrationHelperBase.TestIntegrationEnabled)
            {
                return(defaultValue);
            }
            string result;

            using (RegistryKey registryKey = MigrationHelperBase.OpenTestKey(false))
            {
                object value = registryKey.GetValue(valueName);
                if (value == null || !(value is string))
                {
                    result = defaultValue;
                }
                else
                {
                    result = (string)value;
                }
            }
            return(result);
        }