Web app gallery: database & username prefix & suffix processing added form databases policies
This commit is contained in:
parent
b25684b667
commit
928f63b805
5 changed files with 172 additions and 9 deletions
|
@ -101,6 +101,8 @@ namespace WebsitePanel.Providers.WebAppGallery
|
||||||
public DeploymentParameterValidationKind ValidationKind { get; set; }
|
public DeploymentParameterValidationKind ValidationKind { get; set; }
|
||||||
public string ValidationString { get; set; }
|
public string ValidationString { get; set; }
|
||||||
public DeploymentParameterWellKnownTag WellKnownTags { get; set; }
|
public DeploymentParameterWellKnownTag WellKnownTags { get; set; }
|
||||||
|
public string ValuePrefix { get; set; }
|
||||||
|
public string ValueSuffix { get; set; }
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
|
|
|
@ -42,7 +42,9 @@
|
||||||
|
|
||||||
<%-- Text value --%>
|
<%-- Text value --%>
|
||||||
<div id="TextControl" runat="server" class="FormField">
|
<div id="TextControl" runat="server" class="FormField">
|
||||||
|
<asp:Literal ID="valPrefix" runat="server" Text=""></asp:Literal>
|
||||||
<asp:TextBox ID="textValue" runat="server" Width="600px"></asp:TextBox>
|
<asp:TextBox ID="textValue" runat="server" Width="600px"></asp:TextBox>
|
||||||
|
<asp:Literal ID="valSuffix" runat="server" Text=""></asp:Literal>
|
||||||
<div>
|
<div>
|
||||||
<asp:RequiredFieldValidator ID="requireTextValue" runat="server"
|
<asp:RequiredFieldValidator ID="requireTextValue" runat="server"
|
||||||
ControlToValidate="textValue" ValidationGroup="wag"
|
ControlToValidate="textValue" ValidationGroup="wag"
|
||||||
|
|
|
@ -58,6 +58,18 @@ namespace WebsitePanel.Portal
|
||||||
private set { ViewState["DefaultValue"] = value; }
|
private set { ViewState["DefaultValue"] = value; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public string ValuePrefix
|
||||||
|
{
|
||||||
|
get { return ViewState["ValuePrefix"] != null ? (string)ViewState["ValuePrefix"] : null; }
|
||||||
|
private set { ViewState["ValuePrefix"] = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public string ValueSuffix
|
||||||
|
{
|
||||||
|
get { return ViewState["ValueSuffix"] != null ? (string)ViewState["ValueSuffix"] : null; }
|
||||||
|
private set { ViewState["ValueSuffix"] = value; }
|
||||||
|
}
|
||||||
|
|
||||||
public DeploymentParameterWellKnownTag WellKnownTags
|
public DeploymentParameterWellKnownTag WellKnownTags
|
||||||
{
|
{
|
||||||
get { return this.wellKnownTags; }
|
get { return this.wellKnownTags; }
|
||||||
|
@ -96,11 +108,25 @@ namespace WebsitePanel.Portal
|
||||||
this.wellKnownTags = param.WellKnownTags;
|
this.wellKnownTags = param.WellKnownTags;
|
||||||
this.validationKind = param.ValidationKind;
|
this.validationKind = param.ValidationKind;
|
||||||
this.validationString = param.ValidationString;
|
this.validationString = param.ValidationString;
|
||||||
|
this.ValuePrefix = param.ValuePrefix;
|
||||||
|
this.ValueSuffix = param.ValueSuffix;
|
||||||
|
|
||||||
// toggle controls
|
// toggle controls
|
||||||
BindControls();
|
BindControls();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void SetTextValuePrefixSuffix(string prefix, string suffix)
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrEmpty(prefix))
|
||||||
|
{
|
||||||
|
valPrefix.Text = prefix;
|
||||||
|
}
|
||||||
|
if (!string.IsNullOrEmpty(suffix))
|
||||||
|
{
|
||||||
|
valSuffix.Text = suffix;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public DeploymentParameter GetParameter()
|
public DeploymentParameter GetParameter()
|
||||||
{
|
{
|
||||||
DeploymentParameter parameter = new DeploymentParameter();
|
DeploymentParameter parameter = new DeploymentParameter();
|
||||||
|
@ -120,7 +146,7 @@ namespace WebsitePanel.Portal
|
||||||
if (PasswordControl.Visible)
|
if (PasswordControl.Visible)
|
||||||
return password.Text;
|
return password.Text;
|
||||||
else if (TextControl.Visible)
|
else if (TextControl.Visible)
|
||||||
return textValue.Text.Trim();
|
return valPrefix.Text + textValue.Text.Trim() + valSuffix.Text;
|
||||||
else if (BooleanControl.Visible)
|
else if (BooleanControl.Visible)
|
||||||
return boolValue.Checked.ToString();
|
return boolValue.Checked.ToString();
|
||||||
else if (EnumControl.Visible)
|
else if (EnumControl.Visible)
|
||||||
|
@ -185,6 +211,8 @@ namespace WebsitePanel.Portal
|
||||||
// Text value
|
// Text value
|
||||||
TextControl.Visible = true;
|
TextControl.Visible = true;
|
||||||
textValue.Text = DefaultValue;
|
textValue.Text = DefaultValue;
|
||||||
|
valPrefix.Text = ValuePrefix;
|
||||||
|
valSuffix.Text = ValueSuffix;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -120,6 +120,15 @@ namespace WebsitePanel.Portal {
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
protected global::System.Web.UI.HtmlControls.HtmlGenericControl TextControl;
|
protected global::System.Web.UI.HtmlControls.HtmlGenericControl TextControl;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// valPrefix 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.Literal valPrefix;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// textValue control.
|
/// textValue control.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -129,6 +138,15 @@ namespace WebsitePanel.Portal {
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
protected global::System.Web.UI.WebControls.TextBox textValue;
|
protected global::System.Web.UI.WebControls.TextBox textValue;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// valSuffix 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.Literal valSuffix;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// requireTextValue control.
|
/// requireTextValue control.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -28,7 +28,8 @@
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.Globalization;
|
||||||
|
using System.IO;
|
||||||
using System.Web.UI.WebControls;
|
using System.Web.UI.WebControls;
|
||||||
using WebsitePanel.EnterpriseServer;
|
using WebsitePanel.EnterpriseServer;
|
||||||
using WebsitePanel.Providers.Common;
|
using WebsitePanel.Providers.Common;
|
||||||
|
@ -52,8 +53,9 @@ namespace WebsitePanel.Portal
|
||||||
DeploymentParameterWellKnownTag.FlatFile;
|
DeploymentParameterWellKnownTag.FlatFile;
|
||||||
|
|
||||||
private GalleryApplicationResult appResult;
|
private GalleryApplicationResult appResult;
|
||||||
|
private UserInfo _policyUser;
|
||||||
|
|
||||||
protected void Page_Load(object sender, EventArgs e)
|
protected void Page_Load(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
if (IsPostBack)
|
if (IsPostBack)
|
||||||
return;
|
return;
|
||||||
|
@ -148,10 +150,12 @@ namespace WebsitePanel.Portal
|
||||||
AddDatabaseEngine(DeploymentParameterWellKnownTag.Sql, ResourceGroups.MsSql2005, GetSharedLocalizedString("ResourceGroup." + ResourceGroups.MsSql2005));
|
AddDatabaseEngine(DeploymentParameterWellKnownTag.Sql, ResourceGroups.MsSql2005, GetSharedLocalizedString("ResourceGroup." + ResourceGroups.MsSql2005));
|
||||||
if (cntx.Groups.ContainsKey(ResourceGroups.MsSql2000))
|
if (cntx.Groups.ContainsKey(ResourceGroups.MsSql2000))
|
||||||
AddDatabaseEngine(DeploymentParameterWellKnownTag.Sql, ResourceGroups.MsSql2000, GetSharedLocalizedString("ResourceGroup." + ResourceGroups.MsSql2000));
|
AddDatabaseEngine(DeploymentParameterWellKnownTag.Sql, ResourceGroups.MsSql2000, GetSharedLocalizedString("ResourceGroup." + ResourceGroups.MsSql2000));
|
||||||
|
|
||||||
|
SetDBPolicies(UserSettings.MSSQL_POLICY, parameters);
|
||||||
}
|
}
|
||||||
|
|
||||||
// MySQL Server
|
// MySQL Server
|
||||||
if (FindParameterByTag(parameters, DeploymentParameterWellKnownTag.MySql) != null)
|
else if (FindParameterByTag(parameters, DeploymentParameterWellKnownTag.MySql) != null)
|
||||||
{
|
{
|
||||||
// load package context
|
// load package context
|
||||||
PackageContext cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId);
|
PackageContext cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId);
|
||||||
|
@ -161,19 +165,22 @@ namespace WebsitePanel.Portal
|
||||||
AddDatabaseEngine(DeploymentParameterWellKnownTag.MySql, ResourceGroups.MySql5, GetSharedLocalizedString("ResourceGroup." + ResourceGroups.MySql5));
|
AddDatabaseEngine(DeploymentParameterWellKnownTag.MySql, ResourceGroups.MySql5, GetSharedLocalizedString("ResourceGroup." + ResourceGroups.MySql5));
|
||||||
if (cntx.Groups.ContainsKey(ResourceGroups.MySql4))
|
if (cntx.Groups.ContainsKey(ResourceGroups.MySql4))
|
||||||
AddDatabaseEngine(DeploymentParameterWellKnownTag.MySql, ResourceGroups.MySql4, GetSharedLocalizedString("ResourceGroup." + ResourceGroups.MySql4));
|
AddDatabaseEngine(DeploymentParameterWellKnownTag.MySql, ResourceGroups.MySql4, GetSharedLocalizedString("ResourceGroup." + ResourceGroups.MySql4));
|
||||||
|
|
||||||
|
SetDBPolicies(UserSettings.MYSQL_POLICY, parameters);
|
||||||
}
|
}
|
||||||
|
|
||||||
// SQLite
|
// SQLite
|
||||||
if (FindParameterByTag(parameters, DeploymentParameterWellKnownTag.SqLite) != null)
|
else if (FindParameterByTag(parameters, DeploymentParameterWellKnownTag.SqLite) != null)
|
||||||
AddDatabaseEngine(DeploymentParameterWellKnownTag.SqLite, "", GetLocalizedString("DatabaseEngine.SQLite"));
|
AddDatabaseEngine(DeploymentParameterWellKnownTag.SqLite, "", GetLocalizedString("DatabaseEngine.SQLite"));
|
||||||
|
|
||||||
|
// Flat File
|
||||||
|
else if (FindParameterByTag(parameters, DeploymentParameterWellKnownTag.FlatFile) != null)
|
||||||
|
AddDatabaseEngine(DeploymentParameterWellKnownTag.FlatFile, "", GetLocalizedString("DatabaseEngine.FlatFile"));
|
||||||
|
|
||||||
// VistaFB
|
// VistaFB
|
||||||
if (FindParameterByTag(parameters, DeploymentParameterWellKnownTag.VistaDB) != null)
|
else if (FindParameterByTag(parameters, DeploymentParameterWellKnownTag.VistaDB) != null)
|
||||||
AddDatabaseEngine(DeploymentParameterWellKnownTag.VistaDB, "", GetLocalizedString("DatabaseEngine.VistaDB"));
|
AddDatabaseEngine(DeploymentParameterWellKnownTag.VistaDB, "", GetLocalizedString("DatabaseEngine.VistaDB"));
|
||||||
|
|
||||||
// Flat File
|
|
||||||
if (FindParameterByTag(parameters, DeploymentParameterWellKnownTag.FlatFile) != null)
|
|
||||||
AddDatabaseEngine(DeploymentParameterWellKnownTag.FlatFile, "", GetLocalizedString("DatabaseEngine.FlatFile"));
|
|
||||||
|
|
||||||
// hide module if no database required
|
// hide module if no database required
|
||||||
divDatabase.Visible = (databaseEngines.Items.Count > 0);
|
divDatabase.Visible = (databaseEngines.Items.Count > 0);
|
||||||
|
@ -182,6 +189,112 @@ namespace WebsitePanel.Portal
|
||||||
BindParameters(parameters);
|
BindParameters(parameters);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#region prefix & suffix for database name & username
|
||||||
|
private void SetDBPolicies(string policy, IEnumerable<DeploymentParameter> parameters)
|
||||||
|
{
|
||||||
|
foreach (DeploymentParameter parameter in parameters)
|
||||||
|
{
|
||||||
|
if ((parameter.WellKnownTags & DeploymentParameterWellKnownTag.DBName) != 0)
|
||||||
|
{
|
||||||
|
// database name
|
||||||
|
string policyValue = GetPackagePolicy(policy, "DatabaseNamePolicy");
|
||||||
|
ApplyPrefixSuffixPolicy(parameter, policyValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((parameter.WellKnownTags & DeploymentParameterWellKnownTag.DBUserName) != 0)
|
||||||
|
{
|
||||||
|
// user name
|
||||||
|
string policyValue = GetPackagePolicy(policy, "UserNamePolicy");
|
||||||
|
ApplyPrefixSuffixPolicy(parameter, policyValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool ApplyPrefixSuffixPolicy(DeploymentParameter parameter, string policyValue)
|
||||||
|
{
|
||||||
|
if (null != policyValue)
|
||||||
|
{
|
||||||
|
string prefix, suffix;
|
||||||
|
ParsePolicyPrefixSuffix(policyValue, out prefix, out suffix);
|
||||||
|
if (!string.IsNullOrEmpty(prefix))
|
||||||
|
parameter.ValuePrefix = prefix;
|
||||||
|
if (!string.IsNullOrEmpty(suffix))
|
||||||
|
parameter.ValueSuffix = suffix;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ParsePolicyPrefixSuffix(string policyValue, out string prefix, out string suffix)
|
||||||
|
{
|
||||||
|
prefix = string.Empty;
|
||||||
|
suffix = string.Empty;
|
||||||
|
|
||||||
|
// parse and enforce policy
|
||||||
|
if (string.IsNullOrEmpty(policyValue)) return;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// parse settings
|
||||||
|
string[] parts = policyValue.Split(';');
|
||||||
|
bool enabled = Utils.ParseBool(parts[0], false);
|
||||||
|
prefix = parts[4];
|
||||||
|
suffix = parts[5];
|
||||||
|
|
||||||
|
// apply policy
|
||||||
|
if (enabled)
|
||||||
|
{
|
||||||
|
// prefix
|
||||||
|
if (!String.IsNullOrEmpty(prefix))
|
||||||
|
{
|
||||||
|
// substitute vars
|
||||||
|
prefix = Utils.ReplaceStringVariable(prefix, "user_id", _policyUser.UserId.ToString(CultureInfo.InvariantCulture));
|
||||||
|
prefix = Utils.ReplaceStringVariable(prefix, "user_name", _policyUser.Username);
|
||||||
|
}
|
||||||
|
|
||||||
|
// suffix
|
||||||
|
if (!String.IsNullOrEmpty(suffix))
|
||||||
|
{
|
||||||
|
// substitute vars
|
||||||
|
suffix = Utils.ReplaceStringVariable(suffix, "user_id", _policyUser.UserId.ToString(CultureInfo.InvariantCulture));
|
||||||
|
suffix = Utils.ReplaceStringVariable(suffix, "user_name", _policyUser.Username);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
/* skip */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private string GetPackagePolicy(string settingsName, string key)
|
||||||
|
{
|
||||||
|
// load package
|
||||||
|
PackageInfo package = PackagesHelper.GetCachedPackage(PanelSecurity.PackageId);
|
||||||
|
if (package != null)
|
||||||
|
{
|
||||||
|
// load user profile
|
||||||
|
int userId = package.UserId;
|
||||||
|
_policyUser = UsersHelper.GetCachedUser(package.UserId);
|
||||||
|
|
||||||
|
if (_policyUser != null)
|
||||||
|
{
|
||||||
|
// load settings
|
||||||
|
UserSettings settings = UsersHelper.GetCachedUserSettings(userId, settingsName);
|
||||||
|
if (settings != null)
|
||||||
|
{
|
||||||
|
string policyValue = settings[key];
|
||||||
|
if (policyValue != null)
|
||||||
|
return policyValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
private void AddDatabaseEngine(DeploymentParameterWellKnownTag engine, string group, string text)
|
private void AddDatabaseEngine(DeploymentParameterWellKnownTag engine, string group, string text)
|
||||||
{
|
{
|
||||||
databaseEngines.Items.Add(new ListItem(text, String.Format("{0},{1}", engine, group)));
|
databaseEngines.Items.Add(new ListItem(text, String.Format("{0},{1}", engine, group)));
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue