protected override void OnLoad(EventArgs e) { string currentPage = ""; string currentWebsiteHost = ""; this.Page = (Page)this.Context.Handler; currentWebsiteHost = this.Context.Request.Url.Authority; this.Website = DataProvider.SelectSingleFull <Website>(new Website() { WebsiteHost = currentWebsiteHost }); if (this.Website == null || this.Website.WebsiteID == 0) { WebsiteAlias websiteAlias = DataProvider.SelectSingle <WebsiteAlias>(new WebsiteAlias() { WebsiteAliasHost = currentWebsiteHost }); if (websiteAlias != null && websiteAlias.WebsiteAliasID > 0) { this.Website = DataProvider.SelectSingleFull <Website>(new Website() { WebsiteID = websiteAlias.WebsiteID }); } else { return; } } currentPage = this.Page.AppRelativeVirtualPath.Replace(".aspx", "").Replace("~/", ""); this.WebsitePageList = DataProvider.SelectOrDefault <WebsitePage>(new WebsitePage() { PageName = currentPage, WebsiteID = this.Website.WebsiteID }, this.Website.WebsiteConnection.ConnectionString, "PageName"); }
public IAsyncResult BeginProcessRequest(HttpContext context, AsyncCallback callBack, object extraData) { ProviderFramework providerFramework = new ProviderFramework(); JavaScriptSerializer serializer = new JavaScriptSerializer(); string currentWebsiteHost = ""; int userID = 0; this.Tracking = new Tracking(); this.Tracking.AssemblyName = Assembly.GetExecutingAssembly().GetName().Name; this.Tracking.AssemblyType = this.GetType().FullName; this.AjaxResult = new AjaxResult(callBack, context, extraData); this.Context = context; currentWebsiteHost = this.Context.Request.Url.Authority; this.Website = DataProvider.SelectSingleFull <Website>(new Website() { WebsiteHost = currentWebsiteHost }); if (this.Website == null || this.Website.WebsiteID == 0) { WebsiteAlias websiteAlias = DataProvider.SelectSingle <WebsiteAlias>(new WebsiteAlias() { WebsiteAliasHost = currentWebsiteHost }); if (websiteAlias != null && websiteAlias.WebsiteAliasID > 0) { this.Website = DataProvider.SelectSingleFull <Website>(new Website() { WebsiteID = websiteAlias.WebsiteID }); } else { callBack(this.AjaxResult); return(this.AjaxResult); } } this.RequestParameters = ProviderBase.Framework.Utility.GetQueryAndFormValues(); this.CommandRequest = ProviderBase.Framework.Utility.GetQueryValue <string>("Command", ""); if (Int32.TryParse(this.Context.User.Identity.Name, out userID) == true) { this.User = ProviderBase.Data.Providers.DataProvider.SelectSingle <User>(new User() { UserID = userID }, this.Website.WebsiteConnection.ConnectionString); } else { this.User = new User(); } this.Tracking.MethodName = CommandRequest; this.Tracking.UserID = this.User.UserID; this.Tracking.RequestData = serializer.Serialize(ProviderBase.Framework.Utility.GetQueryAndFormValues()); this.ProcessRequest(context); callBack(this.AjaxResult); return(this.AjaxResult); }
protected void URLRewrite(object sender, EventArgs e) { HttpApplication app = (HttpApplication)sender; Website website = null; string currentWebsiteHost = ""; currentWebsiteHost = app.Request.Url.Authority; website = DataProvider.SelectSingle <Website>(new Website() { WebsiteHost = currentWebsiteHost }); if (website == null || website.WebsiteID == 0) { WebsiteAlias websiteAlias = DataProvider.SelectSingle <WebsiteAlias>(new WebsiteAlias() { WebsiteAliasHost = currentWebsiteHost }); if (websiteAlias != null && websiteAlias.WebsiteAliasID > 0) { website = DataProvider.SelectSingleFull <Website>(new Website() { WebsiteID = websiteAlias.WebsiteID }); } else { return; } } string pageURL = ""; string[] pageURLSplit = null; List <WebsitePage> websitePageList = null; websitePageList = DataProvider.Select <WebsitePage>(new WebsitePage() { WebsiteID = website.WebsiteID }, website.WebsiteConnection.ConnectionString); pageURLSplit = app.Request.CurrentExecutionFilePath.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries); if (pageURLSplit?.Count() > 0) { pageURL = pageURLSplit[0]; } else { pageURL = "Default.aspx"; } if (websitePageList.Exists(x => x.PageName.ToLower() == pageURL.ToLower()) == false) { return; } WebsitePage websitePage = null; websitePage = websitePageList.Where(x => x.PageName.ToLower() == pageURL.ToLower()).FirstOrDefault <WebsitePage>(); if (websitePage != null && websitePage.WebsitePageID > 0) { string pageURLPath = ""; pageURLPath = "/" + pageURL + ".aspx"; if (pageURLSplit.Count() > 1) { pageURLPath += "?FirstValue=" + pageURLSplit[1]; if (app.Request.QueryString.Count > 0) { pageURLPath += "&" + Utility.ToQueryString(app.Request.QueryString); } } app.Context.RewritePath(pageURLPath); } else { app.Response.Redirect("/"); } }
protected override void OnLoad(EventArgs e) { string currentWebsiteHost = ""; WebsitePage websitePageItem = null; WebsitePageSizeType websitePageSizeType = WebsitePageSizeType.Desktop; Provider fiftyOneDegreesMobileProvider = null; this.Page = (Page)this.Context.Handler; currentWebsiteHost = this.Context.Request.Url.Authority; this.Website = DataProvider.SelectSingleFull <Website>(new Website() { WebsiteHost = currentWebsiteHost }); if (this.Website == null || this.Website.WebsiteID == 0) { WebsiteAlias websiteAlias = DataProvider.SelectSingle <WebsiteAlias>(new WebsiteAlias() { WebsiteAliasHost = currentWebsiteHost }); if (websiteAlias != null && websiteAlias.WebsiteAliasID > 0) { this.Website = DataProvider.SelectSingleFull <Website>(new Website() { WebsiteID = websiteAlias.WebsiteID }); } else { return; } } this.CurrentPage = this.Page.AppRelativeVirtualPath.Replace(".aspx", "").Replace("~/", ""); fiftyOneDegreesMobileProvider = new Provider(StreamFactory.Create(this.Context.Server.MapPath("App_Data/51Degrees.dat"))); if (fiftyOneDegreesMobileProvider != null) { Match fiftyOneDegreesMatch = null; fiftyOneDegreesMatch = fiftyOneDegreesMobileProvider.Match(this.Context.Request.UserAgent); if (fiftyOneDegreesMatch != null) { Values fiftyOneDegreesValuesIsMobile = null; fiftyOneDegreesValuesIsMobile = fiftyOneDegreesMatch["IsMobile"]; if (fiftyOneDegreesValuesIsMobile != null) { bool isMobile = false; bool.TryParse(fiftyOneDegreesValuesIsMobile.ToString(), out isMobile); websitePageSizeType = (isMobile) ? WebsitePageSizeType.Mobile : WebsitePageSizeType.Desktop; } } } websitePageItem = DataProvider.SelectSingle(new WebsitePage() { PageName = this.CurrentPage, WebsiteID = this.Website.WebsiteID, WebsitePageSizeTypeID = websitePageSizeType }, this.Website.WebsiteConnection.ConnectionString); if (websitePageItem != null && websitePageItem.WebsitePageID > 0) { this.WebsitePage = DataProvider.SelectSingleOrDefaultFull(new WebsitePage() { PageName = this.CurrentPage, WebsiteID = this.Website.WebsiteID, WebsitePageContentTypeID = websitePageItem.WebsitePageContentTypeID, WebsitePageSizeTypeID = websitePageSizeType }, this.Website.WebsiteConnection.ConnectionString, "PageName"); this.LoadPageHeader(); } else { throw new Exception("No page data found"); } }
protected void AuthenticateRequest(object sender, EventArgs e) { HttpApplication app = (HttpApplication)sender; string currentWebsiteHost = ""; currentWebsiteHost = app.Request.Url.Authority; this.Website = DataProvider.SelectSingle <Website>(new Website() { WebsiteHost = currentWebsiteHost }); if (this.Website == null || this.Website.WebsiteID == 0) { WebsiteAlias websiteAlias = DataProvider.SelectSingle <WebsiteAlias>(new WebsiteAlias() { WebsiteAliasHost = currentWebsiteHost }); if (websiteAlias != null && websiteAlias.WebsiteAliasID > 0) { this.Website = DataProvider.SelectSingleFull <Website>(new Website() { WebsiteID = websiteAlias.WebsiteID }); } else { return; } } string pageURL = ""; string handlerURL = ""; string[] pageURLSplit = null; this.WebsitePageList = DataProvider.Select <WebsitePage>(new WebsitePage() { WebsiteID = this.Website.WebsiteID }, this.Website.WebsiteConnection.ConnectionString); pageURLSplit = app.Request.CurrentExecutionFilePath.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries); if (pageURLSplit?.Count() > 0) { pageURL = pageURLSplit[0]; } else { pageURL = "Default.aspx"; } pageURL = pageURL.Replace(".aspx", ""); handlerURL = (pageURL.Contains('.')) ? "." + pageURL.Split('.').Last() : ""; this.WebsiteHandlerList = DataProvider.Select <WebsiteHandler>(new WebsiteHandler() { WebsiteID = this.Website.WebsiteID }, this.Website.WebsiteConnection.ConnectionString); if (this.WebsitePageList.Exists(x => x.PageName.ToLower() == pageURL.ToLower()) == false && this.WebsiteHandlerList.Exists(x => x.HandlerURL.ToLower() == handlerURL.ToLower()) == false) { return; } else { bool releventRequest = false; bool authenticateRequest = true; WebsitePage websitePage = null; websitePage = this.WebsitePageList.Where(x => x.PageName.ToLower() == pageURL.ToLower()).FirstOrDefault <WebsitePage>(); if (websitePage?.WebsitePageID > 0) { releventRequest = true; authenticateRequest = websitePage.Authenticate; this.PageRequest = true; } else { WebsiteHandler websiteHandler = null; websiteHandler = this.WebsiteHandlerList.Where(x => x.HandlerURL.ToLower() == handlerURL.ToLower()).FirstOrDefault <WebsiteHandler>(); if (websiteHandler?.WebsiteHandlerID > 0) { releventRequest = true; authenticateRequest = websiteHandler.Authenticate; this.PageRequest = false; } } if (releventRequest) { // websitePage if (app.Request.Cookies["ProviderBaseAuthentication"] != null) { string providerBaseAuthenticationHmac = ""; string providerBaseAuthenticationToken = ""; if (app.Request.Cookies["ProviderBaseAuthentication"]["Hmac"] != null) { providerBaseAuthenticationHmac = app.Request.Cookies["ProviderBaseAuthentication"]["Hmac"]; } if (app.Request.Cookies["ProviderBaseAuthentication"]["Token"] != null) { providerBaseAuthenticationToken = app.Request.Cookies["ProviderBaseAuthentication"]["Token"]; } if (string.IsNullOrEmpty(providerBaseAuthenticationHmac) == false && string.IsNullOrEmpty(providerBaseAuthenticationToken) == false) { string token = ""; token = ProviderBase.Data.Entities.Encryption.DecryptString(providerBaseAuthenticationToken); if (string.IsNullOrEmpty(token) == false) { string hmac = ""; hmac = ProviderBase.Data.Entities.Encryption.HashHMAC(token); if (hmac == providerBaseAuthenticationHmac) { if (token.Contains("|")) { string user = ""; string expiry = ""; string[] tokenSplit = token.Split('|'); long expiryMilliseconds = 0; user = tokenSplit[0]; expiry = tokenSplit[1]; if (long.TryParse(expiry, out expiryMilliseconds)) { DateTime expiryDate = new DateTime(1970, 1, 1); expiryDate.AddMilliseconds(expiryMilliseconds); if (expiryDate < DateTime.Now) { GenericIdentity identitiy = new GenericIdentity(user); SetPrinciple(new GenericPrincipal(identitiy, null)); // Add 20 minutes timeout token = user + "|" + (long)(DateTime.Now.AddMinutes(20) - new DateTime(1970, 1, 1)).TotalMilliseconds; hmac = ProviderBase.Data.Entities.Encryption.HashHMAC(token); token = ProviderBase.Data.Entities.Encryption.EncryptString(token); app.Response.Cookies["ProviderBaseAuthentication"]["Hmac"] = hmac; app.Response.Cookies["ProviderBaseAuthentication"]["Token"] = token; return; // Authorised } } } } } } } if (authenticateRequest) { app.Response.StatusCode = 401; // Unauthorised } } else { app.Response.StatusCode = 401; // Unauthorised } } }