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.
This commit is contained in:
Tom Hughes 2010-05-08 17:49:27 +01:00
parent 1eba060929
commit dd64ba2e7e

48
script/update-spam-blocks Executable file
View file

@ -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