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";
    }
Пример #2
0
    /// <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>
    /// AfterDataLoad event handler of UIForm.
    /// </summary>
    /// <param name="sender">Sender object</param>
    /// <param name="e">Event argument</param>
    private void Control_OnAfterDataLoad(object sender, EventArgs e)
    {
        domainInfo = Control.EditedObject as SiteDomainAliasInfo;
        siteInfo   = Control.UIContext.EditedObjectParent as SiteInfo;

        // Set SiteID of SiteCultureSelector in order to offer only cultures assigned to the edited site.
        FormEngineUserControl visitorCultureControl = Control.FieldControls["SiteDefaultVisitorCulture"];

        if (visitorCultureControl != null)
        {
            visitorCultureControl.SetValue("SiteID", siteInfo.SiteID);
        }
    }
Пример #4
0
        /// <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"));
            }
        }
    }
Пример #6
0
    /// <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);
    }
Пример #7
0
        /// <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);
            }
        }
Пример #8
0
    /// <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>
    /// 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);
        }
    }
    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))
            {
                ShowError(String.Format(GetString("SiteDomain.RunError"), HTMLHelper.HTMLEncode(collisionSite[0]), HTMLHelper.HTMLEncode(collisionSite[1]), HTMLHelper.HTMLEncode(si.DisplayName)));
            }
        }

        InitializeComponents();

        if ((QueryHelper.GetString("saved", String.Empty) != String.Empty) && !URLHelper.IsPostback())
        {
            ShowChangesSaved();
        }

        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] = "";

        CurrentMaster.Title.Breadcrumbs = breadcrumbs;
        CurrentMaster.Title.HelpTopicName = "edit_and_new_alias";
    }
    /// <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);
        }
    }
Пример #12
0
        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}");
                }
            }
        }
    /// <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;
    }
Пример #14
0
 /// <summary>
 /// Load event handler of UIForm.
 /// </summary>
 /// <param name="sender">Sender object</param>
 /// <param name="e">Event argument</param>
 private void Control_Load(object sender, EventArgs e)
 {
     domainInfo = Control.EditedObject as SiteDomainAliasInfo;
     siteInfo   = Control.UIContext.EditedObjectParent as SiteInfo;
 }