コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
            }
        }