Ejemplo n.º 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);
        }
Ejemplo n.º 2
0
        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);
        }