lib/antispam/tools.rb in antispam-0.2.0 vs lib/antispam/tools.rb in antispam-0.2.3

- old
+ new

@@ -1,59 +1,59 @@ -module Antispam - module Tools - # Checks spam against an IP database of spammers. - # Usage: before_action :check_ip_against_database - def check_ip_against_database(options = {ip_blacklists: {default: ''}}) - if (options[:methods]) - return if request.get? unless options[:methods].include?(:get) - return if request.post? unless options[:methods].include?(:post) - return if request.put? unless options[:methods].include?(:put) - return if request.patch? unless options[:methods].include?(:patch) - return if request.delete? unless options[:methods].include?(:delete) - else - return if request.get? - end - return if skip_if_user_whitelisted - return if controller_name == "validate" - ip = request.remote_ip - # First, check IP blacklists. - if (options[:ip_blacklists]) - if options[:ip_blacklists][:default] - options[:ip_blacklists][:httpbl] = options[:ip_blacklists][:default] - options[:ip_blacklists].delete(:default) - end - check_ip_against_blacklists(ip, options[:ip_blacklists], options[:verbose]) - end - # Second, check for weird countries. - if (options[:scrutinize_countries_except]) - - end - Rails.logger.info "Completed IP database check. #{ip}" if options[:verbose] - end - # Checks the specific blacklists - def check_ip_against_blacklists(ip, lists, verbose) - results = [] - lists.each do |provider_name, provider_api_key| - Rails.logger.info "Checking provider: #{provider_name}" if verbose - results.append blacklist(provider_name).check(ip, provider_api_key, verbose) - end - result = Antispam::BlacklistResult.new(results) - if result.is_bad? - Block.create(ip: ip, provider: lists.keys.first, threat: result) - redirect_to '/antispam/validate' - end - end - def skip_if_user_whitelisted - if respond_to? :current_user - if current_user && current_user.respond_to?(:antispam_whitelisted?) - return true if current_user.antispam_whitelisted? - end - end - end - def blacklist(provider) - class_name = provider.to_s.camelize - raise Antispam::NoSuchBlacklistError unless Antispam::Blacklists.const_defined? class_name - Antispam::Blacklists.const_get class_name - end - end - class NoSuchBlacklistError < StandardError; end -end +module Antispam + module Tools + # Checks spam against an IP database of spammers. + # Usage: before_action :check_ip_against_database + def check_ip_against_database(options = {ip_blacklists: {default: ''}}) + if (options[:methods]) + return if request.get? unless options[:methods].include?(:get) + return if request.post? unless options[:methods].include?(:post) + return if request.put? unless options[:methods].include?(:put) + return if request.patch? unless options[:methods].include?(:patch) + return if request.delete? unless options[:methods].include?(:delete) + else + return if request.get? + end + return if skip_if_user_whitelisted + return if controller_name.in?["validate","challenges"] + ip = request.remote_ip + # First, check IP blacklists. + if (options[:ip_blacklists]) + if options[:ip_blacklists][:default] + options[:ip_blacklists][:httpbl] = options[:ip_blacklists][:default] + options[:ip_blacklists].delete(:default) + end + check_ip_against_blacklists(ip, options[:ip_blacklists], options[:verbose]) + end + # Second, check for weird countries. + if (options[:scrutinize_countries_except]) + + end + Rails.logger.info "Completed IP database check. #{ip}" if options[:verbose] + end + # Checks the specific blacklists + def check_ip_against_blacklists(ip, lists, verbose) + results = [] + lists.each do |provider_name, provider_api_key| + Rails.logger.info "Checking provider: #{provider_name}" if verbose + results.append blacklist(provider_name).check(ip, provider_api_key, verbose) + end + result = Antispam::BlacklistResult.new(results) + if result.is_bad? + Block.create(ip: ip, provider: lists.keys.first, threat: result) + redirect_to '/antispam/validate' + end + end + def skip_if_user_whitelisted + if respond_to? :current_user + if current_user && current_user.respond_to?(:antispam_whitelisted?) + return true if current_user.antispam_whitelisted? + end + end + end + def blacklist(provider) + class_name = provider.to_s.camelize + raise Antispam::NoSuchBlacklistError unless Antispam::Blacklists.const_defined? class_name + Antispam::Blacklists.const_get class_name + end + end + class NoSuchBlacklistError < StandardError; end +end