Limiter
Rack middleware for rate-limiting incoming HTTP requests with black_list and white_list support.
Installation
Add this line to your application's Gemfile:
gem 'limiter', :git => "git://github.com/csdn-dev/limiter.git"
And then execute:
$ bundle
Usage
# config/initializers/limiter.rb
# -*- encoding : utf-8 -*-
require File.expand_path("../redis", __FILE__)
Rails.configuration.app_middleware.insert_before(Rack::MethodOverride,
Limiter::RateLimiter,
:max_get_num => 1000,
:get_ttl => 20.minutes,
:max_post_num => 20,
:post_ttl => 5.seconds,
:filter_ip_segment => true, # default true
:black_list => Limiter::BlackList.new($redis),
:white_list => Limiter::WhiteList.new($redis),
:allow_path => Rails.env.development? ? /^\/(assets|human_validations|simple_captcha)/ :
/^\/(human_validations|simple_captcha)/,
:message => "<a href='/human_validations/new'>我不是机器人</a>",
:visit_counter => Limiter::VisitCounter.new($redis),
:limit_callback => lambda { |ip| your_callback(ip) }
)
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request