class WebConsole::Whitelist

Whitelist of allowed networks that can access Web Console.

Networks are represented by standard IPAddr and can be either IPv4 or IPv6 networks.

Constants

ALWAYS_WHITELISTED_NETWORKS

IPv4 and IPv6 localhost should be always whitelisted.

Public Class Methods

new(networks = nil) click to toggle source
# File lib/web_console/whitelist.rb, line 14
def initialize(networks = nil)
  @networks = normalize_networks(networks).map(&method(:coerce_network_to_ipaddr)).uniq
end

Public Instance Methods

include?(network) click to toggle source
# File lib/web_console/whitelist.rb, line 18
def include?(network)
  @networks.any? { |whitelist| whitelist.include?(network.to_s) }
rescue IPAddr::InvalidAddressError
  false
end
to_s() click to toggle source
# File lib/web_console/whitelist.rb, line 24
def to_s
  @networks.map(&method(:human_readable_ipaddr)).join(", ")
end

Private Instance Methods

coerce_network_to_ipaddr(network) click to toggle source
# File lib/web_console/whitelist.rb, line 34
def coerce_network_to_ipaddr(network)
  if network.is_a?(IPAddr)
    network
  else
    IPAddr.new(network)
  end
end
human_readable_ipaddr(ipaddr) click to toggle source
# File lib/web_console/whitelist.rb, line 42
def human_readable_ipaddr(ipaddr)
  ipaddr.to_range.to_s.split("..").uniq.join("/")
end
normalize_networks(networks) click to toggle source
# File lib/web_console/whitelist.rb, line 30
def normalize_networks(networks)
  Array(networks).concat(ALWAYS_WHITELISTED_NETWORKS)
end