HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/TDijk1/erp-apps.eu/wwwroot/CMSWebParts/Pux/Redirect/RedirectFromAlias.ascx.cs
using CMS.Helpers;
using CMS.PortalControls;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;

public partial class CMSWebParts_Pux_Redirect_RedirectFromAlias : CMSAbstractWebPart
{
    public string DefaultDomain
    {
        get
        {
            return ValidationHelper.GetString(this.GetValue("DefaultDomain"), "");
        }
        set
        {
            this.SetValue("DefaultDomain", value);
        }
    }

    public string URLs
    {
        get
        {
            return ValidationHelper.GetString(this.GetValue("URLs"), "/%");
        }
        set
        {
            this.SetValue("URLs", value);
        }
    }

    public string Domains
    {
        get
        {
            return ValidationHelper.GetString(this.GetValue("Domains"), "/%");
        }
        set
        {
            this.SetValue("Domains", value);
        }
    }

    public bool AddOldDomainQueryString
    {
        get
        {
            return ValidationHelper.GetBoolean(this.GetValue("AddOldDomainQueryString"), false);
        }
        set
        {
            this.SetValue("AddOldDomainQueryString", value);
        }
    }

    private string RemoveHttp(string url)
    {
        return url.ToLowerInvariant().Replace("http://", "").Replace("https://", "");
    }

    //Dictionary<string, string> _dictURLs = null;
    public Dictionary<string, string> RedirectDictionary(string urls)
    {
        Dictionary<string, string> _dictURLs = null;
        if (_dictURLs == null)
        {
            _dictURLs = new Dictionary<string, string>();

            foreach (string url in urls.Split('\n'))
            {
                if (url.Contains(" "))
                {
                    char[] charsToTrim = { '/', '\r', '\n' };
                    string[] s = url.Split(' ');
                    if (s[0].Trim(charsToTrim).Contains("#!"))
                    {
                        pnlScript.Visible = true;
                        ltrScript.Text += String.Format("if (puxUrl == \"{0}\")  {{ window.location.replace(\"{1}\"); }}", RemoveHttp(s[0].Trim(charsToTrim)), s[1].Trim(charsToTrim)).Trim();
                    }
                    else
                    {
                        string key = RemoveHttp(s[0].Trim(charsToTrim));
                        
                        if (!_dictURLs.ContainsKey(key))
                        {
                            _dictURLs.Add(key, s[1].Trim(charsToTrim));
                        }
                    }
                }
            }
        }
        return _dictURLs;
    }

    public Dictionary<string, string> DictURLs
    {
        get
        {
            return RedirectDictionary(URLs);
        }
    }

    public Dictionary<string, string> DictDomains
    {
        get
        {
            return RedirectDictionary(Domains);
        }
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        char[] charsToTrim = { '/', '\r', '\n' };
        string oldURL = (URLHelper.GetFullApplicationUrl() + Request.RawUrl).ToLowerInvariant().Replace("http://", "").Replace("https://", "").Trim(charsToTrim);
        string oldDomain = URLHelper.GetDomain(URLHelper.GetFullApplicationUrl());
        Dictionary<string, string> dictURLs = DictURLs;
        if (dictURLs != null && dictURLs.ContainsKey(oldURL))
        {
            string newUrl = URLHelper.ResolveUrl(dictURLs[oldURL]).Trim();
            if (AddOldDomainQueryString)
            {
                newUrl = URLHelper.AddParameterToUrl(newUrl, "oldURL", URLHelper.GetFullApplicationUrl().ToLowerInvariant().Replace("http://", "").Replace("https://", ""));
            }
           
            URLHelper.RedirectPermanent(newUrl, CurrentSite.SiteName);
        }

        Dictionary<string, string> dictDomains = DictDomains;
        if (dictDomains != null && dictDomains.ContainsKey(oldDomain))
        {
            string newUrl = (URLHelper.GetFullApplicationUrl() + Request.RawUrl).Replace(oldDomain, DictDomains[oldDomain]);
            URLHelper.RedirectPermanent(newUrl, CurrentSite.SiteName);
        }
    }
}