public void SaveRedirect(string oldUrl, string newUrl, string skipWildCardAppend) { Logger.Debug("Adding redirect: '{0}' -> '{1}'", oldUrl, newUrl); // Get hold of the datastore _redirectsService.AddOrUpdate(new CustomRedirect(oldUrl.Trim(), newUrl.Trim(), skipWildCardAppend == null ? false : true)); CustomRedirectHandler.ClearCache(); }
public ActionResult Index(int?pageNumber, string searchWord, int?pageSize, bool?isSuggestions, bool?showRedirects) { CheckAccess(); CustomRedirectHandler.ReloadCustomRedirectHandler(); if (!string.IsNullOrEmpty(CustomRedirectHandler.CustomRedirectHandlerException)) { return(Content("An error has occured in the dynamic data store: " + CustomRedirectHandler.CustomRedirectHandlerException)); } var suggestion = false;; List <CustomRedirect> customRedirectList; if (isSuggestions.HasValue && isSuggestions.Value) { customRedirectList = GetSuggestions(searchWord); suggestion = true; var viewData = GetRedirectIndexViewData(pageNumber, customRedirectList, GetSearchResultInfo(searchWord, customRedirectList.Count, suggestion), searchWord, pageSize, suggestion, showRedirects); if (customRedirectList != null && customRedirectList.Count > 0) { viewData.HighestSuggestionValue = customRedirectList.First().NotfoundErrorCount; viewData.LowestSuggestionValue = customRedirectList.Last().NotfoundErrorCount; } return(View("Index", viewData)); } else { if (!(showRedirects.HasValue && showRedirects.Value)) { customRedirectList = new List <CustomRedirect>(); return(View("Index", GetRedirectIndexViewData(pageNumber, customRedirectList, LocalizationService.Current.GetString("/gadget/redirects/inactiveredirects"), searchWord, pageSize, suggestion, showRedirects))); } customRedirectList = GetData(searchWord); } return(View("Index", GetRedirectIndexViewData(pageNumber, customRedirectList, GetSearchResultInfo(searchWord, customRedirectList.Count, suggestion), searchWord, pageSize, suggestion, showRedirects))); }
public ActionResult MigrateDdsToSql() { CheckAccess(); var ddsRequests = _ddsRedirectRepository.GetAll().ToList(); var count = ddsRequests.Count; foreach (var ddsRequest in ddsRequests) { _redirectsService.AddOrUpdate(new CustomRedirect { State = ddsRequest.State, NewUrl = ddsRequest.NewUrl, OldUrl = ddsRequest.OldUrl, WildCardSkipAppend = ddsRequest.WildCardSkipAppend }); _ddsRedirectRepository.Delete(ddsRequest); } ViewData["information"] = $"Migrated {count} redirects from DDS to SQL"; CustomRedirectHandler.ClearCache(); return(View("Administer")); }
public ActionResult IgnoreRedirect(string oldUrl, int pageNumber, string searchWord, int pageSize) { CheckAccess(); // delete rows from DB var dbAccess = DataAccessBaseEx.GetWorker(); dbAccess.DeleteRowsForRequest(oldUrl); // add redirect to dds with state "ignored" var redirect = new CustomRedirect { OldUrl = oldUrl, NewUrl = string.Empty, State = Convert.ToInt32(RedirectState.Ignored) }; _redirectsService.AddOrUpdate(redirect); CustomRedirectHandler.ClearCache(); List <CustomRedirect> customRedirectList = GetSuggestions(searchWord); string actionInfo = string.Format(LocalizationService.Current.GetString("/gadget/redirects/ignoreredirect"), oldUrl); RedirectIndexViewData viewData = GetRedirectIndexViewData(pageNumber, customRedirectList, actionInfo, searchWord, pageSize, true, true); if (customRedirectList.Count > 0) { viewData.HighestSuggestionValue = customRedirectList.First().NotfoundErrorCount; viewData.LowestSuggestionValue = customRedirectList.Last().NotfoundErrorCount; } return(View("Index", viewData)); }
public ActionResult AddDeletedUrl(string oldUrl) { CheckAccess(); // add redirect to dds with state "deleted" var redirect = new CustomRedirect { OldUrl = oldUrl, NewUrl = string.Empty, State = Convert.ToInt32(RedirectState.Deleted) }; _redirectsService.AddOrUpdate(redirect); CustomRedirectHandler.ClearCache(); // delete rows from DB var dbAccess = DataAccessBaseEx.GetWorker(); dbAccess.DeleteRowsForRequest(oldUrl); // List <CustomRedirect> customRedirectList = GetDeletedUrls(); CustomRedirectHandler.ClearCache(); return(Deleted()); }
public FileUploadJsonResult ImportRedirects(HttpPostedFileBase xmlfile) { CheckAccess(); if (!IsXml(xmlfile)) { return(new FileUploadJsonResult { Data = new { message = LocalizationService.Current.GetString("/gadget/redirects/invalidxmlfile") } }); } // Read all redirects from xml file RedirectsXmlParser parser = new RedirectsXmlParser(xmlfile.InputStream); // Save all redirects from xml file CustomRedirectCollection redirects = parser.Load(); string message; if (redirects != null || redirects.Count() != 0) { _redirectsService.AddOrUpdate(redirects); CustomRedirectHandler.ClearCache(); message = string.Format(LocalizationService.Current.GetString("/gadget/redirects/importsuccess"), redirects.Count()); } else { message = LocalizationService.Current.GetString("/gadget/redirects/importnone"); } return(new FileUploadJsonResult { Data = new { message = message } }); }
public ActionResult AddDeletedUrl(string oldUrl) { CheckAccess(); // add redirect to dds with state "deleted" var redirect = new CustomRedirect(); redirect.OldUrl = oldUrl; redirect.State = Convert.ToInt32(DataStoreHandler.State.Deleted); DataStoreHandler dsHandler = new DataStoreHandler(); dsHandler.SaveCustomRedirect(redirect); CustomRedirectHandler.ClearCache(); // delete rows from DB var dbAccess = DataAccessBaseEx.GetWorker(); dbAccess.DeleteRowsForRequest(oldUrl); // List <CustomRedirect> customRedirectList = GetDeletedUrls(); CustomRedirectHandler.ClearCache(); return(Deleted()); }
private static void dataStoreInvalidationEvent_Raised(object sender, EventNotificationEventArgs e) { _log.Debug("dataStoreInvalidationEvent '{2}' handled - raised by '{0}' on '{1}'", e.RaiserId, Environment.MachineName, e.EventId); _log.Debug("Begin: Clearing cache on '{0}'", Environment.MachineName); CustomRedirectHandler.ClearCache(); _log.Debug("End: Clearing cache on '{0}'", Environment.MachineName); }
public ActionResult DeleteAllRedirects() { CheckAccess(); _redirectsService.DeleteAll(); CustomRedirectHandler.ClearCache(); ViewData["information"] = LocalizationService.Current.GetString("/gadget/redirects/redirectsdeleted"); return(View("Administer")); }
public void SaveRedirect(string oldUrl, string newUrl, string skipWildCardAppend) { Logger.Debug("Adding redirect: '{0}' -> '{1}'", oldUrl, newUrl); // Get hold of the datastore DataStoreHandler dsHandler = new DataStoreHandler(); dsHandler.SaveCustomRedirect(new CustomRedirect(oldUrl.Trim(), newUrl.Trim(), skipWildCardAppend == null ? false : true)); CustomRedirectHandler.ClearCache(); }
public static bool HandleRequest(string referer, Uri urlNotFound, out CustomRedirect foundRedirect) { string pathAndQuery = urlNotFound.PathAndQuery; int siteId = DataHandler.GetSiteIdFromUrl(urlNotFound.Host); foundRedirect = null; if (siteId == -1) { Logger.Error("siteId is -1; couldn't find "); return(false); } // Try to match the requested url by matching it // to the static list of custom redirects CustomRedirectHandler fnfHandler = CustomRedirectHandler.Current; CustomRedirect redirect = fnfHandler.CustomRedirects.Find(urlNotFound); if (redirect == null) { redirect = fnfHandler.CustomRedirects.FindInProviders(urlNotFound.AbsoluteUri); } if (redirect != null) { // Url has been deleted from this site if (redirect.State.Equals((int)DataStoreHandler.State.Deleted)) { foundRedirect = redirect; return(true); } if (redirect.State.Equals((int)DataStoreHandler.State.Saved)) { // Found it, however, we need to make sure we're not running in an // infinite loop. The new url must not be the referrer to this page if (string.Compare(redirect.NewUrl, pathAndQuery, StringComparison.InvariantCultureIgnoreCase) != 0) { foundRedirect = redirect; return(true); } } } else { // log request to database - if logging is turned on. if (Configuration.Configuration.Logging == LoggerMode.On) { // Safe logging RequestLogger.Instance.LogRequest(pathAndQuery, referer, siteId); } } return(false); }
public ActionResult Delete(string oldUrl, int?pageNumber, string searchWord, int?pageSize) { CheckAccess(); Logger.Debug("Deleting redirect: '{0}'", oldUrl); _redirectsService.DeleteByOldUrl(oldUrl); CustomRedirectHandler.ClearCache(); List <CustomRedirect> customRedirectList = GetData(searchWord); //Make sure that the searchinfo is contained after an item has been deleted - if there is any. return(View("Index", GetRedirectIndexViewData(pageNumber, customRedirectList, GetSearchResultInfo(searchWord, customRedirectList.Count, false), searchWord, pageSize, false, true))); }
public FileUploadJsonResult ImportDeleted(HttpPostedFileBase txtFile) { CheckAccess(); if (!IsTxt(txtFile)) { return(new FileUploadJsonResult { Data = new { message = LocalizationService.Current.GetString("/gadget/redirects/invalidtxtfile") } }); } var redirects = new CustomRedirectCollection(); using (var streamReader = new StreamReader(txtFile.InputStream)) { while (streamReader.Peek() >= 0) { var url = streamReader.ReadLine(); if (!string.IsNullOrEmpty(url)) { redirects.Add(new CustomRedirect { OldUrl = url, NewUrl = string.Empty, State = (int)RedirectState.Deleted }); } } } string message; if (redirects.Count() != 0) { _redirectsService.AddOrUpdate(redirects); CustomRedirectHandler.ClearCache(); message = string.Format(LocalizationService.Current.GetString("/gadget/redirects/importdeletedsuccess"), redirects.Count()); } else { message = LocalizationService.Current.GetString("/gadget/redirects/importnone"); } return(new FileUploadJsonResult { Data = new { message = message } }); }
public void Initialize(InitializationEngine context) { _log.Debug("Initializing 404 handler version check"); DataAccessBaseEx dba = DataAccessBaseEx.GetWorker(); int version = dba.Check404Version(); if (version != Configuration.Configuration.CURRENT_VERSION) { _log.Debug("Older version found. Version nr. :" + version); Upgrader.Start(version); } else { Upgrader.Valid = true; } // Load all custom redirects into memory CustomRedirectHandler handler = CustomRedirectHandler.Current; }
public override void OnActionExecuting(ActionExecutingContext filterContext) { var referer = NotFoundPageUtil.GetReferer(filterContext.HttpContext); var urlNotFound = NotFoundPageUtil.GetUrlNotFound(filterContext.HttpContext); if (urlNotFound == null) { return; } if (Log.IsDebugEnabled) { Log.DebugFormat("Trying to handle 404 for \"{0}\" (Referrer: \"{1}\")", urlNotFound, referer); } CustomRedirectHandler current = CustomRedirectHandler.Current; CustomRedirect redirect = current.CustomRedirects.Find(HttpUtility.HtmlEncode(urlNotFound.AbsoluteUri)); string oldUrl = HttpUtility.HtmlEncode(urlNotFound.PathAndQuery); if (redirect == null) { redirect = current.CustomRedirects.Find(oldUrl); } if (redirect != null) { if (redirect.State.Equals(0) && (string.Compare(redirect.NewUrl, oldUrl, StringComparison.InvariantCultureIgnoreCase) != 0)) { Log.Info(string.Format("404 Custom Redirect: To: '{0}' (from: '{1}')", redirect.NewUrl, oldUrl)); filterContext.Result = new RedirectResult(redirect.NewUrl, true); return; } } else if ((Configuration.Configuration.Logging == LoggerMode.On) && Upgrader.Valid) { Logger.LogRequest(oldUrl, referer); } filterContext.HttpContext.Response.TrySkipIisCustomErrors = true; filterContext.HttpContext.Response.StatusCode = 0x194; filterContext.HttpContext.Response.Status = "404 File not found"; }
/// <summary> /// Copied from BVNetwork.FileNotFound.NotFoundPageUtil.HandleOnLoad(Page page, Uri urlNotFound, string referer) /// </summary> /// <param name="context"></param> /// <param name="urlNotFound"></param> /// <param name="referer"></param> protected void HandleOnLoad(HttpContextBase context, Uri urlNotFound, Uri referer) { // TODO: This copy should be removed. The 404 should be extended to work without // a Page object. if (_log.IsDebugEnabled()) { _log.Debug("Trying to handle 404 for \"{0}\" (Referrer: \"{1}\")", urlNotFound, referer); } CustomRedirectHandler current = CustomRedirectHandler.Current; CustomRedirect customRedirect = current.CustomRedirects.Find(new Uri(urlNotFound.AbsoluteUri)); string str = HttpUtility.HtmlEncode(urlNotFound.PathAndQuery); if (customRedirect == null) { // Check relative uri customRedirect = current.CustomRedirects.Find(urlNotFound); } if (customRedirect != null) { if (customRedirect.State.Equals(0) && string.Compare(customRedirect.NewUrl, str, StringComparison.InvariantCultureIgnoreCase) != 0) { _log.Information(string.Format("404 Custom Redirect: To: '{0}' (from: '{1}')", customRedirect.NewUrl, str)); context.Response.Clear(); context.Response.StatusCode = 301; context.Response.StatusDescription = "Moved Permanently"; context.Response.RedirectLocation = customRedirect.NewUrl; context.Response.End(); return; } } else if (Configuration.Logging == LoggerMode.On && Upgrader.Valid) { Logger.LogRequest(str, referer == null ? string.Empty : referer.ToString()); } context.Response.TrySkipIisCustomErrors = true; context.Response.StatusCode = 404; context.Response.Status = "404 File not found"; }
public ActionResult SaveSuggestion(string oldUrl, string newUrl, string skipWildCardAppend, int?pageNumber, int?pageSize) { CheckAccess(); SaveRedirect(oldUrl, newUrl, skipWildCardAppend); // delete rows from DB var dbAccess = DataAccessBaseEx.GetWorker(); dbAccess.DeleteRowsForRequest(oldUrl); // List <CustomRedirect> customRedirectList = GetSuggestions(null); string actionInfo = string.Format(LocalizationService.Current.GetString("/gadget/redirects/saveredirect"), oldUrl, newUrl); CustomRedirectHandler.ClearCache(); var viewData = GetRedirectIndexViewData(pageNumber, customRedirectList, actionInfo, null, pageSize, true, true); if (customRedirectList.Count > 0) { viewData.HighestSuggestionValue = customRedirectList.First().NotfoundErrorCount; viewData.LowestSuggestionValue = customRedirectList.Last().NotfoundErrorCount; } return(View("Index", viewData)); }