Sha256: 87f7af0e7a03e310c130987409973b2ef51ceb1d6daf610e7a0ec5819a7ce6ed

Contents?: true

Size: 1.04 KB

Versions: 12

Compression:

Stored size: 1.04 KB

Contents

module Pione
  module Util
    module IPAddress
      # Return my IP address that PIONE choosed.
      #
      # @return [String]
      #   my IP address
      def myself
        find.first
      end
      module_function :myself

      # Find IP address list in the machine. This list includes IPv4 addresses only.
      #
      # @return [Array<String>]
      #   IP addresses
      def find
        addrs = Socket.ip_address_list.select do |addr|
          addr.ipv4? and not(addr.ipv4_loopback?) and not(addr.ipv4_multicast?)
        end
        if not(addrs.empty?)
          privates = addrs.select{|addr| addr.ipv4_private?}
          not_privates = addrs - privates
          privates = privates.sort{|a,b| a.ip_address <=> b.ip_address}
          not_privates = not_privates.sort{|a, b| a.ip_address <=> b.ip_address}
          (privates + not_privates).map {|addr| addr.ip_address}
        else
          Socket.ip_address_list.select{|addr| addr.ipv4_loopback?}.map{|addr| addr.ip_address}
        end
      end
      module_function :find
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
pione-0.5.0 lib/pione/util/ip-address.rb
pione-0.5.0.alpha.2 lib/pione/util/ip-address.rb
pione-0.5.0.alpha.1 lib/pione/util/ip-address.rb
pione-0.4.2 lib/pione/util/ip-address.rb
pione-0.4.1 lib/pione/util/ip-address.rb
pione-0.4.0 lib/pione/util/ip-address.rb
pione-0.3.2 lib/pione/util/ip-address.rb
pione-0.3.1 lib/pione/util/ip-address.rb
pione-0.3.0 lib/pione/util/ip-address.rb
pione-0.2.2 lib/pione/util/ip-address.rb
pione-0.2.1 lib/pione/util/ip-address.rb
pione-0.2.0 lib/pione/util/ip-address.rb