internal static void UninstallIsapiFilter(ADMobileVirtualDirectory vdirObject) { using (DirectoryEntry directoryEntry = IisUtility.CreateIISDirectoryEntry(vdirObject.MetabasePath)) { ActiveSyncIsapiFilter.Uninstall(directoryEntry); } }
internal static void InstallIsapiFilter(ADMobileVirtualDirectory vdirObject, bool forCafe) { using (DirectoryEntry directoryEntry = IisUtility.CreateIISDirectoryEntry(vdirObject.MetabasePath)) { if (forCafe) { ActiveSyncIsapiFilter.InstallForCafe(directoryEntry); } else { ActiveSyncIsapiFilter.Install(directoryEntry); } } }
protected override IConfigurable PrepareDataObject() { ADMobileVirtualDirectory admobileVirtualDirectory = (ADMobileVirtualDirectory)base.PrepareDataObject(); if (base.HasErrors) { return(null); } if (admobileVirtualDirectory.ExchangeVersion.IsOlderThan(admobileVirtualDirectory.MaximumSupportedExchangeObjectVersion)) { admobileVirtualDirectory.SetExchangeVersion(admobileVirtualDirectory.MaximumSupportedExchangeObjectVersion); } return(admobileVirtualDirectory); }
private static void UpdateSubDirectory(ADMobileVirtualDirectory dataObject, string vdirPath, Task task) { if (IisUtility.Exists(vdirPath)) { using (DirectoryEntry directoryEntry = IisUtility.CreateIISDirectoryEntry(vdirPath)) { IisUtility.SetAuthenticationMethod(directoryEntry, AuthenticationMethodFlags.None, false); IisUtility.SetAuthenticationMethod(directoryEntry, AuthenticationMethodFlags.WindowsIntegrated, true); IisUtility.SetProperty(directoryEntry, "AccessFlags", MetabasePropertyTypes.AccessFlags.Script, true); directoryEntry.CommitChanges(); } } if (dataObject.ProxyVirtualDirectoryObject != null) { MobileSyncVirtualDirectoryHelper.CopyProxyExtendedParameters(dataObject); ExtendedProtection.CommitToMetabase(dataObject.ProxyVirtualDirectoryObject, task); } }
public static void SetToMetabase(ADMobileVirtualDirectory adObject, Task task) { string metabasePath = adObject.MetabasePath; using (DirectoryEntry directoryEntry = IisUtility.CreateIISDirectoryEntry(metabasePath)) { ArrayList arrayList = new ArrayList(); int? num = (int?)directoryEntry.Properties["AccessSSLFlags"].Value; if (num == null) { num = new int?(0); } if (adObject.ClientCertAuth == ClientCertAuthTypes.Ignore) { int num2 = 96; num &= ~num2; } else if (adObject.ClientCertAuth == ClientCertAuthTypes.Required) { num |= 96; } else if (adObject.ClientCertAuth == ClientCertAuthTypes.Accepted) { num = ((num & -65) | 32); } else { int num3 = 96; num &= ~num3; } MetabaseProperty value = new MetabaseProperty("AccessSSLFlags", num); arrayList.Add(value); IisUtility.SetAuthenticationMethod(directoryEntry, AuthenticationMethodFlags.Basic, adObject.BasicAuthEnabled); IisUtility.SetAuthenticationMethod(directoryEntry, AuthenticationMethodFlags.WindowsIntegrated, adObject.WindowsAuthEnabled); MetabaseProperty value2 = new MetabaseProperty("DoDynamicCompression", adObject.CompressionEnabled); arrayList.Add(value2); IisUtility.SetProperties(directoryEntry, arrayList); directoryEntry.CommitChanges(); string vdirPath = string.Format("{0}/{1}", adObject.MetabasePath, "Proxy"); MobileSyncVirtualDirectoryHelper.UpdateSubDirectory(adObject, vdirPath, task); IisUtility.CommitMetabaseChanges((adObject.Server == null) ? null : adObject.Server.ToString()); } }
private static void InstallSubDirectory(ADMobileVirtualDirectory dataObject, string subDirectoryName, Task task) { bool flag = false; using (DirectoryEntry directoryEntry = IisUtility.CreateIISDirectoryEntry(dataObject.MetabasePath, new Task.TaskErrorLoggingReThrowDelegate(task.WriteError), dataObject.Identity)) { string path = Path.Combine(directoryEntry.Properties["Path"].Value.ToString(), subDirectoryName); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } string text = string.Format("{0}/{1}", dataObject.MetabasePath, subDirectoryName); if (!IisUtility.Exists(text)) { IisUtility.CreateWebDirectory(directoryEntry, subDirectoryName); MobileSyncVirtualDirectoryHelper.UpdateSubDirectory(dataObject, text, task); directoryEntry.CommitChanges(); IisUtility.CommitMetabaseChanges((dataObject.Server == null) ? null : dataObject.Server.Name); flag = true; } ExTraceGlobals.TaskTracer.Information(0L, string.Format("Installed SubDirectory '{0}' with result '{1}'", subDirectoryName, flag)); } }
// 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); }
private static void CopyProxyExtendedParameters(ADMobileVirtualDirectory adObject) { adObject.ProxyVirtualDirectoryObject.ExtendedProtectionTokenChecking = adObject.ExtendedProtectionTokenChecking; adObject.ProxyVirtualDirectoryObject.ExtendedProtectionFlags = adObject.ExtendedProtectionFlags; adObject.ProxyVirtualDirectoryObject.ExtendedProtectionSPNList = adObject.ExtendedProtectionSPNList; }
internal static void InstallProxySubDirectory(ADMobileVirtualDirectory dataObject, Task task) { dataObject.InitProxyVDirDataObject(); MobileSyncVirtualDirectoryHelper.InstallSubDirectory(dataObject, "Proxy", task); }
public static void ReadFromMetabase(ADMobileVirtualDirectory vdirObject, Task task) { MetabasePropertyTypes.AccessSSLFlags accessSSLFlags = MetabasePropertyTypes.AccessSSLFlags.AccessSSL | MetabasePropertyTypes.AccessSSLFlags.AccessSSLNegotiateCert | MetabasePropertyTypes.AccessSSLFlags.AccessSSLRequireCert; string metabasePath = vdirObject.MetabasePath; if (string.IsNullOrEmpty(metabasePath)) { return; } MetabaseProperty[] array = null; using (DirectoryEntry directoryEntry = IisUtility.CreateIISDirectoryEntry(metabasePath)) { array = IisUtility.GetProperties(directoryEntry); } uint num = 0U; bool flag = false; foreach (MetabaseProperty metabaseProperty in array) { if (string.Equals(metabaseProperty.Name, "AuthFlags", StringComparison.OrdinalIgnoreCase)) { object value = metabaseProperty.Value; if (value != null) { MetabasePropertyTypes.AuthFlags authFlags = (MetabasePropertyTypes.AuthFlags)((int)value); vdirObject.BasicAuthEnabled = ((authFlags & MetabasePropertyTypes.AuthFlags.Basic) == MetabasePropertyTypes.AuthFlags.Basic); vdirObject.WindowsAuthEnabled = ((authFlags & MetabasePropertyTypes.AuthFlags.Ntlm) == MetabasePropertyTypes.AuthFlags.Ntlm); } num += 1U; } else if (string.Equals(metabaseProperty.Name, "DoDynamicCompression", StringComparison.OrdinalIgnoreCase)) { object value2 = metabaseProperty.Value; if (value2 != null) { vdirObject.CompressionEnabled = (bool)value2; } num += 1U; } else if (string.Equals(metabaseProperty.Name, "AccessSSLFlags", StringComparison.OrdinalIgnoreCase)) { int?num2 = (int?)metabaseProperty.Value; if (num2 != null) { if ((num2.Value & (int)accessSSLFlags) == (int)accessSSLFlags) { vdirObject.ClientCertAuth = new ClientCertAuthTypes?(ClientCertAuthTypes.Required); } else if ((num2.Value & 32) == 32) { vdirObject.ClientCertAuth = new ClientCertAuthTypes?(ClientCertAuthTypes.Accepted); } else { vdirObject.ClientCertAuth = new ClientCertAuthTypes?(ClientCertAuthTypes.Ignore); } if ((num2.Value & 8) == 8) { vdirObject.WebSiteSSLEnabled = true; } else { vdirObject.WebSiteSSLEnabled = false; } } else { vdirObject.ClientCertAuth = new ClientCertAuthTypes?(ClientCertAuthTypes.Ignore); vdirObject.WebSiteSSLEnabled = false; } flag = true; num += 1U; } else if (string.Equals(metabaseProperty.Name, "AppFriendlyName", StringComparison.OrdinalIgnoreCase)) { object value3 = metabaseProperty.Value; if (value3 != null) { vdirObject.VirtualDirectoryName = (string)value3; } num += 1U; } else if (num == 4U) { break; } } if (!flag) { int startIndex = metabasePath.LastIndexOf('/'); string iisDirectoryEntryPath = metabasePath.Remove(startIndex); using (DirectoryEntry directoryEntry2 = IisUtility.CreateIISDirectoryEntry(iisDirectoryEntryPath)) { int?num3 = (int?)directoryEntry2.Properties["AccessSSLFlags"].Value; if (num3 != null) { if ((num3.Value & (int)accessSSLFlags) == (int)accessSSLFlags) { vdirObject.ClientCertAuth = new ClientCertAuthTypes?(ClientCertAuthTypes.Required); } else if ((num3.Value & 32) == 32) { vdirObject.ClientCertAuth = new ClientCertAuthTypes?(ClientCertAuthTypes.Accepted); } else { vdirObject.ClientCertAuth = new ClientCertAuthTypes?(ClientCertAuthTypes.Ignore); } if ((num3.Value & 8) == 8) { vdirObject.WebSiteSSLEnabled = true; } else { vdirObject.WebSiteSSLEnabled = false; } } else { vdirObject.ClientCertAuth = new ClientCertAuthTypes?(ClientCertAuthTypes.Ignore); vdirObject.WebSiteSSLEnabled = false; } } } char[] separator = new char[] { '/' }; string[] array3 = metabasePath.Split(separator); int num4 = array3.Length - 2; if (num4 <= 0) { return; } StringBuilder stringBuilder = new StringBuilder(47); for (int j = 0; j < num4; j++) { stringBuilder.Append(array3[j]); if (j < num4 - 1) { stringBuilder.Append('/'); } } using (DirectoryEntry directoryEntry3 = IisUtility.CreateIISDirectoryEntry(stringBuilder.ToString())) { array = IisUtility.GetProperties(directoryEntry3); } MetabaseProperty[] array4 = array; int k = 0; while (k < array4.Length) { MetabaseProperty metabaseProperty2 = array4[k]; if (string.Compare(metabaseProperty2.Name, "ServerComment", true) == 0) { object value4 = metabaseProperty2.Value; if (value4 != null) { vdirObject.WebsiteName = (string)value4; break; } break; } else { k++; } } vdirObject.InitProxyVDirDataObject(); ExtendedProtection.LoadFromMetabase(vdirObject, task); }