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))); }
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))); } }
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); }
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); } } } }
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)); } }