Esempio n. 1
0
        public InstallPop3Container()
        {
            string protocolName = new Pop3AdConfiguration().ProtocolName;

            base.Name = new string[]
            {
                protocolName
            };
        }
Esempio n. 2
0
        private static bool TryDiscoverProtocolSettings(bool useLocalSite)
        {
            ITopologyConfigurationSession topologyConfigurationSession = DirectorySessionFactory.NonCacheSessionFactory.CreateTopologyConfigurationSession(ConsistencyMode.IgnoreInvalid, ADSessionSettings.FromRootOrgScopeSet(), 413, "TryDiscoverProtocolSettings", "f:\\15.00.1497\\sources\\dev\\data\\src\\ApplicationLogic\\Cafe\\GlobalServiceUrls.cs");
            ADObjectId  id               = LocalSiteCache.LocalSite.Id;
            QueryFilter queryFilter      = new ComparisonFilter(useLocalSite ? ComparisonOperator.Equal : ComparisonOperator.NotEqual, ServerSchema.ServerSite, id);
            QueryFilter additionalFilter = new AndFilter(new QueryFilter[]
            {
                queryFilter,
                GlobalServiceUrls.CafeFilter
            });
            ADPagedReader <MiniServer> adpagedReader = topologyConfigurationSession.FindAllServersWithVersionNumber(Server.E15MinVersion, additionalFilter, null);

            adpagedReader.PageSize = 20;
            int    num   = 0;
            string text  = string.Empty;
            bool   flag  = false;
            bool   flag2 = false;
            bool   flag3 = false;
            bool   flag4 = false;
            bool   flag5 = false;
            Dictionary <ServiceType, ProtocolConnectionSettings> dictionary  = null;
            Dictionary <ServiceType, ProtocolConnectionSettings> dictionary2 = null;

            foreach (MiniServer miniServer in adpagedReader)
            {
                text = miniServer.Name;
                ADEmailTransport[]             source     = topologyConfigurationSession.Find <ADEmailTransport>(miniServer.Id, QueryScope.SubTree, null, null, 1000, null);
                IEnumerable <ADEmailTransport> enumerable = from adEmailTransport in source
                                                            where adEmailTransport is Pop3AdConfiguration
                                                            select adEmailTransport;
                IEnumerable <ADEmailTransport> enumerable2 = from adEmailTransport in source
                                                             where adEmailTransport is Imap4AdConfiguration
                                                             select adEmailTransport;
                ReceiveConnector[] array = topologyConfigurationSession.Find <ReceiveConnector>(miniServer.Id, QueryScope.SubTree, GlobalServiceUrls.ReceiveConnectorFilter, null, 1000, null);
                ExTraceGlobals.CafeTracer.TraceDebug <int, string, int>(0L, "[GlobalServiceUrls.TryDiscoverProtocolSettings] Attempt {0}: Processing {1} and its {2} connectors", num, text, array.Length);
                dictionary  = new Dictionary <ServiceType, ProtocolConnectionSettings>(3);
                dictionary2 = new Dictionary <ServiceType, ProtocolConnectionSettings>(3);
                flag        = false;
                flag2       = false;
                flag3       = false;
                flag4       = false;
                flag5       = false;
                foreach (ADEmailTransport ademailTransport in enumerable)
                {
                    Pop3AdConfiguration popImapConfiguration = (Pop3AdConfiguration)ademailTransport;
                    if (!flag && GlobalServiceUrls.TrySelectProtocolConnectionSettings(ServiceType.Pop3, popImapConfiguration, true, dictionary))
                    {
                        flag = true;
                    }
                    if (!flag2 && GlobalServiceUrls.TrySelectProtocolConnectionSettings(ServiceType.Pop3, popImapConfiguration, false, dictionary2))
                    {
                        flag2 = true;
                    }
                    if (flag && flag2)
                    {
                        break;
                    }
                }
                foreach (ADEmailTransport ademailTransport2 in enumerable2)
                {
                    Imap4AdConfiguration popImapConfiguration2 = (Imap4AdConfiguration)ademailTransport2;
                    if (!flag3 && GlobalServiceUrls.TrySelectProtocolConnectionSettings(ServiceType.Imap4, popImapConfiguration2, true, dictionary))
                    {
                        flag3 = true;
                    }
                    if (!flag4 && GlobalServiceUrls.TrySelectProtocolConnectionSettings(ServiceType.Imap4, popImapConfiguration2, false, dictionary2))
                    {
                        flag4 = true;
                    }
                    if (flag3 && flag4)
                    {
                        break;
                    }
                }
                ProtocolConnectionSettings protocolConnectionSettings = null;
                foreach (ReceiveConnector receiveConnector in array)
                {
                    Hostname hostname;
                    if (!Hostname.TryParse(receiveConnector.ServiceDiscoveryFqdn, out hostname) && !Hostname.TryParse(receiveConnector.Fqdn, out hostname))
                    {
                        ExTraceGlobals.CafeTracer.TraceWarning <ADObjectId>(0L, "[GlobalServiceUrls.TryDiscoverProtocolSettings] Smtp connector {0} has no valid ServiceDiscoveryFqdn or Fqdn", receiveConnector.Id);
                    }
                    else
                    {
                        int  port  = receiveConnector.Bindings[0].Port;
                        bool flag6 = (receiveConnector.AuthMechanism & (AuthMechanisms.Tls | AuthMechanisms.BasicAuthRequireTLS)) != AuthMechanisms.None;
                        if (flag6)
                        {
                            protocolConnectionSettings = new ProtocolConnectionSettings(hostname, port, new EncryptionType?(EncryptionType.TLS));
                            break;
                        }
                        if (protocolConnectionSettings == null)
                        {
                            protocolConnectionSettings = new ProtocolConnectionSettings(hostname, port, null);
                        }
                    }
                }
                if (protocolConnectionSettings != null)
                {
                    dictionary[ServiceType.Smtp]  = protocolConnectionSettings;
                    dictionary2[ServiceType.Smtp] = protocolConnectionSettings;
                    flag5 = true;
                }
                if (flag2 && flag4 && flag5)
                {
                    ExTraceGlobals.CafeTracer.TraceDebug(0L, "[GlobalServiceUrls.TryDiscoverProtocolSettings] Successfully found all needed internal protocol settings");
                    GlobalServiceUrls.E15ProtocolsInternal = dictionary2;
                }
                if (flag && flag3 && flag5)
                {
                    ExTraceGlobals.CafeTracer.TraceDebug(0L, "[GlobalServiceUrls.TryDiscoverProtocolSettings] Successfully found all needed external protocol settings");
                    GlobalServiceUrls.E15Protocols = dictionary;
                    return(true);
                }
                if (++num >= 20)
                {
                    ExTraceGlobals.CafeTracer.TraceError(0L, "[GlobalServiceUrls.TryDiscoverProtocolSettings] Retry limit reached, Could not find all of the needed Protocol configurations.");
                    break;
                }
            }
            if (!GlobalServiceUrls.IsDatacenter)
            {
                if (dictionary != null && dictionary.Count > 0)
                {
                    ExTraceGlobals.CafeTracer.TraceWarning(0L, "[GlobalServiceUrls.TryDiscoverProtocolSettings] Found only some of the needed external protocol settings. Missing:" + (flag ? string.Empty : "POP3,") + (flag3 ? string.Empty : "IMAP4,") + (flag5 ? string.Empty : "SMTP"));
                    GlobalServiceUrls.E15Protocols = dictionary;
                }
                if (dictionary2 != null && dictionary2.Count > 0)
                {
                    ExTraceGlobals.CafeTracer.TraceWarning(0L, "[GlobalServiceUrls.TryDiscoverProtocolSettings] Found only some of the needed internal protocol settings. Missing:" + (flag2 ? string.Empty : "POP3,") + (flag4 ? string.Empty : "IMAP4,") + (flag5 ? string.Empty : "SMTP"));
                    GlobalServiceUrls.E15ProtocolsInternal = dictionary2;
                }
            }
            if (!useLocalSite && GlobalServiceUrls.E15Protocols == null)
            {
                if (GlobalServiceUrls.IsDatacenter)
                {
                    throw new ProtocolConfigurationMissingException(text, "ExternalSettings");
                }
                GlobalServiceUrls.E15Protocols = new Dictionary <ServiceType, ProtocolConnectionSettings>(0);
            }
            if (!useLocalSite && GlobalServiceUrls.E15ProtocolsInternal == null)
            {
                if (GlobalServiceUrls.IsDatacenter)
                {
                    throw new ProtocolConfigurationMissingException(text, "InternalSettings");
                }
                GlobalServiceUrls.E15ProtocolsInternal = new Dictionary <ServiceType, ProtocolConnectionSettings>(0);
            }
            return(false);
        }
Esempio n. 3
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);
        }