Ejemplo n.º 1
0
 protected override void InternalProcessRecord()
 {
     TaskLogger.LogEnter();
     try
     {
         using (IsapiExtensionList isapiExtensionList = new IsapiExtensionList(this.HostName))
         {
             for (int i = 0; i < this.ExtensionCount; i++)
             {
                 IisWebServiceExtension iisWebServiceExtension = this[i];
                 List <int>             list = isapiExtensionList.FindMatchingExtensions(this.GroupID, iisWebServiceExtension.ExecutableName);
                 for (int j = list.Count - 1; j >= 0; j--)
                 {
                     isapiExtensionList.RemoveAt(list[j]);
                 }
             }
             isapiExtensionList.CommitChanges();
             IisUtility.CommitMetabaseChanges(this.HostName);
         }
         OwaIsapiFilter.RemoveFilters(this.HostName);
     }
     catch (IISNotInstalledException exception)
     {
         base.WriteError(exception, ErrorCategory.NotInstalled, this);
     }
     TaskLogger.LogExit();
 }
 internal static void SetStatus(string hostName, string groupID, string extensionBinary, bool allow)
 {
     using (IsapiExtensionList isapiExtensionList = new IsapiExtensionList(hostName))
     {
         List <int> list = isapiExtensionList.FindMatchingExtensions(groupID, extensionBinary);
         if (list.Count == 0)
         {
             throw new ManageIsapiExtensionCouldNotFindExtensionException(groupID, extensionBinary);
         }
         if (list.Count != 1)
         {
             StringBuilder stringBuilder = new StringBuilder();
             for (int i = 0; i < list.Count; i++)
             {
                 stringBuilder.Append(isapiExtensionList[i].ToMetabaseString());
                 stringBuilder.Append("\r\n");
             }
             throw new ManageIsapiExtensionFoundMoreThanOneExtensionException(groupID, extensionBinary, stringBuilder.ToString());
         }
         IsapiExtension isapiExtension = isapiExtensionList[list[0]];
         if (isapiExtension.Allow != allow)
         {
             isapiExtensionList[list[0]] = new IsapiExtension(isapiExtension.PhysicalPath, isapiExtension.GroupID, isapiExtension.Description, allow, isapiExtension.UIDeletable);
             isapiExtensionList.CommitChanges();
             IisUtility.CommitMetabaseChanges(hostName);
         }
     }
 }
 internal static void UpdateMetabase(ADOabVirtualDirectory virtualDirectory, bool updateAuthenticationMethod, Task.TaskErrorLoggingDelegate handler)
 {
     try
     {
         DirectoryEntry directoryEntry2;
         DirectoryEntry directoryEntry = directoryEntry2 = IisUtility.CreateIISDirectoryEntry(virtualDirectory.MetabasePath);
         try
         {
             ArrayList arrayList = new ArrayList();
             int       num       = (int)(IisUtility.GetIisPropertyValue("AccessSSLFlags", IisUtility.GetProperties(directoryEntry)) ?? 0);
             if (virtualDirectory.RequireSSL)
             {
                 num |= 8;
             }
             else
             {
                 num &= -9;
                 num &= -257;
                 num &= -65;
             }
             arrayList.Add(new MetabaseProperty("AccessSSLFlags", num, true));
             if (updateAuthenticationMethod)
             {
                 uint num2 = (uint)((int)(IisUtility.GetIisPropertyValue("AuthFlags", IisUtility.GetProperties(directoryEntry)) ?? 0));
                 num2 |= 4U;
                 num2 &= 4294967294U;
                 arrayList.Add(new MetabaseProperty("AuthFlags", num2, true));
                 MultiValuedProperty <AuthenticationMethod> multiValuedProperty = new MultiValuedProperty <AuthenticationMethod>();
                 multiValuedProperty.Add(AuthenticationMethod.WindowsIntegrated);
                 if (IisUtility.CheckForAuthenticationMethod(directoryEntry, AuthenticationMethodFlags.Basic))
                 {
                     multiValuedProperty.Add(AuthenticationMethod.Basic);
                 }
                 if (IisUtility.CheckForAuthenticationMethod(directoryEntry, AuthenticationMethodFlags.Digest))
                 {
                     multiValuedProperty.Add(AuthenticationMethod.Digest);
                 }
                 if (IisUtility.CheckForAuthenticationMethod(directoryEntry, AuthenticationMethodFlags.Fba))
                 {
                     multiValuedProperty.Add(AuthenticationMethod.Fba);
                 }
                 virtualDirectory.ExternalAuthenticationMethods = (virtualDirectory.InternalAuthenticationMethods = multiValuedProperty);
             }
             IisUtility.SetProperties(directoryEntry, arrayList);
             directoryEntry.CommitChanges();
             IisUtility.CommitMetabaseChanges((virtualDirectory.Server == null) ? null : virtualDirectory.Server.ToString());
         }
         finally
         {
             if (directoryEntry2 != null)
             {
                 ((IDisposable)directoryEntry2).Dispose();
             }
         }
     }
     catch (COMException exception)
     {
         handler(exception, ErrorCategory.InvalidOperation, virtualDirectory.Identity);
     }
 }
