protected override void InternalProcessRecord() { TaskLogger.LogEnter(); try { using (IsapiExtensionList isapiExtensionList = new IsapiExtensionList(this.HostName)) { for (int i = 0; i < this.ExtensionCount; i++) { IisWebServiceExtension iisWebServiceExtension = this[i]; List <int> list = isapiExtensionList.FindMatchingExtensions(this.GroupID, iisWebServiceExtension.ExecutableName); for (int j = list.Count - 1; j >= 0; j--) { isapiExtensionList.RemoveAt(list[j]); } } isapiExtensionList.CommitChanges(); IisUtility.CommitMetabaseChanges(this.HostName); } OwaIsapiFilter.RemoveFilters(this.HostName); } catch (IISNotInstalledException exception) { base.WriteError(exception, ErrorCategory.NotInstalled, this); } TaskLogger.LogExit(); }
internal static void SetStatus(string hostName, string groupID, string extensionBinary, bool allow) { using (IsapiExtensionList isapiExtensionList = new IsapiExtensionList(hostName)) { List <int> list = isapiExtensionList.FindMatchingExtensions(groupID, extensionBinary); if (list.Count == 0) { throw new ManageIsapiExtensionCouldNotFindExtensionException(groupID, extensionBinary); } if (list.Count != 1) { StringBuilder stringBuilder = new StringBuilder(); for (int i = 0; i < list.Count; i++) { stringBuilder.Append(isapiExtensionList[i].ToMetabaseString()); stringBuilder.Append("\r\n"); } throw new ManageIsapiExtensionFoundMoreThanOneExtensionException(groupID, extensionBinary, stringBuilder.ToString()); } IsapiExtension isapiExtension = isapiExtensionList[list[0]]; if (isapiExtension.Allow != allow) { isapiExtensionList[list[0]] = new IsapiExtension(isapiExtension.PhysicalPath, isapiExtension.GroupID, isapiExtension.Description, allow, isapiExtension.UIDeletable); isapiExtensionList.CommitChanges(); IisUtility.CommitMetabaseChanges(hostName); } } }
internal static void UpdateMetabase(ADOabVirtualDirectory virtualDirectory, bool updateAuthenticationMethod, 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)); if (updateAuthenticationMethod) { uint num2 = (uint)((int)(IisUtility.GetIisPropertyValue("AuthFlags", IisUtility.GetProperties(directoryEntry)) ?? 0)); num2 |= 4U; num2 &= 4294967294U; arrayList.Add(new MetabaseProperty("AuthFlags", num2, true)); MultiValuedProperty <AuthenticationMethod> multiValuedProperty = new MultiValuedProperty <AuthenticationMethod>(); multiValuedProperty.Add(AuthenticationMethod.WindowsIntegrated); if (IisUtility.CheckForAuthenticationMethod(directoryEntry, AuthenticationMethodFlags.Basic)) { multiValuedProperty.Add(AuthenticationMethod.Basic); } if (IisUtility.CheckForAuthenticationMethod(directoryEntry, AuthenticationMethodFlags.Digest)) { multiValuedProperty.Add(AuthenticationMethod.Digest); } if (IisUtility.CheckForAuthenticationMethod(directoryEntry, AuthenticationMethodFlags.Fba)) { multiValuedProperty.Add(AuthenticationMethod.Fba); } virtualDirectory.ExternalAuthenticationMethods = (virtualDirectory.InternalAuthenticationMethods = multiValuedProperty); } 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 static void RemoveFilterFromLoadOrder(DirectoryEntry filterContainer, string name) { string text = (string)filterContainer.Properties["FilterLoadOrder"].Value; if (text == null || text.Length == 0) { return; } StringBuilder stringBuilder = new StringBuilder(); string[] array = text.Split(new char[] { ',' }); for (int i = 0; i < array.Length; i++) { if (string.Compare(array[i], name, true, CultureInfo.InvariantCulture) != 0) { stringBuilder.Append(array[i]); stringBuilder.Append(","); } } if (stringBuilder.Length > 0) { stringBuilder.Remove(stringBuilder.Length - 1, 1); } filterContainer.Properties["FilterLoadOrder"].Value = stringBuilder.ToString(); filterContainer.CommitChanges(); IisUtility.CommitMetabaseChanges(IisUtility.ServerFromWebSite(IisUtility.WebSiteFromMetabasePath(filterContainer.Path))); }
private static void SetFlags(string server, string path, OwaIsapiFilter.FormsAuthPropertyFlags flags) { IMSAdminBase imsadminBase = IMSAdminBaseHelper.Create(server); string text = "/LM" + path; SafeMetadataHandle safeMetadataHandle; int num = IMSAdminBaseHelper.OpenKey(imsadminBase, SafeMetadataHandle.MetadataMasterRootHandle, text, MBKeyAccess.Write, 15000, out safeMetadataHandle); using (safeMetadataHandle) { if (num == -2147024748) { throw new FormsAuthenticationErrorPathBusyException(text); } if (num == -2147024893) { throw new FormsAuthenticationMarkPathErrorPathNotFoundException(text); } if (num < 0) { throw new OwaIsapiFilterException(Strings.FormsAuthenticationMarkPathErrorUnknownOpenError(text), num); } MetadataRecord metadataRecord = OwaIsapiFilter.CreateFormsRecord(MBAttributes.Inherit); using (metadataRecord) { Marshal.WriteInt32(metadataRecord.DataBuf.DangerousGetHandle(), (int)flags); num = imsadminBase.SetData(safeMetadataHandle, string.Empty, metadataRecord); } if (num == -2147024891) { throw new FormsAuthenticationMarkPathAccessDeniedException(text, 45054); } if (num == -2147024888) { throw new OutOfMemoryException(); } if (num == -2147024893) { throw new FormsAuthenticationMarkPathErrorPathNotFoundException(text); } if (num == -2146646008) { throw new FormsAuthenticationMarkPathCannotMarkSecureAttributeException(text, 45054); } if (num < 0) { throw new FormsAuthenticationMarkPathUnknownSetError(text, 45054, num); } } num = IisUtility.CommitMetabaseChanges(server); if (num < 0) { throw new OwaIsapiFilterException(Strings.CommitMetabaseChangesException(server), num); } }
internal static void SetVirtualDirectoryGzipLevel(string adsiVirtualDirectoryPath, GzipLevel gzipLevel) { using (DirectoryEntry directoryEntry = IisUtility.CreateIISDirectoryEntry(adsiVirtualDirectoryPath)) { bool flag = gzipLevel == GzipLevel.High; bool flag2 = gzipLevel == GzipLevel.Low || gzipLevel == GzipLevel.High; IisUtility.SetProperty(directoryEntry, "DoDynamicCompression", flag, true); IisUtility.SetProperty(directoryEntry, "DoStaticCompression", flag2, true); directoryEntry.CommitChanges(); IisUtility.CommitMetabaseChanges(IisUtility.ServerFromWebSite(IisUtility.WebSiteFromMetabasePath(directoryEntry.Path))); } }
protected override void InternalProcessRecord() { TaskLogger.LogEnter(); string text = ConfigurationContext.Setup.InstallPath.TrimEnd(new char[] { '\\' }); try { using (IsapiExtensionList isapiExtensionList = new IsapiExtensionList(this.HostName)) { bool flag = false; for (int i = 0; i < this.ExtensionCount; i++) { IisWebServiceExtension iisWebServiceExtension = this[i]; string text2 = string.Concat(new object[] { text, '\\', iisWebServiceExtension.RelativePath, '\\', iisWebServiceExtension.ExecutableName }); if (isapiExtensionList.Exists(this.GroupID, text2)) { base.WriteVerbose(Strings.InstallIisWebServiceExtensionExists(this.GroupID, text2)); } else { base.WriteVerbose(Strings.InstallIisWebServiceExtensionAdding(this.GroupID, text2)); isapiExtensionList.Add(new IsapiExtension(text2, this.GroupID, this.GroupDescription, iisWebServiceExtension.Allow, iisWebServiceExtension.UiDeletable)); flag = true; } } if (flag) { base.WriteVerbose(Strings.InstallIisWebServiceExtensionCommitting); isapiExtensionList.CommitChanges(); IisUtility.CommitMetabaseChanges(this.HostName); } else { base.WriteVerbose(Strings.InstallIisWebServiceExtensionNoChanges); } } } catch (IISNotInstalledException exception) { base.WriteError(exception, ErrorCategory.NotInstalled, this); } TaskLogger.LogExit(); }
public static DirectoryEntry CreateIsapiFilter(string parent, string localPath, string filterName, out bool created) { created = false; DirectoryEntry directoryEntry = null; DirectoryEntry result; try { bool flag; using (DirectoryEntry directoryEntry2 = IisUtility.FindOrCreateWebObject(parent, "Filters", "IIsFilters", out flag)) { if (flag) { directoryEntry2.CommitChanges(); IisUtility.CommitMetabaseChanges(IisUtility.ServerFromWebSite(IisUtility.WebSiteFromMetabasePath(directoryEntry2.Path))); } directoryEntry = IisUtility.FindOrCreateWebObject(directoryEntry2.Path, filterName, "IIsFilter", out flag); if (flag || (directoryEntry.Properties["FilterPath"].Value is string && (string)directoryEntry.Properties["FilterPath"].Value != localPath)) { directoryEntry.Properties["FilterPath"].Value = localPath; flag = true; } string text = (string)directoryEntry2.Properties["FilterLoadOrder"].Value; if (text == null || text.Length == 0) { directoryEntry2.Properties["FilterLoadOrder"].Value = filterName; } else if (!IsapiFilter.IsFilterInLoadOrder(text, filterName)) { StringBuilder stringBuilder = new StringBuilder(text); stringBuilder.Append(","); stringBuilder.Append(filterName); directoryEntry2.Properties["FilterLoadOrder"].Value = stringBuilder.ToString(); } directoryEntry2.CommitChanges(); IisUtility.CommitMetabaseChanges(IisUtility.ServerFromWebSite(IisUtility.WebSiteFromMetabasePath(directoryEntry2.Path))); created = flag; result = directoryEntry; } } catch (Exception) { if (directoryEntry != null) { directoryEntry.Close(); } throw; } return(result); }
internal void CommitMetabaseValues(ExchangeVirtualDirectory dataObject, ArrayList MetabasePropertiesToChange) { if (MetabasePropertiesToChange != null) { string metabasePath = dataObject.MetabasePath; Task.TaskErrorLoggingReThrowDelegate writeError = new Task.TaskErrorLoggingReThrowDelegate(this.WriteError); T dataObject2 = this.DataObject; using (DirectoryEntry directoryEntry = IisUtility.CreateIISDirectoryEntry(metabasePath, writeError, dataObject2.Identity)) { IisUtility.SetProperties(directoryEntry, MetabasePropertiesToChange); directoryEntry.CommitChanges(); IisUtility.CommitMetabaseChanges((dataObject.Server == null) ? null : dataObject.Server.Name); } } }
protected override void InternalProcessRecord() { TaskLogger.LogEnter(); base.InternalProcessRecord(); if (this.scriptMapPhysicalPath != null && !IisUtility.IsAnyWebVirtualDirUsingThisExecutableInScriptMap(base.DataObject.Server.Name, this.scriptMapPhysicalPath)) { using (IsapiExtensionList isapiExtensionList = new IsapiExtensionList(base.DataObject.Server.Name)) { isapiExtensionList.RemoveByExecutable(this.scriptMapPhysicalPath); isapiExtensionList.CommitChanges(); IisUtility.CommitMetabaseChanges((base.DataObject.Server == null) ? null : base.DataObject.Server.Name); } } TaskLogger.LogExit(); }
public void Execute() { DirectoryEntry directoryEntry = IisUtility.CreateWebDirObject(this.Parent, this.LocalPath, this.Name); if (this.CustomizedVDirProperties != null) { IisUtility.SetProperties(directoryEntry, this.CustomizedVDirProperties); } directoryEntry.CommitChanges(); string hostName = IisUtility.GetHostName(this.Parent); IisUtility.CommitMetabaseChanges(hostName); if (this.ApplicationPool != null && IisUtility.IsSupportedIisVersion(hostName)) { string appPoolRootPath = IisUtility.GetAppPoolRootPath(hostName); if (!IisUtility.Exists(appPoolRootPath, this.ApplicationPool, "IIsApplicationPool")) { using (DirectoryEntry directoryEntry2 = IisUtility.CreateApplicationPool(hostName, this.ApplicationPool)) { IisUtility.SetProperty(directoryEntry2, "AppPoolIdentityType", (int)this.AppPoolIdentityType, true); IisUtility.SetProperty(directoryEntry2, "managedPipelineMode", (int)this.AppPoolManagedPipelineMode, true); if (this.AppPoolQueueLength != 0) { IisUtility.SetProperty(directoryEntry2, "AppPoolQueueLength", this.AppPoolQueueLength, true); } directoryEntry2.CommitChanges(); IisUtility.CommitMetabaseChanges(hostName); using (ServerManager serverManager = new ServerManager()) { ApplicationPool applicationPool = serverManager.ApplicationPools[this.ApplicationPool]; applicationPool.ProcessModel.LoadUserProfile = true; if (this.MaximumMemory != 0L) { applicationPool.Recycling.PeriodicRestart.Memory = this.MaximumMemory; } if (this.MaximumPrivateMemory != 0L) { applicationPool.Recycling.PeriodicRestart.PrivateMemory = this.MaximumPrivateMemory; } serverManager.CommitChanges(); } } } IisUtility.AssignApplicationPool(directoryEntry, this.ApplicationPool); } }
public static void RemoveIsapiFilter(string parent, string name) { DirectoryEntry directoryEntry = null; DirectoryEntry directoryEntry2 = null; try { directoryEntry = IisUtility.FindWebObject(parent, "Filters", "IIsFilters"); directoryEntry2 = directoryEntry.Children.Find(name, string.Empty); directoryEntry.Children.Remove(directoryEntry2); directoryEntry.CommitChanges(); IisUtility.CommitMetabaseChanges(IisUtility.ServerFromWebSite(IisUtility.WebSiteFromMetabasePath(directoryEntry.Path))); } catch (WebObjectNotFoundException) { } catch (DirectoryNotFoundException) { if (directoryEntry == null || directoryEntry2 != null) { throw; } } catch (Exception innerException) { if (directoryEntry2 != null) { throw new IsapiFilterNotRemovedException(parent, name, innerException); } throw; } finally { if (directoryEntry2 != null) { directoryEntry2.Close(); } using (directoryEntry) { if (directoryEntry != null) { IsapiFilter.RemoveFilterFromLoadOrder(directoryEntry, name); } } } }
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 UpdateVDirScriptMaps() { TaskLogger.LogEnter(); using (DirectoryEntry directoryEntry = IisUtility.CreateIISDirectoryEntry(this.DataObject.MetabasePath, new Task.TaskErrorLoggingReThrowDelegate(this.WriteError), this.DataObject.Identity)) { string[] array = new string[directoryEntry.Properties["ScriptMaps"].Count]; directoryEntry.Properties["ScriptMaps"].CopyTo(array, 0); ExTraceGlobals.TaskTracer.Information((long)this.GetHashCode(), "UpdateVDirScriptMaps got ScriptMaps property"); int num = 0; string[] array2 = array; int i = 0; while (i < array2.Length) { string text = array2[i]; if (text.StartsWith(".aspx", StringComparison.OrdinalIgnoreCase)) { ExTraceGlobals.TaskTracer.Information <string>((long)this.GetHashCode(), "UpdateVDirScriptMaps found .aspx mapping: {0}", text); if (text.IndexOf(",options", StringComparison.OrdinalIgnoreCase) >= 0) { ExTraceGlobals.TaskTracer.Information((long)this.GetHashCode(), "Leaving UpdateVDirScriptMaps without updating .aspx mapping."); return; } string text2 = text + ",OPTIONS"; directoryEntry.Properties["ScriptMaps"][num] = text2; ExTraceGlobals.TaskTracer.Information <string>((long)this.GetHashCode(), "UpdateVDirScriptMaps updated .aspx mapping to: {0}", text2); break; } else { num++; i++; } } directoryEntry.CommitChanges(); IisUtility.CommitMetabaseChanges((base.OwningServer == null) ? null : base.OwningServer.Name); ExTraceGlobals.TaskTracer.Information((long)this.GetHashCode(), "UpdateVDirScriptMaps committed mapping edit to vDir object."); } TaskLogger.LogExit(); }
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)); } }
internal static void CreateFilter(string adsiWebSitePath, string filterName, string filterDirectory, string extensionBinary, bool enable, out bool filterCreated) { filterCreated = false; string iisserverName = IsapiFilterCommon.GetIISServerName(adsiWebSitePath); using (RegistryKey registryKey = RegistryUtil.OpenRemoteBaseKey(RegistryHive.LocalMachine, iisserverName)) { using (RegistryKey registryKey2 = registryKey.OpenSubKey("SOFTWARE\\Microsoft\\ExchangeServer\\v15\\Setup")) { string text = Path.Combine((string)registryKey2.GetValue("MsiInstallPath"), filterDirectory); text = Path.Combine(text, extensionBinary); using (DirectoryEntry directoryEntry = IsapiFilter.CreateIsapiFilter(adsiWebSitePath, text, filterName, out filterCreated)) { if (filterCreated) { directoryEntry.Properties["FilterFlags"].Value = MetabasePropertyTypes.FilterFlags.NotifyOrderMedium; directoryEntry.Properties["FilterEnabled"].Value = enable; directoryEntry.CommitChanges(); IisUtility.CommitMetabaseChanges(iisserverName); } } } } }
internal static void SetIisGzipLevel(string site, GzipLevel gzipLevel) { if (gzipLevel == GzipLevel.Off) { return; } string str = site + "/W3SVC"; bool flag = gzipLevel == GzipLevel.High; bool flag2 = true; bool flag3 = true; string[] array = new string[] { "htm", "html", "txt", "htc", "css", "js", "xsl", "docx", "doc", "xlsx", "xls", "pptx", "ppt", "mdb" }; string[] array2 = new string[] { "owa", "aspx", "eas" }; string[] array3 = new string[] { "ashx" }; int num = 10; int num2 = 3; bool flag4 = false; bool flag5 = false; bool flag6 = false; using (DirectoryEntry directoryEntry = IisUtility.CreateIISDirectoryEntry(str + "/Filters/Compression/gzip")) { if (gzipLevel == GzipLevel.High) { IisUtility.SetProperty(directoryEntry, "HCDoDynamicCompression", flag, true); } IisUtility.SetProperty(directoryEntry, "HCDoStaticCompression", flag2, true); IisUtility.SetProperty(directoryEntry, "HCDoOnDemandCompression", flag3, true); for (int i = 0; i < array.Length; i++) { IisUtility.SetProperty(directoryEntry, "HCFileExtensions", array[i], i == 0); } IList list = null; if (directoryEntry.Properties.Contains("HCScriptFileExtensions")) { list = directoryEntry.Properties["HCScriptFileExtensions"]; } for (int j = 0; j < array2.Length; j++) { bool flag7 = false; if (list != null) { for (int k = 0; k < list.Count; k++) { if (list[k] is string && string.Equals(array2[j], (string)list[k], StringComparison.OrdinalIgnoreCase)) { flag7 = true; break; } } } if (!flag7) { IisUtility.SetProperty(directoryEntry, "HCScriptFileExtensions", array2[j], false); } } if (list != null) { for (int l = 0; l < array3.Length; l++) { for (int m = 0; m < list.Count; m++) { if (list[m] is string && string.Equals(array3[l], (string)list[m], StringComparison.OrdinalIgnoreCase)) { list.Remove((string)list[m]); m = -1; } } } } IisUtility.SetProperty(directoryEntry, "HCOnDemandCompLevel", num, true); if (gzipLevel == GzipLevel.High) { IisUtility.SetProperty(directoryEntry, "HCDynamicCompressionLevel", num2, true); } directoryEntry.CommitChanges(); IisUtility.CommitMetabaseChanges(IisUtility.ServerFromWebSite(site)); } using (DirectoryEntry directoryEntry2 = IisUtility.CreateIISDirectoryEntry(str + "/Filters/Compression/Parameters")) { IisUtility.SetProperty(directoryEntry2, "HCSendCacheHeaders", flag4, true); IisUtility.SetProperty(directoryEntry2, "HCNoCompressionForHTTP10", flag5, true); IisUtility.SetProperty(directoryEntry2, "HCNoCompressionForProxies", flag6, true); directoryEntry2.CommitChanges(); IisUtility.CommitMetabaseChanges(IisUtility.ServerFromWebSite(site)); } }