Sha256: 87163fc9c2cade7264b52538ed2388b1799f73360b0e8785c26fabd763baf1b1

Contents?: true

Size: 1.13 KB

Versions: 5

Compression:

Stored size: 1.13 KB

Contents

module Net
  module Validations

    IP_REGEXP  = /(\d{1,3}\.){3}\d{1,3}/
    MAC_REGEXP = /^([a-f0-9]{1,2}:){5}[a-f0-9]{1,2}$/i
    class Error < RuntimeError;
    end

    # validates the ip address
    def validate_ip ip
      raise Error, "Invalid IP Address #{ip}" unless (ip =~ IP_REGEXP)
      ip
    end

    # validates the mac
    def validate_mac mac
      raise Error, "Invalid MAC #{mac}" unless (mac =~ MAC_REGEXP)
      mac
    end

    def validate_network network
      begin
        validate_ip(network)
      rescue Error
        raise Error, "Invalid Network #{network}"
      end
      network
    end

    # ensures that the ip address does not contain any leading spaces or invalid strings
    def self.normalize_ip ip
      return unless ip.present?
      ip.split(".").map(&:to_i).join(".")
    end

    def self.normalize_mac mac
      return unless mac.present?
      m = mac.downcase
      case m
        when /[a-f0-9]{12}/
          m.gsub(/(..)/) { |mh| mh + ":" }[/.{17}/]
        when /([a-f0-9]{1,2}:){5}[a-f0-9]{1,2}/
          m.split(":").map { |nibble| "%02x" % ("0x" + nibble) }.join(":")
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
foreman_discovery-1.0.0 test/foreman_app/lib/net/validations.rb
foreman_discovery-1.0.0.rc4 test/foreman_app/lib/net/validations.rb
foreman_discovery-1.0.0.rc3 test/foreman_app/lib/net/validations.rb
foreman_discovery-1.0.0.rc2 test/foreman_app/lib/net/validations.rb
foreman_discovery-1.0.0.rc1 test/foreman_app/lib/net/validations.rb