Ejemplo n.º 4
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)));
        }
Ejemplo n.º 5
0
        private static void SetFlags(string server, string path, OwaIsapiFilter.FormsAuthPropertyFlags flags)
        {
            IMSAdminBase       imsadminBase = IMSAdminBaseHelper.Create(server);
            string             text         = "/LM" + path;
            SafeMetadataHandle safeMetadataHandle;
            int num = IMSAdminBaseHelper.OpenKey(imsadminBase, SafeMetadataHandle.MetadataMasterRootHandle, text, MBKeyAccess.Write, 15000, out safeMetadataHandle);

            using (safeMetadataHandle)
            {
                if (num == -2147024748)
                {
                    throw new FormsAuthenticationErrorPathBusyException(text);
                }
                if (num == -2147024893)
                {
                    throw new FormsAuthenticationMarkPathErrorPathNotFoundException(text);
                }
                if (num < 0)
                {
                    throw new OwaIsapiFilterException(Strings.FormsAuthenticationMarkPathErrorUnknownOpenError(text), num);
                }
                MetadataRecord metadataRecord = OwaIsapiFilter.CreateFormsRecord(MBAttributes.Inherit);
                using (metadataRecord)
                {
                    Marshal.WriteInt32(metadataRecord.DataBuf.DangerousGetHandle(), (int)flags);
                    num = imsadminBase.SetData(safeMetadataHandle, string.Empty, metadataRecord);
                }
                if (num == -2147024891)
                {
                    throw new FormsAuthenticationMarkPathAccessDeniedException(text, 45054);
                }
                if (num == -2147024888)
                {
                    throw new OutOfMemoryException();
                }
                if (num == -2147024893)
                {
                    throw new FormsAuthenticationMarkPathErrorPathNotFoundException(text);
                }
                if (num == -2146646008)
                {
                    throw new FormsAuthenticationMarkPathCannotMarkSecureAttributeException(text, 45054);
                }
                if (num < 0)
                {
                    throw new FormsAuthenticationMarkPathUnknownSetError(text, 45054, num);
                }
            }
            num = IisUtility.CommitMetabaseChanges(server);
            if (num < 0)
            {
                throw new OwaIsapiFilterException(Strings.CommitMetabaseChangesException(server), num);
            }
        }
Ejemplo n.º 6
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)));
     }
 }
Ejemplo n.º 7
0
        protected override void InternalProcessRecord()
        {
            TaskLogger.LogEnter();
            string text = ConfigurationContext.Setup.InstallPath.TrimEnd(new char[]
            {
                '\\'
            });

            try
            {
                using (IsapiExtensionList isapiExtensionList = new IsapiExtensionList(this.HostName))
                {
                    bool flag = false;
                    for (int i = 0; i < this.ExtensionCount; i++)
                    {
                        IisWebServiceExtension iisWebServiceExtension = this[i];
                        string text2 = string.Concat(new object[]
                        {
                            text,
                            '\\',
                            iisWebServiceExtension.RelativePath,
                            '\\',
                            iisWebServiceExtension.ExecutableName
                        });
                        if (isapiExtensionList.Exists(this.GroupID, text2))
                        {
                            base.WriteVerbose(Strings.InstallIisWebServiceExtensionExists(this.GroupID, text2));
                        }
                        else
                        {
                            base.WriteVerbose(Strings.InstallIisWebServiceExtensionAdding(this.GroupID, text2));
                            isapiExtensionList.Add(new IsapiExtension(text2, this.GroupID, this.GroupDescription, iisWebServiceExtension.Allow, iisWebServiceExtension.UiDeletable));
                            flag = true;
                        }
                    }
                    if (flag)
                    {
                        base.WriteVerbose(Strings.InstallIisWebServiceExtensionCommitting);
                        isapiExtensionList.CommitChanges();
                        IisUtility.CommitMetabaseChanges(this.HostName);
                    }
                    else
                    {
                        base.WriteVerbose(Strings.InstallIisWebServiceExtensionNoChanges);
                    }
                }
            }
            catch (IISNotInstalledException exception)
            {
                base.WriteError(exception, ErrorCategory.NotInstalled, this);
            }
            TaskLogger.LogExit();
        }
Ejemplo n.º 8
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);
        }
Ejemplo n.º 9
0
 internal void CommitMetabaseValues(ExchangeVirtualDirectory dataObject, ArrayList MetabasePropertiesToChange)
 {
     if (MetabasePropertiesToChange != null)
     {
         string metabasePath = dataObject.MetabasePath;
         Task.TaskErrorLoggingReThrowDelegate writeError = new Task.TaskErrorLoggingReThrowDelegate(this.WriteError);
         T dataObject2 = this.DataObject;
         using (DirectoryEntry directoryEntry = IisUtility.CreateIISDirectoryEntry(metabasePath, writeError, dataObject2.Identity))
         {
             IisUtility.SetProperties(directoryEntry, MetabasePropertiesToChange);
             directoryEntry.CommitChanges();
             IisUtility.CommitMetabaseChanges((dataObject.Server == null) ? null : dataObject.Server.Name);
         }
     }
 }
 protected override void InternalProcessRecord()
 {
     TaskLogger.LogEnter();
     base.InternalProcessRecord();
     if (this.scriptMapPhysicalPath != null && !IisUtility.IsAnyWebVirtualDirUsingThisExecutableInScriptMap(base.DataObject.Server.Name, this.scriptMapPhysicalPath))
     {
         using (IsapiExtensionList isapiExtensionList = new IsapiExtensionList(base.DataObject.Server.Name))
         {
             isapiExtensionList.RemoveByExecutable(this.scriptMapPhysicalPath);
             isapiExtensionList.CommitChanges();
             IisUtility.CommitMetabaseChanges((base.DataObject.Server == null) ? null : base.DataObject.Server.Name);
         }
     }
     TaskLogger.LogExit();
 }
        public void Execute()
        {
            DirectoryEntry directoryEntry = IisUtility.CreateWebDirObject(this.Parent, this.LocalPath, this.Name);

            if (this.CustomizedVDirProperties != null)
            {
                IisUtility.SetProperties(directoryEntry, this.CustomizedVDirProperties);
            }
            directoryEntry.CommitChanges();
            string hostName = IisUtility.GetHostName(this.Parent);

            IisUtility.CommitMetabaseChanges(hostName);
            if (this.ApplicationPool != null && IisUtility.IsSupportedIisVersion(hostName))
            {
                string appPoolRootPath = IisUtility.GetAppPoolRootPath(hostName);
                if (!IisUtility.Exists(appPoolRootPath, this.ApplicationPool, "IIsApplicationPool"))
                {
                    using (DirectoryEntry directoryEntry2 = IisUtility.CreateApplicationPool(hostName, this.ApplicationPool))
                    {
                        IisUtility.SetProperty(directoryEntry2, "AppPoolIdentityType", (int)this.AppPoolIdentityType, true);
                        IisUtility.SetProperty(directoryEntry2, "managedPipelineMode", (int)this.AppPoolManagedPipelineMode, true);
                        if (this.AppPoolQueueLength != 0)
                        {
                            IisUtility.SetProperty(directoryEntry2, "AppPoolQueueLength", this.AppPoolQueueLength, true);
                        }
                        directoryEntry2.CommitChanges();
                        IisUtility.CommitMetabaseChanges(hostName);
                        using (ServerManager serverManager = new ServerManager())
                        {
                            ApplicationPool applicationPool = serverManager.ApplicationPools[this.ApplicationPool];
                            applicationPool.ProcessModel.LoadUserProfile = true;
                            if (this.MaximumMemory != 0L)
                            {
                                applicationPool.Recycling.PeriodicRestart.Memory = this.MaximumMemory;
                            }
                            if (this.MaximumPrivateMemory != 0L)
                            {
                                applicationPool.Recycling.PeriodicRestart.PrivateMemory = this.MaximumPrivateMemory;
                            }
                            serverManager.CommitChanges();
                        }
                    }
                }
                IisUtility.AssignApplicationPool(directoryEntry, this.ApplicationPool);
            }
        }
