Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

limiter

branch: master

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 lib
Octocat-spinner-32 .gitignore
Octocat-spinner-32 Gemfile
Octocat-spinner-32 LICENSE.txt
Octocat-spinner-32 README.md
Octocat-spinner-32 Rakefile
Octocat-spinner-32 limiter.gemspec
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,

                                                 :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
Something went wrong with that request. Please try again.