Class: Proxy::DHCP::Infoblox::NetworkAddressesRegularExpressionGenerator

Inherits:
Object
  • Object
show all
Includes:
IpAddressArithmetic
Defined in:
lib/smart_proxy_dhcp_infoblox/network_address_range_regex_generator.rb

Instance Method Summary collapse

Methods included from IpAddressArithmetic

#cidr_to_bitmask, #cidr_to_i, #cidr_to_ip_mask, #i_to_ipv4, #ipv4_to_i, #network_cidr_to_range

Instance Method Details

#generate_regex(network_and_cidr) ⇒ Object



104
105
106
# File 'lib/smart_proxy_dhcp_infoblox/network_address_range_regex_generator.rb', line 104

def generate_regex(network_and_cidr)
  range_to_regex(network_cidr_range_octets(network_and_cidr))
end

#network_cidr_range_octets(network_and_cidr) ⇒ Object



108
109
110
111
112
113
114
# File 'lib/smart_proxy_dhcp_infoblox/network_address_range_regex_generator.rb', line 108

def network_cidr_range_octets(network_and_cidr)
  range = network_cidr_to_range(network_and_cidr)
  range_start_octets = range.first.split('.').map(&:to_i)
  range_end_octets = range.last.split('.').map(&:to_i)

  (0..3).map { |i| [range_start_octets[i], range_end_octets[i]] }
end

#range_to_regex(range) ⇒ Object



116
117
118
119
120
121
122
123
124
125
126
127
128
# File 'lib/smart_proxy_dhcp_infoblox/network_address_range_regex_generator.rb', line 116

def range_to_regex(range)
  range.inject([]) do |a, c|
    start_range, end_range = c
    regex = if start_range == end_range
              start_range.to_s
            elsif start_range == 0 && end_range == 255
              '.+'
            else
              RangeRegularExpressionGenerator.new.range_regex(start_range + 1, end_range - 1)
            end
    a.push(regex)
  end.join('\.')
end