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:
parent
1eba060929
commit
dd64ba2e7e
1 changed files with 48 additions and 0 deletions
48
script/update-spam-blocks
Executable file
48
script/update-spam-blocks
Executable 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
|
Loading…
Add table
Add a link
Reference in a new issue