класс ACL
Простые списки управления доступом.
Списки управления доступом состоят из половин «разрешить» и «запретить» для управления доступом. Используйте «все» или «*» для соответствия любому адресу. Для соответствия конкретному адресу используйте любой адрес или маску адреса, которые 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
Общедоступные методы класса
# 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
Создает новый ACL из list с оценкой order DENY_ALLOW или ALLOW_DENY.
ACL ACL — это Array «разрешить» или «запретить» и адрес или маска адреса или «все» или «*» для соответствия любому адресу:
%w[ deny all allow 192.0.2.2 allow 192.0.2.128/26 ]
Общедоступные методы экземпляра
# 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 Разрешить подключения с addrinfo addr? Он должен быть отформатирован как Socket#peeraddr:
["AF_INET", 10, "lc630", "192.0.2.1"]
# File lib/drb/acl.rb, line 191 def allow_socket?(soc) allow_addr?(soc.peeraddr) end
Разрешить подключения от Socket soc?
# File lib/drb/acl.rb, line 223
def install_list(list)
i = 0
while i < list.size
permission, domain = list.slice(i,2)
case permission.downcase
when 'allow'
@allow.add(domain)
when 'deny'
@deny.add(domain)
else
raise "Invalid ACL entry #{list}"
end
i += 2
end
end
Ruby Core © 1993–2020 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.