First commit of SNI and CCS support in the IIS80 Provider. Only small changes to IIS70 to allow inheritance.

This commit is contained in:
Olov Karlsson 2014-10-22 21:34:14 +02:00
parent bb67d603e2
commit 4d44baa817
11 changed files with 841 additions and 47 deletions

View file

@ -499,6 +499,40 @@
</uc5:EditDomainsList>
</td>
</tr>
<tbody runat="server" ID="IIS80SSLSettings" Visible="False">
<tr>
<td width="200" class="Normal" valign="top">
<asp:Label ID="lblUseSNI" runat="server" Text="Use SNI (Server Name Indication):"></asp:Label>
</td>
<td class="Normal" valign="top">
<asp:CheckBox ID="cbUseSNI" runat="server" />
</td>
</tr>
<tr>
<td width="200" class="Normal" valign="top">
<asp:Label ID="lblUseCCS" runat="server" Text="Use Centralized Certificate Store:"></asp:Label>
</td>
<td class="Normal" valign="top">
<asp:CheckBox ID="cbUseCCS" runat="server" />
</td>
</tr>
<tr>
<td width="200" class="Normal" valign="top">
<asp:Label ID="lblCCSUNCPath" runat="server" Text="Centralized Certificate Store UNC path :"></asp:Label>
</td>
<td class="Normal" valign="top">
<asp:TextBox ID="txtCCSUNCPath" runat="server" CssClass="NormalTextBox" Width="400px"></asp:TextBox>
</td>
</tr>
<tr>
<td width="200" class="Normal" valign="top">
<asp:Label ID="lblCCSUNCCommonPassword" runat="server" Text="Centralized Certificate Store common password (blank for none):"></asp:Label>
</td>
<td class="Normal" valign="top">
<asp:TextBox ID="txtCCSCommonPassword" runat="server" CssClass="NormalTextBox" Width="400px"></asp:TextBox>
</td>
</tr>
</tbody>
<tr>
<td class="Normal" valign="top">
<asp:Label ID="lblADIntegration" runat="server" meta:resourcekey="lblADIntegration" Text="Active Directory Integration:"></asp:Label>

View file

@ -225,6 +225,16 @@ namespace WebsitePanel.Portal.ProviderControls
FilteredAppIds = settings["GalleryAppsFilter"];
radioFilterAppsList.SelectedIndex = Utils.ParseInt(settings["GalleryAppsFilterMode"], 0);
chkGalleryAppsAlwaysIgnoreDependencies.Checked = Utils.ParseBool(settings["GalleryAppsAlwaysIgnoreDependencies"], false);
// If any of these exists, we assume we are running against the IIS80 provider
if (settings["SSLCCSCommonPassword"] != null || settings["SSLCCSUNCPath"] != null || settings["SSLUseCCS"] != null || settings["SSLUseSNI"] != null)
{
IIS80SSLSettings.Visible = true;
cbUseCCS.Checked = Utils.ParseBool(settings["SSLUseCCS"], false);
cbUseSNI.Checked = Utils.ParseBool(settings["SSLUseSNI"], false);
txtCCSUNCPath.Text = settings["SSLCCSUNCPath"];
txtCCSCommonPassword.Text = settings["SSLCCSCommonPassword"];
}
}
public void SaveSettings(StringDictionary settings)
@ -314,6 +324,15 @@ namespace WebsitePanel.Portal.ProviderControls
settings["GalleryAppsFilter"] = GetAppsCatalogFilter();
settings["GalleryAppsFilterMode"] = radioFilterAppsList.SelectedIndex.ToString();
settings["GalleryAppsAlwaysIgnoreDependencies"] = chkGalleryAppsAlwaysIgnoreDependencies.Checked.ToString();
if (IIS80SSLSettings.Visible)
{
settings["SSLUseCCS"] = cbUseCCS.Checked.ToString();
settings["SSLUseSNI"] = cbUseSNI.Checked.ToString();
settings["SSLCCSUNCPath"] = txtCCSUNCPath.Text;
settings["SSLCCSCommonPassword"] = txtCCSCommonPassword.Text;
}
}
/*

View file

@ -1,31 +1,3 @@
// Copyright (c) 2014, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
// - Redistributions of source code must retain the above copyright notice, this
// list of conditions and the following disclaimer.
//
// - Redistributions in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
//
// - Neither the name of the Outercurve Foundation nor the names of its
// contributors may be used to endorse or promote products derived from this
// software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
@ -814,6 +786,87 @@ namespace WebsitePanel.Portal.ProviderControls {
/// </remarks>
protected global::WebsitePanel.Portal.UserControls.EditDomainsList sharedSslSites;
/// <summary>
/// IIS80SSLSettings control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlGenericControl IIS80SSLSettings;
/// <summary>
/// lblUseSNI control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblUseSNI;
/// <summary>
/// cbUseSNI control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.CheckBox cbUseSNI;
/// <summary>
/// lblUseCCS control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblUseCCS;
/// <summary>
/// cbUseCCS control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.CheckBox cbUseCCS;
/// <summary>
/// lblCCSUNCPath control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblCCSUNCPath;
/// <summary>
/// txtCCSUNCPath control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.TextBox txtCCSUNCPath;
/// <summary>
/// lblCCSUNCCommonPassword control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblCCSUNCCommonPassword;
/// <summary>
/// txtCCSCommonPassword control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.TextBox txtCCSCommonPassword;
/// <summary>
/// lblADIntegration control.
/// </summary>

View file

@ -76,10 +76,10 @@ namespace WebsitePanel.Portal
set { ViewState["PackageId"] = value; }
}
private bool IsDedicatedIP
private bool AllowSsl
{
get { return (bool)ViewState["IsDedicatedIP"]; }
set { ViewState["IsDedicatedIP"] = value; }
get { return (bool)ViewState["AllowSsl"]; }
set { ViewState["AllowSsl"] = value; }
}
private bool IIs7
@ -111,7 +111,7 @@ namespace WebsitePanel.Portal
// remove "SSL" tab for a site with dynamic IP
var sslTab = filteredTabs.SingleOrDefault(t => t.Id == "SSL");
if (!IsDedicatedIP && sslTab != null)
if (!AllowSsl && sslTab != null)
filteredTabs.Remove(sslTab);
@ -277,15 +277,24 @@ namespace WebsitePanel.Portal
webSitesCustomErrorsControl.BindWebItem(site);
webSitesHeliconZooControl.BindWebItem(site);
if (site.IsDedicatedIP)
// If SNI is enabled on the server, we do allow for SSL even if site not has dedicated Ip
var sniEnabled = false;
var serverSettings = ES.Services.Servers.GetServiceSettings(site.ServiceId);
var sniEnabledItem = serverSettings.FirstOrDefault(s => s.StartsWith("sslusesni"));
if (sniEnabledItem != null)
{
sniEnabled = Utils.ParseBool(sniEnabledItem.Split('=')[1], false);
}
if (site.IsDedicatedIP || sniEnabled)
{
IsDedicatedIP = true;
AllowSsl = true;
WebsitesSSLControl.Visible = true;
WebsitesSSLControl.BindWebItem(site);
}
else
{
IsDedicatedIP = false;
AllowSsl = false;
WebsitesSSLControl.Visible = false;
}