Spec-Zone.ru › Ruby 3.1

класс 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

Публичные методы класса

new(list=nil, order = DENY_ALLOW) Показать исходный код
# 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 list — это Array «разрешить» или «запретить» и адрес или маска адреса или «все» или «*» для сопоставления любого адреса:

%w[
  deny all
  allow 192.0.2.2
  allow 192.0.2.128/26
]

Публичные методы экземпляра

allow_addr?(addr) Показать исходный код
# 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"]
allow_socket?(soc) Показать исходный код
# File lib/drb/acl.rb, line 191
def allow_socket?(soc)
  allow_addr?(soc.peeraddr)
end

Разрешить подключения с Socket soc?

install_list(list) Показать исходный код
# 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

Добавляет list записей ACL в этот ACL.

Ruby Core © 1993–2017 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API