Exemple #1
0
        internal static void Uninstall(DirectoryEntry virtualDirectory, string filterName)
        {
            string iisserverName = IsapiFilterCommon.GetIISServerName(virtualDirectory);
            string iislocalPath  = IsapiFilterCommon.GetIISLocalPath(virtualDirectory);
            string text          = null;
            string str           = null;
            string text2         = null;

            IisUtility.ParseApplicationRootPath(iislocalPath, ref text, ref str, ref text2);
            IsapiFilter.RemoveIsapiFilter("IIS://" + iisserverName + str, filterName);
        }
Exemple #2
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);
        }
Exemple #3
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);
                    }
                }
            }
        }
Exemple #4
0
        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);
                        }
                    }
                }
            }
        }
Exemple #5
0
 private static void RemoveFilter(string adsiWebSitePath)
 {
     IsapiFilter.RemoveIsapiFilter(adsiWebSitePath, OwaIsapiFilter.filterName);
 }