using System;
using System.Data;
using System.Collections;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using CMS.GlobalHelper;
using CMS.SiteProvider;
using CMS.UIControls;
// Title
[Title("Objects/CMS_BannedIP/object.png", "banip.editHeaderCaption", "banip_properties")]
// Breadcrumbs
[Breadcrumbs(2)]
[Breadcrumb(0, "banip.listHeaderCaption")]
public partial class CMSModules_BannedIP_Tools_BannedIP_Edit : CMSBannedIPsPage
{
protected int itemid = 0;
protected void Page_Load(object sender, EventArgs e)
{
// Controls initialization
radBanIP.Text = GetString("banip.radBanIP");
radAllowIP.Text = GetString("banip.radAllowIP");
lblIPAddressBanType.Text = GetString("banip.IPAddressBanType") + ResHelper.Colon;
lblIPAddressBanEnabled.Text = GetString("general.enabled") + ResHelper.Colon;
lblIPAddress.Text = GetString("banip.IPAddress") + ResHelper.Colon;
lblIPAddressBanReason.Text = GetString("banip.IPAddressBanReason") + ResHelper.Colon;
rfvIPAddress.ErrorMessage = GetString("banip.IPAddressEmpty");
lblIPAddressAllowOverride.Text = GetString("banip.IPAddressAllowOverride") + ResHelper.Colon;
if (!RequestHelper.IsPostBack())
{
// Add list items to ban type drop down list
DataHelper.FillListControlWithEnum(typeof(BanControlEnum), drpIPAddressBanType, "banip.bantype", BannedIPInfoProvider.BanControlEnumString);
drpIPAddressBanType.SelectedValue = BannedIPInfoProvider.BanControlEnumString(BanControlEnum.AllNonComplete);
}
string currentBannedIP = GetString("banip.NewItemCaption");
// get bannedIP id from querystring
itemid = QueryHelper.GetInteger("itemid", 0);
if (itemid > 0)
{
BannedIPInfo bannedIPObj = BannedIPInfoProvider.GetBannedIPInfo(itemid);
EditedObject = bannedIPObj;
if (bannedIPObj != null)
{
//Check whether the item truly belogs to specified site
if (((SiteID > 0) && (bannedIPObj.IPAddressSiteID != SiteID)) ||
((SelectedSiteID > 0) && (bannedIPObj.IPAddressSiteID != SelectedSiteID)))
{
RedirectToAccessDenied(GetString("banip.invaliditem"));
}
currentBannedIP = bannedIPObj.IPAddress;
// Add site info to breadcrumbs in sitemanager
if (SiteID == 0)
{
if (bannedIPObj.IPAddressSiteID == 0)
{
currentBannedIP += " (global)";
radAllowIP.Text = GetString("banip.radAllowIPglobal");
plcIPOveride.Visible = true;
}
else
{
SiteInfo si = SiteInfoProvider.GetSiteInfo(bannedIPObj.IPAddressSiteID);
if (si != null)
{
currentBannedIP += " (" + si.DisplayName + ")";
}
}
}
// Fill editing form
if (!RequestHelper.IsPostBack())
{
LoadData(bannedIPObj);
// show that the bannedIP was created or updated successfully
if ((ValidationHelper.GetInteger(Request.QueryString["saved"], 0) == 1) && !URLHelper.IsPostback())
{
ShowChangesSaved();
}
}
}
}
// Initializes page title control
SetBreadcrumb(0, null, ResolveUrl("BannedIP_List.aspx?siteId=" + SiteID + "&selectedsiteid=" + SelectedSiteID), null, null);
SetBreadcrumb(1, currentBannedIP, null, null, null);
// Add info about selected site in Site manager for new item
if ((SiteID == 0) && (itemid == 0))
{
if (SelectedSiteID > 0)
{
// Site banned IP
SiteInfo si = SiteInfoProvider.GetSiteInfo(SelectedSiteID);
if (si != null)
{
SetBreadcrumb(1, currentBannedIP + " (" + si.DisplayName + ")", null, null, null);
}
}
else
{
// Global banned IP
SetBreadcrumb(1, currentBannedIP + " (global)", null, null, null);
radAllowIP.Text = GetString("banip.radAllowIPglobal");
plcIPOveride.Visible = true;
}
}
// Different header and icon if it is new item
if (itemid <= 0)
{
SetTitle("Objects/CMS_BannedIP/new.png", GetString("banip.newHeaderCaption"), null, null);
}
}
///
/// Load data of editing bannedIP.
///
/// BannedIP object
protected void LoadData(BannedIPInfo bannedIPObj)
{
// check proper radio button
if (bannedIPObj.IPAddressAllowed)
{
radAllowIP.Checked = true;
}
else
{
radBanIP.Checked = true;
}
drpIPAddressBanType.SelectedValue = bannedIPObj.IPAddressBanType;
chkIPAddressBanEnabled.Checked = bannedIPObj.IPAddressBanEnabled;
txtIPAddress.Text = bannedIPObj.IPAddress;
txtIPAddressBanReason.Text = bannedIPObj.IPAddressBanReason;
if (SiteID == 0)
{
chkIPAddressAllowOverride.Checked = bannedIPObj.IPAddressAllowOverride;
}
}
///
/// Sets data to database.
///
protected void btnOK_Click(object sender, EventArgs e)
{
// check 'Modify' permission
CheckPermissions("Modify");
string errorMessage = new Validator().NotEmpty(txtIPAddress.Text, GetString("banip.IPAddressEmpty")).Result;
// Check if regularized ip address doesn't overflow database column
if (BannedIPInfoProvider.GetRegularIPAddress(txtIPAddress.Text).Length > 200)
{
errorMessage = GetString("banip.IPAddressInvalid");
}
if (errorMessage == "")
{
BannedIPInfo bannedIPObj = BannedIPInfoProvider.GetBannedIPInfo(itemid);
// if bannedIP doesnt already exist, create new one
if (bannedIPObj == null)
{
bannedIPObj = new BannedIPInfo();
}
bannedIPObj.IPAddressAllowed = radAllowIP.Checked;
bannedIPObj.IPAddressBanType = drpIPAddressBanType.SelectedValue;
bannedIPObj.IPAddressBanEnabled = chkIPAddressBanEnabled.Checked;
bannedIPObj.IPAddress = txtIPAddress.Text.Trim();
// Make sure text is not too long
if (txtIPAddressBanReason.Text.Length > 450)
{
txtIPAddressBanReason.Text = txtIPAddressBanReason.Text.Substring(0, 450);
}
bannedIPObj.IPAddressBanReason = txtIPAddressBanReason.Text.Trim();
if (SiteID == 0)
{
// For (global) set overriding from checkbox, otherwise is true
bannedIPObj.IPAddressAllowOverride = (SelectedSiteID > 0) || chkIPAddressAllowOverride.Checked;
// If site selected assign it to banned IP
if (SelectedSiteID > 0)
{
bannedIPObj.IPAddressSiteID = SelectedSiteID;
}
}
else
{
// default setting for editing from CMSDesk
bannedIPObj.IPAddressAllowOverride = true;
bannedIPObj.IPAddressSiteID = SiteID;
}
BannedIPInfoProvider.SetBannedIPInfo(bannedIPObj);
URLHelper.Redirect("Bannedip_Edit.aspx?siteid=" + SiteID + "&selectedsiteid=" + SelectedSiteID + "&itemid=" + bannedIPObj.IPAddressID + "&saved=1");
}
else
{
ShowError(errorMessage);
}
}
}