Ejemplo n.º 12
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);
                    }
                }
            }
        }
        public static void SetToMetabase(ADMobileVirtualDirectory adObject, Task task)
        {
            string metabasePath = adObject.MetabasePath;

            using (DirectoryEntry directoryEntry = IisUtility.CreateIISDirectoryEntry(metabasePath))
            {
                ArrayList arrayList = new ArrayList();
                int?      num       = (int?)directoryEntry.Properties["AccessSSLFlags"].Value;
                if (num == null)
                {
                    num = new int?(0);
                }
                if (adObject.ClientCertAuth == ClientCertAuthTypes.Ignore)
                {
                    int num2 = 96;
                    num &= ~num2;
                }
                else if (adObject.ClientCertAuth == ClientCertAuthTypes.Required)
                {
                    num |= 96;
                }
                else if (adObject.ClientCertAuth == ClientCertAuthTypes.Accepted)
                {
                    num = ((num & -65) | 32);
                }
                else
                {
                    int num3 = 96;
                    num &= ~num3;
                }
                MetabaseProperty value = new MetabaseProperty("AccessSSLFlags", num);
                arrayList.Add(value);
                IisUtility.SetAuthenticationMethod(directoryEntry, AuthenticationMethodFlags.Basic, adObject.BasicAuthEnabled);
                IisUtility.SetAuthenticationMethod(directoryEntry, AuthenticationMethodFlags.WindowsIntegrated, adObject.WindowsAuthEnabled);
                MetabaseProperty value2 = new MetabaseProperty("DoDynamicCompression", adObject.CompressionEnabled);
                arrayList.Add(value2);
                IisUtility.SetProperties(directoryEntry, arrayList);
                directoryEntry.CommitChanges();
                string vdirPath = string.Format("{0}/{1}", adObject.MetabasePath, "Proxy");
                MobileSyncVirtualDirectoryHelper.UpdateSubDirectory(adObject, vdirPath, task);
                IisUtility.CommitMetabaseChanges((adObject.Server == null) ? null : adObject.Server.ToString());
            }
        }
