コード例 #1
0
 protected override void PrepareUserObject(ADUser user)
 {
     TaskLogger.LogEnter();
     if (base.WindowsLiveID == null && base.SoftDeletedObject == null && VariantConfiguration.GetSnapshot(MachineSettingsContext.Local, null, null).Global.WindowsLiveID.Enabled&& !RecipientTaskHelper.SMTPAddressCheckWithAcceptedDomain(this.ConfigurationSession, user.OrganizationId, new Task.ErrorLoggerDelegate(base.WriteError), base.ProvisioningCache))
     {
         base.WriteError(new RecipientTaskException(Strings.ErrorWindowsLiveIdRequired(user.Name)), ExchangeErrorCategory.Client, null);
     }
     if (base.WindowsLiveID != null && base.WindowsLiveID.SmtpAddress != SmtpAddress.Empty)
     {
         if (this.ExternalEmailAddress == null)
         {
             user.ExternalEmailAddress = ProxyAddress.Parse(base.WindowsLiveID.SmtpAddress.ToString());
         }
         user.UserPrincipalName   = base.WindowsLiveID.SmtpAddress.ToString();
         base.IsSetRandomPassword = (base.SoftDeletedObject == null || base.IsSetRandomPassword);
     }
     if (string.IsNullOrEmpty(user.UserPrincipalName))
     {
         user.UserPrincipalName = RecipientTaskHelper.GenerateUniqueUserPrincipalName(base.TenantGlobalCatalogSession, user.Name, this.ConfigurationSession.GetDefaultAcceptedDomain().DomainName.Domain, new Task.TaskVerboseLoggingDelegate(base.WriteVerbose));
     }
     if (base.SoftDeletedObject == null)
     {
         if (base.Fields.IsModified(MailUserSchema.RemotePowerShellEnabled))
         {
             user.RemotePowerShellEnabled = this.RemotePowerShellEnabled;
         }
         else
         {
             user.RemotePowerShellEnabled = true;
         }
         MailUserTaskHelper.ValidateExternalEmailAddress(user, this.ConfigurationSession, new Task.ErrorLoggerDelegate(base.WriteError), base.ProvisioningCache);
     }
     if (base.Fields.IsChanged(ADRecipientSchema.MailboxProvisioningConstraint))
     {
         user.MailboxProvisioningConstraint = this.MailboxProvisioningConstraint;
     }
     if (base.Fields.IsChanged(ADRecipientSchema.MailboxProvisioningPreferences))
     {
         user.MailboxProvisioningPreferences = this.MailboxProvisioningPreferences;
     }
     if (user.MailboxProvisioningConstraint != null)
     {
         MailboxTaskHelper.ValidateMailboxProvisioningConstraintEntries(new MailboxProvisioningConstraint[]
         {
             user.MailboxProvisioningConstraint
         }, base.DomainController, delegate(string message)
         {
             base.WriteVerbose(new LocalizedString(message));
         }, new Task.ErrorLoggerDelegate(base.WriteError));
     }
     if (user.MailboxProvisioningPreferences != null)
     {
         MailboxTaskHelper.ValidateMailboxProvisioningConstraintEntries(user.MailboxProvisioningPreferences, base.DomainController, delegate(string message)
         {
             base.WriteVerbose(new LocalizedString(message));
         }, new Task.ErrorLoggerDelegate(base.WriteError));
     }
     base.PrepareUserObject(user);
     TaskLogger.LogExit();
 }
コード例 #2
0
        protected override void InternalValidate()
        {
            base.InternalValidate();
            if (this.DataObject.IsModified(MailPublicFolderSchema.Contacts))
            {
                foreach (ADObjectId adObjectId in this.DataObject.Contacts.Added)
                {
                    this.GetRecipientIdentityAndValidateTypeForContacts(new RecipientIdParameter(adObjectId), new Task.ErrorLoggerDelegate(base.WriteError));
                }
            }
            if (this.DataObject.IsModified(MailPublicFolderSchema.ForwardingAddress) && this.DataObject.ForwardingAddress != null)
            {
                this.GetRecipientIdentityAndValidateTypeForFwd(new RecipientIdParameter(this.DataObject.ForwardingAddress), new Task.ErrorLoggerDelegate(base.WriteError));
            }
            if (base.Fields.IsModified(MailPublicFolderSchema.ExternalEmailAddress))
            {
                this.DataObject.ExternalEmailAddress = this.ExternalEmailAddress;
                MailUserTaskHelper.ValidateExternalEmailAddress(this.DataObject, this.ConfigurationSession, new Task.ErrorLoggerDelegate(base.WriteError), base.ProvisioningCache);
            }
            ADObjectId adobjectId = null;

            if (base.Fields.IsModified(MailPublicFolderSchema.EntryId) && this.IsValidToUpdateEntryId(this.EntryId, out adobjectId))
            {
                this.DataObject.EntryId = this.EntryId;
                if (adobjectId != null)
                {
                    this.DataObject.ContentMailbox = adobjectId;
                }
            }
        }
