protected virtual void ValidateUrlParameters() { var success = true; var link = Page.Request["_link"]; if (!(string.IsNullOrEmpty(link))) { try { link = StringEncryptor.FromString(link.Replace(" ", "+").Split(',')[0]); if (!(link.Contains('?'))) { link = ('?' + link); } var permalink = link.Split('?'); ClientScript.RegisterClientScriptBlock(GetType(), "CommandLine", string.Format("var __dacl=\'{0}?{1}\';", permalink[0], BusinessRules.JavaScriptString(permalink[1])), true); } catch (Exception) { success = false; } } if (!success) { Response.StatusCode = 403; Response.End(); } }
protected override void OnInit(EventArgs e) { if (Request.Path.StartsWith((ResolveUrl(AquariumExtenderBase.DefaultServicePath) + "/"), StringComparison.CurrentCultureIgnoreCase) || Request.Path.StartsWith((ResolveUrl(AquariumExtenderBase.AppServicePath) + "/"), StringComparison.CurrentCultureIgnoreCase)) { ApplicationServices.HandleServiceRequest(Context); } if (Request.Params["_page"] == "_blank") { return; } var link = Request.Params["_link"]; if (!(string.IsNullOrEmpty(link))) { var permalink = StringEncryptor.FromString(link.Replace(" ", "+").Split(',')[0]).Split('?'); if (permalink.Length == 2) { Page.ClientScript.RegisterStartupScript(GetType(), "Redirect", string.Format("window.location.replace(\'{0}?_link={1}\');", permalink[0], HttpUtility.UrlEncode(link)), true); } } else { var requestUrl = Request.RawUrl; if ((requestUrl.Length > 1) && requestUrl.EndsWith("/")) { requestUrl = requestUrl.Substring(0, (requestUrl.Length - 1)); } if (Request.ApplicationPath.Equals(requestUrl, StringComparison.CurrentCultureIgnoreCase)) { var homePageUrl = ApplicationServices.HomePageUrl; if (!(Request.ApplicationPath.Equals(homePageUrl))) { Response.Redirect(homePageUrl); } } } var contentInfo = ApplicationServices.LoadContent(); InitializeSiteMaster(); string s = null; if (!(contentInfo.TryGetValue("PageTitle", out s))) { s = ApplicationServicesBase.Current.DisplayName; } this.Title = s; if (_pageTitleContent != null) { if (_isTouchUI) { _pageTitleContent.Text = string.Empty; } else { _pageTitleContent.Text = s; } } var appName = new HtmlMeta(); appName.Name = "application-name"; appName.Content = ApplicationServicesBase.Current.DisplayName; Header.Controls.Add(appName); if (contentInfo.TryGetValue("Head", out s) && (_headContent != null)) { _headContent.Text = s; } if (contentInfo.TryGetValue("PageContent", out s) && (_pageContent != null)) { if (_isTouchUI) { s = string.Format("<div id=\"PageContent\" style=\"display:none\">{0}</div>", s); } var userControl = Regex.Match(s, "<div\\s+data-user-control\\s*=s*\"([\\s\\S]+?)\".*?>\\s*</div>"); if (userControl.Success) { var startPos = 0; while (userControl.Success) { _pageContent.Controls.Add(new LiteralControl(s.Substring(startPos, (userControl.Index - startPos)))); startPos = (userControl.Index + userControl.Length); var controlFileName = userControl.Groups[1].Value; var controlExtension = Path.GetExtension(controlFileName); string siteControlText = null; if (!(controlFileName.StartsWith("~"))) { controlFileName = (controlFileName + "~"); } if (string.IsNullOrEmpty(controlExtension)) { var testFileName = (controlFileName + ".ascx"); if (File.Exists(Server.MapPath(testFileName))) { controlFileName = testFileName; controlExtension = ".ascx"; } else { if (ApplicationServices.IsSiteContentEnabled) { var relativeControlPath = controlFileName.Substring(1); if (relativeControlPath.StartsWith("/")) { relativeControlPath = relativeControlPath.Substring(1); } siteControlText = ApplicationServices.Current.ReadSiteContentString(("sys/" + relativeControlPath)); } if (siteControlText == null) { testFileName = (controlFileName + ".html"); if (File.Exists(Server.MapPath(testFileName))) { controlFileName = testFileName; controlExtension = ".html"; } } } } var userControlAuthorizeRoles = Regex.Match(userControl.Value, "data-authorize-roles\\s*=\\s*\"(.+?)\""); var allowUserControl = !userControlAuthorizeRoles.Success; if (!allowUserControl) { var authorizeRoles = userControlAuthorizeRoles.Groups[1].Value; if (authorizeRoles == "?") { if (!Context.User.Identity.IsAuthenticated) { allowUserControl = true; } } else { allowUserControl = ApplicationServices.UserIsAuthorizedToAccessResource(controlFileName, authorizeRoles); } } if (allowUserControl) { try { if (controlExtension == ".ascx") { _pageContent.Controls.Add(LoadControl(controlFileName)); } else { var controlText = siteControlText; if (controlText == null) { controlText = File.ReadAllText(Server.MapPath(controlFileName)); } var bodyMatch = Regex.Match(controlText, "<body[\\s\\S]*?>([\\s\\S]+?)</body>"); if (bodyMatch.Success) { controlText = bodyMatch.Groups[1].Value; } controlText = ApplicationServices.EnrichData(Localizer.Replace("Controls", Path.GetFileName(Server.MapPath(controlFileName)), controlText)); _pageContent.Controls.Add(new LiteralControl(InjectPrefetch(controlText))); } } catch (Exception ex) { _pageContent.Controls.Add(new LiteralControl(string.Format("Error loading \'{0}\': {1}", controlFileName, ex.Message))); } } userControl = userControl.NextMatch(); } if (startPos < s.Length) { _pageContent.Controls.Add(new LiteralControl(s.Substring(startPos))); } } else { _pageContent.Text = InjectPrefetch(s); } } else if (_isTouchUI) { _pageContent.Text = "<div id=\"PageContent\" style=\"display:none\"><div data-app-role=\"page\">404 Not Foun" + "d</div></div>"; this.Title = ApplicationServicesBase.Current.DisplayName; } else { _pageContent.Text = "404 Not Found"; } if (_isTouchUI) { if (_pageFooterContent != null) { _pageFooterContent.Text = (("<footer style=\"display:none\"><small>" + Copyright) + "</small></footer>"); } } else if (contentInfo.TryGetValue("About", out s)) { if (_pageSideBarContent != null) { _pageSideBarContent.Text = string.Format("<div class=\"TaskBox About\"><div class=\"Inner\"><div class=\"Header\">About</div><div" + " class=\"Value\">{0}</div></div></div>", s); } } string bodyAttributes = null; if (contentInfo.TryGetValue("BodyAttributes", out bodyAttributes)) { _bodyAttributes.Parse(bodyAttributes); } var classAttr = _bodyAttributes["class"]; if (string.IsNullOrEmpty(classAttr)) { classAttr = string.Empty; } if (!_isTouchUI) { if (!(classAttr.Contains("Wide"))) { classAttr = (classAttr + " Standard"); } classAttr = ((classAttr + " ") + (Regex.Replace(Request.Path.ToLower(), "\\W", "_").Substring(1) + "_html")); } else if (_summaryDisabled) { classAttr = (classAttr + " see-all-always"); } if (!(string.IsNullOrEmpty(classAttr))) { _bodyAttributes["class"] = classAttr.Trim(); } _bodyTag.Text = string.Format("\r\n<body{0}>\r\n", _bodyAttributes.ToString()); base.OnInit(e); }
public string EncodePermalink(string link, bool rooted) { var request = HttpContext.Current.Request; if (rooted) { var appPath = request.ApplicationPath; if (appPath.Equals("/")) { appPath = string.Empty; } return(string.Format("{0}://{1}{2}/default.aspx?_link={3}", request.Url.Scheme, request.Url.Authority, appPath, HttpUtility.UrlEncode(StringEncryptor.ToString(link)))); } else { var linkSegments = link.Split('?'); var arguments = string.Empty; if (linkSegments.Length > 1) { arguments = linkSegments[1]; } return(string.Format("{0}?_link={1}", linkSegments[0], HttpUtility.UrlEncode(StringEncryptor.FromString(arguments)))); } }