README.md in firewall_constraint-0.0.9 vs README.md in firewall_constraint-0.1.0
- old
+ new
@@ -1,44 +1,64 @@
FirewallConstraint
========
-Easy whitelist firewalling for Rails 3 route constraints
+[](https://travis-ci.org/mikeauclair/firewall_constraint)
+
+Easy whitelist firewalling for Rails 3+4 route constraints
+
gem 'firewall_constraint'
Or:
gem install firewall_constraint
-----
+##Example
config/routes.rb:
get 'dummy/index' => 'dummy#index'
get 'dummy/blocked_by_inline' => 'dummy#blocked_by_inline', :constraints => FirewallConstraint.new
-
+
constraints FirewallConstraint.new do
get 'dummy/blocked_by_block' => 'dummy#blocked_by_block'
end
-
+
constraints FirewallConstraint.new(['127.0.0.1']) do
get 'dummy/blocked_by_dynamic' => 'dummy#blocked_by_dynamic'
end
constraints FirewallConstraint.new(Proc.new{['127.0.0.1']}) do
get 'dummy/blocked_by_proc'
end
----
+##Configuration
-Uses a config file if ips not present in routes
+Uses a config file if ips are not provided on instantiation
config/firewall_constraint.yml:
test:
- 10.0.0.0/8
----
+##Advanced Usage
-You should be able to do DB-based whitelisting using the Proc whitelisting and an activerecord lookup or something similar to:
+You can also do DB-based whitelisting using the Proc-based whitelisting method:
- constraints FirewallConstraint.new(Proc.new{ValidIps.all.map{|x| x.ip}})
\ No newline at end of file
+app/models/valid_ip.rb:
+
+ class ValidIp < ActiveRecord::Base
+ end
+
+config/routes.rb:
+
+ constraints FirewallConstraint.new(Proc.new{ValidIp.pluck(:ip)}) do
+ get '/blah'
+ end
+
+----
+##Notes
+
+Because parsing IPs with the IPAddress can take some time, this gem will only reparse ips returned by the Proc method if they have changed. Make sure you return your ips in the same order to avoid unnecessary reparsing.