Class: Nexpose::IPRange
- Inherits:
-
Object
- Object
- Nexpose::IPRange
- Includes:
- Comparable
- Defined in:
- lib/nexpose/site.rb
Overview
Object that represents a single IP address or an inclusive range of IP addresses. If to is nil then the from field will be used to specify a single IP Address only.
Instance Attribute Summary collapse
-
#from ⇒ Object
Start of range *Required.
-
#to ⇒ Object
End of range *Optional (If nil then IPRange is a single IP Address).
Instance Method Summary collapse
- #<=>(other) ⇒ Object
- #==(other) ⇒ Object
- #as_xml ⇒ Object (also: #to_xml_elem)
- #eql?(other) ⇒ Boolean
- #hash ⇒ Object
- #include?(single_ip) ⇒ Boolean
-
#initialize(from, to = nil) ⇒ IPRange
constructor
An IP address range of one or more addresses.
-
#size ⇒ Fixnum
Size of the IP range.
- #to_s ⇒ Object
- #to_xml ⇒ Object
Constructor Details
#initialize(ip) ⇒ IPRange #initialize(start_ip, end_ip) ⇒ IPRange #initialize(cidr_range) ⇒ IPRange
Returns an IP address range of one or more addresses.
701 702 703 704 705 706 707 708 709 710 711 712 |
# File 'lib/nexpose/site.rb', line 701 def initialize(from, to = nil) @from = from @to = to unless from == to return unless @to.nil? range = IPAddr.new(@from.to_s).to_range unless range.one? @from = range.first.to_s @to = range.last.to_s end end |
Instance Attribute Details
#from ⇒ Object
Start of range *Required
678 679 680 |
# File 'lib/nexpose/site.rb', line 678 def from @from end |
#to ⇒ Object
End of range *Optional (If nil then IPRange is a single IP Address)
680 681 682 |
# File 'lib/nexpose/site.rb', line 680 def to @to end |
Instance Method Details
#<=>(other) ⇒ Object
728 729 730 731 732 733 734 735 736 737 738 739 740 741 |
# File 'lib/nexpose/site.rb', line 728 def <=>(other) return 1 unless other.respond_to? :from from = IPAddr.new(@from) to = @to.nil? ? from : IPAddr.new(@to) cf_from = IPAddr.new(other.from) cf_to = IPAddr.new(other.to.nil? ? other.from : other.to) if cf_to < from 1 elsif to < cf_from -1 else # Overlapping 0 end end |
#==(other) ⇒ Object
743 744 745 |
# File 'lib/nexpose/site.rb', line 743 def ==(other) eql?(other) end |
#as_xml ⇒ Object Also known as: to_xml_elem
771 772 773 774 775 |
# File 'lib/nexpose/site.rb', line 771 def as_xml xml = REXML::Element.new('range') xml.add_attributes({ 'from' => @from, 'to' => @to }) xml end |
#eql?(other) ⇒ Boolean
747 748 749 750 |
# File 'lib/nexpose/site.rb', line 747 def eql?(other) return false unless other.respond_to? :from @from == other.from && @to == other.to end |
#hash ⇒ Object
767 768 769 |
# File 'lib/nexpose/site.rb', line 767 def hash to_xml.hash end |
#include?(single_ip) ⇒ Boolean
752 753 754 755 756 757 758 759 760 761 762 763 764 765 |
# File 'lib/nexpose/site.rb', line 752 def include?(single_ip) return false unless single_ip.respond_to? :from from = IPAddr.new(@from) to = @to.nil? ? from : IPAddr.new(@to) other = IPAddr.new(single_ip) if other < from false elsif to < other false else true end end |
#size ⇒ Fixnum
Size of the IP range. The total number of IP addresses represented by this range.
719 720 721 722 723 724 |
# File 'lib/nexpose/site.rb', line 719 def size return 1 if @to.nil? from = IPAddr.new(@from) to = IPAddr.new(@to) (from..to).to_a.size end |
#to_s ⇒ Object
782 783 784 785 |
# File 'lib/nexpose/site.rb', line 782 def to_s return from.to_s if to.nil? "#{from.to_s} - #{to.to_s}" end |
#to_xml ⇒ Object
778 779 780 |
# File 'lib/nexpose/site.rb', line 778 def to_xml as_xml.to_s end |