class Egi::Fedcloud::Cloudhound::GocdbSite
Constants
- INVALID_RANGES
Attributes
contact_email[R]
csirt_email[R]
ip_ranges[R]
name[R]
ngi[R]
Public Class Methods
extract_ranges(text_ranges, site_name)
click to toggle source
# File lib/egi/fedcloud/cloudhound/gocdb_site.rb, line 47 def extract_ranges(text_ranges, site_name) ranges = text_ranges.split(/[,;]/).reject { |el| el.blank? || !el.include?('/') || INVALID_RANGES.include?(el) } Egi::Fedcloud::Cloudhound::Log.debug "[#{self}] -- Ranges: #{ranges.inspect}" ranges.map! do |range| begin IPAddr.new(range) rescue Egi::Fedcloud::Cloudhound::Log.warn "[#{self}] Invalid IP range #{range.inspect} " \ "for site #{site_name}" nil end end ranges.compact! ranges end
extract_text(element)
click to toggle source
# File lib/egi/fedcloud/cloudhound/gocdb_site.rb, line 66 def extract_text(element) (element && element.first) ? element.first.text : '' end
new(element)
click to toggle source
# File lib/egi/fedcloud/cloudhound/gocdb_site.rb, line 11 def initialize(element) Egi::Fedcloud::Cloudhound::Log.debug "[#{self.class}] Initializing with #{element.inspect}" @name = self.class.extract_text(element.locate('SHORT_NAME')) @csirt_email = self.class.extract_text(element.locate('CSIRT_EMAIL')) @contact_email = self.class.extract_text(element.locate('CONTACT_EMAIL')) @ngi = self.class.extract_text(element.locate('ROC')) Egi::Fedcloud::Cloudhound::Log.debug "[#{self.class}] Extracting IP ranges for site #{@name}" @ip_ranges = self.class.extract_ranges(self.class.extract_text(element.locate('SITE_IP')), @name) end
Public Instance Methods
contacts()
click to toggle source
# File lib/egi/fedcloud/cloudhound/gocdb_site.rb, line 35 def contacts { name: name, type: nil, status: nil, csirt: csirt_email, ngi: ngi } end
in_range?(ip)
click to toggle source
# File lib/egi/fedcloud/cloudhound/gocdb_site.rb, line 23 def in_range?(ip) ip = ip.to_s if ip.kind_of?(IPAddr) Egi::Fedcloud::Cloudhound::Log.debug "[#{self.class}] Checking #{ip.inspect} against #{name}'s ranges" ip_ranges.each do |my_range| Egi::Fedcloud::Cloudhound::Log.debug "[#{self.class}] -- #{my_range.inspect}" return true if my_range.include?(ip) end false end