読者です 読者をやめる 読者になる 読者になる

Rack::Auth::IPをリリースしました

ruby rack

GitHubPostRecieverでGitHub以外からのpostは受け付けたくなかったのでRackでIPのアクセス制限ができるRack::Auth::IPというミドルウェアを作ってみました。

rackupのファイルの中で、

  require 'rack/auth/ip'
  # ローカルネットワークにアクセスを制限する
  use Rack::Auth::IP, %w( 192.168.0.0/24 )

  # ブロックでも使える
  # ipにはIPAddrのインスタンスが与えられる
  use Rack::Auth::IP do |ip|
    Your::Model::IP.count({ :ip => ip.to_s }) != 0
  end

のように使えます。

$ gem install rack-auth-ip

でインストールできます。

機能的に増やすということはあまりないと思いますが、
http://github.com/walf443/rack-auth-ip/tree/master
ソースコードを公開してますので、何かバグなリがあれば一報ください。

Rackのミドルウェアとして作ることで他の様々なアプリでも同じように設定できるようになるので、Rackは素晴らしいなと思います。

追記(2008/06/28)

ブロック形式がRackのMiddlewareの仕様を勘違いしていてうまく動作してなかったようです。先ほど出した0.0.3で直っています。

また、以前の例であったuse Rack::Auth::IP { ... }というのは当然ながらRubyの文法的に動きませんので、do .. endを使ってくださいw