From d051b174f86162d9567a410a74dc6abe8113ceff Mon Sep 17 00:00:00 2001 From: Alexey Verkhovsky Date: Mon, 20 Mar 2006 01:36:45 +0000 Subject: [PATCH] Quick amd dirty spam filtering. We'll build something better in due time. --- app/controllers/wiki_controller.rb | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/app/controllers/wiki_controller.rb b/app/controllers/wiki_controller.rb index 1c07f868..ac5cce45 100644 --- a/app/controllers/wiki_controller.rb +++ b/app/controllers/wiki_controller.rb @@ -229,6 +229,7 @@ class WikiController < ApplicationController cookies['author'] = { :value => author_name, :expires => Time.utc(2030) } begin + filter_spam(@params['content']) if @page wiki.revise_page(@web_name, @page_name, @params['content'], Time.now, Author.new(author_name, remote_ip), PageRenderer.new) @@ -404,4 +405,20 @@ class WikiController < ApplicationController if text.length > length then text[0..(length - 3)] + truncate_string else text end end + def filter_spam(content) + @@spam_patterns ||= load_spam_patterns + @@spam_patterns.each do |pattern| + raise "Your edit was blocked by spam filtering" if content =~ pattern + end + end + + def load_spam_patterns + spam_patterns_file = "#{RAILS_ROOT}/config/spam_patterns.txt" + if File.exists?(spam_patterns_file) + File.readlines(spam_patterns_file).inject([]) { |patterns, line| patterns << Regexp.new(line.chomp, Regexp::IGNORECASE) } + else + [] + end + end + end