protected override void InternalValidate() { TaskLogger.LogEnter(); base.InternalValidate(); this.CheckForDuplicateExistingDomain(); AcceptedDomain acceptedDomain = new AcceptedDomain(); acceptedDomain.Name = this.Name; acceptedDomain.DomainName = new SmtpDomainWithSubdomains(this.DomainName, false); acceptedDomain.DomainType = this.DomainType; acceptedDomain.SetId(base.Session, this.DomainName.ToString()); acceptedDomain.OrganizationId = base.CurrentOrganizationId; NewAcceptedDomain.ValidateDomainName(acceptedDomain, new Task.TaskErrorLoggingDelegate(this.WriteWrappedError)); if (!this.DomainOwnershipVerified && this.AuthenticationType == AuthenticationType.Federated) { bool flag = false; AcceptedDomainIdParameter acceptedDomainIdParameter = AcceptedDomainIdParameter.Parse("*"); IEnumerable <AcceptedDomain> objects = acceptedDomainIdParameter.GetObjects <AcceptedDomain>(this.TenantCU.Id, base.Session); foreach (AcceptedDomain acceptedDomain2 in objects) { SmtpDomainWithSubdomains smtpDomainWithSubdomains = new SmtpDomainWithSubdomains(acceptedDomain2.DomainName.Domain.ToString(), true); if (smtpDomainWithSubdomains.Match(this.DomainName.ToString()) == acceptedDomain2.DomainName.Domain.Length) { flag = true; break; } } if (!flag) { base.WriteError(new OrganizationTaskException(Strings.ErrorTenantAdminsCanOnlyAddSubdomains(this.DomainName.ToString())), ErrorCategory.InvalidOperation, null); } } TaskLogger.LogExit(); }
private void CheckForDuplicateExistingDomain() { AcceptedDomain acceptedDomain = OrganizationTaskHelper.GetAcceptedDomain(AcceptedDomainIdParameter.Parse(this.Name), base.Session, new Task.TaskErrorLoggingDelegate(base.WriteError), false); if (acceptedDomain != null) { base.WriteError(new ManagementObjectAlreadyExistsException(Strings.ErrorAcceptedDomainExists(this.Name)), ErrorCategory.ResourceExists, null); } }
private void GetDomains(string target, List <MailFilterListReport> values) { AcceptedDomainIdParameter acceptedDomainIdParameter = AcceptedDomainIdParameter.Parse("*"); foreach (AcceptedDomain acceptedDomain in acceptedDomainIdParameter.GetObjects <AcceptedDomain>(null, base.ConfigSession)) { values.Add(new MailFilterListReport { Organization = base.Organization.ToString(), SelectionTarget = target, Display = acceptedDomain.Name, Value = acceptedDomain.Name }); } }
private void CleanupSecondaryDomain() { AcceptedDomain acceptedDomain = OrganizationTaskHelper.GetAcceptedDomain(AcceptedDomainIdParameter.Parse(this.Name), base.Session, new Task.TaskErrorLoggingDelegate(base.WriteError), false); if (acceptedDomain != null) { try { base.Session.Delete(acceptedDomain); } catch (Exception ex) { this.WriteWarning(Strings.ErrorNonActiveOrganizationFound(ex.ToString())); } } }
internal void ValidateEmailAddress(PropertyInfo property, object task, IConfigDataProvider configSession, CmdletValidator.EmailAddress addressType, CmdletValidator.WildcardValidationOptions wildcardOptions, CmdletValidator.EmailAcceptedDomainOptions domainOptions = CmdletValidator.EmailAcceptedDomainOptions.SkipVerify) { IList <string> list; if (this.TryGetValues <string>(property, task, out list)) { LocalizedString message = (addressType == CmdletValidator.EmailAddress.Sender) ? Strings.InvalidSenderAddress : Strings.InvalidRecipientAddress; IEnumerable <string> source = new string[0]; if (domainOptions == CmdletValidator.EmailAcceptedDomainOptions.Verify) { AcceptedDomainIdParameter acceptedDomainIdParameter = AcceptedDomainIdParameter.Parse("*"); source = from domain in acceptedDomainIdParameter.GetObjects <AcceptedDomain>(null, configSession) select domain.DomainName.Domain.ToLower(); } foreach (string address in list) { bool flag2; bool flag = Schema.Utilities.ValidateEmailAddress(address, out flag2); if (flag && flag2) { flag &= (wildcardOptions == CmdletValidator.WildcardValidationOptions.Allow); if (flag && list.Count > 1) { message = ((addressType == CmdletValidator.EmailAddress.Sender) ? Strings.CannotCombineWildcardSenderAddress : Strings.CannotCombineWildcardRecipientAddress); flag = false; } } if (flag && domainOptions == CmdletValidator.EmailAcceptedDomainOptions.Verify) { SmtpAddress smtpAddress = new SmtpAddress(address); if (!source.Contains(smtpAddress.Domain, StringComparer.InvariantCultureIgnoreCase)) { flag = false; message = Strings.EmailAddressNotInAcceptedDomain(address); } } if (!flag) { if (this.errorMessageId == null) { throw new InvalidExpressionException(message); } this.ThrowError(property); } } } }
internal void ValidateDomain(PropertyInfo property, object task, IConfigDataProvider configSession) { IList <Fqdn> list; if (this.TryGetValues <Fqdn>(property, task, out list) && list.Count > 0) { if (configSession == null) { throw new NullReferenceException("ValidateDomain requires an IConfigDataProvider"); } AcceptedDomainIdParameter acceptedDomainIdParameter = AcceptedDomainIdParameter.Parse("*"); HashSet <string> acceptedDomains = new HashSet <string>(from domain in acceptedDomainIdParameter.GetObjects <AcceptedDomain>(null, configSession) select domain.DomainName.Domain.ToLower()); if (!list.All((Fqdn domain) => acceptedDomains.Contains(domain.Domain.ToLower()))) { this.ThrowError(property); } } }
protected override void InternalProcessRecord() { TaskLogger.LogEnter(); if (this.TenantCU.OrganizationStatus == OrganizationStatus.PendingAcceptedDomainAddition || this.TenantCU.OrganizationStatus == OrganizationStatus.PendingAcceptedDomainRemoval) { OrganizationTaskHelper.SetOrganizationStatus(base.Session, this.TenantCU, OrganizationStatus.Active); } try { base.InternalProcessRecord(); } catch (Exception) { this.CleanupSecondaryDomain(); throw; } if (!base.HasErrors) { AcceptedDomain acceptedDomain = OrganizationTaskHelper.GetAcceptedDomain(AcceptedDomainIdParameter.Parse(this.Name), base.Session, new Task.TaskErrorLoggingDelegate(base.WriteError), true); base.WriteObject(acceptedDomain); } else { this.CleanupSecondaryDomain(); } TaskLogger.LogExit(); }