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); }
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 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); } } } } }
private static void RemoveFilter(string adsiWebSitePath) { IsapiFilter.RemoveIsapiFilter(adsiWebSitePath, OwaIsapiFilter.filterName); }