Ejemplo n.º 14
0
 internal static void UpdateMetabase(ADOabVirtualDirectory virtualDirectory, Task.TaskErrorLoggingDelegate handler)
 {
     try
     {
         DirectoryEntry directoryEntry2;
         DirectoryEntry directoryEntry = directoryEntry2 = IisUtility.CreateIISDirectoryEntry(virtualDirectory.MetabasePath);
         try
         {
             ArrayList arrayList = new ArrayList();
             int       num       = (int)(IisUtility.GetIisPropertyValue("AccessSSLFlags", IisUtility.GetProperties(directoryEntry)) ?? 0);
             if (virtualDirectory.RequireSSL)
             {
                 num |= 8;
             }
             else
             {
                 num &= -9;
                 num &= -257;
                 num &= -65;
             }
             arrayList.Add(new MetabaseProperty("AccessSSLFlags", num, true));
             IisUtility.SetAuthenticationMethod(directoryEntry, AuthenticationMethodFlags.Basic, virtualDirectory.BasicAuthentication);
             IisUtility.SetAuthenticationMethod(directoryEntry, AuthenticationMethodFlags.WindowsIntegrated, virtualDirectory.WindowsAuthentication);
             IisUtility.SetProperties(directoryEntry, arrayList);
             directoryEntry.CommitChanges();
             IisUtility.CommitMetabaseChanges((virtualDirectory.Server == null) ? null : virtualDirectory.Server.ToString());
         }
         finally
         {
             if (directoryEntry2 != null)
             {
                 ((IDisposable)directoryEntry2).Dispose();
             }
         }
     }
     catch (COMException exception)
     {
         handler(exception, ErrorCategory.InvalidOperation, virtualDirectory.Identity);
     }
 }
 private void UpdateVDirScriptMaps()
 {
     TaskLogger.LogEnter();
     using (DirectoryEntry directoryEntry = IisUtility.CreateIISDirectoryEntry(this.DataObject.MetabasePath, new Task.TaskErrorLoggingReThrowDelegate(this.WriteError), this.DataObject.Identity))
     {
         string[] array = new string[directoryEntry.Properties["ScriptMaps"].Count];
         directoryEntry.Properties["ScriptMaps"].CopyTo(array, 0);
         ExTraceGlobals.TaskTracer.Information((long)this.GetHashCode(), "UpdateVDirScriptMaps got ScriptMaps property");
         int      num    = 0;
         string[] array2 = array;
         int      i      = 0;
         while (i < array2.Length)
         {
             string text = array2[i];
             if (text.StartsWith(".aspx", StringComparison.OrdinalIgnoreCase))
             {
                 ExTraceGlobals.TaskTracer.Information <string>((long)this.GetHashCode(), "UpdateVDirScriptMaps found .aspx mapping: {0}", text);
                 if (text.IndexOf(",options", StringComparison.OrdinalIgnoreCase) >= 0)
                 {
                     ExTraceGlobals.TaskTracer.Information((long)this.GetHashCode(), "Leaving UpdateVDirScriptMaps without updating .aspx mapping.");
                     return;
                 }
                 string text2 = text + ",OPTIONS";
                 directoryEntry.Properties["ScriptMaps"][num] = text2;
                 ExTraceGlobals.TaskTracer.Information <string>((long)this.GetHashCode(), "UpdateVDirScriptMaps updated .aspx mapping to: {0}", text2);
                 break;
             }
             else
             {
                 num++;
                 i++;
             }
         }
         directoryEntry.CommitChanges();
         IisUtility.CommitMetabaseChanges((base.OwningServer == null) ? null : base.OwningServer.Name);
         ExTraceGlobals.TaskTracer.Information((long)this.GetHashCode(), "UpdateVDirScriptMaps committed mapping edit to vDir object.");
     }
     TaskLogger.LogExit();
 }
        private static void InstallSubDirectory(ADMobileVirtualDirectory dataObject, string subDirectoryName, Task task)
        {
            bool flag = false;

            using (DirectoryEntry directoryEntry = IisUtility.CreateIISDirectoryEntry(dataObject.MetabasePath, new Task.TaskErrorLoggingReThrowDelegate(task.WriteError), dataObject.Identity))
            {
                string path = Path.Combine(directoryEntry.Properties["Path"].Value.ToString(), subDirectoryName);
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }
                string text = string.Format("{0}/{1}", dataObject.MetabasePath, subDirectoryName);
                if (!IisUtility.Exists(text))
                {
                    IisUtility.CreateWebDirectory(directoryEntry, subDirectoryName);
                    MobileSyncVirtualDirectoryHelper.UpdateSubDirectory(dataObject, text, task);
                    directoryEntry.CommitChanges();
                    IisUtility.CommitMetabaseChanges((dataObject.Server == null) ? null : dataObject.Server.Name);
                    flag = true;
                }
                ExTraceGlobals.TaskTracer.Information(0L, string.Format("Installed SubDirectory '{0}' with result '{1}'", subDirectoryName, flag));
            }
        }
Ejemplo n.º 17
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);
                        }
                    }
                }
            }
        }
Ejemplo n.º 18
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));
            }
        }