private void UpdateIntegratedMetabase(ADOwaVirtualDirectory dataObject) { if (Datacenter.IsMultiTenancyEnabled()) { base.WriteError(new TaskException(Strings.IntegratedVDirNotSupported), ErrorCategory.InvalidOperation, null); return; } try { using (DirectoryEntry directoryEntry = IisUtility.FindWebDirObject(dataObject.MetabasePath, "Integrated")) { bool flag = false; if (dataObject.IntegratedFeaturesEnabled != null && dataObject.IntegratedFeaturesEnabled != null) { flag = dataObject.IntegratedFeaturesEnabled.Value; } if (flag) { IisUtility.SetAuthenticationMethod(directoryEntry, MetabasePropertyTypes.AuthFlags.Ntlm, true); } else { IisUtility.SetAuthenticationMethod(directoryEntry, AuthenticationMethodFlags.None, true); this.WriteWarning(Strings.IntegratedVDirDisabledWarning); } directoryEntry.CommitChanges(); } } catch (WebObjectNotFoundException) { base.WriteError(new TaskException(Strings.IntegratedVDirNotFound), ErrorCategory.InvalidOperation, null); } }
private void UpdateCalendarMetabase(ADOwaVirtualDirectory dataObject) { try { using (DirectoryEntry directoryEntry = IisUtility.FindWebDirObject(dataObject.MetabasePath, "Calendar")) { if (dataObject.AnonymousFeaturesEnabled == true) { IisUtility.SetAuthenticationMethod(directoryEntry, MetabasePropertyTypes.AuthFlags.Anonymous, true); } else { IisUtility.SetAuthenticationMethod(directoryEntry, AuthenticationMethodFlags.None, true); } directoryEntry.CommitChanges(); } if (dataObject.AnonymousFeaturesEnabled == false) { this.WriteWarning(Strings.CalendarVDirDisabledWarning); } } catch (WebObjectNotFoundException) { base.WriteError(new TaskException(Strings.CalendarVDirNotFound), ErrorCategory.InvalidOperation, null); } }
internal static void UpdateMetabase(ExchangeWebAppVirtualDirectory webAppVirtualDirectory, string metabasePath, bool enableAnonymous) { try { DirectoryEntry directoryEntry2; DirectoryEntry directoryEntry = directoryEntry2 = IisUtility.CreateIISDirectoryEntry(webAppVirtualDirectory.MetabasePath); try { ArrayList arrayList = new ArrayList(); if (webAppVirtualDirectory.DefaultDomain.Length > 0) { arrayList.Add(new MetabaseProperty("DefaultLogonDomain", webAppVirtualDirectory.DefaultDomain, true)); } else if (webAppVirtualDirectory.DefaultDomain == "") { directoryEntry.Properties["DefaultLogonDomain"].Clear(); } IisUtility.SetProperties(directoryEntry, arrayList); directoryEntry.CommitChanges(); IisUtility.SetAuthenticationMethod(directoryEntry, AuthenticationMethodFlags.None, true); IisUtility.SetAuthenticationMethod(directoryEntry, AuthenticationMethodFlags.Basic, webAppVirtualDirectory.BasicAuthentication); IisUtility.SetAuthenticationMethod(directoryEntry, AuthenticationMethodFlags.Digest, webAppVirtualDirectory.DigestAuthentication); IisUtility.SetAuthenticationMethod(directoryEntry, AuthenticationMethodFlags.WindowsIntegrated, webAppVirtualDirectory.WindowsAuthentication); IisUtility.SetAuthenticationMethod(directoryEntry, AuthenticationMethodFlags.LiveIdFba, webAppVirtualDirectory.LiveIdAuthentication); if (webAppVirtualDirectory.FormsAuthentication) { OwaIsapiFilter.EnableFba(directoryEntry); } else { OwaIsapiFilter.DisableFba(directoryEntry); } IisUtility.SetAuthenticationMethod(directoryEntry, MetabasePropertyTypes.AuthFlags.Anonymous, enableAnonymous); directoryEntry.CommitChanges(); } finally { if (directoryEntry2 != null) { ((IDisposable)directoryEntry2).Dispose(); } } GzipLevel gzipLevel = webAppVirtualDirectory.GzipLevel; string site = IisUtility.WebSiteFromMetabasePath(webAppVirtualDirectory.MetabasePath); Gzip.SetIisGzipLevel(site, GzipLevel.High); Gzip.SetVirtualDirectoryGzipLevel(webAppVirtualDirectory.MetabasePath, gzipLevel); } catch (IISGeneralCOMException ex) { if (ex.Code == -2147023174) { throw new IISNotReachableException(IisUtility.GetHostName(webAppVirtualDirectory.MetabasePath), ex.Message); } throw; } }
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()); } }
internal static void UpdateMetabase(ADOabVirtualDirectory virtualDirectory, Task.TaskErrorLoggingDelegate handler) { try { DirectoryEntry directoryEntry2; DirectoryEntry directoryEntry = directoryEntry2 = IisUtility.CreateIISDirectoryEntry(virtualDirectory.MetabasePath); try { ArrayList arrayList = new ArrayList(); int num = (int)(IisUtility.GetIisPropertyValue("AccessSSLFlags", IisUtility.GetProperties(directoryEntry)) ?? 0); if (virtualDirectory.RequireSSL) { num |= 8; } else { num &= -9; num &= -257; num &= -65; } arrayList.Add(new MetabaseProperty("AccessSSLFlags", num, true)); IisUtility.SetAuthenticationMethod(directoryEntry, AuthenticationMethodFlags.Basic, virtualDirectory.BasicAuthentication); IisUtility.SetAuthenticationMethod(directoryEntry, AuthenticationMethodFlags.WindowsIntegrated, virtualDirectory.WindowsAuthentication); IisUtility.SetProperties(directoryEntry, arrayList); directoryEntry.CommitChanges(); IisUtility.CommitMetabaseChanges((virtualDirectory.Server == null) ? null : virtualDirectory.Server.ToString()); } finally { if (directoryEntry2 != null) { ((IDisposable)directoryEntry2).Dispose(); } } } catch (COMException exception) { handler(exception, ErrorCategory.InvalidOperation, virtualDirectory.Identity); } }
private void UpdateOmaMetabase(ADOwaVirtualDirectory dataObject) { try { using (DirectoryEntry directoryEntry = IisUtility.FindWebDirObject(dataObject.MetabasePath, "oma")) { if (dataObject.LiveIdAuthentication) { IisUtility.SetAuthenticationMethod(directoryEntry, AuthenticationMethodFlags.Basic, false); } else { IisUtility.SetAuthenticationMethod(directoryEntry, AuthenticationMethodFlags.Basic, true); } directoryEntry.CommitChanges(); } } catch (WebObjectNotFoundException) { base.WriteError(new TaskException(Strings.OmaVDirNotFound), ErrorCategory.InvalidOperation, null); } }