Ejemplo n.º 1
0
        internal static bool TryCreateSmtpService(MiniReceiveConnector smtpReceiveConnector, TopologyServerInfo serverInfo, ClientAccessType clientAccessType, out Service service)
        {
            Hostname hostname = null;

            service = null;
            if (!smtpReceiveConnector.AdvertiseClientSettings)
            {
                ExTraceGlobals.SmtpServiceTracer.TraceDebug <string>(0L, "SMTP Receive Connector: {0}, does not have AdvertiseClientSettings set.", smtpReceiveConnector.Name);
                return(false);
            }
            if (smtpReceiveConnector.ServiceDiscoveryFqdn == null && smtpReceiveConnector.Fqdn == null)
            {
                ExTraceGlobals.SmtpServiceTracer.TraceDebug <string>(0L, "SMTP Receive Connector: {0}, has null Fqdn and ServiceDiscoveryFqdn.", smtpReceiveConnector.Name);
                return(false);
            }
            if (smtpReceiveConnector.ServiceDiscoveryFqdn != null)
            {
                if (!Hostname.TryParse(smtpReceiveConnector.ServiceDiscoveryFqdn.ToString(), out hostname))
                {
                    ExTraceGlobals.SmtpServiceTracer.TraceDebug <string>(0L, "SMTP Receive Connector: {0}, has unparsable ServiceDiscoveryFqdn.", smtpReceiveConnector.Name);
                    return(false);
                }
            }
            else if (smtpReceiveConnector.Fqdn != null && !Hostname.TryParse(smtpReceiveConnector.Fqdn.ToString(), out hostname))
            {
                ExTraceGlobals.SmtpServiceTracer.TraceDebug <string>(0L, "SMTP Receive Connector: {0}, has unparsable FQDN.", smtpReceiveConnector.Name);
                return(false);
            }
            AuthenticationMethod authenticationMethod = AuthenticationMethod.None;

            authenticationMethod |= (((smtpReceiveConnector.AuthMechanism & (AuthMechanisms.BasicAuth | AuthMechanisms.BasicAuthRequireTLS)) != AuthMechanisms.None) ? AuthenticationMethod.Basic : AuthenticationMethod.None);
            authenticationMethod |= (((smtpReceiveConnector.AuthMechanism & AuthMechanisms.Integrated) != AuthMechanisms.None) ? AuthenticationMethod.WindowsIntegrated : AuthenticationMethod.None);
            service = new SmtpService(serverInfo, clientAccessType, authenticationMethod, smtpReceiveConnector, hostname);
            return(true);
        }
Ejemplo n.º 2
0
 internal static Service CreateSmtpService(MiniReceiveConnector smtpReceiveConnector, TopologyServerInfo serverInfo, ClientAccessType clientAccessType)
 {
     foreach (ServiceTypeInfo serviceTypeInfo in ServiceTypeInfo.serviceTypeInfos)
     {
         ServiceTypeInfo.TryCreateSmtpServiceDelegate tryCreateSmtpServiceDelegate = serviceTypeInfo.tryCreateServiceDelegate as ServiceTypeInfo.TryCreateSmtpServiceDelegate;
         if (tryCreateSmtpServiceDelegate != null)
         {
             Service service;
             Service result;
             if (tryCreateSmtpServiceDelegate(smtpReceiveConnector, serverInfo, clientAccessType, out service))
             {
                 result = service;
             }
             else
             {
                 result = null;
             }
             return(result);
         }
     }
     throw new InvalidOperationException(ServerStrings.ExInvalidServiceType);
 }
Ejemplo n.º 3
0
        private void AddSmtpServiceToDictionaries(string localServerFqdn, Dictionary <ServiceType, List <Service> > serviceLists, TopologyServerInfo serverInfo, MiniReceiveConnector smtpReceiveConnector, ClientAccessType clientAccessType)
        {
            Service service = ServiceTypeInfo.CreateSmtpService(smtpReceiveConnector, serverInfo, clientAccessType);

            if (service != null)
            {
                ServiceTopology.AddServiceToServiceListDictionary(serviceLists, service);
                ExTraceGlobals.ServiceDiscoveryTracer.TraceDebug <Service, string, Site>((long)this.GetHashCode(), "ServiceTopology::AddServiceToDictionaries. Found Service. Service = {0}. ServerFqdn = {1}. Site = {2}.", service, serverInfo.ServerFullyQualifiedDomainName, serverInfo.Site);
            }
        }
