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
和評估 order
DENY_ALLOW
或 ALLOW_DENY
建立新的 ACL
。
ACL
list
是「允許」或「拒絕」的 Array
,以及位址或位址遮罩,或「all」或「*」來比對任何位址
%w[
deny all
allow 192.0.2.2
allow 192.0.2.128/26
]
# File 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 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 lib/drb/acl.rb, line 191 def allow_socket?(soc) allow_addr?(soc.peeraddr) end
install_list(list) 按一下以切換來源