class ACL
简单的访问控制列表。
访问控制列表由“允许”和“拒绝”两部分组成,用于控制访问。使用 “all” 或 “*” 匹配任何地址。要匹配特定地址,请使用 IPAddr 可以理解的任何地址或地址掩码。
示例
list = %w[ deny all allow 192.168.1.1 allow ::ffff:192.168.1.2 allow 192.168.1.3 ] # From Socket#peeraddr, see also ACL#allow_socket? addr = ["AF_INET", 10, "lc630", "192.168.1.3"] acl = ACL.new p acl.allow_addr?(addr) # => true acl = ACL.new(list, ACL::DENY_ALLOW) p acl.allow_addr?(addr) # => true
常量
- ALLOW_DENY
默认为允许
- DENY_ALLOW
默认为拒绝
- VERSION
ACL
的当前版本
公共类方法
new(list=nil, order = DENY_ALLOW) 点击切换源码
从 list
创建一个新的 ACL
,并使用 DENY_ALLOW
或 ALLOW_DENY
的评估 order
。
ACL
list
是一个 “allow” 或 “deny” 以及一个地址或地址掩码或 “all” 或 “*” 的数组,用于匹配任何地址。
%w[
deny all
allow 192.0.2.2
allow 192.0.2.128/26
]
# File drb-2.2.1/lib/drb/acl.rb, line 179 def initialize(list=nil, order = DENY_ALLOW) @order = order @deny = ACLList.new @allow = ACLList.new install_list(list) if list end
公共实例方法
allow_addr?(addr) 点击切换源码
是否允许来自 addrinfo addr
的连接?它的格式必须像 Socket#peeraddr。
["AF_INET", 10, "lc630", "192.0.2.1"]
# File drb-2.2.1/lib/drb/acl.rb, line 203 def allow_addr?(addr) case @order when DENY_ALLOW return true if @allow.match(addr) return false if @deny.match(addr) return true when ALLOW_DENY return false if @deny.match(addr) return true if @allow.match(addr) return false else false end end
allow_socket?(soc) 点击切换源码
是否允许来自 Socket soc
的连接?
# File drb-2.2.1/lib/drb/acl.rb, line 191 def allow_socket?(soc) allow_addr?(soc.peeraddr) end
install_list(list) 点击切换源码