acl.rd.ja

# ACL class

簡単なAccess Control Listクラス。 IPソケットのpeer_addrを元にホスト単位にアクセスを制御する。 アクセス制御リストは評価の順序を示す定数と、denyまたallowと アドレスを並べたリストで生成する。

    list = %w(
      deny all
      allow 192.168.1.*
      allow 127.0.0.1
    )
    acl = ACL.new(list, ACL::DENY_ALLOW)
    ...
    ns = soc.accept
    unless acl.allow_socket?(ns)
      # forbidden
    end

アドレスは次のように表現する

- すべてのホスト -- "all", "*"
- IPアドレス -- "192.168.1.1", "192.168.1.*", "192.168.*.1", "*.*.1.1", "::ffff:192.168.*.*", "*:192.168.1.1"
- ホスト名 -- "host.*", "host", "*.domain.jp"

## Superclass:

    Object

## Class Methods:

`ACL.new(list=nil, order=DENY_ALLOW)`

  ACLを生成する。listが指定されると、listをインストールする。 orderのデフォルトはDENY_ALLOW。

## Methods:

`ACL#allow_scoket?(soc)`

  ソケットsocのアクセスが許可されているか否かを返す。

`ACL#allow_addr?(addr)`

  アドレスaddrのアクセスが許可されているか否かを返す。

`ACL#install_list(list)`

  評価規則のリストをインストールする。 リストは'deny'または'allow'、アドレスの組を並べたものである。 次はlistの例である。

      list = %w(
        deny all
        allow 192.168.1.*
        allow 127.0.0.1
      )

## Constants:

`ACL::DENY_ALLOW`

  allowの前にdenyを評価する。デフォルトはOK。

`ACL::ALLOW_DENY`

  denyの前にallowを評価する。デフォルトはforbidden。

Copyright (c) 2000 Masatoshi SEKI m_seki@mva.biglobe.ne.jp