Web app gallery: database & username prefix & suffix processing added form databases policies

This commit is contained in:
ruslanht 2012-08-21 11:36:45 +03:00
parent b25684b667
commit 928f63b805
5 changed files with 172 additions and 9 deletions

View file

@ -101,6 +101,8 @@ namespace WebsitePanel.Providers.WebAppGallery
public DeploymentParameterValidationKind ValidationKind { get; set; }
public string ValidationString { get; set; }
public DeploymentParameterWellKnownTag WellKnownTags { get; set; }
public string ValuePrefix { get; set; }
public string ValueSuffix { get; set; }
#endregion
#if DEBUG

View file

@ -42,7 +42,9 @@
<%-- Text value --%>
<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:Literal ID="valSuffix" runat="server" Text=""></asp:Literal>
<div>
<asp:RequiredFieldValidator ID="requireTextValue" runat="server"
ControlToValidate="textValue" ValidationGroup="wag"

View file

@ -58,6 +58,18 @@ namespace WebsitePanel.Portal
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
{
get { return this.wellKnownTags; }
@ -96,11 +108,25 @@ namespace WebsitePanel.Portal
this.wellKnownTags = param.WellKnownTags;
this.validationKind = param.ValidationKind;
this.validationString = param.ValidationString;
this.ValuePrefix = param.ValuePrefix;
this.ValueSuffix = param.ValueSuffix;
// toggle controls
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()
{
DeploymentParameter parameter = new DeploymentParameter();
@ -120,7 +146,7 @@ namespace WebsitePanel.Portal
if (PasswordControl.Visible)
return password.Text;
else if (TextControl.Visible)
return textValue.Text.Trim();
return valPrefix.Text + textValue.Text.Trim() + valSuffix.Text;
else if (BooleanControl.Visible)
return boolValue.Checked.ToString();
else if (EnumControl.Visible)
@ -185,6 +211,8 @@ namespace WebsitePanel.Portal
// Text value
TextControl.Visible = true;
textValue.Text = DefaultValue;
valPrefix.Text = ValuePrefix;
valSuffix.Text = ValueSuffix;
}

View file

@ -120,6 +120,15 @@ namespace WebsitePanel.Portal {
/// </remarks>
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>
/// textValue control.
/// </summary>
@ -129,6 +138,15 @@ namespace WebsitePanel.Portal {
/// </remarks>
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>
/// requireTextValue control.
/// </summary>

View file

@ -28,7 +28,8 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Globalization;
using System.IO;
using System.Web.UI.WebControls;
using WebsitePanel.EnterpriseServer;
using WebsitePanel.Providers.Common;
@ -52,8 +53,9 @@ namespace WebsitePanel.Portal
DeploymentParameterWellKnownTag.FlatFile;
private GalleryApplicationResult appResult;
private UserInfo _policyUser;
protected void Page_Load(object sender, EventArgs e)
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
return;
@ -148,10 +150,12 @@ namespace WebsitePanel.Portal
AddDatabaseEngine(DeploymentParameterWellKnownTag.Sql, ResourceGroups.MsSql2005, GetSharedLocalizedString("ResourceGroup." + ResourceGroups.MsSql2005));
if (cntx.Groups.ContainsKey(ResourceGroups.MsSql2000))
AddDatabaseEngine(DeploymentParameterWellKnownTag.Sql, ResourceGroups.MsSql2000, GetSharedLocalizedString("ResourceGroup." + ResourceGroups.MsSql2000));
SetDBPolicies(UserSettings.MSSQL_POLICY, parameters);
}
// MySQL Server
if (FindParameterByTag(parameters, DeploymentParameterWellKnownTag.MySql) != null)
else if (FindParameterByTag(parameters, DeploymentParameterWellKnownTag.MySql) != null)
{
// load package context
PackageContext cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId);
@ -161,19 +165,22 @@ namespace WebsitePanel.Portal
AddDatabaseEngine(DeploymentParameterWellKnownTag.MySql, ResourceGroups.MySql5, GetSharedLocalizedString("ResourceGroup." + ResourceGroups.MySql5));
if (cntx.Groups.ContainsKey(ResourceGroups.MySql4))
AddDatabaseEngine(DeploymentParameterWellKnownTag.MySql, ResourceGroups.MySql4, GetSharedLocalizedString("ResourceGroup." + ResourceGroups.MySql4));
SetDBPolicies(UserSettings.MYSQL_POLICY, parameters);
}
// SQLite
if (FindParameterByTag(parameters, DeploymentParameterWellKnownTag.SqLite) != null)
else if (FindParameterByTag(parameters, DeploymentParameterWellKnownTag.SqLite) != null)
AddDatabaseEngine(DeploymentParameterWellKnownTag.SqLite, "", GetLocalizedString("DatabaseEngine.SQLite"));
// Flat File
else if (FindParameterByTag(parameters, DeploymentParameterWellKnownTag.FlatFile) != null)
AddDatabaseEngine(DeploymentParameterWellKnownTag.FlatFile, "", GetLocalizedString("DatabaseEngine.FlatFile"));
// VistaFB
if (FindParameterByTag(parameters, DeploymentParameterWellKnownTag.VistaDB) != null)
else if (FindParameterByTag(parameters, DeploymentParameterWellKnownTag.VistaDB) != null)
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
divDatabase.Visible = (databaseEngines.Items.Count > 0);
@ -182,6 +189,112 @@ namespace WebsitePanel.Portal
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)
{
databaseEngines.Items.Add(new ListItem(text, String.Format("{0},{1}", engine, group)));