/// <summary> /// Report to service if comment is really spam /// </summary> /// <param name="comment"> /// Comment object /// </param> public static void ReportMistake(Comment comment) { var m = comment.ModeratedBy; var dt = customFilters.GetDataTable(); var i = 0; // rejecting auto-approved comment; all made mistake letting it through bool spamMissedByAll = comment.IsApproved && comment.ModeratedBy == "Auto"; foreach (var filterName in from DataRow row in dt.Rows select row[0].ToString()) { if (filterName == m || spamMissedByAll) { var customFilter = GetCustomFilter(filterName); if (customFilter != null) { var mistakes = int.Parse(customFilters.Parameters[4].Values[i]); customFilters.Parameters[4].Values[i] = (mistakes + 1).ToString(); ExtensionManager.SaveSettings("MetaExtension", customFilters); if (BlogSettings.Instance.CommentReportMistakes) { customFilter.Report(comment); } } if (!spamMissedByAll) { break; } } i++; } }
/// <summary> /// Report to service if comment is really spam /// </summary> /// <param name="comment">Comment object</param> public static void ReportMistake(Comment comment) { string m = comment.ModeratedBy; DataTable dt = _customFilters.GetDataTable(); int i = 0; foreach (DataRow row in dt.Rows) { string fileterName = row[0].ToString(); if (fileterName == m) { ICustomFilter customFilter = GetCustomFilter(fileterName); if (customFilter != null) { int mistakes = int.Parse(_customFilters.Parameters[4].Values[i]); _customFilters.Parameters[4].Values[i] = (mistakes + 1).ToString(); customFilter.Report(comment); } break; } i++; } ExtensionManager.SaveSettings("MetaExtension", _customFilters); }
private static string GetImagesHtmlList() { DataTable dt = _rotatorExtensionImages.GetDataTable(); if (dt.Rows.Count == 0) { return("Empty"); } StringBuilder sb = new StringBuilder(); sb.AppendLine("<div id=\"featured\">"); // id=\"show\" sb.AppendLine("<ul id=\"show\">"); foreach (DataRow dr in _rotatorExtensionImages.GetDataTable().Rows) { Post post = Post.GetPost(new Guid(dr["PostID"].ToString())); if (post == null) { continue; } if (!post.IsVisibleToPublic) { continue; } string featuredImage = dr["Image"].ToString(); sb.AppendLine("<li>"); sb.AppendLine("<span class=\"top\"></span>"); sb.AppendLine("<span class=\"left\"><a class=\"prev\" href=\"#\" data-slide=\"prev\">‹</a></span>"); sb.AppendLine("<span class=\"right\"><a class=\"next\" href=\"#\" data-slide=\"next\">›</a></span>"); sb.AppendLine("<span class=\"bottom\"></span>"); sb.AppendLine("<div class=\"desc\">"); sb.AppendFormat("<h1><a href=\"{0}\" title=\"{1}\">{1}</a></h1>", post.RelativeLink, HttpUtility.HtmlEncode(post.Title)); sb.AppendLine("<small>"); foreach (Category category in post.Categories) { sb.AppendFormat("<a class=\"accent\" href=\"{0}\">{1}</a>", category.RelativeLink, category.Title); } //DISQUS sb.AppendFormat("<a class=\"accent\" href=\"{0}#disqus_thread\">{1}</a>", post.PermaLink, "Comments"); sb.AppendFormat("<a class=\"accent\" href=\"#\">{0}</a>", post.DateCreated.ToString("MMM dd, yyyy")); sb.AppendLine("</small>"); sb.AppendLine("</div>"); sb.AppendFormat("<a href=\"{0}\" title=\"{1}\"><img src=\"{2}\" alt=\"{1}\" height=\"260\" width=\"638\" /></a>", post.RelativeLink, HttpUtility.HtmlEncode(post.Title), featuredImage); sb.AppendLine("</li>"); } sb.Append("</ul>"); sb.Append("</div>"); return(sb.ToString()); }
/// <summary> /// Add item to white or black list /// </summary> /// <param name="subject"> /// Item subject. /// </param> /// <param name="value"> /// Item value. /// </param> /// <param name="isspam"> /// True if comment is spam /// </param> public static void AddItemToFilter(string subject, string value, bool isspam) { var indx = 0; var match = false; var dt = filters.GetDataTable(); if (dt != null && dt.Rows.Count > 0) { foreach (DataRow row in dt.Rows) { var rowSubject = row["Subject"].ToString(); var filter = row["Filter"].ToString().Trim(); if (rowSubject.Equals(subject, StringComparison.OrdinalIgnoreCase) && filter.Equals(value, StringComparison.OrdinalIgnoreCase)) { match = true; break; } indx++; } } if (match) { var log = "Removed old filter "; // remove old filter foreach (var par in filters.Parameters) { log += string.Format(":{0}", par.Values[indx]); par.DeleteValue(indx); } ExtensionManager.SaveSettings("MetaExtension", filters); Utils.Log(log); } // add value to filters var id = Guid.NewGuid().ToString(); var action = isspam ? "Block" : "Allow"; var blackWhiteList = isspam ? "Black" : "White"; var f = new[] { id, action, subject, "Equals", value }; filters.AddValues(f); ExtensionManager.SaveSettings("MetaExtension", filters); Utils.Log(string.Format("{0} added to {1} list: {2}", subject, blackWhiteList, value)); }
/// <summary> /// Get list of custom filters /// </summary> /// <returns>List of filters</returns> public static List <JsonCustomFilter> GetCustomFilters() { var filterList = new List <JsonCustomFilter>(); try { CustomFilters = ExtensionManager.GetSettings("MetaExtension", "BeCustomFilters"); DataTable dt = CustomFilters.GetDataTable(); foreach (DataRow row in dt.Rows) { var f = new JsonCustomFilter { Name = row["Name"].ToString(), FullName = row["FullName"].ToString(), Checked = int.Parse(row["Checked"].ToString()), Spam = int.Parse(row["Cought"].ToString()), Mistakes = int.Parse(row["Reported"].ToString()) }; var ext = ExtensionManager.GetExtension(f.Name); f.Enabled = ext == null ? true : ext.Enabled; filterList.Add(f); } } catch (Exception ex) { Utils.Log("JsonCustomFilterList.GetCustomFilters(): " + ex.Message); } return(filterList); }
/// <summary> /// Get list of custom filters /// </summary> /// <returns>List of filters</returns> public static List<JsonCustomFilter> GetCustomFilters() { var filterList = new List<JsonCustomFilter>(); try { CustomFilters = ExtensionManager.GetSettings("MetaExtension", "BeCustomFilters"); DataTable dt = CustomFilters.GetDataTable(); foreach (DataRow row in dt.Rows) { var f = new JsonCustomFilter { Name = row["Name"].ToString(), FullName = row["FullName"].ToString(), Checked = int.Parse(row["Checked"].ToString()), Spam = int.Parse(row["Cought"].ToString()), Mistakes = int.Parse(row["Reported"].ToString()) }; var ext = ExtensionManager.GetExtension(f.Name); f.Enabled = ext == null ? true : ext.Enabled; filterList.Add(f); } } catch (Exception ex) { Utils.Log("JsonCustomFilterList.GetCustomFilters(): " + ex.Message); } return filterList; }
/// <summary> /// Comment filters list /// </summary> /// <param name="take"></param> /// <param name="skip"></param> /// <param name="filter"></param> /// <param name="order"></param> /// <returns>List of comment filters</returns> public IEnumerable <CommentFilterItem> Find(int take = 10, int skip = 0, string filter = "", string order = "") { if (!Security.IsAuthorizedTo(Rights.AccessAdminPages)) { throw new UnauthorizedAccessException(); } var filterList = new List <CommentFilterItem>(); try { Filters = ExtensionManager.GetSettings("MetaExtension", "BeCommentFilters"); DataTable dt = Filters.GetDataTable(); foreach (DataRow row in dt.Rows) { var f = new CommentFilterItem { Id = Guid.Parse(row["Id"].ToString()), Action = row["Action"].ToString(), Subject = row["Subject"].ToString(), Operation = row["Operator"].ToString(), Filter = row["Filter"].ToString() }; filterList.Add(f); } if (take == 0) { take = filterList.Count; } if (string.IsNullOrEmpty(filter)) { filter = "1==1"; } if (string.IsNullOrEmpty(order)) { order = "Filter"; } var items = new List <CommentFilterItem>(); var query = filterList.AsQueryable().Where(filter); foreach (var item in query.OrderBy(order).Skip(skip).Take(take)) { items.Add(item); } return(items); } catch (Exception ex) { Utils.Log("CommentFilterRepository.Find(): " + ex.Message); } return(filterList); }
protected void BindFilters() { gridFilters.DataKeyNames = new string[] { Filters.KeyField }; gridFilters.DataSource = Filters.GetDataTable(); gridFilters.DataBind(); // rules cbTrustAuthenticated.Checked = BlogSettings.Instance.TrustAuthenticatedUsers; ddWhiteListCount.SelectedValue = BlogSettings.Instance.CommentWhiteListCount.ToString(); ddBlackListCount.SelectedValue = BlogSettings.Instance.CommentBlackListCount.ToString(); cbReportMistakes.Checked = BlogSettings.Instance.CommentReportMistakes; cbBlockOnDelete.Checked = BlogSettings.Instance.BlockAuthorOnCommentDelete; cbAddIpToWhitelistFilterOnApproval.Checked = BlogSettings.Instance.AddIpToWhitelistFilterOnApproval; cbAddIpToBlacklistFilterOnRejection.Checked = BlogSettings.Instance.AddIpToBlacklistFilterOnRejection; }
protected void BindCustomFilters() { gridCustomFilters.DataKeyNames = new string[] { _customFilters.KeyField }; DataTable dt = _customFilters.GetDataTable(); DataTable unsorted = dt.Clone(); DataTable sorted = dt.Clone(); foreach (DataRow row in dt.Rows) { int i = int.TryParse(row["Priority"].ToString(), out i) ? i : 0; if (i > 0) { sorted.ImportRow(row); } else { unsorted.ImportRow(row); } } foreach (DataRow row in unsorted.Rows) { row["Priority"] = sorted.Rows.Count + 1; sorted.ImportRow(row); int rowIndex = 0; for (int i = 0; i < _customFilters.Parameters[0].Values.Count; i++) { if (_customFilters.Parameters[0].Values[i] == row["FullName"].ToString()) { _customFilters.Parameters[5].Values[i] = row["Priority"].ToString(); } } } ExtensionManager.SaveSettings("MetaExtension", _customFilters); sorted.DefaultView.Sort = "Priority"; gridCustomFilters.DataSource = sorted; gridCustomFilters.DataBind(); }
static void InitCustomFilters() { ExtensionSettings settings = new ExtensionSettings("BeCustomFilters"); settings.AddParameter("FullName", "Name", 100, true, true); settings.AddParameter("Name"); settings.AddParameter("Checked"); settings.AddParameter("Cought"); settings.AddParameter("Reported"); settings.AddParameter("Priority"); _customFilters = ExtensionManager.InitSettings("MetaExtension", settings); if (_customFilters != null) { DataTable dt = _customFilters.GetDataTable(); ArrayList codeAssemblies = Utils.CodeAssemblies(); foreach (Assembly a in codeAssemblies) { Type[] types = a.GetTypes(); foreach (Type type in types) { if (type.GetInterface("BlogEngine.Core.ICustomFilter") != null) { bool found = false; foreach (DataRow row in dt.Rows) { if (row[0].ToString() == type.Name) { found = true; break; } } if (!found) { _customFilters.AddValues(new string[] { type.FullName, type.Name, "0", "0", "0", "0" }); } } } } ExtensionManager.SaveSettings("MetaExtension", _customFilters); } }
/// <summary> /// The event handler that is triggered every time a comment is served to a client. /// </summary> private static void Post_CommentServing(object sender, ServingEventArgs e) { string body = e.Body; // retrieve parameters back as a data table // column = parameter DataTable table = _settings.GetDataTable(); foreach (DataRow row in table.Rows) { if (string.IsNullOrEmpty((string)row["CloseTag"])) { Parse(ref body, (string)row["Code"], (string)row["OpenTag"]); } else { Parse(ref body, (string)row["Code"], (string)row["OpenTag"], (string)row["CloseTag"]); } } e.Body = body; }
/// <summary> /// Get list of custom filters /// </summary> /// <returns>List of filters</returns> public IEnumerable <CustomFilter> GetCustomFilters() { if (!Security.IsAuthorizedTo(Rights.AccessAdminPages)) { throw new UnauthorizedAccessException(); } var filterList = new List <CustomFilter>(); try { CustomFilters = ExtensionManager.GetSettings("MetaExtension", "BeCustomFilters"); DataTable dt = CustomFilters.GetDataTable(); foreach (DataRow row in dt.Rows) { var f = new CustomFilter { Name = row["Name"].ToString(), FullName = row["FullName"].ToString(), Checked = int.Parse(row["Checked"].ToString()), Spam = int.Parse(row["Cought"].ToString()), Mistakes = int.Parse(row["Reported"].ToString()) }; var ext = ExtensionManager.GetExtension(f.Name); f.Enabled = ext == null ? true : ext.Enabled; filterList.Add(f); } } catch (Exception ex) { Utils.Log("CustomFilterRepository.GetCustomFilters(): " + ex.Message); } return(filterList); }
/// <summary> /// Displays BBCodes dynamically loaded from settings. /// </summary> protected string BBCodes() { try { string retVal = string.Empty; string title = string.Empty; string code = string.Empty; ExtensionSettings settings = ExtensionManager.GetSettings("BBCode"); DataTable table = settings.GetDataTable(); foreach (DataRow row in table.Rows) { code = (string)row["Code"]; title = "[" + code + "][/" + code + "]"; retVal += "<a title=\"" + title + "\" href=\"javascript:void(BlogEngine.addBbCode('" + code + "'))\">" + code + "</a>"; } return(retVal); } catch (Exception) { return(string.Empty); } }
/// <summary> /// The init custom filters. /// </summary> private static void InitCustomFilters() { var settings = new ExtensionSettings("BeCustomFilters"); settings.AddParameter("FullName", "Name", 100, true, true); settings.AddParameter("Name"); settings.AddParameter("Checked"); settings.AddParameter("Cought"); settings.AddParameter("Reported"); settings.AddParameter("Priority"); customFilters = ExtensionManager.InitSettings("MetaExtension", settings); if (customFilters == null) { return; } var dt = customFilters.GetDataTable(); var codeAssemblies = Utils.CodeAssemblies(); foreach (var type in codeAssemblies.Cast <Assembly>().Select(a => a.GetTypes()).SelectMany( types => (from type in types where type.GetInterface("BlogEngine.Core.ICustomFilter") != null let found = dt.Rows.Cast <DataRow>().Any(row => row[0].ToString() == type.Name) where !found select type))) { // if new filter found in the assembly, add it to settings if (!customFilters.IsKeyValueExists(type.FullName)) { customFilters.AddValues(new[] { type.FullName, type.Name, "0", "0", "0", "0" }); ExtensionManager.SaveSettings("MetaExtension", customFilters); } } }
protected void BindFilters() { gridFilters.DataKeyNames = new string[] { _filters.KeyField }; gridFilters.DataSource = _filters.GetDataTable(); gridFilters.DataBind(); }
static void InitCustomFilters() { ExtensionSettings settings = new ExtensionSettings("BeCustomFilters"); settings.AddParameter("FullName", "Name", 100, true, true); settings.AddParameter("Name"); settings.AddParameter("Checked"); settings.AddParameter("Cought"); settings.AddParameter("Reported"); settings.AddParameter("Priority"); _customFilters = ExtensionManager.InitSettings("MetaExtension", settings); if(_customFilters != null) { DataTable dt = _customFilters.GetDataTable(); ArrayList codeAssemblies = Utils.CodeAssemblies(); foreach (Assembly a in codeAssemblies) { Type[] types = a.GetTypes(); foreach (Type type in types) { if (type.GetInterface("BlogEngine.Core.ICustomFilter") != null) { bool found = false; foreach (DataRow row in dt.Rows) { if(row[0].ToString() == type.Name) { found = true; break; } } if(!found) { _customFilters.AddValues(new string[] { type.FullName, type.Name, "0", "0", "0", "0" }); } } } } ExtensionManager.SaveSettings("MetaExtension", _customFilters); } }
/// <summary> /// Handles page changing event in the data grid /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void grid_PageIndexChanging(object sender, GridViewPageEventArgs e) { grid.PageIndex = e.NewPageIndex; grid.DataSource = _settings.GetDataTable(); grid.DataBind(); }
/// <summary> /// Serving AdSense code in post and page /// </summary> private static void Serving(object sender, ServingEventArgs e) { if (_settings.Parameters.Count > 0) { if ((e.Location == ServingLocation.SinglePage || e.Location == ServingLocation.SinglePost) && (!e.Body.Contains(_noAdsense)) && (!System.Threading.Thread.CurrentPrincipal.Identity.IsAuthenticated)) { DataTable table = _settings.GetDataTable(); Int32 count = 0; // Post or page ? bool where = false; // Referrer Type string referrer_type = "A"; // Referring object: verify if post or page and assign the author string Author = ""; if (e.Location == ServingLocation.SinglePost) { Post post = (Post)sender; Author = post.Author.ToLower(); } if (HttpContext.Current.Request.UrlReferrer != null) { string referrer = HttpContext.Current.Request.UrlReferrer.ToString().ToLowerInvariant(); if (!referrer.Contains(Utils.AbsoluteWebRoot.Host.ToString()) && referrer != "") { referrer_type += "R"; if (!referrer.Contains("q=")) { referrer_type += "S"; } } } foreach (DataRow row in table.Rows) { if ((((string)row["ad_author"]).ToLower()) == Author || (((string)row["ad_author"]).ToLower()) == _adForever) { if ((((string)row["ad_where"]).ToUpper()) == "B" || (((string)row["ad_where"]).ToUpper()) == "") { where = true; } else { if ((((string)row["ad_where"]).ToUpper()) == "P" && e.Location == ServingLocation.SinglePost) { where = true; } else { if ((((string)row["ad_where"]).ToUpper()) == "A" && e.Location == ServingLocation.SinglePage) { where = true; } else { where = false; } } } if (referrer_type.Contains(((string)row["ad_display"]).ToUpper()) && (string)row["ad_Desc"] != "" && where == true) { string _adScript = string.Format(Html, (string)row["ad_PubID"], (string)row["ad_Desc"], (string)row["ad_ID"], (string)row["ad_size_w"], (string)row["ad_size_h"], (string)row["ad_style"]); string _adPosition = ((string)row["ad_position"]).ToUpper(); if (_adPosition == "R") { Random autoRand = new Random(); string choices = "TCB"; _adPosition = choices.Substring(autoRand.Next(3), 1); } switch (_adPosition) { case "T": e.Body = _adScript + e.Body; break; case "C": Int32 _center = BodyCenter(e.Body); if (_center > 0) { e.Body = e.Body.Substring(0, _center - 1) + _adScript + e.Body.Substring(_center); } break; case "B": e.Body += _adScript; break; default: e.Body = _adScript + e.Body; break; } count += 1; } } if (count == 3) { break; } } } } if (e.Location != ServingLocation.Feed) { //e.Body = "<!-- google_ad_section_start -->\n" + e.Body + "<!-- google_ad_section_end -->\n"; // if post or page contains noAdsense string then replace with null if (e.Body.Contains(_noAdsense)) { e.Body = e.Body.Replace(_noAdsense, ""); } } }
static bool ModeratedByFilter(Comment comment) { DataTable dt = _filters.GetDataTable(); if (dt != null && dt.Rows.Count > 0) { foreach (DataRow row in dt.Rows) { string action = row["Action"].ToString(); if (action == "Delete") { comment.IsApproved = false; comment.ModeratedBy = "Delete"; return(true); } string subject = row["Subject"].ToString(); string oper = row["Operator"].ToString(); string filter = row["Filter"].ToString().Trim().ToLower(CultureInfo.InvariantCulture); string comm = comment.Content.ToLower(CultureInfo.InvariantCulture); string auth = comment.Author.ToLower(CultureInfo.InvariantCulture); string wsite = string.Empty; if (comment.Website != null) { wsite = comment.Website.ToString().ToLower(CultureInfo.InvariantCulture); } string email = comment.Email.ToLower(CultureInfo.InvariantCulture); bool match = false; if (oper == "Equals") { if (subject == "IP") { if (comment.IP == filter) { match = true; } } if (subject == "Author") { if (auth == filter) { match = true; } } if (subject == "Website") { if (wsite == filter) { match = true; } } if (subject == "Email") { if (email == filter) { match = true; } } if (subject == "Comment") { if (comm == filter) { match = true; } } } else { if (subject == "IP") { if (comment.IP.Contains(filter)) { match = true; } } if (subject == "Author") { if (auth.Contains(filter)) { match = true; } } if (subject == "Website") { if (wsite.Contains(filter)) { match = true; } } if (subject == "Email") { if (email.Contains(filter)) { match = true; } } if (subject == "Comment") { if (comm.Contains(filter)) { match = true; } } } if (match) { comment.IsApproved = action != "Block"; comment.ModeratedBy = "Filter"; return(true); } } } return(false); }