From: Tom Hughes Date: Sat, 8 May 2010 16:49:27 +0000 (+0100) Subject: Add script to update spam block ACLs X-Git-Tag: live~6334^2~3 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/dd64ba2e7ef93f1e2e10ee5fb63251b1dab7132f Add script to update spam block ACLs Maintain a set of ACLs which block account creation for an IP address which has had more than two users suspended or removed in the last 28 days. --- diff --git a/script/update-spam-blocks b/script/update-spam-blocks new file mode 100755 index 000000000..eaf7d9dc3 --- /dev/null +++ b/script/update-spam-blocks @@ -0,0 +1,48 @@ +#!/usr/bin/env ruby + +require File.dirname(__FILE__) + '/../config/environment' +require 'generator' + +addresses = User.count( + :conditions => { + :status => ["suspended", "deleted"], + :creation_time => Time.now - 28.days .. Time.now + }, + :group => :creation_ip +) + +addresses.each do |address,count| + if count > 2 + acl = Acl.find(:first, :conditions => { + :address => address, + :netmask => "255.255.255.255" + }) + + unless acl + Acl.create( + :address => address, + :netmask => "255.255.255.255", + :k => "no_account", + :v => "auto_spam_block" + ) + + puts "Blocked #{address}" + end + end +end + +acls = Acl.find(:all, :conditions => { + :netmask => "255.255.255.255", + :k => "no_account_creation", + :v => "auto_spam_block" +}) + +acls.each do |acl| + unless addresses[acl.address] + acl.delete + + puts "Unblocked #{acl.address}" + end +end + +exit 0