コード例 #3
0
        protected override void PrepareRecipientObject(ref ADUser user)
        {
            TaskLogger.LogEnter();
            ProxyAddressCollection emailAddresses = user.EmailAddresses;

            base.PrepareRecipientObject(ref user);
            if (this.PreserveEmailAddresses)
            {
                user.EmailAddresses = emailAddresses;
            }
            if (this.BypassModerationCheck.IsPresent)
            {
                user.BypassModerationCheck = true;
            }
            if (base.ParameterSetName == "Archive")
            {
                if (user.RecipientType == RecipientType.MailUser)
                {
                    this.CreateArchiveIfNecessary(user);
                    TaskLogger.LogExit();
                    return;
                }
                RecipientIdParameter recipientIdParameter = new RecipientIdParameter((ADObjectId)user.Identity);
                base.WriteError(new RecipientTaskException(Strings.ErrorInvalidArchiveRecipientType(recipientIdParameter.ToString(), user.RecipientType.ToString())), ErrorCategory.InvalidArgument, recipientIdParameter);
            }
            if (base.ParameterSetName != "Archive")
            {
                user.ExternalEmailAddress   = this.ExternalEmailAddress;
                user.UsePreferMessageFormat = this.UsePreferMessageFormat;
                user.MessageFormat          = this.MessageFormat;
                user.MessageBodyFormat      = this.MessageBodyFormat;
                user.MacAttachmentFormat    = this.MacAttachmentFormat;
                user.UseMapiRichTextFormat  = UseMapiRichTextFormat.UseDefaultSettings;
                user.RecipientDisplayType   = new RecipientDisplayType?(RecipientDisplayType.RemoteMailUser);
                user.RecipientTypeDetails   = RecipientTypeDetails.MailUser;
                MailUserTaskHelper.ValidateExternalEmailAddress(user, this.ConfigurationSession, new Task.ErrorLoggerDelegate(base.WriteError), base.ProvisioningCache);
            }
            if (this.JournalArchiveAddress != SmtpAddress.Empty)
            {
                user.JournalArchiveAddress = this.JournalArchiveAddress;
            }
        }
コード例 #4
0
        protected override IConfigurable PrepareDataObject()
        {
            TaskLogger.LogEnter();
            ADUser aduser = (ADUser)base.PrepareDataObject();

            if (aduser.IsChanged(MailUserSchema.WindowsLiveID))
            {
                SmtpAddress value = (SmtpAddress)aduser.GetOriginalObject()[MailUserSchema.WindowsLiveID];
                if (value != SmtpAddress.Empty && !aduser.EmailAddresses.Contains(ProxyAddress.Parse("smtp", value.ToString())))
                {
                    aduser.EmailAddresses.Add(ProxyAddress.Parse("smtp", value.ToString()));
                }
            }
            if (VariantConfiguration.GetSnapshot(MachineSettingsContext.Local, null, null).Global.MultiTenancy.Enabled)
            {
                if (aduser.IsChanged(ADRecipientSchema.ExternalEmailAddress))
                {
                    MailUserTaskHelper.ValidateExternalEmailAddress(aduser, this.ConfigurationSession, new Task.ErrorLoggerDelegate(base.WriteError), base.ProvisioningCache);
                }
                if (VariantConfiguration.GetSnapshot(MachineSettingsContext.Local, null, null).Global.WindowsLiveID.Enabled)
                {
                    if (aduser.WindowsLiveID != SmtpAddress.Empty && !aduser.WindowsLiveID.Equals(aduser.UserPrincipalName))
                    {
                        aduser.UserPrincipalName = aduser.WindowsLiveID.ToString();
                    }
                }
                else if (!aduser.IsModified(ADUserSchema.UserPrincipalName))
                {
                    aduser.UserPrincipalName = aduser.PrimarySmtpAddress.ToString();
                }
                if (this.DataObject.IsSoftDeleted && this.DataObject.IsModified(MailUserSchema.ExchangeGuid))
                {
                    SoftDeletedTaskHelper.UpdateExchangeGuidForMailEnabledUser(this.DataObject);
                }
                if ((aduser.IsChanged(ADUserSchema.LitigationHoldEnabled) && aduser.LitigationHoldEnabled) || (aduser.IsChanged(ADRecipientSchema.InPlaceHoldsRaw) && aduser.IsInLitigationHoldOrInplaceHold) || (aduser.IsChanged(ADUserSchema.ElcMailboxFlags) && aduser.LitigationHoldEnabled))
                {
                    RecoverableItemsQuotaHelper.IncreaseRecoverableItemsQuotaIfNeeded(aduser);
                }
            }
            TaskLogger.LogExit();
            return(aduser);
        }
