/// <summary> /// UniGrid actions. /// </summary> protected void Control_OnAction(string actionName, object actionArgument) { if (actionName == "delete") { int aliasId = ValidationHelper.GetInteger(actionArgument, 0); SiteDomainAliasInfoProvider.DeleteSiteDomainAliasInfo(aliasId); } }
protected void Page_Load(object sender, EventArgs e) { siteId = QueryHelper.GetInteger("siteid", 0); si = SiteInfoProvider.GetSiteInfo(siteId); int domainAliasId = QueryHelper.GetInteger("domainaliasid", 0); if (!RequestHelper.IsPostBack()) { // Display error from previous save if occurred string runError = QueryHelper.GetString("runerror", String.Empty); string[] collisionSite = runError.Split(';'); if ((collisionSite.Length == 2) && (si != null)) { lblError.Text = String.Format(GetString("SiteDomain.RunError"), HTMLHelper.HTMLEncode(collisionSite[0]), HTMLHelper.HTMLEncode(collisionSite[1]), HTMLHelper.HTMLEncode(si.DisplayName)); lblError.Visible = true; } } InitializeComponents(); if (QueryHelper.GetString("saved", String.Empty) != String.Empty) { lblInfo.Text = GetString("General.ChangesSaved"); lblInfo.Visible = true; } alias = SiteDomainAliasInfoProvider.GetSiteDomainAliasInfo(domainAliasId); if (!RequestHelper.IsPostBack()) { LoadData(); } string currentAlias; // Update breadcrumb label if (alias != null) { currentAlias = alias.SiteDomainAliasName; } else { // New domain alias currentAlias = GetString("SiteDomain.NewAlias"); } // initializes page title control string[,] breadcrumbs = new string[2, 3]; breadcrumbs[0, 0] = GetString("SiteDomain.ItemListLink"); breadcrumbs[0, 1] = ResolveUrl("~/CMSSiteManager/Sites/Site_Edit_DomainAliases.aspx?siteid=" + siteId); breadcrumbs[0, 2] = ""; breadcrumbs[1, 0] = currentAlias; breadcrumbs[1, 1] = ""; breadcrumbs[1, 2] = ""; this.CurrentMaster.Title.Breadcrumbs = breadcrumbs; this.CurrentMaster.Title.HelpTopicName = "edit_and_new_alias"; }
/// <summary> /// Deletes site domain alias. Called when the "Delete alias" button is pressed. /// Expects the CreateSiteDomainAlias method to be run first. /// </summary> private bool DeleteSiteDomainAlias() { // Get the site domain alias SiteDomainAliasInfo deleteAlias = SiteDomainAliasInfoProvider.GetSiteDomainAliasInfo("127.0.0.1", CMSContext.CurrentSiteID); // Delete the site domain alias SiteDomainAliasInfoProvider.DeleteSiteDomainAliasInfo(deleteAlias); return(deleteAlias != null); }
/// <summary> /// UniGrid actions. /// </summary> protected void UniGridAliases_OnAction(string actionName, object actionArgument) { if (actionName == "edit") { URLHelper.Redirect("Site_Edit_DomainAlias_Edit.aspx?siteId=" + siteId.ToString() + "&domainAliasId=" + actionArgument.ToString()); } else if (actionName == "delete") { int aliasId = ValidationHelper.GetInteger(actionArgument, 0); SiteDomainAliasInfoProvider.DeleteSiteDomainAliasInfo(aliasId); UniGridAliases.ReloadData(); } }
/// <inheritdoc/> public void RemoveSiteDomainAlias(ISite site, string aliasName) { // Gets the site object SiteInfo siteToWork = SiteInfoProvider.GetSiteInfo(site.SiteName); if (siteToWork != null) { // Gets the specified domain alias for the site SiteDomainAliasInfo deleteAlias = SiteDomainAliasInfoProvider.GetSiteDomainAliasInfo(aliasName, siteToWork.SiteID); // Deletes the site domain alias SiteDomainAliasInfoProvider.DeleteSiteDomainAliasInfo(deleteAlias); } }
/// <summary> /// Handle OnBeforeSave event of the UI form. /// </summary> /// <param name="sender">Sender object</param> /// <param name="e">Event argument</param> protected void Control_OnBeforeSave(object sender, EventArgs e) { if (siteInfo == null) { return; } if (!Control.IsInsertMode) { // Stop the site before saving the domain alias if (siteInfo.Status == SiteStatusEnum.Running) { SiteInfoProvider.StopSite(siteInfo.SiteName); siteInfo.Status = SiteStatusEnum.Stopped; runAfterSave = true; } } // Remove protocol from the domain alias string newDomainName = ValidationHelper.GetString(Control.Data["SiteDomainAliasName"], String.Empty); newDomainName = URLHelper.RemoveProtocol(newDomainName); Control.Data["SiteDomainAliasName"] = newDomainName.Trim(); // Ensure uniqueness of the domain name if (Control.IsInsertMode) { // Check duplicity if (SiteDomainAliasInfoProvider.DomainAliasExists(newDomainName, siteInfo.SiteID)) { Control.StopProcessing = true; Control.ShowError(ResHelper.GetString("Site_Edit.AliasExists")); } } else { // Check duplicity SiteDomainAliasInfo existing = SiteDomainAliasInfoProvider.GetSiteDomainAliasInfo(newDomainName, siteInfo.SiteID); if ((existing != null) && (existing.SiteDomainAliasID != domainInfo.SiteDomainAliasID)) { Control.StopProcessing = true; Control.ShowError(ResHelper.GetString("Site_Edit.AliasExists")); } } }
/// <summary> /// Deletes site domain alias. Called when the "Delete alias" button is pressed. /// Expects the CreateSiteDomainAlias method to be run first. /// </summary> private bool DeleteSiteDomainAlias() { // Get the site object SiteInfo site = SiteInfoProvider.GetSiteInfo("MyNewSite"); if (site != null) { // Get the site domain alias SiteDomainAliasInfo deleteAlias = SiteDomainAliasInfoProvider.GetSiteDomainAliasInfo("127.0.0.1", site.SiteID); // Delete the site domain alias SiteDomainAliasInfoProvider.DeleteSiteDomainAliasInfo(deleteAlias); return(deleteAlias != null); } return(false); }
/// <inheritdoc/> public IEnumerable <ISiteDomainAlias> GetDomainAliases(ISite site) { List <ISiteDomainAlias> aliases = new List <ISiteDomainAlias>(); // Gets the site object SiteInfo siteToWork = SiteInfoProvider.GetSiteInfo(site.SiteName); if (siteToWork != null) { // Gets all the domain alias for the site var items = SiteDomainAliasInfoProvider.GetDomainAliases(site.SiteName)?.Items; foreach (var item in items) { aliases.Add(item.ActLike <ISiteDomainAlias>()); } } return(aliases); }
/// <inheritdoc/> public void AddSiteDomainAlias(ISite site, string aliasName) { // Gets the site object SiteInfo siteToWork = SiteInfoProvider.GetSiteInfo(site.SiteName); if (siteToWork != null) { // Creates a new site domain alias object SiteDomainAliasInfo newAlias = new SiteDomainAliasInfo { SiteDomainAliasName = aliasName, // Assigns the domain alias to the site SiteID = siteToWork.SiteID, }; // Saves the site domain alias to the database SiteDomainAliasInfoProvider.SetSiteDomainAliasInfo(newAlias); } }
/// <summary> /// Creates site domain alias. Called when the "Create alias" button is pressed. /// </summary> private bool AddDomainAliasToSite() { // Get the site object SiteInfo site = SiteInfoProvider.GetSiteInfo("MyNewSite"); if (site != null) { // Create new site domain alias object SiteDomainAliasInfo newAlias = new SiteDomainAliasInfo(); // Set the properties newAlias.SiteDomainAliasName = "127.0.0.1"; newAlias.SiteID = site.SiteID; // Save the site domain alias SiteDomainAliasInfoProvider.SetSiteDomainAliasInfo(newAlias); return(true); } return(false); }
/// <summary> /// Button Ok click. /// </summary> /// <param name="sender">Sender</param> /// <param name="e">Arguments</param> protected void btnOk_Click(object sender, EventArgs e) { // Validate file name string fileName = txtFileName.Text.Trim(); string errorMessage = new Validator().NotEmpty(fileName, GetString("lincense.export.filenameempty")).IsFileName(fileName, GetString("license.export.notvalidfilename")).Result; if (!string.IsNullOrEmpty(errorMessage)) { ShowError(errorMessage); } else { try { // Create writers string path = ImportExportHelper.GetSiteUtilsFolder() + "Export\\" + fileName; DirectoryHelper.EnsureDiskPath(path, SettingsKeyProvider.WebApplicationPhysicalPath); using (FileStream file = FileStream.New(path, FileMode.Create)) { using (StreamWriter sw = StreamWriter.New(file)) { // Array list for duplicity checking ArrayList allSites = new ArrayList(); // Get all sites DataSet sites = SiteInfoProvider.GetSites(null, null, "SiteID,SiteDomainName"); if (!DataHelper.DataSourceIsEmpty(sites)) { foreach (DataRow dr in sites.Tables[0].Rows) { // Get domain string domain = ValidationHelper.GetString(dr["SiteDomainName"], ""); if (!string.IsNullOrEmpty(domain)) { domain = GetDomain(domain); // Add to file if (!allSites.Contains(domain)) { sw.WriteLine(domain); allSites.Add(domain); } // Add all domain aliases DataSet aliases = SiteDomainAliasInfoProvider.GetDomainAliases("SiteID=" + ValidationHelper.GetString(dr["SiteID"], ""), null, "SiteDomainAliasName"); if (!DataHelper.DataSourceIsEmpty(aliases)) { foreach (DataRow drAlias in aliases.Tables[0].Rows) { // Get domain domain = ValidationHelper.GetString(drAlias["SiteDomainAliasName"], ""); if (!string.IsNullOrEmpty(domain)) { domain = GetDomain(domain); // Add to file if (!allSites.Contains(domain)) { sw.WriteLine(domain); allSites.Add(domain); } } } } } } } } } // Output string downloadPath = ImportExportHelper.GetSiteUtilsFolderRelativePath(); string location = null; // Path is relative path if (downloadPath != null) { string externalUrl = null; string fullPath = downloadPath + "Export/" + fileName; // Handle external storage URL if (StorageHelper.IsExternalStorage(fullPath)) { externalUrl = File.GetFileUrl(fullPath, CMSContext.CurrentSiteName); } // Handle default URL if (string.IsNullOrEmpty(externalUrl)) { location = URLHelper.ResolveUrl(downloadPath + "Export/" + fileName); } else { location = externalUrl; } location = String.Format("<a href=\"{0}\" target=\"_blank\">{0}</a>", location); } else { location = "<b>" + path + "</b>"; } ShowConfirmation(GetString("license.export.exported")); ShowInformation(String.Format(GetString("license.export.download"), location)); plcTextBox.Visible = false; } catch (Exception ex) { ShowError(ex.Message); } } }
/// <summary> /// Button Ok click. /// </summary> /// <param name="sender">Sender</param> /// <param name="e">Arguments</param> protected void btnOk_Click(object sender, EventArgs e) { // Validate file name string fileName = txtFileName.Text.Trim(); string errorMessage = new Validator().NotEmpty(fileName, GetString("lincense.export.filenameempty")).IsFileName(fileName, GetString("license.export.notvalidfilename")).Result; if (!string.IsNullOrEmpty(errorMessage)) { ShowError(errorMessage); } else { try { // Create writers string path = ImportExportHelper.GetSiteUtilsFolder() + "Export\\" + fileName; DirectoryHelper.EnsureDiskPath(path, SystemContext.WebApplicationPhysicalPath); using (FileStream file = FileStream.New(path, FileMode.Create)) { using (StreamWriter sw = StreamWriter.New(file)) { // Array list for duplicity checking ArrayList allSites = new ArrayList(); // Get all sites DataSet sites = SiteInfoProvider.GetSites().Columns("SiteID,SiteDomainName"); if (!DataHelper.DataSourceIsEmpty(sites)) { foreach (DataRow dr in sites.Tables[0].Rows) { // Get domain string domain = ValidationHelper.GetString(dr["SiteDomainName"], ""); if (!string.IsNullOrEmpty(domain)) { domain = GetDomain(domain); // Add to file if (!allSites.Contains(domain)) { sw.WriteLine(domain); allSites.Add(domain); } // Add all domain aliases DataSet aliases = SiteDomainAliasInfoProvider.GetDomainAliases() .Column("SiteDomainAliasName") .Where("SiteID", QueryOperator.Equals, ValidationHelper.GetInteger(dr["SiteID"], 0)); if (!DataHelper.DataSourceIsEmpty(aliases)) { foreach (DataRow drAlias in aliases.Tables[0].Rows) { // Get domain domain = ValidationHelper.GetString(drAlias["SiteDomainAliasName"], ""); if (!string.IsNullOrEmpty(domain)) { domain = GetDomain(domain); // Add to file if (!allSites.Contains(domain)) { sw.WriteLine(domain); allSites.Add(domain); } } } } } } } } } // Output string url = ImportExportHelper.GetExportPackageUrl(fileName, SiteContext.CurrentSiteName); string downloadLink = (url != null) ? String.Format("<a href=\"{0}\" target=\"_blank\">{1}</a>", url, GetString("license.export.clicktodownload")) : ""; string storageName = (StorageHelper.IsExternalStorage(path)) ? GetString("Export.StorageProviderName." + StorageHelper.GetStorageProvider(path).Name) : ""; string relativePath = ImportExportHelper.GetSiteUtilsFolderRelativePath() + "Export/" + txtFileName.Text; ShowConfirmation(GetString("license.export.exported")); ShowInformation(String.Format(GetString("license.export.download"), storageName, relativePath, downloadLink)); plcTextBox.Visible = false; } catch (Exception ex) { ShowError(ex.Message); } } }
/// <summary> /// Save or update domain alias. /// </summary> protected void btnOk_Click(object sender, EventArgs e) { string result = new Validator().NotEmpty(txtDomainName.Text, GetString("Site_Edit.AliasRequired")).Result; if (result == "") { // Check site of this domain alias if (si == null) { return; } // Stop the site before adding alias bool wasRunning = false; if (si.Status == SiteStatusEnum.Running) { SiteInfoProvider.StopSite(si.SiteName); si.Status = SiteStatusEnum.Stopped; wasRunning = true; } string redirect = String.Empty; // Correct domain name and return it to textbox txtDomainName.Text = URLHelper.RemoveProtocol(txtDomainName.Text); // Insert new if (alias == null) { // Check duplicity if (!SiteDomainAliasInfoProvider.DomainAliasExists(txtDomainName.Text, siteId)) { SiteDomainAliasInfo sdai = new SiteDomainAliasInfo(); sdai.SiteID = si.SiteID; sdai.SiteDomainAliasName = txtDomainName.Text.Trim(); sdai.SiteDefaultVisitorCulture = ValidationHelper.GetString(cultureSelector.Value, ""); sdai.SiteDomainDefaultAliasPath = pageSelector.Value.ToString().Trim(); sdai.SiteDomainRedirectUrl = txtRedirectUrl.Text.Trim(); SiteDomainAliasInfoProvider.SetSiteDomainAliasInfo(sdai); redirect = "Site_Edit_DomainAlias_Edit.aspx?siteId=" + sdai.SiteID + "&domainaliasid=" + sdai.SiteDomainAliasID + "&saved=1"; } else { ShowError(GetString("Site_Edit.AliasExists")); } } // Update else { // Check duplicity SiteDomainAliasInfo existing = SiteDomainAliasInfoProvider.GetSiteDomainAliasInfo(txtDomainName.Text, siteId); if ((existing == null) || (existing.SiteDomainAliasID == alias.SiteDomainAliasID)) { string originalDomainAlias = alias.SiteDomainAliasName; alias.SiteDomainAliasName = txtDomainName.Text.Trim(); alias.SiteDefaultVisitorCulture = ValidationHelper.GetString(cultureSelector.Value, ""); alias.SiteDomainDefaultAliasPath = pageSelector.Value.ToString().Trim(); alias.SiteDomainRedirectUrl = txtRedirectUrl.Text.Trim(); SiteDomainAliasInfoProvider.SetSiteDomainAliasInfo(alias, originalDomainAlias); // Update breadcrumbs CurrentMaster.Title.Breadcrumbs[1, 0] = alias.SiteDomainAliasName; ShowChangesSaved(); } else { ShowError(GetString("Site_Edit.AliasExists")); } } // Run site again if (wasRunning) { DataSet ds = SiteInfoProvider.CheckDomainNameForCollision(txtDomainName.Text.Trim(), si.SiteID); if (!DataHelper.DataSourceIsEmpty(ds)) { SiteInfo runningsi = SiteInfoProvider.GetSiteInfo(ValidationHelper.GetInteger(ds.Tables[0].Rows[0]["SiteID"], 0)); if (runningsi != null) { string collisionSite = runningsi.DisplayName; string collisionDomain = ValidationHelper.GetString(ds.Tables[0].Rows[0]["SiteDomainAliasName"], ""); if (String.IsNullOrEmpty(redirect)) { redirect = "Site_Edit_DomainAlias_Edit.aspx?siteId=" + alias.SiteID + "&domainaliasid=" + alias.SiteDomainAliasID + "&saved=1"; } // Add parameter indicating run problem redirect = URLHelper.AddParameterToUrl(redirect, "runerror", collisionSite + ";" + collisionDomain); } } else { // Seems to be ok, run the site try { SiteInfoProvider.RunSite(si.SiteName); } catch (Exception ex) { ShowError(ex.Message); redirect = ""; } } } // Redirect if (redirect != "") { URLHelper.Redirect(redirect); } } else { ShowError(result); } }
private void Begin_Execute(object sender, EventArgs e) { string url = RequestContext.CurrentRelativePath + RequestContext.CurrentQueryString; string handler = url.Split('/')[1].ToLower(); string[] notwanted = { "cmspages", "cmsmodules", "cmsformcontrols", "cmsadmincontrols", "admin", "getattachment", "getfile", "getmedia", "getmetafile", "app_themes", "cmsapi", "socialmediaapi", "searchapi", "formsapi", "api" }; // only run this code if we need to perform a redirect if (!notwanted.Contains(handler) && SiteContext.CurrentSite != null) { var currentSite = SiteContext.CurrentSite; var dictCultureAlias = CacheHelper.GetItem($"RedirectionHandler_CultureAliasDictionary_{currentSite.SiteName}") as Dictionary <string, string>; if (dictCultureAlias == null) { dictCultureAlias = new Dictionary <string, string>(); var domainAliasDict = new Dictionary <string, string>(); var primaryAliasInfo = new SiteDomainAliasInfo(); primaryAliasInfo.SiteDomainAliasName = currentSite.DomainName; primaryAliasInfo.SiteDefaultVisitorCulture = currentSite.DefaultVisitorCulture; var domainAliases = SiteDomainAliasInfoProvider.GetDomainAliases().Columns("SiteID", "SiteDomainAliasName", "SiteDefaultVisitorCulture").Where(x => x.SiteID == currentSite.SiteID).ToList(); if (domainAliases != null) { domainAliases.Add(primaryAliasInfo); var cultureBindings = CultureSiteInfoProvider.GetCultureSites().WhereEquals("SiteID", SiteContext.CurrentSiteID); foreach (var cultureBinding in cultureBindings) { var culture = CultureInfoProvider.GetCultureInfo(cultureBinding.CultureID); if (culture != null) { if (String.IsNullOrEmpty(culture.CultureAlias)) { var domainAlias = domainAliases.Where(x => x.SiteDefaultVisitorCulture == culture.CultureCode).FirstOrDefault(); if (domainAlias != null) { dictCultureAlias.Add(culture.CultureCode, "domain"); } } else { dictCultureAlias.Add(culture.CultureCode, culture.CultureAlias); } } } } CacheHelper.Add("RedirectionHandler_CultureAliasDictionary", dictCultureAlias, null, DateTime.Now.AddHours(72), System.Web.Caching.Cache.NoSlidingExpiration); } var currentCulture = LocalizationContext.CurrentCulture.CultureCode; //Not sure if this is a Kentico bug or not, but LocalizationContext.CurrentCulture.CultureCode sometimes does not actually show the current user's culture //This usually happens if this is the first request by a user on a new culture. Comparing it to the cookie value of the user always shows the correct culture if (!String.IsNullOrEmpty(CookieHelper.GetValue("CMSPreferredCulture")) && CookieHelper.GetValue("CMSPreferredCulture") != currentCulture) { currentCulture = CookieHelper.GetValue("CMSPreferredCulture"); } if (dictCultureAlias.ContainsKey(currentCulture)) { //Handle Redirect try { int site = SiteContext.CurrentSiteID; var cultureCode = currentCulture; var cultureAlias = dictCultureAlias[cultureCode]; // make sure the culture has been set for the site URLRedirectionMethods.Redirect(url, site, cultureCode, cultureAlias); } catch (ThreadAbortException threadEx) { //Do nothing: this exception is thrown by Response.Redirect() in the redirect method. We only want to log other kinds of exceptions } catch (Exception ex) { EventLogProvider.LogException("RedirectionMethods.Redirect", "REDIRECT_FAILED", ex, additionalMessage: "An exception occurred during the redirect process"); } } else { EventLogProvider.LogInformation("UrlRedirection.RedirectionHandler.Begin_Execute", "REDIRECT_FAILED", $"The culture code: {LocalizationContext.CurrentCulture.CultureCode} was not assigned to the site. Unable to redirect URL: {RequestContext.RawURL}"); } } }