Class: Aikido::Zen::RuntimeSettings::IPList
- Inherits:
-
Object
- Object
- Aikido::Zen::RuntimeSettings::IPList
- Defined in:
- lib/aikido/zen/runtime_settings/ip_list.rb
Instance Attribute Summary collapse
-
#description ⇒ Object
readonly
Returns the value of attribute description.
-
#ips ⇒ Object
readonly
Returns the value of attribute ips.
-
#ipv4_ranges ⇒ Object
readonly
Returns the value of attribute ipv4_ranges.
-
#ipv6_ranges ⇒ Object
readonly
Returns the value of attribute ipv6_ranges.
-
#key ⇒ Object
readonly
Returns the value of attribute key.
-
#source ⇒ Object
readonly
Returns the value of attribute source.
Class Method Summary collapse
Instance Method Summary collapse
- #include?(ip) ⇒ Boolean
-
#initialize(key:, source:, description:, ips:) ⇒ IPList
constructor
A new instance of IPList.
- #inspect ⇒ Object
Constructor Details
#initialize(key:, source:, description:, ips:) ⇒ IPList
Returns a new instance of IPList.
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/aikido/zen/runtime_settings/ip_list.rb', line 22 def initialize(key:, source:, description:, ips:) @key = key @source = source @description = description @ips = ips @ipv4_ranges = [] @ipv6_ranges = [] ips.each do |ip| if ip.ipv4? @ipv4_ranges << ip.to_range elsif ip.ipv6? @ipv6_ranges << ip.to_range else raise ArgumentError, "Unsupported IP address family: #{ip.inspect}" end end @ipv4_ranges.sort_by!(&:begin) @ipv6_ranges.sort_by!(&:begin) end |
Instance Attribute Details
#description ⇒ Object (readonly)
Returns the value of attribute description.
7 8 9 |
# File 'lib/aikido/zen/runtime_settings/ip_list.rb', line 7 def description @description end |
#ips ⇒ Object (readonly)
Returns the value of attribute ips.
8 9 10 |
# File 'lib/aikido/zen/runtime_settings/ip_list.rb', line 8 def ips @ips end |
#ipv4_ranges ⇒ Object (readonly)
Returns the value of attribute ipv4_ranges.
10 11 12 |
# File 'lib/aikido/zen/runtime_settings/ip_list.rb', line 10 def ipv4_ranges @ipv4_ranges end |
#ipv6_ranges ⇒ Object (readonly)
Returns the value of attribute ipv6_ranges.
11 12 13 |
# File 'lib/aikido/zen/runtime_settings/ip_list.rb', line 11 def ipv6_ranges @ipv6_ranges end |
#key ⇒ Object (readonly)
Returns the value of attribute key.
5 6 7 |
# File 'lib/aikido/zen/runtime_settings/ip_list.rb', line 5 def key @key end |
#source ⇒ Object (readonly)
Returns the value of attribute source.
6 7 8 |
# File 'lib/aikido/zen/runtime_settings/ip_list.rb', line 6 def source @source end |
Class Method Details
.from_json(data) ⇒ Object
13 14 15 16 17 18 19 20 |
# File 'lib/aikido/zen/runtime_settings/ip_list.rb', line 13 def self.from_json(data) new( key: data["key"], source: data["source"], description: data["description"], ips: Array(data["ips"]).map { |ip| IPAddr.new(ip) } ) end |
Instance Method Details
#include?(ip) ⇒ Boolean
49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/aikido/zen/runtime_settings/ip_list.rb', line 49 def include?(ip) native_ip = nativize_ip(ip) return false if native_ip.nil? if native_ip.ipv4? ranges_cover?(@ipv4_ranges, native_ip) elsif native_ip.ipv6? ranges_cover?(@ipv6_ranges, native_ip) else raise ArgumentError, "Unsupported IP address family: #{ip.inspect}" end end |
#inspect ⇒ Object
45 46 47 |
# File 'lib/aikido/zen/runtime_settings/ip_list.rb', line 45 def inspect "#<#{self.class} #{@key}>" end |