Ejemplo n.º 4
0
        private SmtpService(TopologyServerInfo serverInfo, ClientAccessType clientAccessType, AuthenticationMethod authenticationMethod, MiniReceiveConnector smtpReceiveConnector, Hostname hostname) : base(serverInfo, ServiceType.Smtp, clientAccessType, authenticationMethod)
        {
            bool           flag           = (smtpReceiveConnector.AuthMechanism & (AuthMechanisms.Tls | AuthMechanisms.BasicAuthRequireTLS)) != AuthMechanisms.None;
            EncryptionType?encryptionType = null;

            if (flag)
            {
                encryptionType = new EncryptionType?(EncryptionType.TLS);
            }
            List <ProtocolConnectionSettings> list = new List <ProtocolConnectionSettings>(smtpReceiveConnector.Bindings.Count);
            HashSet <int> hashSet = new HashSet <int>();

            foreach (IPBinding ipbinding in smtpReceiveConnector.Bindings)
            {
                if (!hashSet.Contains(ipbinding.Port))
                {
                    list.Add(new ProtocolConnectionSettings(hostname, ipbinding.Port, encryptionType));
                    hashSet.Add(ipbinding.Port);
                }
            }
            this.ProtocolConnectionSettings = new ReadOnlyCollection <ProtocolConnectionSettings>(list);
        }
Ejemplo n.º 5
0
        // Token: 0x060003B6 RID: 950 RVA: 0x0001573C File Offset: 0x0001393C
        internal static ADObject CreateAndInitializeConfigObject <TConfigObject>(ADPropertyBag propertyBag, ADRawEntry dummyObject, IDirectorySession directorySession) where TConfigObject : IConfigurable, new()
        {
            ArgumentValidator.ThrowIfNull("propertyBag", propertyBag);
            MultiValuedProperty <string> multiValuedProperty = (MultiValuedProperty <string>)propertyBag[ADObjectSchema.ObjectClass];
            ADObject adobject;

            if (dummyObject is MiniTopologyServer)
            {
                adobject = new MiniTopologyServer();
            }
            else if (dummyObject is MiniVirtualDirectory)
            {
                adobject = new MiniVirtualDirectory();
            }
            else if (dummyObject is MiniEmailTransport)
            {
                adobject = new MiniEmailTransport();
            }
            else if (dummyObject is MiniReceiveConnector)
            {
                adobject = new MiniReceiveConnector();
            }
            else if (multiValuedProperty.Contains(ADWebServicesVirtualDirectory.MostDerivedClass))
            {
                adobject = new ADWebServicesVirtualDirectory();
            }
            else if (multiValuedProperty.Contains(ADE12UMVirtualDirectory.MostDerivedClass))
            {
                adobject = new ADE12UMVirtualDirectory();
            }
            else if (multiValuedProperty.Contains("msExchMobileVirtualDirectory"))
            {
                adobject = new ADMobileVirtualDirectory();
            }
            else if (multiValuedProperty.Contains(ADOwaVirtualDirectory.MostDerivedClass))
            {
                adobject = new ADOwaVirtualDirectory();
            }
            else if (multiValuedProperty.Contains(ADRpcHttpVirtualDirectory.MostDerivedClass))
            {
                adobject = new ADRpcHttpVirtualDirectory();
            }
            else if (multiValuedProperty.Contains(ADMapiVirtualDirectory.MostDerivedClass))
            {
                adobject = new ADMapiVirtualDirectory();
            }
            else if (multiValuedProperty.Contains(ADAvailabilityForeignConnectorVirtualDirectory.MostDerivedClass))
            {
                adobject = new ADAvailabilityForeignConnectorVirtualDirectory();
            }
            else if (multiValuedProperty.Contains(ADOabVirtualDirectory.MostDerivedClass))
            {
                adobject = new ADOabVirtualDirectory();
            }
            else if (multiValuedProperty.Contains(ADEcpVirtualDirectory.MostDerivedClass))
            {
                adobject = new ADEcpVirtualDirectory();
            }
            else if (multiValuedProperty.Contains(Pop3AdConfiguration.MostDerivedClass))
            {
                adobject = new Pop3AdConfiguration();
            }
            else if (multiValuedProperty.Contains(Imap4AdConfiguration.MostDerivedClass))
            {
                adobject = new Imap4AdConfiguration();
            }
            else if (multiValuedProperty.Contains("mailGateway"))
            {
                if (multiValuedProperty.Contains(SmtpSendConnectorConfig.MostDerivedClass))
                {
                    adobject = new SmtpSendConnectorConfig();
                }
                else if (multiValuedProperty.Contains(DeliveryAgentConnector.MostDerivedClass))
                {
                    adobject = new DeliveryAgentConnector();
                }
                else if (propertyBag.Contains(ForeignConnectorSchema.DropDirectory))
                {
                    adobject = new ForeignConnector();
                }
                else
                {
                    adobject = new LegacyGatewayConnector();
                }
            }
            else if (multiValuedProperty.Contains("msExchEdgeSyncEhfConnector"))
            {
                adobject = new EdgeSyncEhfConnector();
            }
            else
            {
                if (!multiValuedProperty.Contains("msExchEdgeSyncMservConnector"))
                {
                    return(ADObjectFactory.CreateAndInitializeObject <TConfigObject>(propertyBag, directorySession));
                }
                adobject = new EdgeSyncMservConnector();
            }
            adobject.m_Session   = directorySession;
            adobject.propertyBag = propertyBag;
            adobject.Initialize();
            adobject.ResetChangeTracking(true);
            if (directorySession != null)
            {
                adobject.SetIsReadOnly(directorySession.ReadOnly);
            }
            return(adobject);
        }