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 string ValidationString { get; set; }
|
||||
public DeploymentParameterWellKnownTag WellKnownTags { get; set; }
|
||||
public string ValuePrefix { get; set; }
|
||||
public string ValueSuffix { get; set; }
|
||||
#endregion
|
||||
|
||||
#if DEBUG
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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)));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue