Example #1
0
        /// <summary>
        /// Creates a website, if it does not already exist.
        /// </summary>
        /// <param name="serverManager">Makes changes to IIS.</param>
        /// <param name="siteSpec">Specification for an IIS Website.</param>
        private void AddWebsite(ServerManager serverManager, SiteSpecification siteSpec)
        {
            Site site = serverManager.Sites.FirstOrDefault(s => s.Name == siteSpec.Name);
            if (site == null)
            {
                this.installLogger.Log(string.Format(Messages.WEB_CreateWebsite, this.siteName));
                site = serverManager.Sites.Add(siteSpec.Name, "http", ":80:" + siteSpec.Name, siteSpec.PhysicalPath);
                site.ApplicationDefaults.ApplicationPoolName = siteSpec.AppPoolName;
                this.installLogger.LogSuccess(Messages.MAIN_StepComplete);
                this.AddFolderPermission(siteSpec.PhysicalPath, siteSpec.Permission, siteSpec.AppPoolName);
                this.AddHostsEntry(siteSpec.Name);
            }
            else
            {
                this.AddHostsEntry(siteSpec.HostName);
            }

            foreach (ApplicationSpecification appSpec in siteSpec.SubApplications)
            {
                this.AddWebApplication(site, appSpec);
                this.AddSubApplications(site, appSpec);
            }

            foreach (VirtualDirectorySpecification virtualDirectorySpec in siteSpec.VirtualDirectories)
            {
                this.AddVirtualDirectory(
                    siteSpec.SubApplications.First().SubApplications.Count > 0 ?
                        site.Applications.First(a => a.Path == "/" + siteSpec.SubApplications.First().Name) :
                        site.Applications.First(),
                    virtualDirectorySpec);
            }
        }
Example #2
0
        /// <summary>
        /// Removes a website, if it exists.
        /// </summary>
        /// <param name="siteSpec">Specification for an IIS Website.</param>
        private void RemoveWebsite(SiteSpecification siteSpec)
        {
            using (ServerManager serverManager = new ServerManager())
            {
                Site site = serverManager.Sites.FirstOrDefault(s => s.Name == siteSpec.Name);
                if (site != null)
                {
                    this.installLogger.Log(string.Format(Messages.WEB_RemoveWebsite, this.siteName));
                    serverManager.Sites.Remove(site);
                    serverManager.CommitChanges();
                    this.installLogger.LogSuccess(Messages.MAIN_StepComplete);
                }
            }

            this.RemoveFolderPermission(siteSpec.PhysicalPath, siteSpec.AppPoolName);

            foreach (ApplicationSpecification subApp in siteSpec.SubApplications)
            {
                this.RemoveResourcePermission(subApp);
                foreach (ApplicationSpecification subSubApp in subApp.SubApplications)
                {
                    this.RemoveResourcePermission(subSubApp);
                }
            }

            this.RemoveHostsEntry(siteSpec.HostName);
        }
Example #3
0
        /// <summary>
        /// Adds a list of MIME types to an IIS site.
        /// </summary>
        /// <param name="siteSpec">Specification for an IIS Website.</param>
        private void AddMimeTypes(SiteSpecification siteSpec)
        {
            using (ServerManager serverManager = new ServerManager())
            {
                Site site = serverManager.Sites.FirstOrDefault(s => s.Name == siteSpec.Name);
                ConfigurationSection staticContentSection = site.GetWebConfiguration().GetSection("system.webServer/staticContent");
                ConfigurationElementCollection staticContentCollection = staticContentSection.GetCollection();
                foreach (MimeTypeSpecification mimeSpec in siteSpec.MimeTypes)
                {
                    if (staticContentCollection.All(map => map["fileExtension"].ToString() != mimeSpec.FileExtension))
                    {
                        ConfigurationElement mimeMapElement = staticContentCollection.CreateElement("mimeMap");
                        mimeMapElement["fileExtension"] = mimeSpec.FileExtension;
                        mimeMapElement["mimeType"] = mimeSpec.MimeType;
                        staticContentCollection.Add(mimeMapElement);
                    }
                }

                serverManager.CommitChanges();
            }
        }