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 +[![Build Status](https://travis-ci.org/mikeauclair/firewall_constraint.svg?branch=master)](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.