示例#1
0
        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)));
        }
示例#2
0
 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)));
     }
 }
示例#3
0
        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);
        }
示例#4
0
        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);
                    }
                }
            }
        }
示例#5
0
        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));
            }
        }