class Dizby::Access::ControlList
Public Class Methods
new(order = :deny_allow)
click to toggle source
:allow_deny if denied, deny else if allowed, allow else, deny
# File lib/dizby/access/control_list.rb, line 23 def initialize(order = :deny_allow) @order = order @deny = List.new @allow = List.new end
Public Instance Methods
allow_addr?(addr)
click to toggle source
# File lib/dizby/access/control_list.rb, line 33 def allow_addr?(addr) case @order when :deny_allow deny_allow?(addr) when :allow_deny allow_deny?(addr) else false end end
allow_socket?(soc)
click to toggle source
# File lib/dizby/access/control_list.rb, line 29 def allow_socket?(soc) allow_addr?(soc.peeraddr) end
install_list(list)
click to toggle source
# File lib/dizby/access/control_list.rb, line 44 def install_list(list) Hash[*list].each do |permission, domain| domain = Entry.new(domain) case permission.downcase when 'allow' @allow.push(domain) when 'deny' @deny.push(domain) else raise ArgumentError, "Invalid ACL entry #{list}" end end end
Private Instance Methods
allow_deny?(addr)
click to toggle source
# File lib/dizby/access/control_list.rb, line 66 def allow_deny?(addr) return false if @deny.matches?(addr) return true if @allow.matches?(addr) false end
deny_allow?(addr)
click to toggle source
# File lib/dizby/access/control_list.rb, line 60 def deny_allow?(addr) return true if @allow.matches?(addr) return false if @deny.matches?(addr) true end