]> git.openstreetmap.org Git - rails.git/blobdiff - script/update-spam-blocks
Move admin users list to its own controller
[rails.git] / script / update-spam-blocks
index 381ef3c1a335c0f9095287bef9290424f08fff22..7d665454582a842ebb09d6bf2d313dcee955a64d 100755 (executable)
@@ -1,46 +1,40 @@
 #!/usr/bin/env ruby
 
-require File.dirname(__FILE__) + '/../config/environment'
-require 'generator'
+require File.join(File.dirname(__FILE__), "..", "config", "environment")
+require "generator"
 
 addresses = User.count(
   :conditions => {
-    :status => ["suspended", "deleted"],
-    :creation_time => Time.now - 28.days .. Time.now
+    :status => %w[suspended deleted],
+    :creation_time => Time.now.utc - 28.days..Time.now.utc
   },
-  :group => :creation_ip
+  :group => :creation_address
 )
 
-addresses.each do |address,count|
-  if count > 2
-    acl = Acl.find(:first, :conditions => {
-      :address => address,
-    })
-
-    unless acl
-      Acl.create(
-        :address => address,
-        :netmask => "255.255.255.255",
-        :k => "no_account_creation",
-        :v => "auto_spam_block"
-      )
-
-      puts "Blocked #{address}"
-    end
-  end
+addresses.each do |address, count|
+  next unless count > 1
+  next if Acl.exists?(:address => address)
+
+  Acl.create({
+               :address => address,
+               :k => "no_account_creation",
+               :v => "auto_spam_block"
+             }, { :without_protection => true })
+
+  puts "Blocked #{address}"
 end
 
 acls = Acl.find(:all, :conditions => {
-  :k => "no_account_creation",
-  :v => "auto_spam_block"
-})
+                  :k => "no_account_creation",
+                  :v => "auto_spam_block"
+                })
 
 acls.each do |acl|
-  unless addresses[acl.address]
-    acl.delete
+  next if addresses[acl.address]
+
+  acl.delete
 
-    puts "Unblocked #{acl.address}"
-  end
+  puts "Unblocked #{acl.address}"
 end
 
 exit 0