def self.match(address, options = {})
acls = Acl.where("address >>= ?", address)
- acls = acls.or(Acl.where(:domain => options[:domain])) if options[:domain]
+ if options[:domain]
+ labels = options[:domain].split(".")
+
+ until labels.empty?
+ acls = acls.or(Acl.where(:domain => labels.join(".")))
+ labels.shift
+ end
+ end
+
acls = acls.or(Acl.where(:mx => options[:mx])) if options[:mx]
acls
def test_no_account_creation_by_domain
assert_not Acl.no_account_creation("192.168.1.1", :domain => "example.com")
+ assert_not Acl.no_account_creation("192.168.1.1", :domain => "test.example.com")
create(:acl, :domain => "example.com", :k => "no_account_creation")
assert Acl.no_account_creation("192.168.1.1", :domain => "example.com")
+ assert Acl.no_account_creation("192.168.1.1", :domain => "test.example.com")
end
def test_no_account_creation_by_mx