protected override void DoProcessing() { using (ServerManager serverManager = new ServerManager()) { ServerManagerWrapper serverManagerWrapper = new ServerManagerWrapper(serverManager, this.SiteName, this.VirtualPath); PHPConfigHelper configHelper = new PHPConfigHelper(serverManagerWrapper); PHPIniFile phpIniFile = configHelper.GetPHPIniFile(); PHPIniSetting setting = Helper.FindSetting(phpIniFile.Settings, Name); if (setting != null) { if (ShouldProcess(Name)) { string warningMessage = String.Format(Resources.DeleteSettingWarningMessage, setting.Name, setting.Value); if (Force || ShouldContinue(warningMessage, Resources.DeleteSettingWarningCaption)) { configHelper.RemovePHPIniSetting(setting); } } } else { ArgumentException ex = new ArgumentException(String.Format(Resources.SettingDoesNotExistError, Name)); ReportNonTerminatingError(ex, "InvalidArgument", ErrorCategory.ObjectNotFound); } } }
protected override void DoProcessing() { using (ServerManager serverManager = new ServerManager()) { ServerManagerWrapper serverManagerWrapper = new ServerManagerWrapper(serverManager, this.SiteName, this.VirtualPath); PHPConfigHelper configHelper = new PHPConfigHelper(serverManagerWrapper); PHPIniFile phpIniFile = configHelper.GetPHPIniFile(); PHPIniSetting setting = Helper.FindSetting(phpIniFile.Settings, Name); if (setting == null) { if (ShouldProcess(Name)) { RemoteObjectCollection <PHPIniSetting> settings = new RemoteObjectCollection <PHPIniSetting>(); settings.Add(new PHPIniSetting(Name, Value, Section)); configHelper.AddOrUpdatePHPIniSettings(settings); } } else { ArgumentException ex = new ArgumentException(String.Format(Resources.SettingAlreadyExistsError, Name)); ReportNonTerminatingError(ex, "InvalidArgument", ErrorCategory.InvalidArgument); } } }
protected override void DoProcessing() { using (ServerManager serverManager = new ServerManager()) { ServerManagerWrapper serverManagerWrapper = new ServerManagerWrapper(serverManager, this.SiteName, this.VirtualPath); PHPConfigHelper configHelper = new PHPConfigHelper(serverManagerWrapper); RemoteObjectCollection <PHPVersion> phpVersions = configHelper.GetAllPHPVersions(); WildcardPattern nameWildcard = PrepareWildcardPattern(HandlerName); WildcardPattern versionWildcard = PrepareWildcardPattern(Version); bool isActive = true; foreach (PHPVersion phpVersion in phpVersions) { if (!nameWildcard.IsMatch(phpVersion.HandlerName)) { isActive = false; continue; } if (!versionWildcard.IsMatch(phpVersion.Version)) { isActive = false; continue; } PHPVersionItem versionItem = new PHPVersionItem(phpVersion, isActive); WriteObject(versionItem); isActive = false; } } }
protected override void DoProcessing() { using (var serverManager = new ServerManager()) { var serverManagerWrapper = new ServerManagerWrapper(serverManager, SiteName, VirtualPath); var configHelper = new PHPConfigHelper(serverManagerWrapper); var phpIniFile = configHelper.GetPHPIniFile(); var nameWildcard = PrepareWildcardPattern(Name); var sectionWildcard = PrepareWildcardPattern(Section); foreach (var setting in phpIniFile.Settings) { if (!nameWildcard.IsMatch(setting.Name)) { continue; } if (!sectionWildcard.IsMatch(setting.Section)) { continue; } var settingItem = new PHPSettingItem(setting); WriteObject(settingItem); } } }
void ProcessSecurityAccess(Configuration config, ref HostedServiceTransportSettings transportSettings) { ConfigurationSection section = ServerManagerWrapper.GetSection(config, MetabaseSettingsIis7Constants.SecurityAccessSectionName); // Check SSL Flags. if (section != null) { int sslFlags = (int)ServerManagerWrapper.GetAttributeValue(section, MetabaseSettingsIis7Constants.SslFlagsAttributeName); transportSettings.AccessSslFlags = (HttpAccessSslFlags)sslFlags; // Clear SslMapCert field, which should not contain any useful data now. transportSettings.AccessSslFlags &= ~(HttpAccessSslFlags.SslMapCert); } // Check whether IIS client certificate mapping is enabled. section = ServerManagerWrapper.GetSection(config, MetabaseSettingsIis7Constants.IisClientCertMapAuthenticationName); if ((section != null) && ((bool)ServerManagerWrapper.GetAttributeValue(section, MetabaseSettingsIis7Constants.EnabledAttributeName)) ) { transportSettings.AccessSslFlags |= HttpAccessSslFlags.SslMapCert; } else { // Check whether Active Directory client certification mapping is enabled. section = ServerManagerWrapper.GetSection(config, MetabaseSettingsIis7Constants.ClientCertMapAuthenticationName); if ((section != null) && ((bool)ServerManagerWrapper.GetAttributeValue(section, MetabaseSettingsIis7Constants.EnabledAttributeName)) ) { transportSettings.AccessSslFlags |= HttpAccessSslFlags.SslMapCert; } } }
protected override void DoProcessing() { using (var serverManager = new ServerManager()) { var serverManagerWrapper = new ServerManagerWrapper(serverManager, SiteName, VirtualPath); var configHelper = new PHPConfigHelper(serverManagerWrapper); var phpIniFile = configHelper.GetPHPIniFile(); var setting = Helper.FindSetting(phpIniFile.Settings, Name); if (setting != null) { if (ShouldProcess(Name)) { var settings = new RemoteObjectCollection <PHPIniSetting> { new PHPIniSetting(Name, Value, setting.Section) }; configHelper.AddOrUpdatePHPIniSettings(settings); } } else { var ex = new ArgumentException(String.Format(Resources.SettingDoesNotExistError, Name)); ReportNonTerminatingError(ex, "InvalidArgument", ErrorCategory.ObjectNotFound); } } }
protected override void DoProcessing() { using (ServerManager serverManager = new ServerManager()) { ServerManagerWrapper serverManagerWrapper = new ServerManagerWrapper(serverManager, this.SiteName, this.VirtualPath); PHPConfigHelper configHelper = new PHPConfigHelper(serverManagerWrapper); PHPIniFile phpIniFile = configHelper.GetPHPIniFile(); WildcardPattern wildcard = PrepareWildcardPattern(Name); foreach (PHPIniExtension extension in phpIniFile.Extensions) { if (!wildcard.IsMatch(extension.Name)) { continue; } if (Status == PHPExtensionStatus.Disabled && extension.Enabled) { continue; } if (Status == PHPExtensionStatus.Enabled && !extension.Enabled) { continue; } PHPExtensionItem extensionItem = new PHPExtensionItem(extension); WriteObject(extensionItem); } } }
public bool CheckForLocalPHPHandler(string siteName, string virtualPath) { EnsureServerOrSiteConnection(); if (String.IsNullOrEmpty(siteName)) { throw new InvalidOperationException(); } var site = ManagementUnit.ReadOnlyServerManager.Sites[siteName]; if (site == null) { throw new InvalidOperationException(); } var serverManagerWrapper = new ServerManagerWrapper(ManagementUnit.ReadOnlyServerManager, siteName, virtualPath); var configHelper = new PHPConfigHelper(serverManagerWrapper); var configInfo = configHelper.GetPHPConfigInfo(); if (configInfo.RegistrationType != PHPRegistrationType.FastCgi) { throw new InvalidOperationException("PHP is not registered via FastCGI, hence there is no FastCGI handler defined"); } return(configInfo.HandlerIsLocal); }
protected override void DoProcessing() { using (var serverManager = new ServerManager()) { var serverManagerWrapper = new ServerManagerWrapper(serverManager, SiteName, VirtualPath); var configHelper = new PHPConfigHelper(serverManagerWrapper); var phpVersions = configHelper.GetAllPHPVersions(); var nameWildcard = PrepareWildcardPattern(HandlerName); var versionWildcard = PrepareWildcardPattern(Version); var isActive = true; foreach (var phpVersion in phpVersions) { if (!nameWildcard.IsMatch(phpVersion.HandlerName)) { isActive = false; continue; } if (!versionWildcard.IsMatch(phpVersion.Version)) { isActive = false; continue; } var versionItem = new PHPVersionItem(phpVersion, isActive); WriteObject(versionItem); isActive = false; } } }
void PopulateSiteProperties() { Site site = ServerManagerWrapper.GetSite(HostingEnvironment.SiteName); DiagnosticUtility.DebugAssert(site != null, "Unable to find site."); // // Build up the binding table. // IDictionary <string, List <string> > bindingList = ServerManagerWrapper.GetProtocolBindingTable(site); // Convert to string arrays foreach (KeyValuePair <string, List <string> > entry in bindingList) { this.Bindings.Add(entry.Key, entry.Value.ToArray()); entry.Value.Clear(); } // Clear the temporary buffer bindingList.Clear(); // // Build up the protocol list. // string[] protocols = ServerManagerWrapper.GetEnabledProtocols(site).Split(MetabaseSettingsIis7Constants.CommaSeparator.ToCharArray(), StringSplitOptions.RemoveEmptyEntries); foreach (string protocolValue in protocols) { string protocol = protocolValue.Trim(); protocol = protocol.ToLowerInvariant(); if (string.IsNullOrEmpty(protocol) || this.Protocols.Contains(protocol)) { // Ignore duplicates and empty protocols continue; } else if (string.Compare(protocol, Uri.UriSchemeHttp, StringComparison.OrdinalIgnoreCase) == 0 || string.Compare(protocol, Uri.UriSchemeHttps, StringComparison.OrdinalIgnoreCase) == 0) { // Special casing HTTPS. If HTTP is enabled, it means that // both HTTP and HTTPS are enabled. if (this.Bindings.ContainsKey(Uri.UriSchemeHttp)) { this.Protocols.Add(Uri.UriSchemeHttp); } if (this.Bindings.ContainsKey(Uri.UriSchemeHttps)) { this.Protocols.Add(Uri.UriSchemeHttps); } } else if (this.Bindings.ContainsKey(protocol)) { // We only take the protocols that have bindings. this.Protocols.Add(protocol); } } }
static internal List <string> GetProviders(ConfigurationSection section, string providerElementName, string valueAttributeName) { List <string> providerList = new List <string>(); foreach (ConfigurationElement element in section.GetCollection(providerElementName)) { providerList.Add((string)ServerManagerWrapper.GetAttributeValue(element, valueAttributeName)); } return(providerList); }
void ProcessDigestAuthentication(Configuration config, ref HostedServiceTransportSettings transportSettings) { ConfigurationSection section = ServerManagerWrapper.GetSection(config, MetabaseSettingsIis7Constants.DigestAuthenticationSectionName); if ((section != null) && ((bool)ServerManagerWrapper.GetAttributeValue(section, MetabaseSettingsIis7Constants.EnabledAttributeName)) ) { transportSettings.AuthFlags = transportSettings.AuthFlags | AuthFlags.AuthMD5; } }
static void Main(string[] args) { var unpackedDirectory = args.Length > 0 ? args[0] : Directory.GetCurrentDirectory(); var pathScanner = new PathScanner(unpackedDirectory); var deploymentManifest = pathScanner.FindFirstAvailableInstaller(); if (deploymentManifest is NoInstallationFound) { Environment.Exit((int)ExitCodes.NoInstallationPerformed); } using (var serverManager = new ServerManagerWrapper()) { new SiteDeployer(serverManager, deploymentManifest.InstallationConfiguration).Deploy(); } }
protected override void DoProcessing() { try { using (ServerManager serverManager = new ServerManager()) { ServerManagerWrapper serverManagerWrapper = new ServerManagerWrapper(serverManager, this.SiteName, this.VirtualPath); PHPConfigHelper _configHelper = new PHPConfigHelper(serverManagerWrapper); string phpCgiExePath = PrepareFullScriptProcessorPath(ScriptProcessor); _configHelper.RegisterPHPWithIIS(phpCgiExePath); } } catch (DirectoryNotFoundException ex) { ReportTerminatingError(ex, "DirectoryNotFound", ErrorCategory.ObjectNotFound); } }
protected override void DoProcessing() { using (var serverManager = new ServerManager()) { var serverManagerWrapper = new ServerManagerWrapper(serverManager, SiteName, VirtualPath); var configHelper = new PHPConfigHelper(serverManagerWrapper); var configInfo = configHelper.GetPHPConfigInfo(); if (configInfo.RegistrationType == PHPRegistrationType.FastCgi) { var configurationItem = new PHPConfigurationItem(configInfo); WriteObject(configurationItem); } else { throw new InvalidOperationException(Resources.PHPIsNotRegisteredError); } } }
void ProcessWindowsAuthentication(Configuration config, ref HostedServiceTransportSettings transportSettings) { ConfigurationSection section = ServerManagerWrapper.GetSection(config, MetabaseSettingsIis7Constants.WindowsAuthenticationSectionName); if ((section != null) && ((bool)ServerManagerWrapper.GetAttributeValue(section, MetabaseSettingsIis7Constants.EnabledAttributeName)) ) { transportSettings.AuthFlags = transportSettings.AuthFlags | AuthFlags.AuthNTLM; List <string> providerList = ServerManagerWrapper.GetProviders(section, MetabaseSettingsIis7Constants.ProviderElementName, MetabaseSettingsIis7Constants.ValueAttributeName); if (providerList.Count != 0) { transportSettings.AuthProviders = providerList.ToArray(); } } try { ConfigurationElement element = section.GetChildElement(MetabaseSettingsIis7Constants.ExtendedProtectionElementName); if (element != null) { ExtendedProtectionTokenChecking tokenChecking; ExtendedProtectionFlags flags; List <string> spnList; ServerManagerWrapper.ReadIisExtendedProtectionPolicy(element, out tokenChecking, out flags, out spnList); transportSettings.IisExtendedProtectionPolicy = BuildExtendedProtectionPolicy(tokenChecking, flags, spnList); } } catch (COMException e) { // hit this exception only when IIS does not support CBT // safe for us to igore this COMException so that services not using CBT still can be activated // if a service does use CBT in binding, channel listener will catch it when comparing IIS setting against WCF (on CBT) and throw exception if (DiagnosticUtility.ShouldTraceWarning) { TraceUtility.TraceEvent(TraceEventType.Warning, TraceCode.WebHostNoCBTSupport, SR.TraceCodeWebHostNoCBTSupport, this, e); } } }
protected override void DoProcessing() { using (var serverManager = new ServerManager()) { var serverManagerWrapper = new ServerManagerWrapper(serverManager, SiteName, VirtualPath); var configHelper = new PHPConfigHelper(serverManagerWrapper); if (configHelper.GetPHPHandlerByName(HandlerName) != null) { if (ShouldProcess(HandlerName)) { configHelper.SelectPHPHandler(HandlerName); } } else { var ex = new ArgumentException(String.Format(Resources.HandlerDoesNotExistError, HandlerName)); ReportNonTerminatingError(ex, "InvalidArgument", ErrorCategory.ObjectNotFound); } } }
protected override HostedServiceTransportSettings CreateTransportSettings(string relativeVirtualPath) { Debug.Print("MetabaseSettingsIis7.CreateTransportSettings() calling ServerManager.GetWebConfiguration() virtualPath: " + relativeVirtualPath); string absolutePath = VirtualPathUtility.ToAbsolute(relativeVirtualPath, HostingEnvironmentWrapper.ApplicationVirtualPath); Configuration config = ServerManagerWrapper.GetWebConfiguration( HostingEnvironment.SiteName, absolutePath); HostedServiceTransportSettings transportSettings = new HostedServiceTransportSettings(); ProcessAnonymousAuthentication(config, ref transportSettings); ProcessBasicAuthentication(config, ref transportSettings); ProcessWindowsAuthentication(config, ref transportSettings); ProcessDigestAuthentication(config, ref transportSettings); ProcessSecurityAccess(config, ref transportSettings); return(transportSettings); }
protected override void BeginProcessing() { EnsureAdminUser(); try { _serverManager = new ServerManager(); ServerManagerWrapper serverManagerWrapper = new ServerManagerWrapper(_serverManager, this.SiteName, this.VirtualPath); _configHelper = new PHPConfigHelper(serverManagerWrapper); _phpIniFile = _configHelper.GetPHPIniFile(); _extensions = new RemoteObjectCollection <PHPIniExtension>(); } catch (FileNotFoundException ex) { DisposeServerManager(); ReportTerminatingError(ex, "FileNotFound", ErrorCategory.ObjectNotFound); } catch (InvalidOperationException ex) { DisposeServerManager(); ReportTerminatingError(ex, "InvalidOperation", ErrorCategory.InvalidOperation); } }
protected override IEnumerable <string> GetSiteApplicationPaths() { return(ServerManagerWrapper.GetApplicationPaths()); }