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 void UninstallIfLastVdir(DirectoryEntry virtualDirectory) { string iisserverName = IsapiFilterCommon.GetIISServerName(virtualDirectory); string iislocalPath = IsapiFilterCommon.GetIISLocalPath(virtualDirectory); string text = null; string text2 = null; string text3 = null; IisUtility.ParseApplicationRootPath(iislocalPath, ref text, ref text2, ref text3); if (OwaIsapiFilter.GetMarkedPathCount(iisserverName, text2) <= 1) { OwaIsapiFilter.RemoveFilter("IIS://" + iisserverName + text2); } }
protected override void PreDeleteFromMetabase() { if (!DirectoryEntry.Exists(base.DataObject.MetabasePath)) { return; } using (DirectoryEntry directoryEntry = IisUtility.CreateIISDirectoryEntry(base.DataObject.MetabasePath, new Task.TaskErrorLoggingReThrowDelegate(this.WriteError), this.Identity)) { PropertyValueCollection propertyValueCollection = directoryEntry.Properties["ScriptMaps"]; foreach (object obj in propertyValueCollection) { string text = (string)obj; string[] array = text.Split(new char[] { ',' }); if (array.Length >= 2) { string fileName = Path.GetFileName(array[1]); if (string.Compare(fileName, "davex.dll", true, CultureInfo.InvariantCulture) == 0 || string.Compare(fileName, "exprox.dll", true, CultureInfo.InvariantCulture) == 0) { this.scriptMapPhysicalPath = array[1]; break; } } } try { string parent = null; string text2 = null; string name = null; IisUtility.ParseApplicationRootPath(directoryEntry.Path, ref parent, ref text2, ref name); if (IisUtility.Exists(parent, name, "IIsWebVirtualDir")) { OwaVirtualDirectoryHelper.DisableIsapiFilter(base.DataObject); } } catch (Exception) { this.WriteWarning(Strings.OwaMetabaseIsapiUninstallFailure); throw; } } }
protected override IConfigurable PrepareDataObject() { TaskLogger.LogEnter(); ADOabVirtualDirectory adoabVirtualDirectory = (ADOabVirtualDirectory)base.PrepareDataObject(); adoabVirtualDirectory.RequireSSL = this.RequireSSL; this.serverFQDN = base.OwningServer.Fqdn; string text; if (string.IsNullOrEmpty(base.WebSiteName)) { if (base.Role == VirtualDirectoryRole.ClientAccess) { text = IisUtility.GetWebSiteName(IisUtility.CreateAbsolutePath(IisUtility.AbsolutePathType.WebSiteRoot, this.serverFQDN, "/W3SVC/1/ROOT", null)); } else { text = "Exchange Back End"; } } else { text = base.WebSiteName; } ADOabVirtualDirectory[] array = ((IConfigurationSession)base.DataSession).Find <ADOabVirtualDirectory>(base.OwningServer.Id, QueryScope.SubTree, null, null, 0); if (array != null && array.Length != 0) { ADOabVirtualDirectory[] array2 = array; int i = 0; while (i < array2.Length) { ADOabVirtualDirectory adoabVirtualDirectory2 = array2[i]; string webSiteRootPath = null; string text2 = null; try { IisUtility.ParseApplicationRootPath(adoabVirtualDirectory2.MetabasePath, ref webSiteRootPath, ref text2); } catch (IisUtilityInvalidApplicationRootPathException ex) { base.WriteWarning(ex.Message); goto IL_24E; } goto IL_D6; IL_24E: i++; continue; IL_D6: string webSiteName = IisUtility.GetWebSiteName(webSiteRootPath); if (string.Compare(webSiteName, text, false) == 0) { try { if (DirectoryEntry.Exists(adoabVirtualDirectory2.MetabasePath)) { if (!this.Recovery) { base.WriteError(new InvalidOperationException(Strings.ErrorOabVirtualDirectoryAlreadyExists(adoabVirtualDirectory2.Identity.ToString(), text, this.serverFQDN)), ErrorCategory.InvalidOperation, this.DataObject.Identity); } else { base.WriteError(new InvalidOperationException(Strings.ErrorOabVirtualDirectoryAlreadyExistsWithRecovery(adoabVirtualDirectory2.Identity.ToString(), text, this.serverFQDN)), ErrorCategory.InvalidOperation, this.DataObject.Identity); } } else if (!this.Recovery) { base.WriteError(new InvalidOperationException(Strings.ErrorOabVirtualDirectoryADObjectAlreadyExists(adoabVirtualDirectory2.Identity.ToString(), text, this.serverFQDN)), ErrorCategory.InvalidOperation, this.DataObject.Identity); } else { array[0].CopyChangesFrom(adoabVirtualDirectory); adoabVirtualDirectory = adoabVirtualDirectory2; adoabVirtualDirectory.SetId(new ADObjectId(adoabVirtualDirectory.Server.DistinguishedName).GetDescendantId("Protocols", "HTTP", new string[] { string.Format("{0} ({1})", this.Name, base.WebSiteName) })); adoabVirtualDirectory.MetabasePath = string.Format("IIS://{0}{1}/{2}", this.serverFQDN, IisUtility.FindWebSiteRootPath(base.WebSiteName, this.serverFQDN), this.Name); } } catch (COMException exception) { base.WriteError(exception, ErrorCategory.ReadError, null); } goto IL_24E; } goto IL_24E; } } if (new VirtualDirectoryExistsCondition(this.serverFQDN, text, this.Name).Verify()) { base.WriteError(new InvalidOperationException(Strings.ErrorOabVirtualDirectoryIISObjectAlreadyExists(string.Format("{0}\\{1}", text, this.Name), text, this.serverFQDN)), ErrorCategory.InvalidOperation, this.DataObject.Identity); } this.isExistingFolder = true; this.isLocalServer = this.IsLocalServer(); if (string.IsNullOrEmpty(base.Path)) { base.Path = System.IO.Path.Combine(base.OwningServer.InstallPath.PathName, (base.Role == VirtualDirectoryRole.ClientAccess) ? "FrontEnd\\HttpProxy\\OAB" : "ClientAccess\\OAB"); } else { LocalLongFullPath localLongFullPath = null; try { localLongFullPath = LocalLongFullPath.Parse(base.Path); } catch (ArgumentException ex2) { base.WriteError(new ArgumentException(new LocalizedString(ex2.Message.ToString()), "Path"), ErrorCategory.InvalidArgument, base.OwningServer.Identity); return(null); } base.Path = localLongFullPath.PathName; } if (base.Role == VirtualDirectoryRole.ClientAccess && adoabVirtualDirectory.InternalUrl == null) { if (this.isLocalServer) { adoabVirtualDirectory.InternalUrl = new Uri(string.Format("http://{0}/{1}", ComputerInformation.DnsFullyQualifiedDomainName, "OAB")); } else { base.WriteError(new ArgumentException(Strings.ErrorMissingInternalUrlInRemoteScenario, "InternalUrl"), ErrorCategory.InvalidArgument, base.OwningServer.Identity); } } TaskLogger.LogExit(); return(adoabVirtualDirectory); }