예제 #1
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);
            }
        }
예제 #2
0
        private void CheckServerAndSetReceiveConnectorID()
        {
            string message;

            if (!NewReceiveConnector.ValidataName(this.DataObject.Name, out message))
            {
                base.WriteError(new ArgumentException(message), ErrorCategory.InvalidArgument, null);
            }
            if (this.Server == null)
            {
                try
                {
                    this.serverObject = ((ITopologyConfigurationSession)base.DataSession).FindLocalServer();
                    goto IL_AD;
                }
                catch (LocalServerNotFoundException)
                {
                    base.WriteError(new NeedToSpecifyServerObjectException(), ErrorCategory.InvalidOperation, this.DataObject);
                    goto IL_AD;
                }
            }
            this.serverObject = (Server)base.GetDataObject <Server>(this.Server, base.DataSession, this.RootId, new LocalizedString?(Strings.ErrorServerNotFound(this.Server.ToString())), new LocalizedString?(Strings.ErrorServerNotUnique(this.Server.ToString())));
            if (this.serverObject == null)
            {
                return;
            }
IL_AD:
            this.isEdgeRole = this.serverObject.IsEdgeServer;
            if (!this.isEdgeRole && !this.serverObject.IsHubTransportServer && !this.serverObject.IsFrontendTransportServer && !this.serverObject.IsMailboxServer)
            {
                base.WriteError(new ServerNotHubOrEdgeException(), ErrorCategory.InvalidOperation, this.serverObject);
            }
            ADObjectId id      = this.serverObject.Id;
            ADObjectId childId = id.GetChildId("Protocols").GetChildId("SMTP Receive Connectors").GetChildId(this.DataObject.Name);

            this.DataObject.SetId(childId);
        }