private void InitializeDefaults() { if (!this.DataObject.IsModified(ReceiveConnectorSchema.MaxInboundConnection)) { this.MaxInboundConnection = 5000; } if (!this.DataObject.IsModified(ReceiveConnectorSchema.MaxInboundConnectionPerSource)) { this.MaxInboundConnectionPerSource = 20; } if (!this.DataObject.IsModified(ReceiveConnectorSchema.MaxProtocolErrors)) { this.MaxProtocolErrors = 5; } if (!this.DataObject.IsModified(ReceiveConnectorSchema.Fqdn)) { string fqdn = this.serverObject.Fqdn; SmtpDomain smtpDomain; if (SmtpDomain.TryParse(fqdn, out smtpDomain)) { this.Fqdn = new Fqdn(fqdn); } else if (SmtpDomain.TryParse(this.serverObject.Name, out smtpDomain)) { this.Fqdn = new Fqdn(this.serverObject.Name); } else { base.WriteError(new InvalidFqdnException(), ErrorCategory.InvalidOperation, this.DataObject); } } if (!this.DataObject.IsModified(ReceiveConnectorSchema.TransportRole)) { if ((this.serverObject.CurrentServerRole & ServerRole.Edge) != ServerRole.None) { this.TransportRole = ServerRole.HubTransport; } else if ((this.serverObject.CurrentServerRole & ServerRole.HubTransport) != ServerRole.None) { this.TransportRole = ServerRole.HubTransport; } else if ((this.serverObject.CurrentServerRole & ServerRole.FrontendTransport) != ServerRole.None) { this.TransportRole = ServerRole.FrontendTransport; } else { this.TransportRole = ServerRole.HubTransport; } } if (this.isEdgeRole) { if (!this.DataObject.IsModified(ReceiveConnectorSchema.ConnectionTimeout)) { this.DataObject.ConnectionTimeout = EnhancedTimeSpan.FromMinutes(5.0); } if (!this.DataObject.IsModified(ReceiveConnectorSchema.ConnectionInactivityTimeout)) { this.DataObject.ConnectionInactivityTimeout = EnhancedTimeSpan.OneMinute; } if (!this.DataObject.IsModified(ReceiveConnectorSchema.MessageRateLimit)) { this.DataObject.MessageRateLimit = 600; } if (!this.DataObject.IsModified(ReceiveConnectorSchema.MessageRateSource)) { this.DataObject.MessageRateSource = MessageRateSourceFlags.IPAddress; } } if (!this.DataObject.IsModified(ReceiveConnectorSchema.PermissionGroups)) { this.SetPermissionGroups(); } if (!this.DataObject.IsModified(ReceiveConnectorSchema.SecurityFlags)) { this.SetAuthMechanism(); } if (this.isUsageSet && this.usage == NewReceiveConnector.UsageType.Internal) { this.SetUsageInternalProperties(); } if (!this.DataObject.IsModified(ReceiveConnectorSchema.Bindings) && this.usage == NewReceiveConnector.UsageType.Client) { this.DataObject.Bindings[0].Port = 587; } LocalizedException exception; if (!this.isEdgeRole && (this.AuthMechanism & AuthMechanisms.ExchangeServer) != AuthMechanisms.None && !ReceiveConnectorFqdnCondition.Verify(this.DataObject, this.serverObject, out exception)) { base.WriteError(exception, ErrorCategory.InvalidOperation, this.DataObject); } }
protected override void InternalValidate() { base.InternalValidate(); if (base.HasErrors) { return; } string message; if (!NewReceiveConnector.ValidataName(this.DataObject.Name, out message)) { base.WriteError(new ArgumentException(message), ErrorCategory.InvalidArgument, null); } if (base.Fields.IsModified("DefaultDomain")) { AcceptedDomainIdParameter defaultDomain = this.DefaultDomain; if (defaultDomain != null) { AcceptedDomain acceptedDomain = (AcceptedDomain)base.GetDataObject <AcceptedDomain>(defaultDomain, base.DataSession, this.RootId, new LocalizedString?(Strings.ErrorDefaultDomainNotFound(defaultDomain)), new LocalizedString?(Strings.ErrorDefaultDomainNotUnique(defaultDomain))); this.DataObject.DefaultDomain = acceptedDomain.Id; } else { this.DataObject.DefaultDomain = null; } } LocalizedException exception; if (!ReceiveConnectorNoMappingConflictCondition.Verify(this.DataObject, base.DataSession as IConfigurationSession, out exception)) { base.WriteError(exception, ErrorCategory.InvalidOperation, this.DataObject); } if (!this.serverObject.IsEdgeServer && (this.DataObject.AuthMechanism & AuthMechanisms.ExchangeServer) != AuthMechanisms.None && !ReceiveConnectorFqdnCondition.Verify(this.DataObject, this.serverObject, out exception)) { base.WriteError(exception, ErrorCategory.InvalidOperation, this.DataObject); } if (this.DataObject.AdvertiseClientSettings && (this.DataObject.PermissionGroups & PermissionGroups.ExchangeUsers) != PermissionGroups.ExchangeUsers) { base.WriteError(new AdvertiseClientSettingsWithoutExchangeUsersPermissionGroupsException(), ErrorCategory.InvalidOperation, this.DataObject); } }