public InstallPop3Container() { string protocolName = new Pop3AdConfiguration().ProtocolName; base.Name = new string[] { protocolName }; }
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); }
// 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); }