limiter
Ruby
Latest commit 11a47a8 Feb 12, 2015 @hooopo hooopo Merge pull request #3 from cgg5207/feature/ip_segment_optional
ip segment optional
Permalink
Failed to load latest commit information.
lib
.gitignore
Gemfile init Sep 21, 2012
LICENSE.txt
README.md
Rakefile init Sep 21, 2012
limiter.gemspec remove git dependency Oct 26, 2012

README.md

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

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request