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 12 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 16 def include?(network) @networks.any? { |whitelist| whitelist.include?(network.to_s) } end
to_s()
click to toggle source
# File lib/web_console/whitelist.rb, line 20 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 30 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 38 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 26 def normalize_networks(networks) Array(networks).concat(ALWAYS_WHITELISTED_NETWORKS) end