コード例 #5
0
        protected override void PrepareRecipientObject(ADPublicFolder publicFolder)
        {
            this.DataObject = publicFolder;
            if (MapiTaskHelper.IsDatacenter)
            {
                publicFolder.OrganizationId = base.CurrentOrganizationId;
            }
            publicFolder.StampPersistableDefaultValues();
            if (this.Name.Contains("\n"))
            {
                this.Name = this.Name.Replace("\n", "_");
            }
            if (this.Name.Length > 64)
            {
                publicFolder.Name = this.Name.Substring(0, 64);
            }
            else
            {
                publicFolder.Name = this.Name;
            }
            publicFolder.DisplayName = publicFolder.Name;
            publicFolder.Alias       = RecipientTaskHelper.GenerateUniqueAlias(this.RecipientSession, OrganizationId.ForestWideOrgId, this.Alias, new Task.TaskVerboseLoggingDelegate(base.WriteVerbose));
            if (this.WindowsEmailAddress != SmtpAddress.Empty)
            {
                publicFolder.WindowsEmailAddress = this.WindowsEmailAddress;
            }
            else
            {
                publicFolder.WindowsEmailAddress = publicFolder.PrimarySmtpAddress;
            }
            publicFolder.HiddenFromAddressListsEnabled = this.HiddenFromAddressListsEnabled;
            publicFolder.SendModerationNotifications   = TransportModerationNotificationFlags.Never;
            publicFolder.RecipientTypeDetails          = RecipientTypeDetails.PublicFolder;
            publicFolder.ObjectCategory   = this.ConfigurationSession.SchemaNamingContext.GetChildId(publicFolder.ObjectCategoryCN);
            publicFolder.LegacyExchangeDN = PublicFolderSession.ConvertToLegacyDN("e71f13d1-0178-42a7-8c47-24206de84a77", this.EntryId);
            ADObjectId adobjectId;

            if (base.CurrentOrganizationId == OrganizationId.ForestWideOrgId)
            {
                adobjectId = base.CurrentOrgContainerId.DomainId.GetChildId("Microsoft Exchange System Objects");
            }
            else
            {
                adobjectId = base.CurrentOrganizationId.OrganizationalUnit;
            }
            ADObjectId  childId     = adobjectId.GetChildId(publicFolder.Name);
            ADRecipient adrecipient = this.RecipientSession.Read(childId);

            if (adrecipient != null)
            {
                Random random = new Random();
                childId = adobjectId.GetChildId(string.Format("{0} {1}", publicFolder.Name, random.Next(100000000).ToString("00000000")));
            }
            publicFolder.SetId(childId);
            if (base.IsProvisioningLayerAvailable)
            {
                base.WriteVerbose(Strings.VerboseInvokingRUS(publicFolder.Identity.ToString(), publicFolder.GetType().Name));
                ADPublicFolder adpublicFolder = new ADPublicFolder();
                adpublicFolder.CopyChangesFrom(publicFolder);
                ProvisioningLayer.UpdateAffectedIConfigurable(this, RecipientTaskHelper.ConvertRecipientToPresentationObject(adpublicFolder), false);
                publicFolder.CopyChangesFrom(adpublicFolder);
            }
            else
            {
                base.WriteError(new InvalidOperationException(Strings.ErrorNoProvisioningHandlerAvailable), ErrorCategory.InvalidOperation, null);
            }
            if (this.ExternalEmailAddress != SmtpAddress.Empty)
            {
                publicFolder.ExternalEmailAddress = ProxyAddress.Parse(this.ExternalEmailAddress.ToString());
            }
            else
            {
                publicFolder.ExternalEmailAddress = ProxyAddress.Parse(publicFolder.WindowsEmailAddress.ToString());
            }
            MailUserTaskHelper.ValidateExternalEmailAddress(publicFolder, this.ConfigurationSession, new Task.ErrorLoggerDelegate(base.WriteError), base.ProvisioningCache);
            if (this.EmailAddresses != null)
            {
                foreach (ProxyAddress proxyAddress in this.EmailAddresses)
                {
                    if (proxyAddress != null && !publicFolder.EmailAddresses.Contains(proxyAddress))
                    {
                        publicFolder.EmailAddresses.Add(proxyAddress);
                    }
                }
            }
            adrecipient = this.RecipientSession.FindByProxyAddress(ProxyAddress.Parse("X500:" + publicFolder.LegacyExchangeDN));
            if (adrecipient != null)
            {
                base.WriteError(new InvalidOperationException(Strings.ErrorObjectAlreadyExists("ADPublicFolder object : ", this.Name)), ErrorCategory.InvalidData, null);
            }
            publicFolder.EmailAddresses.Add(ProxyAddress.Parse("X500:" + publicFolder.LegacyExchangeDN));
            RecipientTaskHelper.ValidateEmailAddressErrorOut(this.RecipientSession, publicFolder.EmailAddresses, publicFolder, new Task.TaskVerboseLoggingDelegate(base.WriteVerbose), new Task.ErrorLoggerReThrowDelegate(this.WriteError));
        }